Vorla / The Bench / Screen Flicker Test

Screen Flicker Test

See whether your monitor or phone dims itself by strobing the backlight, and check panel inversion and text fringing while you are there — every pattern is drawn locally in your browser.

Pattern
Field level
Photosensitivity warning The sweep test throws a bright bar across a black background at speed, and this whole page is built out of high-contrast detail. If you have photosensitive epilepsy or migraine with aura, skip the sweep and use the bright field only. Nothing moves until you press the button.
refresh (est. Hz)
1440bar speed (px/s)
frame step (px)

Wave test: fill the screen with the bright field, then wave a pencil, a fork or your spread fingers back and forth a few centimetres in front of it, as fast as you can. A steady backlight blurs the object into one continuous smear. A strobing backlight freezes it into a row of separate, sharply cut copies — that row of copies is PWM.

Sweep test: the refresh figure is measured from requestAnimationFrame gaps, so it is an estimate of the rate your browser is compositing at, which can be lower than the panel is capable of. Frame step is speed divided by that rate: it is how far the bar jumps between repaints, and copies spaced further apart than that are ordinary frame stepping, not flicker. Nothing you do in this test leaves your browser, and the page never asks for your camera, microphone or location.

Compare three brightness levels

PWM is nearly always worse when the screen is dim, because the pulse gets shorter while the gap between pulses gets longer. Run the bright-field wave test three times, changing the monitor or phone brightness itself between runs, and mark what you saw. This scores your own observations — it is not a measurement.

Change the display's brightness, not the picture. Picking the 50% or 20% grey field above changes the image the panel is showing; on an LCD it does not touch the backlight at all, so it tells you nothing about PWM. Use the monitor's own buttons, the OSD, or the brightness slider in your operating system.

Brightness at 100%the pulse is at its longest here
Brightness at about 50%the level most people actually use
Brightness at about 20%where PWM shows up first

Run the wave test at each brightness level and mark what you saw. Nothing is scored until all three rows are filled in.

Panel inversion and pixel walk

These patterns are drawn at true device pixels, not CSS pixels, so a one-pixel line really is one pixel on the panel. Go full screen, then look at the pattern from your normal seating distance and let your eyes relax. A healthy panel shows a flat, dead-still grey. A panel whose inversion scheme collides with the pattern shows a crawl, a shimmer, wide horizontal bands, or a slow flicker that is easier to catch out of the corner of your eye. Try every pattern, and press Shift phase on each one — some panels only misbehave when the pattern lands on one particular parity.

Pattern
Levels
device pixel ratio
pattern size (device px)

Nothing on this canvas animates. Every flicker, crawl or band you see here is being produced by the panel itself, by your graphics driver's dithering, or by browser resampling — never by this page.

Text clarity and subpixel layout

Read every line below at your normal distance, first on the dark card and then on the light one. You are looking for three separate faults: letters that are simply blurry at small sizes, letters that shimmer or crawl (that is the inversion problem above, showing up where it actually hurts), and letters whose edges carry red, orange or blue tints that should not be there. Light text on a dark background will always look slightly fatter than the reverse — that is your eye blooming the bright areas, not a panel fault.

Light on dark

9px — Sphinx of black quartz, judge my vow. 0123456789

11px — Sphinx of black quartz, judge my vow. 0123456789

11px bold — Sphinx of black quartz, judge my vow.

13px — Sphinx of black quartz, judge my vow. 0123456789

13px mono — if (x <= 1) return [0, 1]; // il1I O0o

16px — Sphinx of black quartz, judge my vow.

22px — Sphinx of black quartz

Dark on light

9px — Sphinx of black quartz, judge my vow. 0123456789

11px — Sphinx of black quartz, judge my vow. 0123456789

11px bold — Sphinx of black quartz, judge my vow.

13px — Sphinx of black quartz, judge my vow. 0123456789

13px mono — if (x <= 1) return [0, 1]; // il1I O0o

16px — Sphinx of black quartz, judge my vow.

22px — Sphinx of black quartz

Subpixel layout identifier — one-device-pixel lines

Each block below draws vertical lines exactly one device pixel wide in a single pure primary, all at the same horizontal positions. Get a phone camera as close as it will focus and photograph the four blocks together, then zoom into the photo. The red, green and blue lines will not sit on top of one another: their left-to-right order is your panel's subpixel order, and the white block shows all three lit at once.

Pure red
Pure green
Pure blue
White (all three)

Pick an option and this will tell you what it means for text rendering on this screen.

This page cannot read your subpixel layout for itself — nothing in a browser exposes it. The identifier only works because your eye, or a camera, can resolve something the software cannot.

How to run this test

  1. Start with the bright field, full screen. Press Full screen, leave the pattern on white, and wave a pencil or your spread fingers a few centimetres in front of the panel as fast as you comfortably can. One continuous smear means the light is steady. A row of separate, hard-edged copies of your fingers means the light is being chopped — that is PWM, and you have just seen it directly.
  2. Do it again at a lower brightness. Turn the display down to roughly 20% using the monitor's own controls, and repeat. Almost every panel that has PWM at all shows it far more clearly here. Record all three levels in the comparison panel above.
  3. Then try the sweep. Switch to the moving bar and drag the speed up. Watch it two ways: first track it with your eyes as it crosses, then stare at the small red dot in the middle and let the bar fly past your fixed gaze. The fixed-gaze version is the sensitive one — under PWM the bar breaks into a picket fence of separate copies rather than a smooth smear.
  4. Check the copies against the frame step. A moving object on any sample-and-hold display already breaks into copies, one per refresh. The frame step figure tells you how far apart those legitimate copies should be. Copies spaced noticeably closer together than the frame step are the extra ones PWM adds inside each frame.
  5. Run the inversion patterns full screen. Cycle all six patterns, at both level pairs, and press Shift phase on each. You are looking for a crawl, a shimmer, or bands that were not there on the flat grey.
  6. Finish with the text card. If small text shimmers, that is inversion showing up in real work. If it carries colour fringes, use the subpixel identifier and then fix the antialiasing setting rather than blaming the panel.

Keyboard: click or tab to either surface, then Space starts and pauses the bar, change its speed, P shifts the inversion phase, and Esc always leaves full screen.

What the wave test is actually showing

Your retina integrates light over roughly ten to twenty milliseconds, which is why a fast strobe usually looks like a steady glow. The wave test defeats that integration with a trick: it puts a moving object in front of a static light source. Every time the backlight is on, the object is somewhere new, and it prints a frozen silhouette on your retina at that position. Turn the light off and on 200 times a second and wave your hand across a 40 cm arc in a fifth of a second, and you get forty separate hands instead of one blur. Nothing about the image on screen changed — the copies come entirely from the light being chopped.

This is why the wave test is the honest one and the sweep test needs a caveat. When the moving object is drawn on the screen, the display itself is already chopping it: an LCD or OLED holds each frame for the whole refresh interval, so a bar moving at 1920 px/s on a 120 Hz panel jumps 16 px between frames and your eye, tracking smoothly, sees a set of copies 16 px apart. That is sample-and-hold stepping and every display does it. PWM adds a second, finer set of copies inside each of those steps. The frame-step readout exists so you can tell them apart: if the copies are 16 px apart on a 120 Hz panel at 1920 px/s, that is just the refresh rate; if there are four sub-copies packed into every 16 px, the backlight is pulsing about four times per frame.

What the page cannot do is turn that into a number. A frequency requires sampling the light, and a browser has no light sensor, no access to the backlight driver and no way to know when a photon left the panel. Every "PWM frequency detector" that runs in a web page is guessing. If you need the real figure, the tools are a photodiode into an oscilloscope or a sound card, a hand-held flicker meter, or a review site that publishes a measured flicker trace for every panel it tests.

PWM versus DC dimming, and what flicker-free really means

DC dimming lowers the current through the LEDs. The light gets dimmer and stays continuous, which is what your eyes want, but LEDs shift colour temperature as their current drops and cheap drivers get uneven across a large backlight, so a DC-dimmed panel can go slightly green or magenta at the bottom of its range and show worse uniformity.

PWM keeps the LEDs at their happy current and instead switches them on and off, varying the fraction of each cycle they stay on. Colour stays perfect at every level and the driver is cheap. The cost is that the light is now a square wave. Manufacturers pick it for exactly those reasons, and this is why "the expensive monitor flickers and the cheap one does not" is a real and common outcome rather than a paradox.

Two numbers decide whether you will feel it. The first is frequency. Sub-100 Hz PWM, which still turns up in budget monitors and in a lot of car and appliance displays, is visible to almost anyone who looks for it. A few hundred hertz is where most complaints live: invisible when you stare straight ahead, obvious as a stuttering trail whenever your eyes flick across the screen. Above a couple of kilohertz almost nobody reports symptoms. The second number is modulation depth, the difference between the bright and dark parts of the cycle as a fraction of the average. A backlight that only dips 15% at 240 Hz is far gentler than one that goes fully dark at the same rate, which is why a bare frequency in a spec sheet tells you less than it appears to. IEEE Std 1789-2015, the standard lighting engineers use for this, ties the two together: it treats deep modulation below about 90 Hz as a genuine risk, allows progressively more depth as frequency climbs, and regards anything above roughly 1.25 kHz as low risk at essentially any depth.

The phantom array effect — the smear of separated copies you see when your eyes saccade past a strobing light — is what most flicker-sensitive people are actually reacting to, and it survives to much higher frequencies than direct flicker perception does. That is why your brain can insist a screen is rock steady while you still finish the day with a headache.

"Flicker-free" on a box normally means DC dimming, or PWM run so fast it does not matter. It is a real, checkable claim: TÜV Rheinland certifies it, and independent reviewers publish measured flicker traces. Check before you buy, because no setting fixes a panel that chops its light — the only workaround is to run it bright, which throws away the reason you dimmed it.

The phone-camera method

A phone camera can do the one thing a web page cannot: sample the light. Almost every phone sensor uses a rolling shutter, meaning it does not expose the whole frame at once — it reads the sensor row by row, top to bottom, over several milliseconds. Each row therefore captures a slightly different instant. Point that at a light that is switching on and off hundreds of times a second and the rows that happened to read during an off period come out dark, so the photo is crossed by horizontal bands. Under a steady light the same photo is perfectly even.

How to do it: open your camera's pro or manual mode, set the shutter to 1/1000 s or faster and the ISO high enough to compensate, then fill the frame with a bright, uniform white area of the screen under test. Take one photo at full brightness and one at about 20%. Slow-motion video at 240 fps works too, and panning the phone while recording spreads the bands out and makes them unmistakable.

How to read it: even frame at both brightness levels means no significant PWM. Bands that appear or deepen as you dim mean PWM, and the fact that they got worse when you dimmed is the confirmation. Do not try to count the bands to get a frequency — the answer depends on your sensor's readout speed, which you do not know.

One trap worth knowing on OLED. Some banding tracks the refresh rather than the backlight, because an OLED panel refreshes row by row too and each row emits from the moment it is written. Change one variable at a time: bands that move or change spacing when you alter the display's brightness are dimming flicker, while bands that only change when you alter the refresh rate are the frame scan.

This page deliberately does not try to do any of this for you. Browsers give getUserMedia no manual shutter control, and the auto-exposure that a webcam applies uses a long enough integration time to smooth the bands away completely. A camera-based flicker detector in a web page would produce a confident number built on nothing. This page never requests camera or microphone access at all.

Inversion artefacts, and their cousin: FRC dithering

Liquid crystal degrades if you leave a DC voltage across it, so every LCD reverses the polarity of the drive voltage on a fixed schedule. Doing that for the whole panel at once would make it visibly pulse, so manufacturers stagger it — line inversion flips every row, column inversion every column, and dot inversion flips every individual pixel, alternating each frame. The two polarities are never exactly equal in transmission, so each scheme leaves a residual pattern which real images bury in noise. Show the panel an image that lines up perfectly with the scheme and the residual stops cancelling: you get the crawl, band or shimmer the patterns above are designed to provoke.

Where it bites in real work is fine repeating detail — spreadsheet gridlines, code with lots of punctuation, the checkerboard that image editors use behind transparency, dithered gradients in dark UI themes. If exactly one of the six patterns above misbehaves and the rest are clean, that is normal panel character rather than a defect, and no setting will change it. If several patterns shimmer badly, that panel and fine detail are simply not going to get along.

There is a second effect that looks similar and is often mistaken for it. Most 8-bit panels are really 6-bit plus FRC, and many 10-bit ones are 8-bit plus FRC: they fake the missing bits by alternating between two adjacent shades on successive frames, so your eye averages them. Frame rate control is a temporal trick, exactly like PWM, and on a slow panel or at a low refresh rate it can produce a fine sparkle in smooth gradients. Graphics drivers add their own dithering on top. You can usually separate the two: inversion artefacts stay locked to the pixel grid and change when you shift the pattern phase, while FRC sparkle appears in gradients and mid-tones and moves around.

Subpixel layout, ClearType and colour fringing

A pixel on a typical LCD is three vertical stripes, red then green then blue, left to right. Subpixel antialiasing exploits that: instead of shading a whole pixel grey to smooth a letter's edge, it lights individual stripes, which buys about three times the horizontal resolution for text. Windows calls its implementation ClearType. It works beautifully, and it depends completely on the software knowing the true order of those stripes.

It breaks in four common ways. Some panels are wired BGR instead of RGB — several TVs pressed into service as monitors, and a scattering of laptop and desktop panels. Rotating a display into portrait turns the horizontal stripes into vertical ones, so the horizontal trick has nothing to work with and the fringing is unavoidable while subpixel AA is on. Many OLED panels are not stripes at all: pentile diamond arrangements on phones, RWBG with a white subpixel on LG WOLED televisions, and a triangular layout on QD-OLED, all of which confuse a renderer expecting three even columns. And any layer the compositor has to blend — anything with a transform, an opacity below one, a filter, or will-change — silently falls back to greyscale antialiasing, which is why text on this page can look momentarily softer while a panel is fading in and sharpen up once it settles.

The fix is almost never in the monitor. On Windows, run the ClearType tuner from the Start menu, and if the fringing persists on a BGR panel, turning ClearType off entirely trades a little sharpness for clean edges; there is an undocumented FontSmoothingOrientation value that switches the assumed order, but it is not exposed in any settings UI and not every application honours it. macOS removed subpixel antialiasing system-wide in 10.14, so Macs render greyscale and simply do not have this failure mode. On Linux, fontconfig exposes the subpixel order directly as rgba, and setting it to bgr or none fixes it properly.

If a screen gives you headaches

Flicker is the single most common cause people never think to check, and it is worth ruling in or out before spending money on glasses or filters. If this page's wave test shows separated copies at your normal brightness, you have found something real.

None of this is medical advice. If symptoms persist after you have removed the flicker, that is a conversation for an optometrist rather than a monitor upgrade.

FAQ

What is PWM flicker?

PWM stands for pulse-width modulation. Instead of lowering the current through the backlight to dim it, many screens leave the light at full power and switch it on and off very quickly, then vary how long it stays on for. The average is dimmer, but the light is really a fast strobe. Most people never consciously notice it, yet a significant minority get headaches, eye strain, sore dry eyes or nausea from it, usually after half an hour rather than straight away.

Can this page measure the PWM frequency of my screen?

No, and you should be sceptical of any web page that claims it can. A browser can only change what is drawn on the screen. It has no access to the backlight and no way to sample the light coming back out of the panel, so a frequency in hertz is simply not available to it. What this page can do is draw patterns that make the flicker visible to your own eyes, so you can tell whether it is there and whether it gets worse as you dim the screen. For an actual number you need a photodiode and an oscilloscope, or a review site that measures it for you.

Why does my screen only flicker when I turn the brightness down?

That is the classic signature of PWM dimming. At full brightness the backlight is on for almost the whole cycle, so the gaps are tiny and the modulation is shallow. As you dim, the on time shrinks and the off gaps grow, so the same frequency suddenly has a much deeper light and dark swing and crosses the threshold where you can see it. A panel that looks clean at 100 percent and strobes at 20 percent is not faulty, it is dimming by chopping the light rather than by turning it down.

Why do OLED phones flicker more than most laptop screens?

An OLED has no backlight. Every pixel makes its own light, and driving those pixels at a low current shifts their colour and makes dark tones band and blotch, so manufacturers dim by strobing the whole panel instead. Historically that strobe ran at 60, 120, 240 or 480 hertz, which is slow enough for plenty of people to feel. Newer handsets advertise high-frequency PWM around 1920 hertz or a DC dimming mode, and several offer a flicker reduction toggle in their accessibility settings. Raising the screen brightness and dimming the room is the fix that works on any phone.

What is panel inversion or pixel walk?

The voltage across liquid crystal has to be reversed regularly or the material degrades, so every LCD flips polarity on a schedule, typically per row, per column or in a dot pattern. Ordinary images hide this completely. A pattern that happens to line up with the inversion scheme does not: the two polarities end up very slightly different in brightness, and the image shimmers, crawls or flickers. In real use it shows up as shimmering on fine text, thin table borders, checkbox grids and dithered gradients.

Why does small text look coloured or fringed on this screen?

Subpixel antialiasing draws text using the individual red, green and blue stripes inside each pixel to buy roughly three times the horizontal resolution. It only works if the software knows the true left to right order of those stripes. If the panel is BGR rather than RGB, or the display is rotated into portrait, or the subpixels are arranged in a triangle or a pentile grid as they are on many OLEDs, the trick backfires and letter edges pick up red and blue fringes. Switching the system to greyscale antialiasing, or turning ClearType off on Windows, removes the fringing at the cost of slightly softer text.

Related tools