Self-hosted visual regression testing

See every pixel that changed

Screenshot your pages across viewports, compare them against approved baselines, and review exactly what moved — with the flaky noise stabilized out of every run.

staging.yoursite.com/pricing
baseline2.4% diffcurrent run

Diffs you can trust

False positives kill visual testing. Every part of the pipeline exists to make two runs of an unchanged page come back identical.

Stabilization

Deterministic captures

Fonts, animations, lazy images, timers and third-party noise are frozen before every shot — so a reported diff means a real change, not a flaky run.

Diff viewer

Four ways to review

Side-by-side, curtain, onion skin and a red-tint overlay — all sharing one synchronized zoom and pan, so the spot you're inspecting stays put.

Baselines

Approvals keep history

Approving a change only moves a pointer. Old shots stay on disk, so every page keeps a visual timeline you can walk back through.

Self-hosted

Your stack, your disk

Docker Compose, Postgres and content-addressed local storage. Live run updates stream over SSE. No cloud accounts, no per-screenshot pricing.

Limits, not paywalls

Nothing here goes through a checkout. This instance caps how much one browser can chew through — ask for more, or run your own copy and drop the ceiling entirely.

Free

No cost

Projects
2
Pages per project
4
Automated runs per project per day
3
Manual runs
Unlimited

Enough to watch a small site and find out whether the diffs hold up on your pages.

Pro

On request

Projects
4
Pages per project
6
Automated runs per project per day
6
Manual runs
Unlimited

Higher ceilings on this instance. Nothing goes through a checkout — write to me and I raise them.

Self-hosted

Your hardware

Projects
Unlimited
Pages per project
Unlimited
Automated runs per project per day
6
Manual runs
Unlimited

Docker Compose on a machine you own. No accounts, and the screenshots stay on your disk — projects and pages have no ceiling; automated runs share the same daily cap as Pro.

FAQ

What every field does, what the run results mean, and what happens to your screenshots.

Getting started

Selectors

Runs and review

Data and limits

Point it at a URL

Add a project with a base URL, pick the viewports to watch, and run. The first run becomes your baseline.