Floyd-Steinberg and Atkinson are both error-diffusion dithering algorithms, and the main difference is how much of each pixel’s rounding error they pass on. Floyd-Steinberg passes on all of it, which gives smooth, accurate tones with a fine, busy grain. Atkinson passes on only three-quarters, which gives a crisper, cleaner, higher-contrast result, but pushes very light and very dark areas to pure white or black. Use Floyd-Steinberg when you need to keep subtle tones. Use Atkinson when you want punch and cleaner flat areas.
Floyd-Steinberg vs Atkinson at a glance #
| Floyd-Steinberg | Atkinson | |
|---|---|---|
| Created by | Robert W. Floyd and Louis Steinberg | Bill Atkinson, Apple programmer |
| Origin | Published in 1976 | Developed at Apple |
| Error passed on | 100% (16/16) | 75% (6/8) |
| Neighbors that receive error | 4 | 6 |
| Look | Smooth tones, fine even grain | Crisp, high contrast, cleaner flat areas |
| Weak spot | Can look noisy or form wavy patterns | Highlights and shadows blow out |
| Best for | Dark or low-contrast photos, subtle gradients | Well-lit portraits, bold looks, black and white |
How does Floyd-Steinberg dithering work? #
Floyd-Steinberg goes through the image left to right, top to bottom. Each pixel is rounded to the nearest palette color, and the difference between the original and the rounded color, the “error,” is split among four neighbors that haven’t been processed yet:
| current pixel | 7/16 | |
| 3/16 | 5/16 | 1/16 |
The four fractions add up to 16/16, so all of the error is carried forward. Nothing is lost, which is why Floyd-Steinberg keeps the overall brightness of each area accurate.
According to Wikipedia’s Floyd-Steinberg article, the algorithm was published in 1976 in the Proceedings of the Society for Information Display under the title “An adaptive algorithm for spatial grey scale.” The weights were found by trial and error, aiming for a 50% gray to come out as a perfect checkerboard. Some implementations alternate scanning direction on each line (“serpentine scanning”) to reduce directional artifacts.
The downside of passing on all the error is that it keeps travelling. In flat areas and gentle gradients, it can produce wavy, worm-like dot patterns, and it adds grain everywhere, even where you’d rather have clean color.
How does Atkinson dithering work? #
Atkinson dithering was developed by Apple programmer Bill Atkinson. It also rounds each pixel and spreads the error forward, but it gives 1/8 of the error to each of six neighbors: two to the right, three on the row below, and one two rows down.
| current pixel | 1/8 | 1/8 | |
| 1/8 | 1/8 | 1/8 | |
| 1/8 |
That’s 6/8 of the error. The remaining quarter is simply thrown away. According to Wikipedia’s dithering article, this makes Atkinson similar to the Jarvis and Sierra methods but faster, and it tends to preserve detail well, while very light and dark areas may appear blown out.
Throwing away error has two visible effects:
- Cleaner flat areas. Small errors fade out instead of piling up, so light and dark regions end up as solid color instead of a light sprinkling of dots.
- Clipped extremes. Near-white areas become pure white and near-black areas become pure black, which increases contrast and loses highlight and shadow detail.
Bill Atkinson also wrote MacPaint, which shipped with the original Macintosh in 1984, and his dithering is widely associated with the crisp black-and-white look of early Mac images.
What do they look like on a real photo? #
Take a portrait lit from a window on one side:
- Floyd-Steinberg keeps the soft falloff from the lit cheek to the shadowed one. Midtones look smooth from a distance, but up close the whole image, background included, is covered in fine grain. Dark hair keeps some texture.
- Atkinson makes the lit side of the face brighter and cleaner, often pure white on the highlights, and pushes dark hair and shadows to solid dark. Edges, eyes and outlines look sharper. The background looks calmer.
With a 2-color palette (black and white), the difference is dramatic. With a 16-color palette, it’s subtler, since there’s less error to diffuse in the first place.
Which one should you use? #
Choose Floyd-Steinberg when:
- The photo is dark, low-contrast or foggy. Atkinson will crush the shadows.
- You need subtle gradients to survive, like a sky at dusk or soft skin.
- You’re matching a specific look that used full error diffusion.
Choose Atkinson when:
- The photo is well lit with clear contrast, such as a portrait with window light.
- You want a crisp, graphic result, especially with Mono or 4-color palettes.
- Floyd-Steinberg looks too noisy, or has distracting patterns in flat areas.
Consider neither when the palette is large (50+ colors) and the photo is bold, or when the pixels are very big. There, no dithering or an ordered pattern may look cleaner. What dithering is covers ordered and Bayer dithering too.
With the Game Boy’s four greens, both work well. We usually start with Atkinson for faces and switch to Floyd-Steinberg if the shadows go solid. See how to make a Game Boy style photo.
Are there other error-diffusion algorithms? #
Yes. Jarvis-Judice-Ninke, Stucki and the Sierra family spread error over larger neighborhoods for smoother results, at the cost of more computation. Some retro photo apps offer them. For example, Ditherable’s App Store listing includes Jarvis-Judice-Ninke, and Retrospecs’ lists Stucki and Sierra. For most photo-to-pixel-art work, though, Floyd-Steinberg and Atkinson cover the two main looks: accurate and grainy, or crisp and contrasty.
Try both on the same photo #
The quickest way to decide is to flip between them. Pixelize, a free iPhone and Android app, has both on its Pixel tab (listed as Floyd and Atkinson), along with None, Ordered and Bayer. The preview re-renders a moment after you tap, and the Compare slider lets you drag between the original and the result. The app starts on Atkinson, and its implementation uses the classic six-neighbor, 1/8-each pattern shown above. Both algorithms work with any of its 25 color palettes, not just black and white. For the rest of the settings, see how to turn a photo into pixel art.
Frequently asked questions #
Is Atkinson better than Floyd-Steinberg? #
Neither is better overall. Atkinson looks crisper and cleaner on well-lit, high-contrast images. Floyd-Steinberg preserves tones more accurately and handles dark or subtle images better.
Why does Atkinson dithering blow out highlights? #
Because it only passes on three-quarters of each pixel’s error. Near-white and near-black areas don’t accumulate enough error to trigger a different color, so they stay pure white or black.
Why does Floyd-Steinberg look noisy? #
All of the error is carried forward, so almost every area gets some dots, even ones that are nearly flat. In smooth regions, that can form wavy, worm-like patterns. Raising contrast before dithering, or switching to Atkinson, reduces it.
Can I use Atkinson dithering with color palettes? #
Yes. Both algorithms work with any palette: each pixel is rounded to its nearest palette color and the error is spread in red, green and blue separately. Black and white is just the most famous use.