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

For the managed hardwareContrast control, use a normalized value such as 0.25 for 25%, or 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 support the requested control as well as accept the command's numeric format.

See Integration for HTTP setup and shared request syntax.