Nodes/WtlNodes/CRT TV Effect
ComfyUI Node

CRT TV Effect

Make any image look like it's glowing on an old TV

By Scorpiosis0·Created 10 months ago·Updated 2 months ago· 3
CRT TV Effect
  • image
  • IMAGE
beam_intensity0.75
beam_position60.0
beam_width2.5
beam_glow0.60
scanline_intensity0.60
scanline_spacing8
curvature0.10
chromatic_aberration1.5
halation0.50
bloom0.35
phosphor_tint0.70
phosphor_dots0.20
phosphor_dot_size5.0
defocus0.40
noise0.30
vignette0.40
grayscalefalse
apply_type

The CRT look is a full stack of effects pretending to be one thing: phosphor tint, scanlines, bloom, barrel curvature, chromatic aberration, noise. Most "CRT" filters are a scanline overlay and a vignette and a prayer. CRT TV Effect from WtlNodes is the opposite - a 12-step effect chain where every layer is a real, tunable stage, from the phosphor dots to the electron-beam sweep. It's the most control-dense node in the pack, and it's aimed at people who want an authentic retro look rather than a sticker of one.

The chain, in roughly the order it's applied: phosphor tint → defocus → phosphor dots → halation → bloom → scanlines → beam sweep → noise → barrel curvature → chromatic aberration → vignette. You get a slider for essentially every stage. That's a lot of knobs, but they're organized and each one is honestly labeled, so you can build a clean minimal look or go full 1990s corner-store-monitor.

The controls that actually matter

  • scanline_intensity / scanline_spacing - the dark lines between display rows. Spacing 8 (default) reads as a classic CRT; spacing 2–4 looks like a finer high-res tube. The scanlines use a cos² periodic darkening, which is why they look organic instead of like a printed grid.
  • curvature - barrel distortion that makes the image bulge like a glass tube. 0.1 is subtle; 0.3+ is "very round TV."
  • chromatic_aberration - the red/blue edge shift at screen edges, the signature CRT giveaway.
  • phosphor_tint / phosphor_dots / phosphor_dot_size - the color cast and the dot-matrix texture of the actual phosphor. grayscale toggles a clean black-and-white phosphor look.
  • beam_intensity / beam_position / beam_width / beam_glow - the stylized bright sweep trace across the screen. This is the showpiece: a moving bright band with per-column luma modulation. If you want the "caught mid-refresh" shot, this is it.
  • bloom / halation - glow around brights, separately from the beam.
  • noise / vignette / defocus - the finish: static grain, edge darkening, soft focus.

Plus the pack's apply_type live-preview dropdown, and an IMAGE output.

How to not drown in it

The 18 controls are intimidating, and the trap is cranking everything. A convincing CRT is mostly scanlines, a touch of curvature, a little chromatic aberration, and a hint of bloom - the phosphor dots and beam are optional flavor. Start with scanline_intensity 0.6, curvature 0.1, chromatic_aberration 1.5, everything else low, then add one effect at a time. The defaults are actually a sane baseline; treat the node as "the defaults, plus whatever you're curious about."

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Scorpiosis0/ComfyUI-WtlNodes.git

Restart ComfyUI, or install via ComfyUI Manager (search "WtlNodes"). No models, no heavy deps.

Gotchas

  • Full stack = slow-ish. Twelve chained image passes on a big batch adds up. For batch work, keep effects minimal or apply once.
  • The beam sweep is static in a still. It's a rendered bright band at a position you set - for an animated sweep you'd step beam_position over frames.
  • grayscale removes the color entirely. If you flip it and the image looks colorless, that's the feature - it gives you the phosphor-tint-on-mono look.
CategoryWtlNodes/image

Inputs (19)

NameTypeDefaultDescription
imageIMAGE
beam_intensityFLOAT0.750–1
beam_positionFLOAT60.00–100
beam_widthFLOAT2.50.3–20
beam_glowFLOAT0.600–1
scanline_intensityFLOAT0.600–1
scanline_spacingINT82–16
curvatureFLOAT0.100–0.5
chromatic_aberrationFLOAT1.50–5
halationFLOAT0.500–1
bloomFLOAT0.350–1
phosphor_tintFLOAT0.700–1
phosphor_dotsFLOAT0.200–1
phosphor_dot_sizeFLOAT5.01–12
defocusFLOAT0.400–1
noiseFLOAT0.300–1
vignetteFLOAT0.400–1
grayscaleBOOLEANfalse
apply_typeCOMBO3 options: none, auto_apply, apply_all

Outputs (1)

NameTypeDescription
IMAGEIMAGE