TOOLS › DITHERING TOOL
FREE · NO SIGN-UP · RUNS IN YOUR BROWSER

Pixel Art Dithering Tool

Apply Floyd-Steinberg or Bayer dithering to any image and map it onto a palette: one pulled from the image, a classic like Game Boy or PICO-8, or your own hex list. Downscale first to make photos read as pixel art.

1 · YOUR IMAGE

DROP, PASTE OR BROWSE
PNG, JPG, WebP or GIF · up to 4 megapixels

2 · PALETTE

Palette source

3 · DITHER

Algorithm
Output width in pixels. 0 keeps the original size. Try 96 to 160 for a photo.
Want a sprite drawn in this palette from scratch, outline and all? SpriteLab has the same dithering plus palette lock on every generation, free to retune.
Result appears here
NOTHING HERE YETDrop an image on the left. It is dithered onto an 8-colour palette straight away, and every control re-runs it live.

How it works

Drop in an image

A sprite, a photo, a render, a screenshot. Nothing is uploaded, the whole thing runs on your machine.

Pick a palette

From image builds one out of the colours already there. Preset gives you the classics. Custom takes any hex list, so a Lospec palette or the output of our palette extractor drops straight in.

Choose the pattern

Floyd-Steinberg for an organic, photographic grain. Bayer 2×2, 4×4 or 8×8 for the regular checker that reads as classic pixel art. Pull the strength down to keep flat areas clean.

Ordered vs error diffusion

Dithering fakes colours a palette does not have by mixing two nearby colours in a pattern the eye blends together. Bayer dithering is ordered: it uses a fixed threshold tile, so the same input colour always produces the same pattern. That is why it looks tidy, tiles cleanly, and does not shimmer when a sprite moves.

Floyd-Steinberg is error diffusion: each pixel's rounding error is pushed onto its neighbours, so the pattern adapts to the image and looks smoother on photos. The cost is that it is unstable frame to frame, which makes animated sprites crawl. Rule of thumb: Bayer for game assets, Floyd-Steinberg for stills and posters. Either way, dither reads best when each dot is a real pixel, so shrink photos with the downscale box before you dither them. If you would rather skip the source image altogether, SpriteLab draws sprites from a prompt with the same dither and palette lock built into the free tuning sliders.

FAQ

Is the dithering tool free?

Yes. Everything runs in your browser. No account, no upload, no watermark, no limit on how many images you run through it.

Floyd-Steinberg or Bayer, which should I use?

Floyd-Steinberg spreads the error to neighbouring pixels, so it looks organic and handles photos well, but the pattern shifts if the image moves. Bayer uses a fixed tile, which gives that classic regular checker look and stays stable across animation frames. For sprites and tiles, Bayer is usually the safer pick.

What does the strength slider do?

At 100% the full dither pattern is applied. Lower values pull it back toward a plain nearest-colour snap, so flat areas stay flat and only the gradients pick up the pattern. 40 to 70% is often the sweet spot for sprites.

Why downscale first?

Dithering a full-size photo gives you a photo with grain, not pixel art. Shrinking it to 64 to 160 pixels wide first turns every dither dot into a visible pixel, which is the look people mean by dithered pixel art.

Can I use my own palette?

Yes. Pick Custom and paste hex codes, one per line or separated by spaces or commas. Any .hex file from Lospec or from our palette extractor pastes straight in.

More free tools

In the app

Open SpriteLab to keep building with your sprites.