FREE v1.0.0

SiteSnap
Prove the migration was clean.

You finish a migration at 2am. Next morning the client emails: "the wrong site is showing." SiteSnap is how you answer that in one reply — here is your site before I touched it, here it is now, pixel for pixel identical. And if it did change, it changed before the migration, without your knowledge.

Automate. Simplify. Steadfast.

Windows desktop app · MIT licensed · No account, no key, no phone-home

This is what the client sees

A standalone HTML file. Mail it, attach it to the ticket, or keep it as your own record of what that site looked like on that date.

A SiteSnap migration report in dark mode: a table with columns for Website, Pre-IP, Before, Post-IP, After and Status. One row shows https://steadfasttools.com with a pre-migration IP of 172.67.158.86, a post-migration IP of 172.67.158.86, before and after screenshot thumbnails of the same page, and a green checkmark reading Identical.
Both IPs, both screenshots, and the verdict, on one row per site. Click any thumbnail to open it near-fullscreen — proper verification, not squinting. Dark and light mode both ship, and the report remembers which one you chose.

Four steps, and the job has a paper trail

Each migration is a named job. Close the app, come back tomorrow, pick the job back up exactly where you left it.

1

Create a job

One job per migration. State is written to disk, so the job survives a reboot mid-move.

2

Capture "before"

Screenshot every site and record the IP each one currently resolves to. Do this before you touch anything.

3

Capture "after"

Once DNS has moved, run it again. Same list, same job, new IPs.

4

Generate the report

Diffs every pair, flags anything that moved, and writes the HTML. Export as ZIP with the screenshots included.

A managed workflow, not a one-shot script

Job list on the left, status checkboxes showing exactly how far through you are, and the results table on the right.

The SiteSnap desktop application in dark mode. A Job Management sidebar on the left lists job_20260911_073305 with New Job, Refresh and Delete Job buttons, and a Job Status panel with three ticked checkboxes: Pre-migration completed, Post-migration completed, and Report generated. The main panel shows a Report Viewer tab with View Report, Refresh Report and Export Report as ZIP buttons above a results table for steadfasttools.com showing matching pre and post IPs and a status of Identical.

Built for real batches

Single domain when that's the job, or a 200-domain list when it isn't. Five captures run concurrently.

IP resolution at both ends

Pre-IP and Post-IP side by side. Sometimes the screenshots match and the IPs are the story — DNS hasn't moved yet.

Messy domain lists welcome

Load from .txt or .csv, through a seven-encoding fallback. A UTF-16 export out of Excel just works.

Job state on disk

Every job keeps its own directory of screenshots and its own state file. Nothing is held in memory waiting to be lost.

Export as ZIP

Report plus every screenshot in one archive, ready to attach to a ticket or hand over at sign-off.

Light and dark

In the app and in the generated report. The report remembers the reader's choice, not yours.

Built for one person doing the migration

This is not fleet tooling and it doesn't pretend to be. It's for the solo sysadmin, the one-person hosting outfit, and the freelancer who took a migration gig this weekend. The person doing the move runs it, and verifies the move for themselves.

I wrote it because I spent years being the person on the other end of that "the wrong site is showing" email, with nothing to point at but my own memory of what the site looked like four hours earlier.

When "Different" doesn't mean broken

The comparison is a whole-page pixel diff, deliberately blunt — a migration that went wrong usually goes visibly wrong. The trade-off is that anything which legitimately changes between two captures will flag as Different:

Rotating banners, hero carousels and randomised testimonials
Live timestamps, clocks and countdown timers
Ad slots and third-party embeds serving new creative each load
"12 people are viewing this" widgets, visitor counters, stock tickers

So when a site you know is healthy comes back Different, open the two screenshots and look at what moved. A rotating banner is noise. A default host landing page, a missing stylesheet or an SSL warning is not — and that's the one you needed to catch before the client did.

A capture that fails outright is reported as failed, never quietly counted as identical.

Working on a migration? Check the domain first.

VeriSite gives you DNS, certificate expiry, TLS, SPF, DKIM, DMARC and registry status for a domain in one report — unlimited lookups, running locally. Worth knowing what you're inheriting before you move it.

Look at VeriSite

Download SiteSnap

Free forever. MIT licensed. No account, no licence key.

Download v1.0.0

Windows 10/11 · Python 3.10+ (the installer bundles 3.12 if you don't have it) · Google Chrome for captures

Settled an argument for you?

SiteSnap is free and stays free. If it's saved you one awkward conversation with a client, a coffee keeps the next tool coming.

Buy Me a Coffee