Posterize
Flatten your clip to a few flat colors for a screen-print or cel-shaded look
- video
- video
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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| elbg_colors | INT | 91–50 | — |
| elbg_steps | INT | 11–10 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |