How harmful is display flicker?
Debates about the harm caused by flicker have been going on ever since displays started flickering. “After five minutes my eyes water; after half an hour they’re red!” complains a forum user. “I’ve got a leg too, and it doesn’t hurt!” the crowd replies in unison. “AMOLED colors are definitely more saturated, but IPS doesn’t make my eyes hurt,” others note, drawing an unexpected conclusion: “It must be the color reproduction!”
Sadly, no: it’s not about color reproduction—or at least not only about that. The issue is that modern OLED smartphone displays flicker at a fairly low 240 Hz. According to statistics, about 70% of users don’t notice this flicker, and most of those who do simply ignore it. At the same time, the strain on the eyes is the same for everyone; whether a particular user’s eyes end up hurting when looking at a flickering screen doesn’t depend on whether they consciously perceive the flicker (that’s a physiological property not of the eyes but of the brain processing the optic nerve’s input), but on the user’s eye health and, so to speak, the remaining “safety margin” of their vision.
I’m one of those users who are very sensitive to screen flicker—I notice it easily. It bothers me and makes my eyes tired. I was probably the only person in my city who, back in 1995, swapped out a graphics card solely to get a DAC (RAMDAC) that could drive a CRT at 800×600 and 75 Hz instead of 56 Hz.
I first ran into OLED flicker back in 2014 on the Nexus 6 and the Nokia Lumia 930. I had to live with the flicker on the Windows phone, but I successfully modified the Nexus 6 kernel and got rid of it completely. “Wait, you can do that?” Yes—if you understand the trade-offs and can tolerate skewed color reproduction at low brightness and uneven shadow uniformity.
In this article, I’ll explain how to eliminate flicker on the Xiaomi Mi 9, Google Pixel 3 XL, and iPhone X, XS, and XS Max. As a bonus, I’ll also suggest how to remove flicker on the Samsung Galaxy S8, S9, and S10. Finally, I’ll share how to get rid of PWM on almost any Android phone, both with and without root access.
Xiaomi: Innovators or Not?
Xiaomi wasn’t the first company to tackle OLED display flicker. Long before Xiaomi, LG used flicker-free OLED panels in its experimental smartphones. The most notable example was the LG G Flex 2, a highly controversial device with a curved P‑OLED screen. LG made so many missteps with that phone that listing them would take several paragraphs. Here, we’ll focus solely on the display.
The LG G Flex 2 used a flexible P‑OLED panel where brightness was controlled at the hardware level by adjusting the current delivered to the pixels. The display controller didn’t use PWM (pulse-width modulation), so there was no flicker even at the lowest brightness.
Users hated this display—and with good reason: at low brightness the image developed yellow blotches and a gritty, sandpaper-like texture. The manufacturing process for these experimental screens in 2015 was still immature, and a significant number of users ended up with smartphones showing pronounced P‑OLED defects.

At the same time, LG never leveraged the flicker-free aspect in their marketing: there were no pieces about the health impacts of flicker, and no technical deep-dives like the ones Google puts out on its blog. Given that in 2015 the display flicker problem was largely unknown to mainstream users—and that two out of three people can’t perceive LED flicker at 240 Hz—LG’s experiment flopped. Major manufacturers shelved flicker-free OLED displays.
info
Did you know that the vast majority of OLED panels used in TVs from many well-known brands—ranging from Sony and Philips to LG itself—are made at LG’s factories? All of these panels use an RGBW subpixel layout and don’t flicker at any brightness level—unlike the vast majority of LCD TVs. Funny paradox, isn’t it?
Are flicker‑free OLEDs really that bad? Back in 2015, manufacturing processes did allow, by today’s standards, a huge variation in parameters between neighboring LEDs. This variation showed up most when the LED was driven at very low current. At higher currents, differences between adjacent pixels were much less noticeable. You can compare this to digital noise in photos taken in low light with a short exposure: the fewer photons that hit the sensor cells (and for a display, the fewer photons emitted by the LED), the higher the likelihood of “digital noise.”
In digital photography, one way to reduce noise is to use a longer exposure. With an LED, you can increase the drive current to make it brighter, emitting far more photons. A logical approach is to use a pulse-width modulation–based brightness control circuit.
Samsung has been, and remains, the largest manufacturer of OLED panels for smartphones. It uses AMOLED in its own phones and supplies panels to hundreds of vendors, including Apple and Google (more on Google below—it’s a bit more complicated). Panel tuning varies by each OEM’s requirements, including how PWM is configured. These differences show up in the brightness level (as a percentage of the maximum) at which the device stops adjusting brightness directly and switches to pulse-width modulation (PWM), which introduces flicker.

For example, the Samsung panels in Galaxy S8+ smartphones flicker constantly, even at 99% of maximum brightness. You can see this in the image below.

By using PWM to control brightness across the entire range, Samsung achieved excellent color accuracy and uniform fills even in the darkest parts of the screen. The downside—that those specs are reached by bombarding the user’s eyes with brief, high-intensity flashes—was ignored for a long time. Even in the current Galaxy S10 generation, the manufacturer sticks with the same brightness control scheme.
This is a deliberate choice by Samsung, as you can see by reviewing patent US9269294B2.
Almost all other manufacturers use a hybrid approach to brightness control. At high brightness levels, the display controller varies the current supplied to the LEDs. Once brightness drops to a vendor-defined threshold, the controller stops reducing current and switches to PWM. Different models use different cutoff points, which can depend on both panel characteristics and OEM preferences. For example, at launch the Xiaomi Mi 9’s display flickered just like Samsung phones. Apple tuned the iPhone X, XS, and XS Max displays so that PWM flicker kicks in at 50% brightness and below.

Can we go flicker-free?
Can you reduce visible flicker by pushing the PWM frequency high enough that even very sensitive users can’t see it? Absolutely—plenty of displays do this. Back in 2015, Microsoft shipped the Lumia 950 with an OLED panel flickering at 500 Hz (while the larger 950 XL used a panel with 240 Hz PWM). Most modern LCD TVs flicker at around 240 Hz, but Sony went further and fitted all models with brightness control that either avoids flicker entirely or uses a 720 Hz PWM, which is indeed very hard to notice.
Why don’t they do it? Cost. A controller that runs at a higher frequency costs tens of cents more in smartphones and even a few dollars more in TVs than the cheapest ones that flicker at low frequencies. You might value your eyes more than a couple of bucks; manufacturers think in terms of economies of scale: tack on a few tens of cents across millions of units and that’s hundreds of thousands, even millions, in extra profit. And if tomorrow some jurisdiction were to codify health standards for smartphones that cap screen flicker, manufacturers would respond immediately, shipping panels configured to meet those limits.
Is it possible to eliminate flicker entirely by switching panels to true DC dimming? These days, yes. But two or three years ago you’d have had to accept too many trade-offs. I still remember the Lumia 930, whose OLED screen would turn a soft pink at minimum brightness—despite still using PWM and flickering.
These days, OLED TVs don’t flicker at all. If years of flicker-free computer monitors aren’t convincing enough, here’s a fresh example: Sony uses exactly this kind of drive scheme in its TVs, even as the market obsesses over 240 Hz PWM models. That approach isn’t just more expensive; it also demands higher-quality components—LED backlights in LCD panels (which is simpler) or OLED panels with much stricter quality control. That’s exactly where LG stumbled, and continues to stumble, as it still can’t reliably produce high-quality OLED smartphone displays.
For now, we’re stuck dealing with flickering screens—and trying to fix it ourselves.
Xiaomi’s DC Dimming
Although Xiaomi wasn’t the first to move away from PWM dimming in smartphone OLED displays, it was the first to market a flicker-free OLED as a headline feature with the Black Shark 2 Pro.
Even the term “DC Dimming” is largely a marketing invention by the company. Monitor maker BenQ ran a similar campaign back in 2013 when it launched its Flicker-Free lineup. Since then, flicker in computer LCD monitors has come to be seen as bad practice, and almost all manufacturers have moved away from it.

Xiaomi’s invention was unexpectedly well received by users and the press. “Us too!” OnePlus chimed in, enabling a similar mode on the OnePlus 7. “And us!” said parent company OPPO, releasing the Reno with the same capability. “Count us in as well!” added Huawei, which rolled out an update for the P30 Pro.
“Oh, really?” Xiaomi thought, and announced DC Dimming support for previously released models like the Mi 9. “We can do that too!” said OnePlus—but it turned out not to be so simple. For the OnePlus 6 and 6T the option exists, but only in the “Laboratory” settings. The issue is that directly driving OLED pixel brightness at low levels exposes the technology’s drawbacks—color shifts that need software compensation, and a sandpaper‑like grain. As a result, the newer OnePlus 7 and 7 Pro panels look noticeably better in “flicker‑free” mode than the older OP6 and 6T.

What about Xiaomi? In the Black Shark 2, direct brightness control is built into the controller settings, but on earlier models the controller couldn’t be reprogrammed. For those, DC Dimming is available as a sort of hack: to enable it, open the Phone app and dial *#*#3225#*#*.
The flip side
So, we’ve determined that on the Xiaomi Mi 9 the flicker is disabled purely via a software hack. Moreover, certain details suggest that DC Dimming is likely implemented not at the kernel level but in the framework layer—somewhere near the “night” mode (Reading Mode in Xiaomi’s terminology), which shifts the display’s color temperature to warmer tones at night.
What leads me to this conclusion? The following observations.
First, on the lock screen (when the phone is locked), neither Night mode nor DC Dimming works. In the dark at night, the locked screen flickers, and the colors remain the same cold tones with no hint of Night mode. But as soon as you unlock the device, the flicker disappears immediately and the colors take on Night mode’s amber tint.
Second, turning on DC Dimming harms the auto-brightness feature: the phone constantly tries to make the screen as dark as possible. Manually nudging the brightness slider helps for about 10–15 seconds, after which it slowly drifts back down. It’s clear the ambient light sensor and the brightness control path aren’t tied together (you can easily verify this by installing a third-party brightness app like Lux Dash); behavior like this only happens when auto-brightness is implemented poorly.
Finally, there’s no color accuracy control at low brightness either: with DC Dimming enabled, the test patterns look exactly the same as when you use a gray overlay (screen overlay) via Lux Dash, Darker, or any similar app.
At the same time, the Mi 9’s panel quality is excellent: even at minimum brightness, a full gray fill looks uniform; there’s no “sandpaper” grain and no dirty yellow blotches like on the LG G Flex 2. However, this is achieved in a way that’s not entirely straightforward: at very low brightness levels (below 10%), the Mi 9’s screen still starts to flicker, so you can’t claim a complete absence of flicker. Xiaomi accurately describes it as reducing flicker rather than eliminating it.
Overall, Xiaomi’s decision to backport DC Dimming to older models deserves credit for the intent and for raising awareness of the issue—but it also warrants serious criticism for its sloppy implementation.
According to available information, Xiaomi is currently working on a fully hardware-based solution to the OLED flicker issue for its new smartphone models.
OnePlus 7 and 7 Pro
Right after Xiaomi, OnePlus announced support for DC Dimming—initially for the OP7 and 7 Pro. In the second wave (in the just-released OxygenOS 9.0.16 for the OnePlus 6T and 9.0.8 for the OnePlus 6), the feature also became available for last year’s flagships. It’s disabled by default; you can enable it in the OnePlus Laboratory settings.


OnePlus’s implementation is also purely software-based. According to user reports, DC Dimming doesn’t apply to the lock screen (https://forums.oneplus.com/threads/dc-dimming-i-podsvetka-pri-vzjatii.1079762/). This is likely because the in-display optical fingerprint reader can’t operate when an overlay is active (https://forums.oneplus.com/threads/closed-buggy-night-mode-with-dc-dimming-on.1078927/). This could be addressed via settings at the display module’s controller level; hopefully controllers with the necessary options will appear in the near future.
Google Pixel 3 XL
If disabling flicker on a Xiaomi Mi 9 is as simple as entering a code in the dialer, that trick won’t work on the Pixel 3 XL. This phone uses an LG panel of fairly low quality—noticeable unit-to-unit variation and faster pixel burn-in compared to the Samsung panels Google uses in the smaller Pixel 3. At the same time, unlike the smaller model, the Pixel 3 XL employs a hybrid brightness-control scheme: the controller limits current for quite a while before eventually engaging PWM. This quirk allowed developers to modify the kernel so PWM never kicks in and brightness is always controlled directly (i.e., via DC dimming).
To stop screen flickering on the Pixel 3 XL, do the following.
- Unlock the bootloader. You need this before you can flash a custom kernel.
- Go to XDA (https://forum.xda-developers.com/pixel-3-xl/development/kernel-imagebreaker-kernel-pixel-3-xl-t3911111) and download the ImageBreaker kernel.
- Flash the kernel via fastboot or install it through TWRP.
Unfortunately, the kernel is obsolete and no longer receives updates. If you want a flicker-free Pixel 3 XL, you’ll have to follow the same approach as users of other smartphones—more on that below.
Samsung Galaxy S8+
Back in 2017, enthusiasts built a kernel for this smartphone that disables PWM screen flicker. The kernel and installation instructions are available on the XDA site.


Drawbacks: screen uniformity issues at brightness below 40 cd/m².

It’s the same issue as with the Pixel 3 XL kernel: the kernel build was abandoned and never saw any further development.
Other Phones: A No-Root Solution
Prior to Android 8, you could dim the display using standard screen overlays. Manually toggling a filter is inconvenient; however, apps like Darker can both activate on a schedule and temporarily disable the overlay when the ambient light sensor indicates it’s bright enough outside. Finally, Lux Auto Brightness fully automates the process: you set a minimum brightness level (in percent), and below that threshold the app applies a gray overlay with variable opacity (the lower the brightness, the more opaque the filter).
In Android 8 Oreo, Google limited what screen filter apps can do. On Android 8 and 9, apps that apply filters can no longer affect the top status bar area with the clock and notifications, which largely defeats their practical usefulness.
We eventually found a workaround: leveraging the Accessibility service bypasses this limitation. As of today, I’m aware of only three apps that can use Accessibility to dim the screen.
The first option is available on Google Play, but it’s paid: Lower Brightness Pro.

Unlike Darker, Lux Auto Brightness, and many similar apps, this one actually dims the notification bar as well. Unfortunately, brightness control isn’t very convenient (it uses + and − buttons). System auto-brightness remains active. That’s fine on Android 8/8.1, where you can lock the brightness slider’s position, but it wreaks havoc with auto-brightness on Android 9 and on iOS-like skins (i.e., those where automatic brightness changes also move the brightness slider).
There’s also a free alternative from XDA—the PWMfree utility. Unfortunately, it isn’t on Google Play. You can download it directly from the developer’s thread on XDA. Despite being free, I liked it noticeably more than its Play Store competitor: it offers convenient brightness control via a slider in the notification shade and a one-tap on/off toggle. The ambient light sensor is disabled when the gray overlay is active and re-enabled when it’s turned off.
However, the best option is probably the free OLED Saver app, which offers several advantages over competing solutions:
- Works from the notification shade as well.
- Configurable threshold for hardware brightness control (like in Lux).
- Quick toggle to temporarily disable the service.
- Brightness can be adjusted with a slider or with buttons (convenient).
- Built-in auto-brightness implementation (it works, though not perfectly).
- Even though the app uses the Accessibility service, it’s still available on Google Play.
If you have root access
If your phone is rooted, there are a few ways to disable PWM. Start by installing Lux Auto Brightness. Then set a threshold below which Lux will apply a gray filter instead of letting the system control brightness.

Without root access, everything will work at this stage, but the status bar and notification shade in Android Oreo and Pie won’t be covered by the overlay. You can configure an alternative brightness control method in the next window.

If you’ve installed a custom kernel and it supports KCAL, enable the corresponding option. If your kernel doesn’t support KCAL, install another app from the Play Store — CF.Lumen. This app uses its own driver to control display settings. Launch it and grant root access, then in Lux’s settings select “Integration with CF.Lumen Pro.”
Next, you’ll need to train the app so that, for specific ambient light sensor readings, the screen adjusts to a brightness level that’s comfortable for you. Problem solved—auto-brightness is now working.
iPhone X, XS, and XS Max
Traditionally, Apple used IPS LCD panels in the iPhone. OLED made its debut with the iPhone X, and that’s when users first encountered display flicker. At the same time, iOS includes a built-in option to apply a software screen-dimming filter at a user-defined intensity, which allows you to eliminate low-brightness flicker entirely.
How to check your display for flicker
You can check for screen flicker without special equipment by using another phone’s camera. On your phone, open a white page (for example, about:blank in Safari or Chrome), turn off the lights, and set the brightness to minimum.
To determine the brightness level at which the screen stops flickering, open Control Center and slowly move the brightness slider. When the diagonal bands disappear, it means there’s no PWM at that brightness level.
![]() |
![]() |
![]() |
![]() |
Testing shows that on the iPhone X, the lowest flicker-free brightness level is about 50%. But at that setting, the device is uncomfortable to use in the dark. The goal is to reduce the effective screen brightness without introducing flicker.
Enable the grayscale filter
In iOS, there’s a special mode located under Settings > Accessibility > Display Accommodations.
![]() |
![]() |
In this mode, the screen is artificially dimmed by a software filter. I don’t really see the point of this on IPS panels—for the same backlight level it noticeably reduces white luminance and overall contrast, which actually speeds up battery drain—but on OLED displays it’s genuinely beneficial.
To enable the filter, go to Display Accommodations. Then tap Display Accommodations and turn on the Reduce White Point slider (see screenshot). Set the filter strength experimentally: start somewhere between 85% and 100% and adjust to a level that’s comfortable for your eyes (the screen brightness in Control Center should be around 50%).
![]() |
![]() |
![]() |
Triple-press to disable PWM
We’re not done yet; toggling the filter from Settings is slow and inconvenient. I recommend assigning the toggle to a triple-press of the power button.
To do this, find the Accessibility Shortcut option in Settings (I can never remember exactly which menu it’s under; the easiest way is to use the Settings search) and set it to toggle Reduce White Point on and off (see screenshots).
![]() |
![]() |
That’s it. After enabling this feature, we now have an iPhone where you can quickly toggle the screen flicker on and off with a triple press of the side button. Now you can comfortably use the device in the dark.
Add the Filter Toggle to Control Center
If you’d rather toggle the screen filter from Control Center instead of using the Side button, you can set it up via Accessibility Shortcuts (requires iOS 12 or 13).
Open Settings and go to Control Center (under General), then tap Customize Controls.

You’ll find the Accessibility Shortcuts icon under More Controls. Tap Accessibility Shortcuts.

The Accessibility Shortcuts icon will be added to the list of available controls.

Make sure the icon has been added to Control Center. You can change its position by dragging it to where you want it.

To turn the screen filter on or off, just open Control Center and tap the Accessibility Shortcuts icon.

Conclusion
Pulse-width modulation (PWM) is a mixed bag. On one hand, it causes increased eye strain and fatigue for roughly 30% of users (the other 70% don’t notice it, but prolonged use of flickering devices will still tire their brains over time). On the other hand, PWM not only saves manufacturers a few dozen cents per device, it also lets them effectively mask the shortcomings of OLED panels. The first flicker-free OLED screen appeared back in 2015, but the experiment flopped: at the time, display manufacturing couldn’t deliver panels with acceptable characteristics at low brightness levels.
Starting around 2017, panel quality reached a point where manufacturers began widely adopting hybrid brightness control; in more recent devices, PWM often only engages at the very lowest brightness levels (25% and below).
As of today, Samsung (let’s leave LG aside) is shipping OLED panels good enough that fully disabling PWM no longer leads to any visible image degradation. It’s the right time to move away from PWM in OLED displays. Chinese vendors (Xiaomi, OnePlus, Oppo, Huawei) have already started doing this; for the major brands, the transition will likely take several more years. In the meantime, take your eye health into your own hands by using the flicker‑reduction methods described in the article.










