Overview
Introduction
This tool adds classic Floyd-Steinberg error-diffusion dithering to a PNG, entirely in your browser.
It works on a plain pixel buffer, so nothing you upload is sent to a server.
What Is PNG Dithering Adder?
A dithering tool that quantizes each RGB channel down to a limited number of levels while diffusing the rounding error from each pixel into its right, bottom-left, bottom, and bottom-right neighbors using the standard Floyd-Steinberg weights.
The result is the classic textured, halftone-like look associated with early computer graphics and limited-palette displays.
How PNG Dithering Adder Works
The tool processes pixels left-to-right, top-to-bottom, working on a float-precision copy of the pixel data so accumulated error doesn't get lost to premature rounding.
At each pixel, each channel is rounded to the nearest of the requested levels; the difference between the original and rounded value is then added into the corresponding channel of the four neighboring pixels using the 7/16, 3/16, 5/16, 1/16 Floyd-Steinberg weights.
When To Use PNG Dithering Adder
Use it to give an image a retro, limited-palette look, or to prepare an image for a genuinely low-color-depth display where dithering meaningfully improves perceived gradient smoothness.
It's also a good creative effect for stylized graphics referencing early computer or print halftone aesthetics.
Often used alongside PNG Posterizer, PNG Quantizer and PNG Artifacts Adder.
Features
Advantages
- Runs entirely client-side; nothing you upload leaves your device.
- Produces noticeably smoother-looking gradients than plain posterization at the same color-level count.
- Uses the same, well-documented algorithm found in classic image processing software.
Limitations
- At very low level counts, the characteristic dither texture is quite visible and won't suit every use case.
- Processing works on a float buffer internally, so very large images take proportionally longer than simpler per-pixel filters.
Examples
Best Practices & Notes
Best Practices
- Use very few levels (2-4) for a deliberate retro/halftone effect, and more levels (8-16) if you just want to reduce banding from posterization.
- View the result at 100% zoom, since the dither pattern can look different when scaled down by a browser.
Developer Notes
The pure dithering math lives in a lib function that copies the pixel buffer into a Float32Array to accumulate diffused error without premature clamping, then writes clamped, quantized byte values back into a fresh Uint8ClampedArray output buffer, keeping the algorithm fully testable under Node without a canvas.
PNG Dithering Adder Use Cases
- Giving a modern image a retro, limited-palette computer graphics look
- Reducing visible color banding compared to plain posterization at the same level count
- Creating stylized halftone-like art from a photo
Common Mistakes
- Expecting dithering to look identical to posterizing — the diffused error pattern is the whole point of the effect.
- Using a very low level count and being surprised by how strong the dither texture looks; try more levels for a subtler effect.
Tips
- Compare a few different level counts side by side to find the balance between texture and fidelity you want.
- Combine with the grayscale-focused tools first if you want a classic black-and-white dithered look.