Bill Atkinson's Original Algorithm
Developed by Bill Atkinson at Apple (1983-1984) for MacPaint and the original Macintosh. The algorithm was designed for the Mac's 512×342 monochrome display and 8MHz processor.
How It Works:
- Convert to grayscale: Transform RGB pixels using luminance weighting
- Quantize: Compare each pixel to threshold 128—below becomes black (0), above becomes white (255)
- Calculate error: error = original_value - quantized_value
- Distribute error: Spread 1/8 of error to each of 6 neighboring pixels
- Discard remainder: 25% of error is intentionally lost
Error Distribution Pattern:
| P | 1/8 | 1/8 | |
| 1/8 | 1/8 | 1/8 | |
| 1/8 |
Processing moves left-to-right, top-to-bottom. Error spreads to 6 future neighbors: right (x+1,y), far-right (x+2,y), down-left (x-1,y+1), down (x,y+1), down-right (x+1,y+1), and two-down (x,y+2) positions. Pattern extends +2 pixels right and +2 pixels down, but never extends left or up from current position.
Why It's Different:
Unlike Floyd-Steinberg (which distributes all error via coefficients 7⁄16+3⁄16+5⁄16+1⁄16=16⁄16=100%†), Atkinson deliberately discards 25% of error (distributing only 6⁄8≈75%). This prevents "muddy" midtones and creates the crisp, high-contrast aesthetic perfect for Mac's interface elements and line art.
The algorithm prioritized visual clarity over smooth gradations—exactly what was needed for desktop publishing and the Mac's revolutionary graphical interface.
.png)

