Dithering fakes shades that a limited palette cannot actually show, by trading colour depth for spatial detail. Your eye averages a scatter of black and white dots back into grey. This tool ships both families of the technique, because they fail in completely different ways.
Bitgrain is ordered dithering. It compares each block against an 8x8 Bayer matrix — a fixed 64-step threshold lattice — and quantises to three, four or five levels per channel depending on the detail setting. Ordered dithering is deterministic and tiles perfectly, which is why it produces that regular crosshatch texture familiar from early games and printed newspapers.
The four Grain filters are error diffusion, and they run in true 1-bit: one ink colour on one paper colour, no intermediate tones at all. After thresholding each cell, the leftover error is pushed into neighbours that have not been visited yet, so the image self-corrects as the scan proceeds. Each colourway uses a different diffusion kernel, and the scan runs boustrophedon — alternating direction every row — to stop the error drifting consistently to one side.
| Filter | Method | Kernel | Output |
|---|---|---|---|
| Bitgrain | Ordered | 8x8 Bayer | 3–5 levels per channel |
| Cobalt Grain | Error diffusion | Floyd-Steinberg | 1-bit, blue ink |
| Denim Grain | Error diffusion | Atkinson | 1-bit, indigo ink |
| Harbor Grain | Error diffusion | 3-tap | 1-bit, teal ink |
| Meadow Grain | Error diffusion | 7-tap, two rows | 1-bit, green ink |
Atkinson deliberately discards part of the error, which lifts contrast and leaves cleaner whites — that is the look old Macintosh screens had. Floyd-Steinberg keeps all of it and preserves more midtone gradation.
Everything runs on Canvas 2D on your own device. No upload, no account, full-resolution PNG out.