Developers and agentsComparison
8 min read
How to compare two versions of a web pageVisualping vs. Distill.io vs. the Wayback Machine vs. Playwright vs. Page Scanner
Monitoring services check a page on a schedule and tell you when it changes. The Wayback Machine compares copies it already holds. Playwright fails a test when a screenshot moves. Page Scanner compares two captures you made. Here is which does what.
Comparing two versions of a page means one of two jobs. Either you want to be told when a page
changes, a price, a policy, a job listing, without looking at it every day; or you already have
two versions and want to see exactly what differs between them. Visualping and Distill.io do the
first and show you the second. The Wayback Machine's Changes view compares copies the Internet
Archive already made. Playwright compares screenshots inside a test suite. Page Scanner's diff
compares two captures on your disk, by their text or by their pixels, and leaves the scheduling
to you.
Five tools at a glance
| Visualping | Distill.io | Wayback Machine Changes | Playwright toHaveScreenshot | Page Scanner diff | |
|---|---|---|---|---|---|
| What it is | a monitoring service, with a Chrome extension | an extension, a desktop app and a cloud | a view on the Internet Archive | an assertion in a test framework | a command and an MCP tool |
| Checks on its own | ✓ on a schedule | ✓ on a schedule | ✗ compares captures that exist | when your tests run | ✗ run it from cron or Task Scheduler |
| Tells you | ✓ email, webhooks; Slack and Teams on Business | ✓ push, email; SMS on paid plans | ✗ | a failing test | exit code 1 |
| Text changes | ✓ "added and removed text" | ✓ added in green, deleted in red | ✓ highlighted in yellow and blue | toMatchSnapshot for text | ✓ a unified diff, a passage at a time |
| Visual changes | ✓ "current and prior screenshot" | a visual view of the changes | side by side | ✓ pixel by pixel | ✓ pixel by pixel, regions outlined in red |
| Pages behind login | ✓ "Password protected pages" | ✗ | ✓ your own signed-in Chrome | ||
| Where versions live | Visualping's service | your browser, or Distill's servers | the public Wayback Machine | files beside your tests | files you keep |
| Price | free for 5 pages; Personal from $14/mo | free for 25 monitors (5 in cloud); from $15/mon | free | free, Apache-2.0 | free |
✓ yes, ✗ no. An empty cell is one the product's own pages do not answer.
Visualping
Visualping's pitch is "We monitor website changes so you don't have to!" You give it a page, it checks on a schedule, and it can watch for visual changes ("Compare the current and prior screenshot"), text changes, with "added and removed text" highlighted, or changes to an element. Alerts go by email, webhook or API on every plan, and "AI lets you know if the change is important."
The free plan is "5 pages with 150 checks a month", and "sixty minutes is the shortest check interval you can select" on it. Personal 1K is "$14/mo" for 10 pages and 1,000 checks, every 15 minutes, and SMS alerts start at Personal 5K; Slack, Microsoft Teams and Google Sheets come with the Business plans.
Verdict: the least work for a person who wants an email when a page changes, with no machine of their own left running.
Distill.io
Distill says "Monitor any website for changes and get instant notifications when updates occur", and lets you "select the parts of the page you want to track". Its distinction is where the check runs. Monitors added from the extension or desktop app are local: "These monitors check for changes using your browser or PC, which must be running." Cloud monitors run on Distill's servers, so they keep going with your computer off. Its home page adds "Monitor Password protected pages as well".
Changes land in a Change History, where "added content is highlighted in green, while deleted content appears in red", in a Visual, Text or Source view. The free plan has "25 (5 in cloud)" monitors, a six-hour minimum interval in the cloud and 1,000 cloud checks a month, and lists no version history; Starter is "$15/mon" with version history, SMS and a 10-minute cloud interval.
Verdict: the most control over what is watched and where the check runs, including pages you are signed in to.
The Wayback Machine's Changes
If the Internet Archive has captured a page more than once, you already have its history. Open
https://web.archive.org/web/changes/<URL>, or the Changes link above the calendar view, and
the Archive shows its captures of that address "with a high-level indicator of the degree of
change" between them. Pick two and they are replayed "side-by-side, with changes highlighted in
Blue and Yellow". The result is a link you can share.
It costs nothing and needs nothing installed, and it reaches back further than any tool you set up today. It only compares what the Archive holds, though: captures happen when the Archive crawls a page or someone saves it, and it does "not archive pages that require a password".
Verdict: the first place to look for how a public page used to read.
Playwright's visual comparisons
Playwright is "a framework for Web Testing and Automation", and await expect(page).toHaveScreenshot()
is its visual check. The first run writes a reference screenshot beside the test; later runs take
a new one, waiting "until two consecutive page screenshots yield the same result", and compare it
using the pixelmatch library. threshold (0.2 by default), maxDiffPixels and
maxDiffPixelRatio set the tolerance, mask covers moving parts in a pink box, animations are
disabled by default, and fullPage captures the whole scrollable page rather than the viewport.
npx playwright test --update-snapshots accepts the new look.
It is built for your own site under test: the reference lives in your repository, the check runs in CI, and a change fails the build. Playwright's own docs warn that "screenshots differ between browsers and platforms due to different rendering, fonts and more", so references are kept per browser and platform.
Verdict: the one for catching unintended changes to a site you build, before they ship.
Page Scanner's diff
Page Scanner compares two captures that already exist, from its command line or from an agent
through the MCP tool diff_captures. It needs no browser and no daemon for the comparison itself.
The captures come from scan, which runs through the extension in your own Chrome, so a page you
are signed in to can be captured as you see it.
page-scanner scan --url https://example.com/pricing --markdown beside --out ~/Captures/page-scanner diff ~/Captures/monday.pdf ~/Captures/tuesday.pdfText is compared from the Markdown that --markdown beside writes next to each file (a PDF
without its .md is refused, with the flag that writes one). A line of that Markdown is a block of
the page, so a reworded sentence shows as its paragraph removed and added again. The capture time
in each file's front matter is set aside, so the same page captured twice is no change. It prints
what diff -u prints, with a count on stderr, and says so when the two files name different
addresses.
Pictures are compared from two PNG captures, pixel by pixel: a pixel counts as changed when a
channel moves by more than 48, which lets antialiasing through. Changes are gathered into regions,
the newer capture is written again with each region outlined in red (<new>.diff.png, or
--out), and the share of the picture that changed is reported.
It exits 0 when nothing changed, 1 when something did and 2 when it cannot compare, and
--json returns one document either way, which is what diff_captures returns to an agent. With
cron, that becomes a watcher:
page-scanner diff old.md new.md > changes.diff || mail -s "The pricing page changed" me < changes.diffThe limits: nothing schedules it and nothing keeps a history; which two captures, and when, is yours to decide. The picture comparison is by position, so a banner added at the top shows everything below it as changed; the text comparison sees through that. JPEG is refused, since its compression changes pixels on its own. Two texts more than 2,000 lines apart are reported as all removed and all added. There is no button for it in the extension.
Verdict: the one to use when the versions have to stay on your machine, or when an agent or a script is doing the comparing. For capturing from a script in the first place, see how to capture a web page from the command line.
Which should you use?
Use Visualping if you want to be emailed when a page changes and would rather not run anything yourself.
Use Distill.io if you want to pick the part of the page to watch, run checks in your browser or in the cloud, or watch pages you are signed in to.
Use the Wayback Machine if the question is how a public page read months or years ago.
Use Playwright if the page is your own and a change should fail a build.
Use Page Scanner if you want the two versions as files you keep, compared as text or as pictures, from a script or by an agent, with a page you are signed in to captured the way you see it.
Frequently asked questions
Can Page Scanner alert me when a page changes? Not on its own. diff exits 1 when something
changed, so a scheduled job can send the alert; the scheduling itself is cron, launchd or Task
Scheduler, and the docs have an example for each.
Why compare text rather than screenshots? A screenshot comparison is by position, so anything that pushes the page down shows as a change below it. A text comparison reports the passage that changed and ignores the move.
Can an AI agent do the comparison? Yes. diff_captures takes the older and newer capture and
returns the changed passages or regions. See
how to let an AI agent capture a web page.
Where this comes from
- Visualping: the home page and pricing.
- Distill.io: the home page, pricing, Local Monitor vs. Cloud Monitor and Change history and highlighted changes.
- Internet Archive: Compare two versions of a website, the blog post The Wayback Machine: Fighting Digital Extinction in New Ways and Wayback Machine General Information.
- Playwright: Visual comparisons,
toHaveScreenshotand the repository. - Page Scanner: What changed,
On a schedule and
diff_captures.