Catch visual changes before they ship. Render screenshots in your own CI, review every pixel diff here, and merge on a green check.

Get startedHow it works

Your CI does the rendering. We store the images, keep the baselines and set the check.

Capture in your CI

Playwright, Storybook or any folder of PNGs. Screenshots render on your runners, next to your tests.

Upload what changed

The CLI diffs against the baseline and uploads only new images. Unchanged pixels never leave CI.

Review and merge

Approve changes with the keyboard. The GitHub check turns green when every change is approved.

Two lines in your workflow. GitHub Actions signs in with OIDC, so there is no token to copy.

.github/workflows/visual.yml
permissions:
  id-token: write

steps:
  - run: npx playwright test
  - run: npx stateofpixel upload screenshots

Pay for storage, nothing else. Storage is the only cost that grows for us, so it is the only thing we bill.

No per-snapshot fees
Capture every state of every component.
No per-seat fees
The whole team can review.
Storage only
A generous free tier, then pay for what you keep.

Every pixel, reviewed.
Nothing ships by surprise.

Get started with GitHub