Created
December 25, 2025 17:25
-
-
Save lispstudent/09c90bbdac49a517141dfdbeefcec92d to your computer and use it in GitHub Desktop.
Eye care: prevent PWM and or temporal dithering
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Eye care: prevent PWM and or temporal dithering | |
| waydabber edited this page on Oct 7 · 13 revisions | |
| Two common issues with computer monitors that cause eye strain for people who are sensitive to high frequency flickering are the following: | |
| PWM is a technique (Pulse Width Modulation) used in some displays to control brightness or achieve a dimming effect. It involves rapidly turning the screen's LED backlight (or for OLED screens, pixels) on and off at a specific high frequency, creating the illusion of different brightness levels. | |
| Temporal dithering is a technique to produce more colors than what a display's panel (or display connection) can support (for example showing colors with 10 bit color depth - "billions of colors" - on an 8 bit - "millions of colors" - panel). When the display does not have the capability to show the full color depth, it will emulate missing colors by rapidly change between two adjacent color levels thus creating a middle ground. | |
| BetterDisplay has some capabilities to help with these issues. | |
| Note | |
| The article reflects app version v2.2.3 | |
| Preventing PWM | |
| In order to prevent PWM flicker, you first need to figure out the hardware brightness threshold below which PWM is activated. For most displays this is somewhere between the 30% and 50% range. You can use various techniques to figure out the exact treshold or you can simply assume 40% which should be safe for most displays. | |
| In order to prevent the display to use hardware brightness levels below the PWM threshold and use BetterDisplay's software dimming instead (which does not trigger PWM), you should change the Combined brightness - minimum allowed hardware brightness level setting under the display's Advanced control settings section (make sure Combined brightness is enabled for the display). | |
| This technique works both for built-in displays and external displays with hardware birghtness control. | |
| Help with temporal dithering | |
| Preventing temporal dithering on Apple Silicon Macs | |
| Note | |
| In app version v3.x the GPU Dithering option mentioned below can be found under the Color Mode menu. | |
| Apple Silicon Macs automatically select the best available color depth for a display connection - this usually results in 10-bit color depth with no option to change this and thus prevent temporal dithering (or FRC - a high frequency switching between color levels to achieve an interim color). | |
| Starting with version v2.3.0 you can toggle GPU Dithering under Image Adjustments (moved to Color Mode in v3.x and newer) to turn temporal dithering on and off for Apple Silicon Macs. This option is available and useful both for the built-in and external displays. Please note that this setting changes GPU side dithering and disables dithering for built-in Apple displays - external displays that have their might have their own additional hardware temporal dithering algorithms (still disabling GPU dithering helps). | |
| Screenshot 2024-04-12 at 10 30 46 | |
| A possible alternate option is to create a virtual screen using the app (which always uses a 8-bit color depth) and mirror it to your real screen (go to Settings > Displays > Create New Virtual Screen..., select Match aspect ratio..., select the display and toggle on Configure virtual screen mirroring, then click Create Virtual Screen). Based on user feedback this helps with temporal dithering issues. | |
| Note | |
| Using virtual screen mirroring to prevent temporal dithering is a workaround with some drawbacks. Virtual screen mirroring has some bugs (mouse cursor issues, color issues, sleep issues) in macOS when employed on Apple Silicon Macs. | |
| Preventing temporal dithering on Intel Macs | |
| Intel Macs allow you to switch between 8-bit and 10-bit color depth. In order to prevent temporal dithering for most displays, you simply need to switch to 8-bit color depth under the display's Color Depth submenu in the app menu. | |
| Creating an e-book like appearance and limit number of on-screen colors | |
| A great way to reduce the number of rendered color is to use the quantization filter. This, combined with grayscale rendering can create an e-book like appearance which some find soothing to the eyes (the Grayscale Framebuffer option - available on Apple Silicon only - can be found under the Color Mode menu - on earlier v2.3.x versions hold the OPTION key while opening Image Adjustments). | |
| Screenshot 2024-04-12 at 10 34 41 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment