BackstopJS Alternatives (2026): 8 Tools Compared

BackstopJS is the open-source default for visual regression testing of websites. You list pages in backstop.json, run backstop reference and backstop test, and get an HTML report of what changed. It’s free, MIT licensed and works without a vendor. This page is for teams looking at something else, usually for one of these reasons: no new release since 2024 and a README asking for a new maintainer, the upkeep of the config and the CI job, review that happens in an HTML report only developers open, or flaky screenshots.

Which of those is driving you decides which tool to look at, so this page is organised that way. Every price below is from the vendor’s own pricing page or documentation, checked on 5 November 2026. Diffy is our product; we’ve tried to be as plain about where it loses as about where it wins.

Where BackstopJS stands in 2026

  • Releases: the latest version on npm is 6.3.25, published on 7 September 2024.
  • Repository: garris/BackstopJS isn’t archived. The most recent commit on master, on 8 September 2026, added a note to the README: “BackstopJS needs a new maintainer/owner.” Nothing has been released since 6.3.25.
  • Licence and cost: MIT, free at any volume. You pay in CI time, storage for reference images and reports, and the hours to keep the config current.
  • How it works: it drives Puppeteer or Playwright, compares images with Resemble.js against a misMatchThreshold, and has a --docker flag so rendering stays consistent across machines. Scenarios support hideSelectors, removeSelectors, delays, click and hover selectors, cookies and onBefore/onReady scripts.
  • Environments: a scenario’s referenceUrl lets you capture a reference from one environment, such as production, and test another, such as staging.

So BackstopJS still works, and for a developer who owns the config it’s hard to beat on price. The reasons to move are mostly about maintenance and who reviews the results.

BackstopJS alternatives at a glance

ToolFree tierCheapest paid planWorks from
BackstopJSFree and open source—A list of URLs in backstop.json
Diffy500 screenshots a month$67/month billed annually ($80 monthly), 2,000 screenshotsA list of URLs or a sitemap
PlaywrightFree and open source—Your tests
Percy5,000 screenshots a month$199/month billed annually ($249 monthly), 10,000 screenshotsA sitemap or page list via its CLI, Storybook, your tests
ArgosUp to 5,000 screenshots, one-person account$100/month, 35,000 screenshotsScreenshots from your tests, taken in your CI
Happo5,000 snapshots a month, Chrome only$149/month, 50,000 snapshotsA list of public URLs, Storybook, your tests
Ghost Inspector14-day free trial$109/month billed annually ($125 monthly), 10,000 test runsRecorded tests, one per page
Chromatic5,000 snapshots a month, Chrome only$179/month, 35,000 snapshotsStorybook, Playwright, Cypress, Vitest
ApplitoolsFree trial, no free plan$667/month paid annually, 1,000 page checkpointsAn SDK in your tests

Which alternative, depending on why you are leaving

If you are leaving because…Look at
No release since 2024 and you want something actively developed, still freePlaywright’s toHaveScreenshot()
You want to keep testing a list of URLs, without writing testsDiffy, Percy’s CLI, Happo’s full-page integration
You compare staging with production, like referenceUrlDiffy
You want to stop storing reference images yourselfDiffy, Percy, Happo, Ghost Inspector
You want to stop running a CI job at allDiffy, Ghost Inspector (both hosted, with scheduled runs)
Reviews happen on pull requestsArgos, Percy, Chromatic, Happo
You need Edge or SafariPercy, Chromatic, Happo (Safari from Growth, Edge on Pro)
You need Safari on iPhoneHappo Pro, Percy Desktop & Mobile
Your staging site isn’t publicly reachableDiffy’s local worker, Percy’s CLI (it loads pages from wherever you run it), Argos (you capture in your own CI) or Playwright. Not Happo, which needs public URLs

What a website costs on each tool

Take a 50-page site checked at three widths, compared eight times a month, before each release. That’s 150 images a run in one browser, or 1,200 a month.

Tool and setupUnits a monthCheapest list price
BackstopJS, reference and test both captured2,400$0, plus your CI
Diffy, staging vs production, both captured fresh2,400$125/month billed annually ($150 monthly)
Diffy, against a saved baseline1,200$67/month billed annually ($80 monthly)
Percy, one browser1,200Free
Percy, its four default browsers4,800Free
Happo, Chrome1,200Free
Argos, one browser1,200Free on Hobby (one person); $100/month on Pro for a team
Ghost Inspector, 50 tests at 3 screen sizes1,200 test runs$109/month billed annually ($125 monthly)

At this size Percy, Happo and Argos have a free option and Diffy doesn’t. What changes the picture is the work around the screenshots. Percy and Happo compare against an earlier build rather than a second environment, Happo needs the pages to be publicly reachable, and Argos needs you to capture the screenshots yourself. For a bigger site, see visual testing pricing compared.

Diffy

Diffy is ours. It works the way BackstopJS does, from URLs, but as a hosted service with a review UI. You paste URLs or import a sitemap, pick breakpoints, and compare two environments, such as production and staging, or the same site before and after a change.

  • Free: 500 screenshots a month, production and staging environments, screenshot modification settings, one month of history.
  • Paid: from $67/month billed annually ($80 monthly) for 2,000 screenshots, adding more environments, CI automation and six months of history. Then $125/month for 8,000 and $250/month for 30,000, billed annually ($150 and $300 monthly). See pricing.
  • Counting: one page at one breakpoint is one screenshot. Comparing two freshly captured environments uses a set from each.
  • Over the limit: no overage charges. New screenshots pause until the month resets or you move up a plan.
  • Browsers: Chrome or WebKit, chosen per project, at widths from 240px to 2000px.
  • Local sites: a local screenshot worker captures pages on your machine and uploads them, with documented setups for DDEV, Lando, Docksal, Docker and ngrok.

Your backstop.json settings map onto project fields: hide and remove selectors, delays, cookies, headers, custom CSS and JavaScript, and login presets. There’s no importer, so you recreate them by hand.

Where it beats BackstopJS: no CI job or reference images to look after, a review UI that people who don’t run the tests can use, and scheduled runs.

Where it does not: it costs money, settings apply per project rather than per scenario, and there’s no Firefox or Edge.

Full head-to-head: Diffy vs BackstopJS

Playwright’s built-in screenshot assertions

The natural move if you want to stay free and self-hosted, with a tool that’s actively developed. BackstopJS can already drive Playwright, so the browser side is familiar.

await expect(page).toHaveScreenshot() creates reference images on the first run and compares against them after. A short test can loop over a list of URLs and viewports. Reference images are named per browser and platform, and the docs say to run tests in the same environment that created them, which in practice means Docker or CI.

Where it beats BackstopJS: active development, Chromium, Firefox and WebKit from one runner, and the full Playwright API for logins and interactions.

Where it does not: you write the test code, there’s no built-in equivalent of referenceUrl for comparing two environments, and review is a local HTML report, like BackstopJS’s.

Full head-to-head: Diffy vs Playwright

Percy

The hosted option that can keep a URL-based workflow. Percy’s CLI command percy snapshot takes a static directory, a sitemap URL or a snapshots file, where the file is YAML, JSON or a JS file exporting a list of pages. Percy renders the snapshots on BrowserStack’s infrastructure and compares them with a baseline from an earlier build.

Free is 5,000 screenshots a month. Desktop is $199/month billed annually ($249 month to month) for 10,000 screenshots, or $449 ($549) for 25,000, with extra screenshots at $0.036. Desktop & Mobile is $599/month billed annually ($729 month to month) for 25,000, with extras at $0.048. Free, Desktop and Desktop & Mobile all have unlimited users.

Each browser and width counts as a separate screenshot, and new projects have Chrome, Firefox, Edge and Safari enabled by default.

Where it beats BackstopJS: nothing to host, four browsers, a hosted review UI, and a free tier that covers a small site.

Where it does not: a monthly bill once you pass 5,000, and baselines come from earlier builds rather than a second environment.

Percy alternatives · Diffy vs Percy

Argos

The pick if you move to Playwright and want hosted review on pull requests. Argos doesn’t take screenshots itself: your tests capture them, your CI uploads them, and Argos compares them with a baseline. It works with Playwright, Cypress, Storybook, Vitest and any pipeline that produces screenshots.

The Hobby plan is free for up to 5,000 screenshots, for one person. Pro starts at $100/month, billed monthly based on usage, with 35,000 screenshots included and extras at $0.004. Hobby pauses at the limit; Pro keeps going and bills the extras. With spend management you can set a spend amount and have builds fail once it’s reached.

Where it beats BackstopJS: review and approval on pull requests, and a low price per screenshot.

Where it does not: you still write and run the capture yourself, so it replaces BackstopJS’s report, not its test runner.

Full head-to-head: Diffy vs Argos

Happo

Happo’s full-page integration is the closest hosted match to a backstop.json scenario list. You list URLs and titles in happo.config.ts, optionally wait for text or a selector, and run npx happo. Its docs say the URLs need to be publicly available, otherwise its workers can’t reach them.

PlanPriceSnapshots a monthBrowsers
Free$05,000Chrome
Starter$149/month50,000Chrome, Firefox
Growth$399/month150,000Chrome, Firefox, Safari
Pro$749/month300,000Chrome, Firefox, Safari, iOS Safari, Edge

Extra snapshots on paid plans are $0.006 each, Free pauses at the limit, and every plan has unlimited users. Each browser and each viewport size counts as a separate snapshot.

Where it beats BackstopJS: nothing to host, browser coverage up to Safari on iPhone and iPad, and a generous free tier.

Where it does not: pages must be publicly reachable, Safari starts at $399, and you configure it in a config file, much like BackstopJS.

Full head-to-head: Diffy vs Happo

Ghost Inspector

A hosted, codeless testing tool with screenshot comparison built in. You record tests with a browser extension, and each run’s final screenshot is compared pixel by pixel with the last passing one. You set a tolerance from 0% to 90%, and a run over it fails and notifies you.

Starter is $109/month billed annually ($125 monthly) for 10,000 test runs a month and 5 team members. Growth is $225 ($249) for 30,000 runs and 15 members, and Large/Scale is $449 ($499) for 100,000 runs and 40 members. Starter, Growth and Large/Scale keep 6 months of results, and there’s a 14-day free trial.

Where it beats BackstopJS: functional checks and visual checks in one hosted tool, with no code.

Where it does not: every page is a test to set up and maintain, and team members are capped per plan.

Full head-to-head: Diffy vs Ghost Inspector

Chromatic and Applitools

Both are strong tools, but neither starts from a list of URLs.

  • Chromatic tests Storybook stories and Playwright, Cypress or Vitest tests. Free is 5,000 snapshots a month in Chrome; Starter is $179/month for 35,000 snapshots across Chrome, Safari, Firefox and Edge. It fits if your BackstopJS scenarios are really component pages. See Chromatic alternatives.
  • Applitools runs through an SDK in your tests. Starter is $667/month paid annually for 1,000 page checkpoints, with unlimited users and AI-based comparison. It fits a large QA team, not a BackstopJS-sized budget. See Applitools alternatives.

What you give up by leaving BackstopJS

  • Zero cost at any volume. Every hosted option here costs money beyond its free tier or trial.
  • Everything stays on your network. Screenshots never leave your machine or CI.
  • Per-scenario settings. Each scenario can have its own delay, selectors and scripts.
  • Config in version control. backstop.json reviews like code.

Wraith, the other well-known open-source tool in this space, isn’t an option any more: its repository was archived on 16 January 2026.

Before you migrate

  1. List what your config actually does. URLs, viewports, hide and remove selectors, delays, cookies and scripts. That list is the migration, because no tool here documents a backstop.json importer. (Argos does document uploading BackstopJS’s own screenshots with its CLI, if you want to keep BackstopJS for capture.)
  2. Decide what you compare. If you use referenceUrl to compare staging with production, check that the new tool compares environments, not only builds.
  3. Decide who reviews. If developers approve changes on pull requests, Argos, Percy, Happo or Chromatic fit. If a project manager or a client signs off on a website, they need a review UI they can use without opening a test run.
All prices as published on each vendor’s own pricing page or documentation on 5 November 2026, in US dollars. Vendors change prices, so check before you commit.

Frequently asked questions

Is BackstopJS still maintained?

It is still installable and its GitHub repository isn’t archived, but it is looking for a maintainer. The latest version on npm is 6.3.25, published on 7 September 2024. The most recent commit, on 8 September 2026, added a note to the README that BackstopJS needs a new maintainer/owner. Test it against your Node and browser versions before you build a long-lived workflow on it.

What is the best free alternative to BackstopJS?

If you can write a few lines of test code, Playwright’s built-in toHaveScreenshot() is free and actively developed, and a short script can loop over a list of URLs. Among hosted tools, Percy gives 5,000 screenshots a month and its CLI can snapshot a sitemap or a file listing pages, and Happo gives 5,000 snapshots a month in Chrome with an integration for existing websites. Diffy’s free plan is 500 screenshots a month.

Which BackstopJS alternative works from a list of URLs?

Diffy, Percy (percy snapshot with a sitemap or a YAML, JSON or JS file listing pages), Happo (its full-page integration, for publicly reachable URLs) and Ghost Inspector (a test per page) all start from URLs. Argos and Chromatic compare screenshots or snapshots that something else produces: your tests, your Storybook or, for Argos, even BackstopJS’s own output.

Can I import my backstop.json into another tool?

We found no documented importer in any of the tools here. Moving means recreating the URL list, viewports and hide or remove selectors in the new tool, and rewriting onBefore and onReady scripts in whatever form it accepts.

Does BackstopJS compare staging with production?

Yes. A scenario can have a referenceUrl, so backstop reference captures one environment and backstop test captures the other. Diffy works the same way by default. Percy, Argos, Happo and Chromatic compare each build with a baseline from an earlier build instead.

Where to go next

Try Diffy free: 500 screenshots a month, no test suite required.