hardware-accurate retro display colors

Convert an image to the CGA palette

Drop in any picture and render it through an authentic CGA, EGA, or VGA palette — with real dithering and optional retro pixelation. It uses the actual hardware palettes, including CGA's fixed 4-color graphics mode. Everything happens in your browser; nothing is uploaded.

Click to choose an image or drag & drop it here · or
CGA palette
background
source
result
Real palettes, not a free four-color pick. In CGA 320×200 the three foreground colors are a fixed group chosen by the palette and intensity bits; only the background is freely selectable. This converter quantizes to exactly those hardware-correct colors — switch palette, intensity, and background above and watch the conversion change.

How the converter works

Two things define a faithful retro conversion: the palette the image is reduced to, and the dithering used to fake shades that palette can't show. Most online converters get the first part wrong by treating CGA as an arbitrary four-color palette. It never was.

CGA 320×200 gives you one freely-chosen background plus a fixed three-color group (palette 0/1, low/high intensity, or the undocumented mode 5) — the same authentic sets from the CGA mode simulator. CGA 640×200 is a two-color mode: a background and a single foreground. EGA / VGA default mode is the full 16 RGBI colors — including the hardware-corrected brown at index 6, not dark yellow. Every target here pulls from the same verified palette data the reference pages use.

Dithering options: Floyd–Steinberg and Atkinson are error-diffusion methods — each pixel's quantization error is pushed into its neighbors, producing organic gradients (Atkinson preserves more contrast, the look early Macs used). Bayer 4×4 is ordered dithering: a fixed threshold matrix that yields the regular cross-hatch pattern associated with old games and printers. None posterizes into flat blocks. Pixelation optionally downscales to a chunky native-style resolution before quantizing, then displays it crisply scaled up.

NTSC composite monitor. Switch the monitor control to "NTSC composite" (for the CGA modes) to see how the image looked over the composite jack into a TV, rather than over RGB into a monitor. This is the part nearly every tool gets wrong: the common bug is to sample the RGBI colors directly. We don't — we build the actual composite signal from the pixel dot-patterns and demodulate it like an NTSC TV, so the result contains the muddy browns, the artifact orange/blue, and the other hues that simply don't exist in the 16 RGBI colors. The decoder is a faithful port of reenigne's chroma-multiplexer algorithm (the same model DOSBox uses); the hue/saturation/contrast/brightness/sharpness knobs mirror a real composite monitor's front panel, and Old vs New CGA switches between the two card revisions. Flip the monitor control back and forth on the same image — that side-by-side is the whole point.

All processing uses an HTML <canvas> and runs entirely on your device — the image is never sent anywhere, and the downloaded PNG is rendered at the working resolution so the pixels are authentic.

Frequently asked

Is my image uploaded anywhere?
No. The conversion runs in your browser with JavaScript and a canvas. The file never leaves your device.
Why does CGA look so limited?
Because it was — four on-screen colors in 320×200, from fixed palettes. That constraint is the whole CGA aesthetic, and this tool reproduces it faithfully rather than cheating with a free palette.
What format can I download?
PNG, at the working resolution. If you pick a pixelation option, the PNG is the small native-size image; turn pixelation off to keep your source resolution.

Related: PNG to CGA palette · image to EGA · composite simulator · CGA palette · CGA mode simulator