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.
A sprite, a photo, a render, a screenshot. Nothing is uploaded, the whole thing runs on your machine.
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.
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.
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.
Yes. Everything runs in your browser. No account, no upload, no watermark, no limit on how many images you run through it.
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.
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.
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.
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.
Snap any image down to 2 to 64 colours built from the image itself.
Pull the hex colours out of an image and export .hex, .gpl or .pal.
Scale pixel art by a clean integer factor with no blur.
Open SpriteLab to keep building with your sprites.