Image Dither
Step / 4
Choose an image
Open a PNG, JPEG or WebP image to process locally in your browser.
PNG, JPEG or WebP · up to 15 MiB · at most 8,192 px per side and 20 megapixels
× px
Your image and pixels stay in this browser. They are never uploaded or placed in the URL.
The multi-step flow keeps a temporary local copy in this browser tab for up to two hours. Start over deletes it.
Normal page, asset and funnel requests may still occur without your image data.
Choose the dithering style
Select an algorithm, output palette, effect strength and processing scale.
For browser responsiveness, output is automatically capped at 4 megapixels even when the accepted source is larger.
Review the result
Compare the original with the palette-limited PNG before downloading.
Download PNG
Save the exact pixels shown in the result canvas as a PNG.
Turn a PNG, JPEG or WebP image into a deliberately limited-palette raster with Floyd-Steinberg, Atkinson or Bayer 4×4 dithering. Choose Monochrome, Grayscale or Limited color, compare the preview, then export a PNG. Processing stays in this browser: the image is not uploaded, sent through Livewire or placed in a URL. In funnel mode, a temporary local browser copy keeps the project available between page steps; Reset deletes it and it expires automatically. This is deterministic pixel processing, not AI, image tracing or vector conversion. Inputs are limited to 15 MiB, 20 megapixels and 8,192 pixels per side; output is automatically capped at 4 megapixels for responsive processing. The original alpha channel is preserved while dithering changes RGB only, so fully transparent pixels remain transparent.
How to dither an image in your browser
-
1
Choose an image
Open a PNG, JPEG or WebP no larger than 15 MiB, 20 megapixels or 8,192 pixels per side. The file is decoded locally.
-
2
Select the algorithm
Use Floyd-Steinberg or Atkinson error diffusion, or choose Bayer 4×4 for a regular ordered pattern.
-
3
Choose the palette
Pick Monochrome, Grayscale or Limited color and review how the reduced colors represent gradients, edges and texture.
-
4
Download the PNG
Inspect the raster preview at useful zoom levels, then export the processed pixels as a PNG with the source alpha preserved.
What the three algorithms change
Dithering represents tones with a smaller set of colors by arranging available pixels spatially. Floyd and Steinberg introduced forward error diffusion in their 1976 paper, An Adaptive Algorithm for Spatial Greyscale. Each quantized pixel leaves an error that is distributed to neighboring pixels still waiting to be processed. This usually produces fine, irregular texture and retains gradual changes better than applying one threshold everywhere.
Atkinson is also an error-diffusion method, but its neighbor pattern and retained error differ. Apple lists Floyd-Steinberg and Atkinson as separate vImage dithering methods. Atkinson often gives a crisper, higher-contrast result, but that appearance can lose some smooth tonal variation.
Bayer 4×4 is ordered dithering. It repeats a fixed 4×4 threshold matrix across the image instead of carrying error forward from one pixel to the next. The method comes from B. E. Bayer’s 1973 paper, recorded as An Optimum Method for Two-Level Rendition of Continuous-Tone Pictures. Its visible, regular pattern is useful for retro graphics and predictable texture.
| Algorithm | Processing model | Typical appearance | Practical tradeoff |
|---|---|---|---|
| Floyd-Steinberg | Diffuses quantization error to later neighbors | Fine, irregular detail | Can create worm-like texture in flat areas |
| Atkinson | Diffuses part of the error through a wider local pattern | Crisp edges and open highlights | May sacrifice some midtone accuracy |
| Bayer 4×4 | Compares each pixel with a repeating threshold matrix | Regular 4×4 texture | Pattern is more visible than error diffusion |
Palette and alpha boundaries
Monochrome reduces visible RGB to two tones. Grayscale keeps several neutral levels, while Limited color quantizes RGB to a small color set. These modes do not identify subjects, rebuild missing detail or infer new colors. The output remains a raster at the processed pixel dimensions; it is not SVG or other vector artwork.
The dither calculation changes RGB values only. It copies the source alpha for each pixel, including partial transparency, and fully transparent pixels stay transparent. The PNG specification defines per-pixel alpha from fully transparent through fully opaque. JPEG has no alpha to preserve, while PNG and some WebP inputs may have it.
Browser processing and PNG export
The browser decodes the selected file, reads pixel data, applies the selected algorithm and builds the download locally. The tool never uploads the image or puts its bytes in Livewire requests or funnel URLs. In funnel mode, it uses temporary, tab-isolated browser storage to carry the local project across full page steps. Reset deletes that project and an automatic expiry removes abandoned data. The HTML Canvas specification defines pixel readback and toBlob() export, with PNG required when a requested type is unsupported.
The 15 MiB compressed-file, 20-megapixel source and 8,192-pixel-per-side limits protect browser memory. A small file can still decode into a large pixel buffer. Processing automatically scales the output down when needed so it does not exceed 4 megapixels, which keeps the interface responsive. Resize an input first if it exceeds a source limit. PNG export preserves processed pixels and alpha losslessly, but it does not preserve source metadata, layers or vector objects.
Frequently Asked Questions
Try Floyd-Steinberg for fine error-diffused texture, Atkinson for a crisper high-contrast look, and Bayer 4×4 when you want a visibly regular retro pattern. The best choice depends on the image and intended appearance.
No. It applies deterministic pixel quantization and dithering in the browser. It does not recognize subjects, generate content, trace shapes or export SVG. The download is a raster PNG.
The original alpha value is copied for every pixel while dithering affects RGB only. Fully transparent pixels remain transparent and partial alpha is preserved in the PNG output.
You can open PNG, JPEG and WebP files up to 15 MiB, 20 megapixels and 8,192 pixels per side. Output is automatically scaled to at most 4 megapixels for responsive processing.
The image is never uploaded, sent through Livewire or put in a funnel URL. In funnel mode, a temporary local copy is stored only in this browser so the project survives full page steps. Reset deletes it, and abandoned project data expires automatically.
Related Tools
Image Resizer
Resize images to pixel-exact dimensions or percentages while preserving aspect ratio. Batch-friendly, no upload.
QR Code Generator
Generate a browser-local QR code from a plain text or URL payload. Adjust size, colours and error correction, then download PNG.
Image Compressor
Compress JPG, PNG and WebP images to reduce file size while preserving visual quality. Entirely in your browser, no upload.
GIF Maker
Turn a sequence of images or a short video into an animated GIF. Set frame rate, loop count and dimensions before exporting.
PNG to JPG Converter
Convert PNG to JPG in your browser. Flatten transparency onto any background color, keep dimensions, and shrink many photo-style PNGs by 60-90%.
Barcode Generator
Create scannable 1D barcodes in Code 128, Code 39, EAN-13, UPC-A, ITF-14 and Codabar. Export as PNG, SVG or PDF for print.