Effects overview

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.

The short version

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:

  1. Shrinks your image onto a working grid (the size is set by the Resolution slider).
  2. Applies your Brightness, Contrast, Saturation and Hue adjustments once.
  3. Runs your effects in order, each one feeding the next.
  4. Snaps the final colors to your palette, if you picked one.
  5. Draws the grid to the screen, then scales it up to your export size.

The rest of this page walks through each step, because knowing them is the difference between fighting the tool and steering it.

Where effects live

The same engine powers all three workspaces, but each one exposes a different set of effects and a different way of combining them.

WorkspaceHow you pick effectsHow many at once
Image editorToolbar buttons: dither, halftone, artistic, grade, haze, filters, paletteOne main effect, plus haze and bloom on top
Video editorEffect clips and per-clip effectsAs many as you like, stacked in order
StudioThe Bitgrain effects dropdown on an image, upload or adjustment layerOne 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.

Pre-adjustments

Before any effect runs, Bitgrain applies your tone adjustments to every pixel exactly once, in this order:

  1. Brightness multiplies each channel. 1 leaves the image alone.
  2. Contrast pushes each channel away from the midpoint (128). Values above 1 add punch, below 1 flatten.
  3. Saturation mixes each pixel toward its own luminance. 0 is grey, 2 is doubled color.
  4. Hue rotates every color around the color wheel by the given number of degrees.

In the image editor these sit in the adjust popover:

ControlRangeDefaultWhat it does
Resolution10% to 200%200%Size of the working grid (see below)
Contrast0.5x to 3x1.2xSpreads tones apart around the midpoint
Brightness0.5x to 2x1.05xMultiplies every channel
Saturation0x to 2x1.15xMixes toward or away from grey
Hue0° to 360°0°Rotates all hues
Noise0% 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.

Ordered stacking

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.

Palette enforcement

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.

The working grid

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 typeGrid widthEach cell drawn as
Pixel effects (halftone, filters, pop grunge, ink wash and so on)Image width x Resolution x 0.51 x 1 px
DitherImage width x Resolution x 0.42 x 2 px
Grunge ASCIIImage width x Resolution x 0.26 x 10 px
ASCII160 columns x Detail8 x 14 px
Braille120 glyphs x Detail8 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.

Scaling up for 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.

Determinism and frame seeds

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.

All 29 effects

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.

Textures

EffectWhereWhat it doesReference
ASCIIE, V, SRedraws the image as text charactersASCII
BrailleE, VPacks 2 x 4 dots into each braille glyphBraille
DitheringE, V, STwo tones or a palette, with 14 algorithmsDithering
BlockyEFlat blocks snapped to a few brightness stepsBlocky
Grunge ASCIIlinksNoisy, heavy character textureGrunge ASCII
Dot matrixEA grid of round dots on a dark groundDot matrix
HalftoneE, V, SMono, color or CMYK dot screensHalftone
ScanlinesV, SCRT lines with RGB shift and vignetteScanlines
PhotocopyV, SHigh-contrast toner lookPhotocopy
MisprintV, SRed and blue plates out of registerMisprint
FoldV, SPaper crease highlights and shadowsFold
Dust and scratchesV, SSpecks and vertical film scratchesDust and scratches

Filters

EffectWhereWhat it doesReference
InvertE, VFlips every colorInvert
GrayscaleE, VAccurate black and whiteGrayscale
PixelateE, V, SAverages the image into big blocksPixelate
Color grade (LUT)E37 film and cinematic gradesLUT film grades
ContourE, VTopographic lines, optionally filledContour
Color gradeVTemperature, tint and vibranceColor grade
DuotoneVMaps tones between two colorsDuotone
VignetteVDarkens toward the cornersVignette
PosterizeV, SFlat tone bands per channelPosterize
SharpenVUnsharp-mask edge boostSharpen
Color washVBlends one color over everythingColor wash

Creative

EffectWhereWhat it doesReference
Film grainE, V, SShadow-weighted grainFilm grain
Haze and bloomE, VLifted blacks, soft glow, glowing highlightsHaze and bloom
CrosshatchV, SPen hatching in four directionsCrosshatch
Ink washEBanded ink wash with drawn outlinesInk wash
MangaELayered screentone hatching and outlinesManga
Pop grungeE, V, SComic dots with grain and spatterPop grunge

Beyond these 29, the image editor also offers two output tools built on the same pipeline: risograph separations and animate a still.

More documentation