Looking for a Percy alternative? What to weigh in 2026
Percy (now part of BrowserStack) is a capable cross-browser visual regression tool, and for a long time it was the obvious pick. Teams rarely start shopping because the product failed them — they start because the bill became hard to forecast. The per-snapshot model means the more thoroughly you test, the more you pay, which quietly pushes teams to test less.
This is an honest look at how to evaluate a replacement: what to actually compare, the questions that expose hidden costs, how migration really works, and when staying on Percy is the right call.
First, understand the snapshot-based pricing model
Most visual testing tools bill per snapshot, and the arithmetic surprises people. A snapshot is usually counted per screen per browser per viewport. So one test, checked across two browsers and three viewports, is six snapshots — not one.
- 40 pages x 2 browsers x 3 viewports = 240 snapshots per full run.
- Run that on every pull request across a busy week and you are into the tens of thousands of snapshots per month.
- Every extra screen you add multiplies by browsers and viewports, so cost grows faster than coverage.
The failure mode isn't the invoice, it's the behaviour it creates: teams start trimming viewports, skipping pages, or running visual checks only on main. Coverage quietly shrinks to fit the plan — which defeats the point of the tool.
What actually matters in a replacement
1. Pricing you can forecast
Ask whether pricing is published or quote-only, what exactly counts as a billable unit, and what happens when you exceed the plan — hard stop, overage charges, or throttling. A tool you cannot model a year of usage for is a budgeting problem regardless of how good the diffing is.
2. Comparison quality and control
Single-engine tools give you one threshold dial. That forces a compromise: loose enough to survive anti-aliasing, tight enough to catch real bugs — and you cannot have both across every screen. A dense data table and a marketing hero page genuinely need different treatment. Check whether you can choose a comparison approach per screen, and whether ignore regions and anti-aliasing tolerance are available.
3. CI/CD fit and migration effort
The realistic question is how much of your suite you have to rewrite. If the replacement offers SDKs for the framework you already use, migration is a config change and a renamed assertion — not a project.
4. Review workflow
Someone has to approve intentional changes. A shared dashboard with history beats reading diff images out of CI artifacts, especially when designers or PMs need to weigh in.
5. Baseline storage and data residency
Where do baselines live, who can see them, and can you export them if you leave? Screenshots of a logged-in product are real data. Worth asking before, not after.
The evaluation checklist
- Count your real snapshot volume: pages x browsers x viewports x runs per month. Price every candidate against that number, not the headline tier.
- Run a genuine pilot on your flakiest screen — the data table, the dashboard, the page with a carousel. Anything looks good on a static marketing page.
- Time the migration honestly: how long to port ten tests?
- Have a non-engineer approve a change in the review UI and see whether they can.
- Check the exit path — can you export baselines and results?
Migrating without rewriting your suite
If you're on Playwright, the switch is mostly mechanical. Install the SDK, merge the config, and swap the assertion:
// playwright.config.ts
import { defineConfig } from '@playwright/test';
import { pixellpeepConfig } from '@pixellpeep/playwright';
export default defineConfig({
...pixellpeepConfig({
apiUrl: process.env.PIXELLPEEP_API,
apiKey: process.env.PIXELLPEEP_API_KEY,
projectId: process.env.PIXELLPEEP_PROJECT_ID,
}),
});import { test } from '@pixellpeep/playwright';
test('checkout page', async ({ page, pixellpeep }) => {
await page.goto('/checkout');
await pixellpeep.snapshot('checkout');
});Cypress is the same shape — register the tasks in cypress.config.js, import the support file, and call cy.pixellpeepSnapshot() where your previous snapshot command was. Keep both tools running in parallel for a sprint so you can compare what each one flags before you cut over.
Where PixellPeep fits
We built PixellPeep for this evaluation, so the honest pitch is narrow: pricing is published with a free tier and billed in INR or USD with no quote process; there are six comparison algorithms rather than one, so you can match the engine to the screen; bulk CSV runs handle hundreds of pairs at once; and there are published SDKs for Playwright, Cypress and Puppeteer so migration is configuration, not a rewrite.
When you should stay on Percy
Switching tools has a real cost, and there are cases where it isn't worth it:
- You already pay for BrowserStack and use its cross-browser grid across the whole stack — the bundle is genuinely convenient.
- You need very broad real-device and legacy-browser coverage as a first-class requirement.
- Your volume comfortably fits your current plan and the bill is predictable.
- Your team has deep Percy workflow investment and nobody is complaining.
'The invoice grew' is a reason to model your actual usage, not automatically to migrate. Do the arithmetic first.
Frequently asked questions
Why are teams looking for Percy alternatives?
Most commonly cost predictability under a per-snapshot model, where snapshots multiply across browsers and viewports. Others want more than one comparison algorithm, or transparent self-serve pricing without a sales process.
Is there a free Percy alternative?
Open-source options like BackstopJS are free but self-hosted — you own baseline storage, the review workflow and maintenance. Several managed tools, PixellPeep included, offer a free tier for smaller suites.
How hard is it to migrate off Percy?
If the replacement has an SDK for your framework, it is usually a config change plus swapping the snapshot call — your test logic, selectors and fixtures stay as they are. Budget time for re-recording baselines, which you have to do on any switch.
What counts as a snapshot?
Typically one screen, in one browser, at one viewport. Confirm this with any vendor before comparing prices — it is the single biggest driver of your real bill.
The best Percy alternative is the one that tests as much as you need without making you ration your snapshots to manage the bill.
If you want the full side-by-side, see our PixellPeep vs Percy comparison — it lays out pricing, algorithms, and integrations line by line.