BackstopJS
BackstopJS is a free, MIT-licensed tool for automating visual regression checks on web apps.
What BackstopJS is
BackstopJS is a free, MIT-licensed tool for automating visual regression checks on web apps. It captures screenshots and compares them with reference images so teams can inspect visual changes. Its in-browser report presents the reference, test capture, and difference, with CLI and JUnit reports also available. It supports Puppeteer and Playwright; Playwright can use Chromium, Firefox, or WebKit. Test scenarios can script clicks, scrolling, hovering, key presses, and cookie state. Captures can cover a full document, a viewport, or selected DOM elements at configured sizes. The workflow uses `backstop init` to configure a project, `backstop test` to compare screenshots, and `backstop approve` to update reference images. Install it globally or locally with npm, run it as a CLI, or require it from a Node.js app. It can report to CI and integrate with build systems such as Jenkins, Travis, and gulp. A Docker option aims to reduce rendering differences, though Chrome Headless in Docker may time out without substantial memory.
Good
- Free and MIT licensed.
- Supports Puppeteer and Playwright browser engines.
- Captures documents, viewports, or selected elements.
- Offers CLI, JUnit, and in-browser reports.
- Workflow includes reference-image approval.
Watch out
- Chrome Headless in Docker needs substantial memory.
- Repository README says it needs a new maintainer or owner.
Who it suits
BackstopJS suits developers who need repeatable screenshot comparisons for web apps, including teams using CI reporting or multiple browser engines. It is available for Linux, macOS, and self-hosted use.
Verdict
BackstopJS provides configurable screenshot comparison, browser options, and an approval workflow without a listed price. Consider the Docker memory note and the project's stated need for a maintainer when assessing fit.
Plans and prices
From BackstopJS's own pricing page, checked 3 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| BackstopJS | Free | Open-source MIT-licensed project · install with npm |
The facts
Each one read from BackstopJS's own pages, with the date it was checked.
Where it runs
- Browser engines
- It supports Puppeteer and Playwright, with Playwright supporting Chromium, Firefox, or WebKit.checked 3 Oct 2026
What it does
- Capture targeting
- It can capture the full document, viewport, or selected DOM elements at configured viewport sizes.checked 3 Oct 2026
- Installation
- It can be installed globally or locally with npm, used as a standalone CLI, or required from a Node.js app.checked 3 Oct 2026
- Integrations
- The README describes CI reporting in JUnit format and integration with build systems such as Jenkins, Travis, and gulp.checked 3 Oct 2026
- Interactions
- Scenarios can simulate actions such as clicks, scrolling, hovering, key presses, and cookie state through scripts.checked 3 Oct 2026
- License
- GitHub identifies the project as MIT licensed.checked 3 Oct 2026
- Limit
- The README notes that Chrome Headless in Docker needs substantial memory and may otherwise produce timeout errors.checked 3 Oct 2026
- Maintenance
- The repository README says BackstopJS needs a new maintainer or owner.checked 3 Oct 2026
- Purpose
- BackstopJS automates visual regression testing of web apps by comparing screenshots over time.checked 3 Oct 2026
- Rendering consistency
- A Docker option runs tests in a BackstopJS container to reduce rendering differences across environments.checked 3 Oct 2026
- Reports
- It provides an in-browser report with reference, test, and visual-difference inspection, plus CLI and JUnit reports.checked 3 Oct 2026
- Security
- The README recommends matching the Docker container user to the local environment to improve security and avoid file ownership problems.checked 3 Oct 2026
- Workflow
- Its documented workflow uses `backstop init`, `backstop test`, and `backstop approve` to configure tests, compare screenshots, and update reference images.checked 3 Oct 2026
Alternatives to BackstopJS
- 1

Happo
Free planAndroidiOSWebAPI8.1From $149 a month - 2
Screenster
Free planWebAPISelf-hostedWindows7.6From $25 a month - 3

Percy
Free planAndroidiOSWeb7.5From $199 a month - 4

Loki
Free planAndroidiOSWebLinux7.3Free plan - 5
Roborazzi
Free planAndroidiOSLinuxmacOS7.2Free plan - 6

SmartUI
Free planAndroidiOSWebAPI7.2From $199 a month
