Floyd-Steinberg Dithering of an Image

Reduce the number of colors in a photo while keeping the illusion of shades thanks to the Floyd-Steinberg dithering algorithm, which spreads the quantization error to neighboring pixels. Adjust the number of levels per channel and the black-and-white mode.

Example:
Drag and drop an image, or click to browse. 25 MB max.

How it works

Each pixel is quantized (rounded) to the nearest available color level among the chosen number of levels. The difference between the original value and the rounded value (the error) is then distributed to neighboring pixels that have not yet been processed (7/16 to the right, 3/16, 5/16 and 1/16 on the next line), following the 1976 Floyd-Steinberg method. This diffusion creates a pattern of dots that visually simulates intermediate shades missing from the reduced palette.

Why does using only 2 levels per channel give a "printing press" look?

With 2 levels, each channel can only take the minimum or maximum value (black or white for a channel). The resulting dot pattern for representing intermediate grays closely resembles the look of old dot-matrix printers or very low-color-depth screens.

What's the difference from simple posterization?

Standard posterization rounds each pixel independently, without considering its neighbors, which creates sharp color bands. Floyd-Steinberg dithering redistributes the error made on each pixel to its neighbors, producing smoother transitions and a less abrupt result between areas of different colors.

The error diffusion calculation runs pixel by pixel directly in your browser: your photo is never sent to a server.