Bitgrain has 29 effects, all running on one small image engine in your browser. This page explains how that engine turns a photo into dots, glyphs and ink, and lists every effect with a link to its full reference.
Every effect in Bitgrain is a plain function of the pixels you give it. Nothing is generated, nothing is guessed, and nothing leaves your device. When you pick an effect, Bitgrain:
The rest of this page walks through each step, because knowing them is the difference between fighting the tool and steering it.
The same engine powers all three workspaces, but each one exposes a different set of effects and a different way of combining them.
| Workspace | How you pick effects | How many at once |
|---|---|---|
| Image editor | Toolbar buttons: dither, halftone, artistic, grade, haze, filters, palette | One main effect, plus haze and bloom on top |
| Video editor | Effect clips and per-clip effects | As many as you like, stacked in order |
| Studio | The Bitgrain effects dropdown on an image, upload or adjustment layer | One per layer |
Grunge ASCII has no toolbar button. It arrives through shared preset links and effect landing pages such as /grunge, which open the editor with any effect set by name. Blocky and Dot matrix live in the filters list, and Film grain is a switch in adjust.
Before any effect runs, Bitgrain applies your tone adjustments to every pixel exactly once, in this order:
1 leaves the image alone.128). Values above 1 add punch, below 1 flatten.0 is grey, 2 is doubled color.In the image editor these sit in the adjust popover:
| Control | Range | Default | What it does |
|---|---|---|---|
| Resolution | 10% to 200% | 200% | Size of the working grid (see below) |
| Contrast | 0.5x to 3x | 1.2x | Spreads tones apart around the midpoint |
| Brightness | 0.5x to 2x | 1.05x | Multiplies every channel |
| Saturation | 0x to 2x | 1.15x | Mixes toward or away from grey |
| Hue | 0° to 360° | 0° | Rotates all hues |
| Noise | 0% to 100% | 4% | Grain strength, shown when the Film grain switch is on or Grunge ASCII is active |
Because adjustments happen before the effect, they change what the effect sees. Raising Contrast before a dither gives cleaner blacks and whites. Dropping Saturation to 0 before a halftone gives you a true mono screen even in Colour style. See adjustments for more.
When more than one effect is active, they run one after another. Each effect receives the previous effect's output as its input, so order matters: dither then film grain gives grainy dots, while film grain then dither turns the grain into dot noise.
Note: Choosing a film grade from the grade button in the image editor takes over the whole look. While a grade is on, the dither, halftone, artistic, filters, palette and adjust buttons are dimmed with the message "Remove color grade to edit effects". Only Haze & Bloom can still run, and it runs before the grade.
If you choose a palette, it is applied twice. First, effects that understand palettes (dithering, mostly) use it while they work, so the error they spread is measured against real palette colors. Then, after the last effect, every pixel of the result is snapped to its nearest palette color, whatever effect produced it. That second pass is why a halftone or pop grunge image with a palette only ever contains palette colors.
"Nearest" is measured with a perceptual distance that weights green most heavily and shifts the red and blue weights depending on how red the colors are. It tracks what your eye sees better than a straight RGB distance. Palettes are covered in color palettes and LUTs and in the dithering guide.
Effects never run on your full-size photo in the preview. Bitgrain first draws your image onto a smaller working grid and runs the effect there. This keeps the preview fast, and it is also where much of the look comes from: one working pixel becomes one dither dot, one ASCII glyph or one halftone sample.
The grid size depends on the effect and the Resolution slider:
| Effect type | Grid width | Each cell drawn as |
|---|---|---|
| Pixel effects (halftone, filters, pop grunge, ink wash and so on) | Image width x Resolution x 0.5 | 1 x 1 px |
| Dither | Image width x Resolution x 0.4 | 2 x 2 px |
| Grunge ASCII | Image width x Resolution x 0.2 | 6 x 10 px |
| ASCII | 160 columns x Detail | 8 x 14 px |
| Braille | 120 glyphs x Detail | 8 x 14 px |
In the preview, the grid is capped at 2,000 cells on its long edge. So a lower Resolution means fewer, bigger dots and chunkier texture, and a higher one means finer detail. The dithering guide shows this in practice.
Studio effect layers work the same way on a working copy of up to 1,200 px on the long edge. The video editor preview works at up to 540 px wide, which is why the video docs recommend a test export.
When you export from the image editor, Bitgrain treats two kinds of effect differently:
Both paths stop at your plan's size limit (1,500 px on the long edge on the free plan, none on Pro) and at a hard ceiling of 16,384 px. After scaling, the optional print finish is applied to the full-size image, then the watermark if your plan has one. See exporting and plans and pricing.
Every effect is deterministic: the same image and the same settings give the same pixels every time, on any machine. Pop grunge, dust and scratches, ink wash and manga look random, but their speckle and wobble come from a fixed hash of each pixel's position (and, for dust, the Seed value you choose), so they repeat exactly.
Film grain, Grunge ASCII, the Random dither method and the grain and paper mottle inside print finish look random too, but they draw their noise from a seeded generator, so two exports of the same look match exactly.
In video, time itself becomes a seed. Each frame gets a base seed that changes 30 times per second of timeline time, so seeded textures move like film instead of freezing. Pop grunge re-rolls its texture at its Jitter frequency (30 hz by default), and halftone's screen angle only shimmers when its Jitter is above 0. The details are in frame seeds and jitter. Read privacy and determinism for why this matters.
Bitgrain's engine groups its effects into three families. The "Where" column shows which workspace offers each one: E for the image editor, V for the video editor, S for Studio effect layers, and links for effects reachable only through preset links and landing pages.
| Effect | Where | What it does | Reference |
|---|---|---|---|
| ASCII | E, V, S | Redraws the image as text characters | ASCII |
| Braille | E, V | Packs 2 x 4 dots into each braille glyph | Braille |
| Dithering | E, V, S | Two tones or a palette, with 14 algorithms | Dithering |
| Blocky | E | Flat blocks snapped to a few brightness steps | Blocky |
| Grunge ASCII | links | Noisy, heavy character texture | Grunge ASCII |
| Dot matrix | E | A grid of round dots on a dark ground | Dot matrix |
| Halftone | E, V, S | Mono, color or CMYK dot screens | Halftone |
| Scanlines | V, S | CRT lines with RGB shift and vignette | Scanlines |
| Photocopy | V, S | High-contrast toner look | Photocopy |
| Misprint | V, S | Red and blue plates out of register | Misprint |
| Fold | V, S | Paper crease highlights and shadows | Fold |
| Dust and scratches | V, S | Specks and vertical film scratches | Dust and scratches |
| Effect | Where | What it does | Reference |
|---|---|---|---|
| Invert | E, V | Flips every color | Invert |
| Grayscale | E, V | Accurate black and white | Grayscale |
| Pixelate | E, V, S | Averages the image into big blocks | Pixelate |
| Color grade (LUT) | E | 37 film and cinematic grades | LUT film grades |
| Contour | E, V | Topographic lines, optionally filled | Contour |
| Color grade | V | Temperature, tint and vibrance | Color grade |
| Duotone | V | Maps tones between two colors | Duotone |
| Vignette | V | Darkens toward the corners | Vignette |
| Posterize | V, S | Flat tone bands per channel | Posterize |
| Sharpen | V | Unsharp-mask edge boost | Sharpen |
| Color wash | V | Blends one color over everything | Color wash |
| Effect | Where | What it does | Reference |
|---|---|---|---|
| Film grain | E, V, S | Shadow-weighted grain | Film grain |
| Haze and bloom | E, V | Lifted blacks, soft glow, glowing highlights | Haze and bloom |
| Crosshatch | V, S | Pen hatching in four directions | Crosshatch |
| Ink wash | E | Banded ink wash with drawn outlines | Ink wash |
| Manga | E | Layered screentone hatching and outlines | Manga |
| Pop grunge | E, V, S | Comic dots with grain and spatter | Pop grunge |
Beyond these 29, the image editor also offers two output tools built on the same pipeline: risograph separations and animate a still.