Why does an HTTP contrast request fail with a value such as 25?

For the managed hardwareContrast control, use a value on the 0โ€“1 scale, such as 0.25 for 25%. You can also write an explicitly marked percentage. A bare 25 is not interpreted as 25% and is outside this control's ordinary 0โ€“1 range.

With BetterDisplay running and its integrated HTTP server enabled, this example sets the selected display's managed contrast to 25%:

curl 'http://localhost:55777/set?name=Desk%20Display&hardwareContrast=0.25'

Replace the display name and port with yours, and include the configured token parameter if you use a security token. To express the percentage in the URL, use hardwareContrast=25%25. The final %25 encodes the percent sign. The equivalent CLI value is -hardwareContrast=25%.

The name selector works with contrast as well as brightness. A shorter partial-name selector does not fix an invalid numeric range, and can match more than one display. Keep the target unambiguous.

Managed contrast is translated through the selected controller's configured range and mapping. It is not necessarily the raw number sent to the monitor. Use direct DDC requests when you deliberately need a raw VCP value, and check the monitor's supported range. The display must also support the requested contrast adjustment.

See Integration for HTTP setup and shared request syntax.