Online Tool Store Online Tool Store
🔳 Image Tools

· 5 min read

How to Dither an Image for E-Ink and Print

Manesh Jayawardhana

CIO & Co-founder

Manesh Jayawardhana is the CIO and Co-Founder of Ceyentra Technologies, where he has spent over nine years leading the design and delivery of software solutions for clients across the globe, spanning web, mobile, AI, and capital market systems. He has grown Online Tool Store's engineering team from the ground up while steering the company's technical direction. His writing draws on this breadth of experience building and shipping software across a wide range of industries and markets. View on LinkedIn

Share

How to Dither an Image for E-Ink and Print

You’ve got a photo and a device that can only show black or white — an e-ink badge, a thermal receipt printer, a one-colour screen print. Send the photo as-is and the driver picks a threshold, everything above it goes white, everything below goes black, and your subject’s face turns into two flat blobs.

Dithering is the fix, and it’s much older than the hardware. It’s how newspapers printed photographs for a century: scatter dots so that from a normal viewing distance, the eye averages them into grey.

What dithering actually does

Dithering trades spatial resolution for tonal resolution. You can’t make a pixel half-black, but you can make half the pixels in a small area black, and at arm’s length that reads as 50% grey.

There are two families of approach, and the difference matters.

Error diffusion — Floyd-Steinberg is the famous one — walks the image pixel by pixel. It picks the nearest available palette colour, works out how far off that was, and pushes the leftover error onto neighbouring pixels that haven’t been drawn yet. The mistake gets spread around instead of accumulating, which is why gradients survive as scattered dots rather than banding into stripes.

Ordered dithering compares each pixel against a fixed threshold matrix instead. It’s cheaper, it’s parallelisable, and it produces the regular crosshatch pattern you can see in old print and early games. Sometimes that pattern is the reason you’re doing it.

Why people get stuck here

  • Resizing after dithering. Dither is defined per output pixel. Scale the result and neighbouring dots blend into grey mush, undoing the whole effect.
  • Wrong algorithm for the content. Ordered dithering on a portrait looks mechanical; error diffusion on flat graphics adds noise where you wanted clean edges.
  • Palette mismatch. Dithering to four greys and sending it to a device that only does black and white just moves the problem downstream.
  • Judging on a high-DPI screen. A 1-bit image at 100% on a retina display looks smoother than it will ever look on the actual device.

What good dithered output looks like

Generated at the final size

Decide the output dimensions first — the e-ink panel’s exact pixel count, the print’s physical size at its DPI — and dither to that. This is the single most important rule and the one most often broken.

Matched to the real palette

If the target does one bit, dither to one bit. If it’s an e-ink panel with black, white and red, dither to those three. Dithering to a richer palette and letting the device reduce it again gives you two rounds of quantisation and the artefacts of both.

The right algorithm for the job

Floyd-Steinberg for photographic tone. Atkinson for a cleaner, higher-contrast look that keeps highlights bright. Bayer when the visible pattern is part of the design rather than a compromise.

AlgorithmBest ForLookWatch Out
Floyd-SteinbergPhotographsFine, random-ish grainCan look noisy on flat areas
AtkinsonPortraits, UIHigher contrast, cleanerLoses some shadow detail
Bayer orderedRetro art, tilingVisible crosshatchObvious pattern at large sizes

Common mistakes to avoid

  • Dithering at 2000px and scaling to 400px for the device.
  • Applying a dither on top of a JPEG that already has compression artefacts — you’ll dither the artefacts too.
  • Forgetting that thermal printers and e-ink often need the image rotated or mirrored, which is a separate step from the dither.
  • Using ordered dithering across a large flat sky, where the repeating pattern becomes very visible.
  • Assuming more colours always help; on genuinely one-bit hardware, a good 1-bit dither beats a reduced 4-grey image.

How to do it with Dithered Image Generator

The Dithered Image Generator processes the image in your browser, so nothing is uploaded.

  1. Add the source image, ideally the highest-quality version you have rather than a re-saved JPEG.
  2. Choose the palette to match your actual device: 1-bit, a few greys, or a fixed retro set.
  3. Pick the algorithm — error diffusion for photos, ordered if you want the pattern to show.
  4. Set the output width to the exact pixel width of the target.
  5. Preview at 100%, and remember your screen flatters it slightly.

For resizing and cropping before you dither, the tools directory has browser-only image tools that keep the file on your device.

Frequently asked questions

Which algorithm should I choose?

Floyd-Steinberg is the sensible default for photographs. Atkinson, developed for early Macintosh displays, keeps more contrast and suits portraits. Use ordered dithering when you actively want the visible grid — it’s a style, not a fallback.

Is dithering only for retro aesthetics?

No. E-ink displays, thermal printers and one-colour screen printing are all genuinely limited palettes today, and every one of them reproduces tone by dot pattern. Halftone printing is the same idea running on newsprint since the 1880s.

Why does my dither look worse after export?

Almost always JPEG. Save 1-bit and small-palette images as PNG — JPEG’s compression assumes smooth gradients and will smear the dot pattern it finds.

Final thought

Dithering is a decision about the output device, not a filter you apply to a photo. Start from the panel or the press — its pixel count, its palette, its viewing distance — and every other setting follows.

Try the free Dithered Image Generator

#dithered-image-generator#floyd-steinberg-dither#bayer-dithering#1-bit-image#online-tools#free-tools