CRT Scanline Effect Explained: The Settings That Avoid a Flat Overlay

EFFECT EXPLAINERDESIGNER

Most CRT scanline effects on the web look like a flat overlay because they apply one pattern at one opacity everywhere, no matter what's under it. This piece…

01/ ARTICLE

What is a CRT scanline effect, and why do so many look fake?

A CRT scanline effect reproduces the dark horizontal gaps a cathode-ray tube's electron beam leaves between the lines it draws. Simple enough. But most versions on the web fail the same way: they read as a filter stamped over a photo, not a screen. Why? Because the effect uses one repeating pattern at one fixed opacity across the whole frame — and a real tube's gap darkness shifts with the phosphor's persistence and the brightness of what's on screen. Fix the pattern, and the flat look goes with it. Below: the intensity and spacing settings that actually avoid it, where phosphor glow and curvature start to look staged, and which of kott®'s three scanline-family effects to reach for depending on the reference you're chasing.

Why do scanline effects look like a flat overlay instead of a real CRT?

The uniform-pattern failure mode

Start with the most common manual method: a 1px-tall pattern tile, painted once, filled across a new layer, and set to Overlay or Soft Light at a single opacity — the standard Photoshop technique. That's the literal cause of the flat complaint. The pattern doesn't know what's under it. A bright highlight and a dark shadow get the same gap darkness, which a real CRT never did — scanline darkness on an actual tube tracks the phosphor's persistence and the source's luma, not a fixed number picked once.

Brightness-weighted lines fix it

Tools that dodge the flat look tie line weight to brightness instead of stamping a stencil. ASCII Magic's scanline renderer turns each column into a vertical stroke weighted by the pixel brightness under it — darker areas get thinner lines, brighter areas get thicker ones. Real tonal variation, not a uniform grid. The same principle shows up outside the CRT family, too: Affinity Photo's halftone effect works because dot size tracks source brightness rather than a static overlay. Worth a look if you want the settings-versus-preset argument applied somewhere else entirely.

What scanline intensity and spacing avoid the flat look?

Pick your intensity by the display you're referencing, not a single number you reuse everywhere. Research into scanline generators puts home-console and computer-monitor references at roughly 10-20% dark-row intensity, arcade cabinets at 30% to 50%+, and handheld screens at 20-30%. The logic tracks: weaker phosphor persistence and brighter tubes, like an arcade cabinet, need a more visible gap to read correctly. Faster-decay phosphors on home computers need less, or the image ends up over-darkened.

There's a second cause of unevenness, and it has nothing to do with intensity — it's scaling math. Scaling 224-line source content to a 1080p canvas yields roughly 4.82 pixels per original scanline, a non-integer ratio. A generator that doesn't account for the remainder produces visible beating between rows. That reads as flat even when the intensity curve is exactly right.

In kott, crt-mod exposes this as three linked controls: PIXEL (pixelSize, 1-12px, default 2), GATE (threshold, 0-1, default 0.3), and LINE (lineWidth, 1-12, default 4). GATE is the software stand-in for phosphor persistence. Raise it and only the brighter parts of the source cast a visible line, so shadows fall into the gap the way a low-persistence tube would darken them. Start at the default 0.3 for a computer-monitor reference. Move toward 0.5-0.6 for the harder-edged arcade look.

Which kott effect should you use for a CRT scanline look?

kott ships three effects in the scanline family, and they aren't interchangeable. Picking the wrong one for your reference photo is the fastest route back to "why does this look fake."

Effectkott idCategoryLookKey paramsBest for
CRT PHOSPHORcrt-phosphor (14)retroLiteral scanline darkening or RGB aperture-grille dots, with chromatic aberrationMODE (scanline/grille), TRIAD 1-8px, ABERRATION 0-2, CONTRAST 0.2-3, GATE 0-1A straight CRT-monitor reference, still photos
CRT MODcrt-mod (30)ditherAnimated waveform-per-scanline dither, recoloured toward neonPIXEL 1-12px, GATE 0-1, LINE 1-12, NEON 0-1, CONTRAST 0.2-3, ORIENT horiz/vertMotion loops, VJ sets, a neon variant rather than a faithful CRT
SCAN-LINE DIFFUSEscanline-diffuse (197)glitchAtkinson-style 1-D error diffusion modulated by a sine scanline maskMOD 1-9, H-BIAS 1-91-bit or riso-adjacent work that needs scanline texture without full RGB rendering

If the reference photo shows visible RGB triads, switch crt-phosphor to GRILLE mode. It's the only one of the three that renders individual red, green, and blue sub-pixels rather than a luma gap. For motion work, crt-mod is the only one built to animate — it runs a waveform per scanline instead of a static overlay, which is closer in spirit to how pixel sorting in After Effects approaches a moving glitch effect. Real per-frame math, not a filter dropped on top and left alone.

One more effect worth ruling out here: holo-scanlines (168). It's a stylized cyan-wireframe look built for a holographic aesthetic, not a literal CRT reference. Reach for it on purpose, not because it has "scanlines" in the name.

How much curvature and phosphor glow before it looks fake?

Phosphor bleed and curvature are separate controls from scanline darkness. Treating them as one setting is a common mistake. Phosphor glow is a bloom effect — bright pixels spill light into their neighbors because the coating kept glowing after the beam passed, and it needs its own restraint, independent of how dark your gaps are.

crt-phosphor's ABERRATION parameter (0-2, default 0.5) is kott's stand-in for phosphor-triad misconvergence: the RGB channel offset a real tube shows when the electron beam doesn't land exactly on target. Keep it under roughly 0.5-0.8 for a desktop-monitor reference. Push past 1.5 only for a deliberately blown-out arcade look — that's the point it stops reading as an old monitor and starts reading as a damaged cable.

Curvature is the one control kott's scanline effects don't expose directly. None of the three bend the frame into a barrel shape, because kott is an effects engine, not a full CRT-simulator plugin. Compositing curvature externally? Research on RetroArch-style CRT filters puts mild barrel distortion around a 1.10-1.15 coefficient for a computer-monitor look, moving to 1.15-1.25 for larger arcade screens. Don't guess past that range.

Phosphor mask geometry is a third, independent axis. Shadow masks arrange phosphor dots in a triangular or hexagonal grid; aperture grilles use vertical stripes instead — that's what crt-phosphor's GRILLE mode is reproducing. Pick GRILLE when your reference photo shows visible vertical color striping, SCANLINE when it doesn't.

What breaks when you push these settings too far?

Push GATE too high on crt-mod and the image gates out entirely in the shadows. Scanlines vanish wherever the source isn't bright enough to clear the threshold, leaving a mostly-black frame instead of a textured one — the software version of a tube with almost no persistence left.

Push ABERRATION past roughly 1.5 on crt-phosphor and the chromatic fringing stops reading as an old monitor's misconvergence. It starts reading as a loose composite cable, red and blue channels visibly separating instead of softly bleeding.

Max out MOD (modulation strength) on scanline-diffuse and the Atkinson diffusion gets crushed by the sine mask. Midtone detail disappears; the image reads as pure horizontal banding instead of a dithered photo with a scanline texture over it.

The same warning applies to stacking: curvature and chroma bleed each look fine in isolation but compound fast when pushed together. Judge every parameter on its own before layering a second one on top.

Frequently Asked Questions

What is a CRT scanline effect?

A CRT scanline effect is a rendering technique that reproduces the horizontal dark gaps a real cathode-ray-tube monitor shows between each line the electron beam draws, usually paired with phosphor glow, mild curvature, and RGB convergence error to sell the illusion of an old screen.

Why does my scanline effect look like a flat overlay?

Because a single repeating pattern at one fixed opacity, laid over the whole frame, ignores per-pixel brightness. Real CRT gap darkness varies with the phosphor's persistence and the source luma, so a uniform layer reads as a filter instead of a screen.

What scanline intensity should I use?

It depends on the display you're referencing: roughly 10-20% dark-row intensity for a home-console or computer-monitor look, 30-50%+ for a bright arcade cabinet with weaker phosphor persistence, and 20-30% for a small handheld screen.

How much curvature is too much for a CRT look?

kott's scanline effects don't expose curvature directly, so if you're compositing it externally, stay near a 1.10-1.15 coefficient for a desktop-monitor reference; arcade-scale screens can push to 1.15-1.25 before it reads as a fisheye instead of glass.

Does kott have a CRT scanline effect?

Yes — kott ships three: crt-phosphor (id 14, literal scanline/grille modes with chromatic aberration), crt-mod (id 30, animated waveform-per-scanline dither with neon recolor), and scanline-diffuse (id 197, Atkinson diffusion modulated by a sine scanline mask).

Conclusion

The flat-overlay complaint almost always traces back to one thing: a fixed-opacity pattern that doesn't know what's under it. Tie intensity to source brightness the way GATE does on crt-mod. Keep aberration and any external curvature within the ranges above. And pick the effect that matches your reference instead of reaching for whichever one has "scanline" in the name — crt-phosphor for a literal CRT monitor, crt-mod for animated neon, scanline-diffuse for a 1-bit or riso-adjacent texture.

Try it on your own source: open crt-phosphor in the kott studio with the settings from the table above already loaded.

02/ OUT

Try it in the studio

Every setting described above is a real control. Open your own image and sweep it.

All journal entries