Dithering fakes a full range of tones with only two colors, or a small palette, by arranging dots cleverly. This page explains all 14 dithering algorithms in Bitgrain, the dither factor, palettes, why resolution changes everything, and a set of recipes to start from.
Imagine you can only print black or white. Rounding every pixel to the nearest of the two gives you harsh, flat blobs. Dithering rounds the same way, but hides the rounding mistakes in a pattern of dots, so from a normal viewing distance your eye blends them back into greys.
Bitgrain's dither effect works on the working grid:
2 x 2 px dots.Without a palette, a cell is compared against the midpoint and becomes ink or paper. With a palette, it becomes the nearest palette color. What changes between algorithms is how they decide, and that decision is the whole character of the look.
| Workspace | Where | Algorithm picker | Strength control |
|---|---|---|---|
| Image editor | The dither button on the toolbar | Two groups, "Error Diffusion" and "Ordered" | Factor, 10% to 200%, default 100% |
| Video editor | Add the Dither effect | Method menu | Intensity, 0.1 to 2, default 1 |
| Studio | Bitgrain effects, then Dither | Method menu | Intensity, 0 to 4, default 1 |
The image editor lists methods in lowercase with dashes removed (for example "floyd steinberg", "sierra 2", "bayer 4"). The video editor and Studio use names like "Floyd-Steinberg", "Bayer 4x4" and "JJN". The headings below use the video and Studio names. The image editor starts on Atkinson, while the video editor and Studio start on Floyd-Steinberg.
The dither effect also has a color switch:
| Workspace | Control | Default |
|---|---|---|
| Image editor | The colorize toolbar button | On |
| Video editor | Source color | On |
| Studio | Color | Off |
The factor (called Intensity in video and Studio) scales how much of each cell's rounding error is passed on to its neighbours.
1 (100%), the full error is spread, which is the textbook behaviour of each algorithm.1, less error travels. Tones drift toward flat black and white areas with dots only near the transitions, which reads as more graphic and posterized.1, the error is exaggerated. Texture gets busier, streaks appear, and midtones break up into worm-like patterns. Push it for glitchy looks.Note: The factor only affects the eight error diffusion methods. Bayer, blue noise, threshold and random ignore it, because they never spread error in the first place.
Error diffusion methods walk the grid one cell at a time. For each cell they pick the nearest tone, measure the difference (the error), and push fractions of that error onto cells they have not visited yet. Neighbours that received extra darkness are more likely to become ink, so tone is preserved on average.
Bitgrain scans in a serpentine path: left to right on even rows, right to left on odd rows. This avoids the diagonal "rain" that a one-way scan leaves in flat areas.
The algorithms differ in how far the error travels and how it is weighted. Wider kernels (the pattern of neighbours that share the error) give smoother gradients and less visible structure. Smaller ones give crisper, grainier dots.
The classic from 1976. The error goes to four neighbours: 7/16 to the right, and 3/16, 5/16 and 1/16 to the three cells below.
Developed for the original Apple Macintosh. Six neighbours each receive 1/8 of the error, which adds up to only 6/8. A quarter of the error is thrown away on purpose.
The full three-row Sierra kernel, spreading error across ten neighbours (weights in 32nds).
The two-row Sierra variant, seven neighbours (weights in 16ths).
The smallest kernel in the set: half the error goes right, a quarter to each of two cells below.
Twelve neighbours across three rows (weights in 42nds), with more weight near the center than JJN.
A simplified Stucki that uses only two rows, seven neighbours (weights in 32nds).
Jarvis, Judice and Ninke's kernel: twelve neighbours across three rows (weights in 48ths), the widest spread of the group.
These methods decide each cell on its own, by comparing it to a threshold. No error is passed around, so there are no streaks and no worms, and one cell never affects another. That makes them stable: move part of the image and the rest does not change. It is also why they hold up well in animation.
In the image editor, these six sit under the "Ordered" heading.
A tiny repeating 2 x 2 threshold pattern, so only five distinct tone levels are possible.
A 4 x 4 pattern giving 17 tone levels.
An 8 x 8 pattern giving 65 tone levels.
A 16 x 16 threshold tile arranged so dots spread evenly with no obvious grid and no clumps.
No dithering at all. Every cell is simply ink or paper depending on whether it is darker or lighter than the midpoint. With a palette, each cell just becomes its nearest palette color.
Each cell is compared against a noise threshold, so tone becomes pure static.
| You want | Try |
|---|---|
| A safe photographic result | Floyd-Steinberg |
| Punchy black and white with clean highlights | Atkinson |
| The smoothest possible gradients | JJN or Sierra |
| Crisp detail for print | Stucki or Burkes |
| Retro console graphics | Bayer 4x4 with a console palette |
| A woven, patterned screen | Bayer 8x8 |
| Natural grain that stays still in video | Blue noise |
| A stencil or poster | Threshold |
| Noise and grit | Random |
Dithering has three color behaviours, depending on the color switch and the palette:
In the image editor, pick a palette from the palette button. "No palette" turns palettes off. The list shows these palettes:
| Palette | Colors | Palette | Colors |
|---|---|---|---|
| Gameboy DMG | 4 | Thermal | 7 |
| NES | 56 | Forest | 6 |
| C64 | 16 | Arctic | 6 |
| Apple II | 16 | Vaporwave | 6 |
| CGA | 4 | Neon | 6 |
| PICO-8 | 16 | Noir | 6 |
| ZX Spectrum | 15 | Vintage | 6 |
| MSX | 16 | Amber CRT | 6 |
| Risograph | 8 | Green CRT | 6 |
| Gameboy Pocket | 4 | Sepia | 7 |
| Duotone Magenta | 6 | Cyanotype | 7 |
| Sunset | 6 | Mono Cream | 5 |
Generate from image (the pipette button at the bottom) samples the current output and builds an 8-color palette from it, skipping near-black pixels. It appears in your look as "Aura Gen".
Tip: Palettes with few colors dither most visibly. Error diffusion with a 4-color palette gives the richest texture. Ordered dithering with a 16-color palette gives the cleanest retro look.
A palette is also enforced on the final output of every effect, not just dithering. See palette enforcement.
Dithering happens on the working grid, not on your full-size photo. In the image editor the grid is 0.4 x image width x Resolution cells across, and each cell is drawn as a 2 x 2 px dot. The grid is capped at 2,000 cells on the long edge.
For a photo 3,000 px wide:
| Resolution | Grid width | What you see |
|---|---|---|
25% | 300 cells | Big, chunky dots. Very graphic, little detail. |
100% | 1,200 cells | Balanced. Dots visible up close, tone reads well. |
200% | 2,000 cells (capped) | Fine dots, lots of detail, reads almost like grain. |
Every algorithm looks different at each size. Atkinson and Bayer patterns come alive at low resolution, where each dot is visible. JJN and Stucki shine at higher resolution, where their smoothness has room.
When you export, the dither grid is not recalculated. Bitgrain renders the same grid you see and enlarges it with nearest-neighbour scaling, so your export has exactly the dots from the preview, just bigger and still perfectly sharp. That is also why a dither at low Resolution exported at 4x is a crisp pixel-art file rather than a blurry one. See scaling up for export.
These use only controls from the image editor. Treat them as starting points.
60%, Contrast 1.4x, Saturation 0x.25% to 40% so each dot reads as a pixel.1.3x.1.5x and Contrast to 1.3x.70% for flatter, poster-like areas.180% or more.100% and Contrast to 1.5x.Tip: Save a look you like as a preset so you can reuse it. See presets and recipes.