Guide · Image quality

Dithering for thermal printers

A thermal printer has exactly two colours: black and paper. Dithering is how you fake everything in between.

Last updated: October 2026

A thermal print head heats tiny dots — typically 8 per millimetre (203 dpi) — on heat-sensitive paper. Each dot is either on or off. There is no grey ink, so a photo with smooth tones has to be converted into a pattern of black dots whose density imitates brightness. That conversion is called dithering, and the method you pick changes the result more than any other setting.

Threshold: no dithering at all

Every pixel brighter than a cut-off value becomes white, every darker pixel becomes black. Elysano's Threshold slider sets the cut-off (128 is the middle).

Floyd–Steinberg: the all-rounder for photos

Floyd–Steinberg error diffusion processes the image pixel by pixel. When a grey pixel is rounded to black or white, the rounding "error" is not thrown away but passed on to the neighbours that haven't been processed yet: 7/16 to the pixel on the right, and 3/16, 5/16 and 1/16 to the three pixels below. Over an area the dot density then matches the original brightness very closely.

Atkinson: lighter and cleaner

Atkinson dithering, made famous by the original Apple Macintosh, also diffuses error — but it spreads only 6/8 of it, 1/8 each to six neighbouring pixels, and simply discards the rest. Highlights and shadows lose a little detail, while midtones look cleaner and the overall image is lighter and higher in contrast.

Brightness and contrast matter more than you think

Thermal output almost always comes out darker than a screen preview: dots spread slightly as the paper heats, and cheap paper darkens unevenly. Practical starting points:

Image typeMethodBrightnessContrast
Photo of peopleAtkinson+15 to +25+5 to +15
Landscape / gradientsFloyd–Steinberg+10 to +200 to +10
Logo on whiteThreshold00 (tune the threshold)
QR code / barcodeThreshold00
Screenshot with textThreshold or Atkinson+5+10

Size before you dither

Dithering works on the final printed pixels, so the image should be scaled to the printer's width first — Elysano does this automatically (384 dots for 58 mm, 576 for 80 mm). Very small source images upscaled to that width print soft and blocky; very large ones are fine. For logos, a source at least as wide as the print width gives the cleanest edges.

A quick decision rule

If the image has hard edges and only a few colours, use Threshold. If it is a photo, try Atkinson first and switch to Floyd–Steinberg when you want more shadow detail. Then nudge brightness until the preview looks slightly lighter than you want the print to be.