Website change detection with accurate alerts and no false positives
Most website monitoring tools work on a simple idea: something changed, an alert goes out. It sounds clean, but in practice it turns into a stream of notifications where half is rendering noise, a third is cookie banners, and the rest is what you actually need to see.
snapshotarchive does this differently. Every snapshot is compared pixel-by-pixel with the previous one through ImageMagick, with two-level noise filtering: at the pixel level, thresholds for antialiasing and subpixel rendering; at the page level, a configurable significance threshold. On top of that, monitoring zones and ignore zones, presets for cookie banners and chat widgets, baseline mode for tracking deviations from an approved design. All of it for one job: send an alert only when something on the page has actually changed.

How pixel-by-pixel comparison works and why this isn't just "another diff"
Every time the system captures a new snapshot, it runs a comparison with the previous one through ImageMagick. You see three simple results:
Change percentage — how much of the page changed (for example, 2.34%).
Exact number of changed pixels — for when you need the absolute figure (for example, 14,208).
Change map — the fresh screenshot of the page with red highlights on every spot where something is different.
This isn't "something changed." It's "exactly these 14,208 pixels, here they are on the map, here they are as a percentage." Precise numbers give you a basis for deciding what to do with the alert: 0.3% is most likely a font shift in a single line, 12% is either a new block on the page or someone swapped out a banner.

Two-level noise filtering
The main pain point of change detection is false positives. Fonts sometimes render one pixel differently, antialiasing produces small color differences between runs, JPEG compression adds noise where it shouldn't be. Without filtering, every second snapshot gets flagged as "changed."
snapshotarchive filters noise at two levels.
Pixel level. ImageMagick compares every two pixels and decides whether they changed. If the color difference between two pixels is less than 10%, we treat the pixel as unchanged. This threshold isn't user-configurable: it's tuned to filter antialiasing and subpixel rendering, but not to miss actual color changes.
Page level. Once every pixel has been processed, we calculate the overall change percentage. If it's below the significance threshold (0.5% by default), we mark the change as insignificant and skip the alert. This threshold is configurable per monitor: 0.1% for a critical page, 5% for a busy blog.
Together this gives you the following result: you get an alert only when more than 0.5% of the page actually changed (or whatever you set), and every changed pixel really is a color difference, not a rendering artifact.
Monitoring zones and ignore zones
Threshold helps filter general noise, but it doesn't solve another problem: sometimes you want to watch only one part of a page (a price block on a competitor's product), or the opposite — exclude part of the page from comparison (an ad banner that rotates every 30 seconds).
For that, there are two tools — Monitoring Zones and Ignore Zones.
Monitoring Zones. Rectangular regions on the screenshot where the system analyzes changes. Everything outside the zones is ignored. Useful when one specific area carries all the meaning on the page: a price, stock availability, a section heading.
Ignore Zones. The opposite — regions excluded from comparison. Everything outside the ignore zones is analyzed as usual. Useful when you know which parts of the page are noisy (banners, dynamic recommendations, social widgets).
Zones are drawn directly on the screenshot through a visual editor: drag and resize, everything visible immediately. Coordinates are saved as percentages of the screenshot dimensions, so they work at any resolution and don't break if the page becomes slightly taller the next day.

And the main thing: zones complement another mechanism — hiding elements through CSS selectors. They work at different stages: CSS selectors hide elements before the screenshot is taken, while zones work at the pixel comparison level on already-captured screenshots. You can (and often should) use both at once.
Presets for typical noise elements
Cookie banners, Intercom widgets, Drift chats, Tawk popups — they're an endless source of false positives for any change detection tool. Each one may or may not appear depending on cookie state or timing, and each takes up a noticeable part of the page.
The dashboard has an "Add common popups" button that adds a ready-made list of 14 typical selectors to your hide list in one click: cookie banners, chat widgets from Intercom, Drift, Tawk, Crisp, HubSpot, GDPR popups, marketing modals. Same CSS selectors you could enter by hand, without having to track them down. The elements get hidden before the screenshot is taken, so the comparison sees a clean page.

Baseline mode: compare against an approved reference
By default, every new snapshot is compared with the previous one. That's what you want for tracking changes over time: it shows what changed since yesterday. But sometimes the task is different.
After a site redesign, before a campaign launch, after a client signs off on a layout — there's a moment when the page is "right," and any deviation from that moment counts as a bug. For that there's baseline mode: you mark one snapshot as the reference, and all subsequent snapshots get compared against it, not against each other.
This is a completely different workflow. In the default mode, you see drift over days and catch trends. In baseline mode, you catch any deviation from the approved version — whether it accumulated over a month or showed up yesterday.

Baseline mode is configured in the dashboard for now; API access will follow.
Correct handling of pages at different heights
Web page length changes — that's the reality of working with screenshots. Today the page is 5,000 pixels tall, tomorrow someone adds a reviews block and it's 5,800. What do you do with that?
Most change detection tools crop both screenshots to the shorter height and only compare the overlapping part. The result: the added block at the bottom is lost, it never makes it into the comparison. If you're tracking exactly "what's been added to the page," that's a critical miss.
snapshotarchive extends the shorter screenshot to match the taller one, filling the difference with empty pixels at the bottom. Those empty pixels become part of the comparison, and the new block appears as a fully changed region — which is what's actually true. Removed blocks work symmetrically: a disappearance shows up as a changed region on the older screenshot.
Three ways to see what changed
When the system catches a change, the user's next question is: "What exactly?" The dashboard offers three viewing modes for diffs, each giving you different information.
Slider. One screenshot on top of the other, with a slider in the middle. Drag the slider — watch the before and after blend into each other. Good for a quick check of the overall page composition.
Side-by-side. Two screenshots next to each other, scrolling in sync. Good when you need to see both states at once, especially if changes are spread across the page.
Overlay. The fresh screenshot with red highlights on the changed areas. This answers "where exactly to look": you see the page as it is now plus the change map on top.
In overlay mode, the changed regions are interactive. Click on a red area — a modal opens with a zoomed view of that specific fragment, before and after. You don't have to hunt around "ah, something changed somewhere here, let me scroll to that spot in both screenshots." Click, see the detail.

Alerts: instant and digest
Two notification modes are available, and they suit different users.
Instant. Every significant change (one that made it through the two-level noise filtering) generates an immediate notification — to email, to Slack, or to both. The diff image arrives as a preview in the body of the message — you don't need to go anywhere to understand what changed. This is the mode for critical monitors: brand pages, legal documents, competitor pricing lists.
Digest. One email per day at 08:00 with a summary of every change over the previous 24 hours. If you have 50 monitors and most of them change regularly, instant mode will bury you in email. Digest gives you a calm morning summary: here's what changed, go look at the dashboard for the ones that caught your eye.
The mode is configured per monitor. One can be instant (the home page, sensitive content), others can be digest (everything else).

Slack notifications arrive as rich messages with a preview of the diff image, change statistics (percentage and capture time), and a button to jump to the dashboard. A custom webhook (any endpoint of yours) gets clean JSON with all the information about the event: monitor ID, comparison ID, change percentage, dashboard link, no decorative formatting. That's what you need to raise an alert in your own tool, open a ticket in Jira, or kick off additional checks.
Flexible scheduling
Capture scheduling is configured per monitor. Minimum frequency is once every 5 minutes, maximum is once a week. For each monitor, you can specify which days of the week to capture (workdays only, for example) and which time window to use (9:00 to 18:00 in the account's timezone).
This means you can dial in different monitoring intensity for different pages. Home page every 15 minutes, Monday through Friday. Legal documents once a week on Mondays. Competitor pricing pages every hour around the clock. You don't pay for frequent snapshots where they aren't needed.
Real-world scenarios
Change detection looks the same for everyone but gets used very differently. Here are four typical cases with step-by-step setup.
E-commerce monitoring of competitor prices and stock
Goal: know when a competitor changes the price on a key product, adds a promotion, or runs out of stock.
Create a monitor on the competitor's product page, capture frequency — every hour.
Open the visual zone editor and draw a Monitoring Zone over the price block and the "Add to cart" button.
Add Ignore Zones on ad banners and the recommendations block — they're noisy and irrelevant to the task.
Set the threshold to 0.5%, alert mode — instant, channel — Slack.
You get a Slack notification with the diff image about a minute after the competitor changed the price.
Result: the product or marketing team sees changes in chat in near-real-time, without manually checking competitor pages.
Brand protection against content substitution
Goal: catch site hacks, defacement, or substitution of payment page links as fast as possible.
Take a baseline snapshot of the home page when the site is in a known-good state.
Enable baseline mode — all subsequent snapshots will be compared against this reference.
Set the threshold to 0.3% — low, because any serious incident will produce a significantly higher percentage.
Enable instant alerts to both email and Slack at once.
If someone substitutes content, the notification arrives within minutes, with a link to the diff and a critical-priority flag.
Result: incident response time drops from hours or days to minutes.
QA and regression testing after deploys
Goal: automatically check that the layout on key pages hasn't broken after a deploy.
Take baseline snapshots of key pages on the staging version after QA approval.
Enable baseline mode — production will be compared against these references.
Threshold 0.5%, alert mode — instant to the team's Slack channel.
Trigger snapshots through the API right after each deploy.
Any visual regression produces an alert with a diff image within seconds of the deploy.
Result: visual bugs get caught automatically, without anyone manually walking through pages after a release.
Legal and compliance archive
Goal: record any change to a company's public documents (Terms of Service, Privacy Policy, rate cards) with the ability to pull any version retroactively.
Create monitors on each legally significant document, frequency — once a day.
Threshold 0.5% — terms changes usually produce a noticeable percentage.
Set digest mode — one morning email with a summary of overnight changes, no instant alerts.
Enable PDF export with certificate and SHA-256 hash — every snapshot becomes a self-contained document.
Legal gets the morning summary plus an archive of every version as a PDF that can be attached to a filing.
Result: nothing gets forgotten, any document version can be pulled with one request, and the PDF with certificate is suitable for attaching to a legal proceeding.
Change detection also gets used in lighter forms — tracking content on competitors' blogs for SEO teams, checking implementation against an approved design in design handoff, watching internal pages for changes after CMS updates.
How this differs from existing tools
Stillio focuses on screenshot archiving: automatic capture on a schedule, a snapshot library, exports. Change detection isn't really what it does. With snapshotarchive, every snapshot isn't just saved, it's compared with the previous one right away, and alerts are a built-in part of the product, not a separate feature.
Visualping and ChangeTower are specialized change monitoring tools, and they handle their core job competently. The difference here is the combination: snapshotarchive is archive plus change detection in one product. So you don't just get an alert about a change today — you can pull any version of the page from any date in the past, compare it with any other version, and get a PDF with a certificate for legal use. With classic change-detection tools, the archive side is either missing or limited.
Plus specific technical differences: Ignore Zones (explicitly excluding regions from comparison, not just hiding through CSS) is still a rare feature among monitoring tools. Correct handling of pages at different heights — most tools crop to the shorter one and lose changes. The diff image right inside email and Slack — most tools just send a text alert with a "go look at it" link.
Limits and edge cases
A few practical points worth knowing upfront.
A/B testing and rotating content. If a page shows a different hero block on every request, change detection will see this as constant changes. Threshold only helps so much. The solution is to add such blocks to Ignore Zones to exclude them from comparison, or to use Monitoring Zones to focus on stable parts of the page.
Platforms with aggressive lazy loading. If a page renders content as you scroll, it's important to set the right delay before capture so the system can wait for a full render. snapshotarchive waits for "load" and "networkidle" events by default, but in rare cases an extra pause is needed — it can be set in seconds in the monitor settings.
Very long pages. Snapshots of pages 30,000+ pixels tall are possible, but comparing them takes noticeably longer and the diff images get large. For news feeds and infinite scrolls, it's often more practical to use Monitoring Zones on specific blocks rather than comparing the whole page.
Animations and video. Change detection captures one frame and compares it with one frame. Animations and videos can produce false positives if the frame lands in a different phase. The monitor has an "disable animations before capture" option, or you can use Ignore Zones on areas with animation.
How often can snapshots be taken?
Minimum frequency is once every 5 minutes, maximum is once a week. Each monitor also lets you set which days of the week and which time window to capture in. For example, you can monitor a page only on workdays from 9:00 to 18:00 in the account's timezone.
What happens when a page is temporarily unavailable?
If the capture fails (the page returns a 5xx, times out, or has a DNS error), the system records it as a failed attempt with the specific reason. Consecutive failures are counted separately: after several failures in a row, we send a separate alert about a monitoring problem — that doesn't get confused with an alert about a page change. So you understand what's happening: the page actually changed, or the site is down.
How long are snapshots and diffs stored?
It depends on the plan: 90 days on Pro, less on smaller tiers. Old snapshots are deleted automatically when the retention period ends. If you need to keep an archive longer, you can download the snapshots and diff images through the API and store them yourself.
How do I avoid false positives on cookie banners and chat widgets?
The monitor settings include an "Add common popups" button that adds a ready-made list of 14 typical selectors to your hide list in one click: cookie banners, Intercom, Drift, Tawk, Crisp, HubSpot, GDPR popups. These elements get hidden before the screenshot is taken, so the comparison sees a clean page.
What's the difference between instant and digest?
Instant sends a notification right after each significant change. Digest collects all the day's changes and sends one email at 08:00. The mode is configured per monitor — critical pages on instant, the rest on digest, so your inbox doesn't drown.
Can I monitor pages behind authentication?
Yes. The monitor accepts HTTP Basic Auth credentials (login and password), and can also pass custom cookies and headers for more complex authentication scenarios — pages behind SSO, account areas, and so on. It works the same as regular monitoring, the system just authenticates the way you specify when capturing.
Is mobile viewport supported?
Yes. Each monitor lets you set the device type (desktop, mobile, tablet) and a custom viewport size. You can create two monitors for the same page — one with a desktop viewport, another with mobile — and track changes separately for each.
Which plan includes change detection?
All plans, including the free one. On the free plan you get the full change detection feature set — pixel-by-pixel comparison, threshold, monitoring and ignore zones, baseline mode, instant and digest alerts, email and Slack notifications — with no stripped-down versions. The differences between free and paid plans are quantitative: free includes up to 3 URLs, minimum capture frequency of once a day, and shorter snapshot retention. Paid plans get more URLs, more frequent snapshots, and longer archives. The logic is simple: try the whole product for free, pay for scale when you need it.
What you end up with
Change detection in snapshotarchive isn't "an alert came in, something changed." It's a concrete number of changed pixels, a map with region coordinates, a clickable zoom modal for details, two levels of noise filtering, two types of zones for attention control, a baseline mode for tracking deviations, two notification modes, and programmatic API access for when you need to wire it into your own systems.
The fastest way to evaluate is to take one page that matters to you, set up monitoring with the default 0.5% threshold, add the "Add common popups" preset, and wait a week. After 7 days you'll have real statistics: how often the page actually changes, which changes count as significant, and how well the two-level filtering works on your data. That tells you whether you need baseline mode, which zones make sense to mark, and which alert mode to choose. The free plan covers all of this: up to 3 URLs with daily snapshots and the full change detection feature set, no restrictions on features. When you decide to watch more pages or capture more often than once a day, the pricing page has the rest.