vsCompare / Percy

Review the pixels your tests drew.

Percy sends your DOM to BrowserStack and renders it again at every browser and width. stateofpixel reviews the screenshots from your own test run, and bills for storage, not screenshots.

Install the GitHub AppSee the switch

Facts about Percy checked on 27 September 2026, with 6 sources.

A month of visual tests

300 stories, 3 viewports, 400 builds, 360,000 screenshots

  • stateofpixelFree, 5.5 GB stored$0
  • PercyDesktop 25k + 335,000 extra$12,609
Price it for your suite

Where the screenshots come from. That one choice decides what can drift, and what you are billed for.

PercyBilled per screenshot
  1. 1Your tests capture the DOM
  2. 2The SDK uploads the DOM and assets
  3. 3Percy renders each browser and width
  4. 4Percy compares and sets the check
stateofpixelBilled per GB stored
  1. 1Your tests take screenshots
  2. 2The CLI hashes and compares them on the runner
  3. 3Only images we have not seen upload
  4. 4The review page and the GitHub check

What changes when you switch. The same pull request, reviewed with less in the way.

01What you test is what you reviewPercy renders your DOM a second time, outside your test run. We compare the pixels your own browser produced.
02No login to set up twicePercy loads your assets again when it renders, so pages behind a login can need extra setup. Your CI already has access.
03No per screenshot pricePercy counts each page at each browser and width, and extra screenshots cost $0.036. We bill for storage, and an unchanged screenshot is one hash.

What your reviewers get. Each changed screenshot next to its baseline, with the changed pixels in red.

  • Four views. Side by side, diff, slider and flip.
  • Keyboard first. j and k to move, a to approve, r to reject.
  • One check. Green when every change is approved.
Try the review page
The stateofpixel review page, with the baseline and the new screenshot side by side and the changed pixels in red

Price it for your suite. Move the sliders. Every tool here bills for this many screenshots a month, except stateofpixel.

Screenshots a month360,000

stateofpixelFree, 5.5 GB stored$0 /mo
PercyDesktop 25k + 335,000 extra$12,609 /mo

$151,308 a year less than Percy.

Screenshots are stories x viewports x browsers x builds. For stateofpixel, 5% of screenshots change per build at 80 KB each, and pull request images are kept 60 days. The cheapest list plan for each tool, before tax, from Percy pricing on 27 September 2026. Percy prices are month to month; yearly billing is lower.

Side by side. Every row about Percy links to the page it came from.

stateofpixelPercy

Pricing

What you pay forStorage. Snapshots, builds and seats are free.Screenshots: pages x browsers x widths.1
Free plan10 GB stored, unlimited snapshots.5,000 screenshots a month.1
First paid plan$15 a month for 25 GB.Desktop, $249 a month for 10,000, or $199 billed yearly, then $0.036 each.1
At the plan limitWarns at 80%. After 14 days over, new images are not stored and the check passes with a note.Paid plans keep running and bill each extra screenshot.1
SeatsNone. Access comes from GitHub roles.Unlimited users. SSO is in the Enterprise add-on.1

Screenshots

Who takes themYour CI.Percy, from a DOM snapshot of your page.2
Where they are comparedYour CI, before anything uploads.Percy's cloud.2
BrowsersWhatever your CI runs.Chrome, Firefox, Edge and Safari. Mobile on a higher plan.13
Test runnersPlaywright, Storybook, or any tool that writes PNG files.SDKs for Playwright, Cypress, Selenium, Puppeteer, Storybook and more.4

Platform

Git hostsGitHub.GitHub, GitLab, Bitbucket and Azure DevOps.5
Build historyDefault branch builds kept. Pull request builds 60 days after close, 7 to 365 days.30 days on Free, 12 months on paid plans.1
Open sourceNo. Closed source for now.The CLI and SDKs are MIT licensed.6

Where Percy is ahead. We skip some features on purpose. If you need one of these, choose Percy.

Many browsers and real devicesPercy renders Chrome, Firefox, Edge and Safari, and mobile on its higher plan. stateofpixel compares what your CI renders.
AI reviewPercy's Visual Review Agent highlights meaningful changes on paid plans. stateofpixel compares pixels with a color threshold.
GitLab, Bitbucket and Azure DevOpsPercy supports all of them. stateofpixel works with GitHub only.
Selenium in any languagePercy has SDKs for Java, Ruby, Python and .NET. stateofpixel takes the PNG files those tests write.

Switch in one pull request. Keep your tests. Change the step that sends screenshots to Percy.

  1. 1Install the GitHub AppPick the repositories. On GitHub Actions there is no token to copy.
  2. 2Swap percySnapshot() for snapshot()Import it from stateofpixel/playwright and add the reporter. It waits for fonts and disables animations.
  3. 3Merge to mainThat build becomes the baseline, and pull requests compare against it.

Before

.github/workflows/visual.yml
steps:
  - run: npx percy exec -- npx playwright test
    env:
      PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}

After

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

steps:
  - run: npx playwright test
playwright.config.ts
import { defineConfig } from "@playwright/test";

export default defineConfig({
  reporter: [["list"], ["stateofpixel/playwright"]],
});

Questions. What to know before you move from Percy.

Why compare screenshots from my own CI?

They are the pixels your tests saw. There is no second render with different fonts, timing or network, so a diff is a change in your app, not in the renderer.

Can I still test several browsers?

Yes. Run Playwright projects for Chromium, Firefox and WebKit. Each browser is its own snapshot, named like Checkout [firefox 1280].

I upload a folder of images with percy upload. What changes?

Run npx stateofpixel upload on the same folder. Folder paths become snapshot names.

How much does stateofpixel cost compared with Percy?

Percy bills per screenshot after the included amount. stateofpixel bills for storage, with 10 GB free. The calculator on this page compares both for your suite.

Sources

Read on 27 September 2026. Prices are list prices before tax. The stateofpixel column comes from our docs.

  1. 1Percy pricing
  2. 2Percy SDK workflow
  3. 3Percy cross-browser
  4. 4Percy SDKs
  5. 5Percy source control
  6. 6@percy/cli package

Every pixel, reviewed.
Nothing ships by surprise.

Install the GitHub AppRead the quickstart