Diffy vs Loki: Loki Alternative for Storybook and Websites
Loki is a free, open-source tool for visual regression testing of Storybook stories. It runs on your machine or in CI, renders each story in Chrome (or an iOS simulator or Android emulator for React Native), and compares the result with reference images kept in your project. Diffy is a hosted service that screenshots the pages of a website, on production, staging or development, and shows the differences in a review UI. They overlap only where a Storybook is involved, and even there they work quite differently.
What each tool needs from you
Loki needs a running Storybook. You install it with yarn add loki --dev, run yarn loki init, and start Storybook yourself, because Loki doesn’t start any servers for you. Then the workflow is three commands:
loki updatecaptures the first set of reference images.loki testcaptures the stories again and compares them with the references.loki approveaccepts the changes and updates the references.
References go in ./.loki/reference by default, current screenshots in ./.loki/current and diff images in ./.loki/difference. You can commit the references to Git so they’re versioned with the code. Screenshots are taken in Chrome running in Docker (the recommended target), a local Chrome, Chrome on AWS Lambda, an iOS simulator or an Android emulator. Viewport, device presets and pixel density are set per configuration in package.json or a loki.config.js file. Every option is story-based: Loki tests stories, not arbitrary pages.
Diffy needs URLs. You create a project in a browser tab, paste the addresses of the pages you care about, pick breakpoints and press a button. Diffy’s workers load each page in Chrome or WebKit and capture it. Logins, elements to hide, content to mock, cookies, headers and a schedule are settings on the project page, with no test files to write. The CLI, API and CI integrations are there when you want automation.
Is Loki still maintained?
Worth checking before you build a workflow on it. The latest Loki release on npm is 0.35.1, published on 27 August 2024, and the last commit to the main branch was on 12 October 2024. The package declares Storybook 5 to 8 as its supported range (through its @storybook/react peer dependency), so newer Storybook major versions aren’t in that list. The repository still lists a maintainer, and it may well work for you, but test it against your Storybook version first.
What it costs
Loki is MIT-licensed and free. What you pay for is the setup and upkeep: Docker or a Chrome install for consistent screenshots, a CI job, and reviewing image folders by hand.
Diffy is priced by screenshots, where one page at one breakpoint is one screenshot:
| Screenshots per month | Billed annually | Month-to-month |
|---|---|---|
| 500 (Free) | $0 | $0 |
| 2,000 | $67/mo | $80/mo |
| 8,000 | $125/mo | $150/mo |
| 30,000 | $250/mo | $300/mo |
Team members are included on every plan. Paid plans add the API and CI automation, development and custom environments, and 6 months of history.
Diffy prices as published on diffy.website/pricing in October 2026.Reviewing changes
With Loki, a failed loki test leaves diff images in a folder. Someone opens them, decides whether each change is intended, and runs loki approve, which accepts the current screenshots as the new references. There’s no hosted review UI, so sharing a change with a designer or a client means sending them the images or a branch.
Diffy’s review is a web UI built for many pages at once:
- Thumbnail view, with approval directly from the thumbnails
- The same change grouped across every screenshot it appears in, so you approve it once
- Approve a single change, a screenshot, or a page across all breakpoints
- A before/after slider and keyboard shortcuts
- Shareable links that work for people without a Diffy account

Testing a Storybook with Diffy
A published Storybook is a set of URLs, and Diffy screenshots them like any other page: add each story’s URL to a Diffy project and compare. Capellic, a Drupal agency, works this way: each component in their Storybook is approved and then captured with Diffy, whole pages are tested as the site is built, and monthly updates are pushed to a Pantheon multidev and tested automatically. You get one tool for components and pages.
Be clear about what you give up: Diffy doesn’t read your stories or integrate with Storybook beyond treating stories as URLs, so new stories have to be added to the page list.
Beyond components: the website itself
Most visual bugs don’t stay inside a component. They happen when components meet real content, real menus and real third-party scripts on a deployed site. That’s what Diffy is built for:
- Environments. Compare staging with production before a release, or a Pantheon, Upsun or Tugboat preview with production.
- CMS updates. Check what a core, plugin or module update changed across every template. See Drupal and WordPress.
- Scheduled runs that compare production against itself, so changes nobody deployed still get caught.
- Real-world pages. Log in with presets for Drupal, WordPress and Netlify, mock dynamic content, mask embeds, and set cookies and headers.
- Vertical shifts. Diffy’s own comparison algorithm recognises content that moved down, so one taller header doesn’t light up the whole page.
- Local sites too. DDEV, Lando and Docksal add-ons capture your local site on your machine and upload the screenshots for comparison.
If you’re new to the idea, visual regression testing explains the approach, and How to avoid false positives covers the noise problem on live pages.
Where Loki is the better fit
- You only need to test Storybook components, and budget is zero. Loki is free and runs entirely on your own machines.
- React Native. Loki can capture stories on an iOS simulator and an Android emulator. Diffy tests web pages only.
- References versioned with the code. With Loki, reference images live in your repository and change in the same pull request as the component.
- No third-party service. Loki doesn’t send screenshots to anyone else’s servers. Diffy is a hosted service (its local add-ons capture on your machine, but compare in Diffy).
Try it
Create an account, paste your URLs (or your Storybook’s story URLs) and run your first comparison. Most teams have real results within 10 minutes.
Start free: 500 screenshots a month
Comparing other tools too? See Diffy vs Chromatic, Diffy vs Happo and Diffy vs BackstopJS.