vsCompare / Happo

$13,308a year less than Happo.

For 300 stories at 3 viewports and 400 builds a month, 360,000 screenshots.

Happo renders every snapshot in every browser on its own workers and bills each one. stateofpixel reviews the screenshots your CI already takes and bills only for the storage they use.

Start free with GitHubSee the switch

Facts about Happo checked on 27 September 2026, with 7 sources.

A month of visual tests

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

  • stateofpixelFree, 5.5 GB stored$0
  • HappoPro $749 + 60,000 extra at $6 per 1,000$1,109
Price it for your suite

One build, step by step.

300 stories at 3 viewports, run through Happo and through stateofpixel.
Happostateofpixel
  1. 1
    Your CI builds and uploads the suite
    Your tests take screenshots900 screenshots
  2. 2
    Happo's workers render every snapshot
    The CLI hashes and compares them on the runner900 hashes
  3. 3
    Happo compares with the baseline report
    Only images we have not seen upload45 changed
  4. 4
    You review on Happo and it sets the status
    The review page and the GitHub check
Billed per snapshot900countedEach screenshot in each build
Billed per GB stored0counted45 changed screenshots and their diffs stored

What changes when you switch.

The same pull request, reviewed with less in the way.
01One rendererYour tests already render in CI. We compare those pixels, so there is no second browser that disagrees with your test run.
02Browsers don't multiply the billHappo counts one snapshot per variant per browser. We bill for bytes stored, and an unchanged screenshot is one hash.
03The free plan never stops CIHappo pauses a free account at its quota until the next cycle. Ours warns, waits 14 days, then passes the check with a note.

What your reviewers get.

Each changed screenshot next to its baseline, with the changed pixels in green.
  • 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 green

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
HappoPro $749 + 60,000 extra at $6 per 1,000$1,109 /mo

$13,308 a year less than Happo.

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 Happo pricing on 27 September 2026. Happo counts each browser as its own snapshot.

stateofpixel and Happo, row by row.

Every row about Happo links to the page it came from.
stateofpixelHappoWhat you pay forStorage. Snapshots, builds and seats are free.Snapshots a month. One snapshot is one variant in one browser.1Free plan10 GB stored. Snapshots are not charged.5,000 snapshots a month, Chrome only.1At the plan limitWarns at 80%. After 14 days over, new images are not stored and the check passes with a note.On Free, the account pauses until the next cycle. Paid plans bill the extra.1Who takes themYour CI.Happo's browser workers, from the suite the CLI uploads.2Where they are comparedYour CI. Only the images upload.Happo's service.23

Where Happo is ahead.

We skip some features on purpose. If you need one of these, choose Happo.
Safari, iOS and EdgeHappo renders them on its own machines. With stateofpixel, your CI renders every browser you want to compare.
Accessibility checksHappo runs axe-core as a target on every plan. stateofpixel only compares screenshots.
GitLab, Bitbucket and Azure DevOpsHappo reports to all three. stateofpixel works with GitHub only.

Switch in one pull request.

Keep your tests. Change the step that sends screenshots to Happo. The moving guide has the details.
  1. 1Install the GitHub AppPick the repositories. On GitHub Actions there is no token to copy.
  2. 2Replace the Happo stepStorybook stories are captured at each width you list. For Cypress or Playwright, upload the screenshots your tests write.
  3. 3Merge to mainThat build becomes the baseline. There is nothing to export from Happo.

Before

.github/workflows/visual.yml
steps:
  - run: npm ci
  - run: npx happo
    env:
      HAPPO_API_KEY: ${{ secrets.HAPPO_API_KEY }}
      HAPPO_API_SECRET: ${{ secrets.HAPPO_API_SECRET }}

After

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

steps:
  - run: npm ci
  - run: npx storybook build
  - run: npx stateofpixel storybook storybook-static --viewports 375,1280

Questions.

What to know before you move from Happo.
Can I keep my Storybook stories as they are?

Yes. stateofpixel storybook opens your built Storybook and captures every story at each width. A story named Button/Primary becomes the snapshot Button/Primary [chromium 1280].

Why is stateofpixel cheaper than Happo?

Happo renders every snapshot in every browser on its own machines. stateofpixel never runs a browser: your CI renders and compares, and our server stores the images that changed.

Do I lose my Happo baselines?

You start fresh. The first build on your default branch becomes the baseline, and pull requests compare against it from then on.

Sources

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

  1. 1Happo pricing
  2. 2Happo getting started
  3. 3Happo reviewing diffs
  4. 4Happo browsers
  5. 5Happo continuous integration
  6. 6happo on npm
  7. 7Happo client repository

Every pixel, reviewed.
Nothing ships by surprise.

Start free with GitHubRead the quickstart