Nodes/ComfyTV/Posterize
ComfyUI Node

Posterize

Flatten your clip to a few flat colors for a screen-print or cel-shaded look

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Posterize
  • video
  • video
force_run_token0
project_id
parent_output_id0
elbg_colors9
elbg_steps1

Posterize is the node that turns smooth gradients into bands of flat color - the silkscreen poster, the pop-art print, the cel-shaded comic look. It reduces each frame to a small palette via color quantization, which means instead of a "posterize" slider that clips levels, you get an actual palette built from the image's own colors. That's the distinction that makes this node worth having: it doesn't just crush brightness, it intelligently picks the N colors that represent the frame best.

Under the hood it uses ffmpeg's elbg filter (enhanced LBG vector quantization) on each frame. It's a rendered stage - needs a ▶ Run - and it uses ffmpeg, which ComfyUI already ships, so there's nothing extra to install for the mechanism itself. In goes COMFYTV_VIDEO, out comes COMFYTV_VIDEO.

The two parameters

That's the whole schema, and it's refreshingly small next to the rest of this pack:

  • elbg_colors - the number of colors in the palette, 1–50 (default 9). This is the look. A tight palette (3–6) gives a bold, graphic, almost flat-design poster look; 9 is a soft cel-shade that keeps some depth; higher retains more detail and starts to look like a filter rather than a style.
  • elbg_steps - the quantization refinement steps, 1–10 (default 1). More steps means the palette converges harder on the best colors at the cost of speed. Leave it at 1 unless you're seeing banding or muddy colors; the difference is subtle.

One output: video (COMFYTV_VIDEO).

Where it fits

It's one of the pack's "texture & era" VideoFX stages, grouped with Old Film, Pseudocolor, Regrain, and Frame Blend. The natural chain for a poster look: generate → Posterize at 6–9 colors → maybe a touch of grain on top. It also plays nicely as a stylization gate - posterizing a clip first can simplify it enough that a downstream effect (glow, displacement) behaves better.

Two honest tips from use: darker, higher-contrast footage quantizes into better palettes - flat mid-gray video produces muddy bands, so grade before you posterize. And skin tones are the thing that can turn "stylized" into "scary" at very low color counts; if faces matter, stay at 8+. There's a live preview on most video effects here, so dial by eye.

Install

Pack-wide one-liner:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI - Desktop/macOS users: clone into the running instance by absolute path, verify __init__.py at the top level, and restart the backend, not just the browser tab. ComfyUI Manager finds it as "ComfyTV". Zero extra Python dependencies - ffmpeg comes with ComfyUI, and the pack adds nothing on top.

The one thing that bites people is the snapshot model, same as everywhere in ComfyTV: output is a project snapshot, so native ComfyUI video nodes downstream need a Bridge.

CategoryComfyTV/VideoFX

Inputs (6)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
elbg_colorsINT91–50
elbg_stepsINT11–10
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO