Image Dither

Loading the image dither tool…

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. 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. 2

    Select the algorithm

    Use Floyd-Steinberg or Atkinson error diffusion, or choose Bayer 4×4 for a regular ordered pattern.

  3. 3

    Choose the palette

    Pick Monochrome, Grayscale or Limited color and review how the reduced colors represent gradients, edges and texture.

  4. 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