Nodes/ComfyUI-JK-ToRetro/Image to Retro
ComfyUI Node

Image to Retro

Turn any image into authentic VGA, CGA, or PC-98 pixel art

By Nakamura2828·Created 7 months ago·Updated 7 months ago· 1
Image to Retro
  • image_in
  • image_out
output_typeVGA
aspect_modeFit
dither_methodFloyd-Steinberg
scale_multiplier1

The pitch

You generated something beautiful, and now you want it to look like it escaped from a 1990 DOS game. This is the node for that. Image to Retro takes any IMAGE tensor and forces it into the actual technical straitjacket of a real retro graphics standard - VGA (640x480, 256 colors), EGA (16 colors), CGA in both of its famous palettes (Cyan/Magenta/White or Green/Red/Yellow), or PC-98 - then lets you pick exactly how the color reduction happens.

This is the "downscale to a limited palette" step done properly, with real dithering, not a cheap posterize filter. If you've faked pixel art before by resizing down with nearest-neighbor, you know it comes out looking like mush. This node does the steps in the right order, and that's the whole ballgame.

How it works

The node is pure CPU - no GPU, no model, no API key, nothing to download besides the code itself. It converts your tensor to a Wand image, resizes to the target resolution of the chosen format with Lanczos (the smooth filter that kills moire artifacts), then reduces to the format's palette. The dithering is where all the choices live:

  • Error diffusion - Floyd-Steinberg (default), Riemersma, Jarvis-Judice-Ninke, Stucki, Burkes, Sierra-3/Sierra-2/Sierra-2-4A, Atkinson. These spread quantization error to neighbors for smooth gradients, so they're the pick for photos.
  • Ordered - Yliluoma, Cluster-dot, and Bayer 2x2/4x4/8x8/16x16. These give you the checkerboard/crosshatch texture that reads as "retro" instantly. Yliluoma is specifically tuned for tiny palettes like CGA and EGA; Bayer 16x16 is the subtlest.
  • None - straight palette mapping, heavy banding. Mostly useful for diagnosing what the dithering is actually contributing.

CGA and EGA use fixed, historically authentic palettes. VGA and PC-98 first extract an adaptive palette from your image, then dither against that.

One detail the author got right: black padding (Pad mode) is applied after dithering, so you're not wasting dither computation on letterbox bars. Then the final step is integer upscaling at 1–10x with nearest-neighbor, so you get crisp chunky pixels instead of soft, blurry edges. 2x or 3x is the sweet spot for actually seeing anything.

The inputs that matter

  • output_type - VGA, EGA, the two CGA palettes, or PC-98. This one decision sets the whole vibe.
  • aspect_mode - Fit (content only, the default), Pad (black letterbox bars), Crop (fill the frame), or Stretch (distort). Fit is what you'll reach for most.
  • dither_method - the sixteen choices above.
  • scale_multiplier - the 1–10 integer upscale.

The output is a single image_out (IMAGE) you can wire straight into a Preview or Save Image node. One gotcha: it only uses the first frame of a batch, so feed it one image at a time.

Install

The README lists ComfyUI Manager as "(When published)" - this pack is brand new (every version shipped on the same day in early 2026), so don't count on Manager finding it yet. The reliable path is manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Nakamura2828/ComfyUI-JK-ToRetro.git
cd ComfyUI-JK-ToRetro
pip install -r requirements.txt

Then restart ComfyUI. Two things will bite you:

  • ImageMagick is a system dependency, not a pip one. You need it installed before the wand Python binding will work: sudo apt install imagemagick, brew install imagemagick, or the Windows installer at imagemagick.org.
  • requirements.txt pulls hitherdither straight from GitHub (git+https://...), so pip needs git available and it installs a fresh clone - not instant, and it fails outright if git isn't on the system.

No model files, no checkpoints. This is the rare ComfyUI node that doesn't touch your GPU at all.

Troubleshooting

  • Wand ImportError on Windows - Python can't find the ImageMagick DLLs. Set MAGICK_HOME to your ImageMagick install directory and restart ComfyUI. It's the classic Wand-on-Windows failure.
  • Install seems slow - that's the git+hitherdither step. One-time cost.
  • Output doesn't look pixel-y enough - bump scale_multiplier to 2–3 and switch from Floyd-Steinberg to an ordered dither (Yliluoma for CGA/EGA). Don't fight the Lanczos downscale; it's deliberate and it's what keeps the moire away.

The take

It's a niche, single-purpose utility, and it does its one job properly: MIT-licensed, no GPU, faithful palettes, real dithering algorithms. If your workflow ends in pixel art, this is the most faithful route I've found in one node. Not overhyped - but it's exactly what it says on the tin.

CategoryJK-ToRetro

Inputs (5)

NameTypeDefaultDescription
image_inIMAGE
output_typeCOMBOVGA5 options: VGA, EGA, CGA (Cyan/Magenta/White), CGA (Green/Red/Yellow), PC-98
aspect_modeCOMBOFit4 options: Fit, Pad, Crop, Stretch
dither_methodCOMBOFloyd-Steinberg16 options: Floyd-Steinberg, Riemersma, None, Jarvis-Judice-Ninke, Stucki, Burkes, +10
scale_multiplierINT11–10

Outputs (1)

NameTypeDescription
image_outIMAGE