Migrate a site
Visual compare: live site vs new server
Available on the Pro, Agency and Provider plansUpdated October 2026
A crawler can tell you a page loads. It can’t tell you the header font fell back to Times, or the hero image is gone. Visual compare screenshots the same pages on your live site and on the new server and shows you exactly what changed, pixel by pixel.
On this page
Run a compare
Click Compare on a link in the Links page. Add the pages you want to check as paths such as /pricing or full URLs on your domain, then click Run compare.
For every page, DNSPeek takes full-page screenshots:
- of the live site, through normal public DNS (or the link’s old site address, if you set one), and
- of the new server, at the link’s IP,
- at two widths: desktop (1440 px) and mobile (390 px).
Each pair is compared into a diff image that marks the pixels that differ.
Read the results
Every page and width gets a mismatch percentage, colour-coded:
- 1% or less: noise, such as font smoothing or anti-aliasing.
- Up to 5%: worth a look.
- Above 5%: something changed.
Switch between Side by side, Slider (wipe between the live and the new screenshot) and Diff (changed areas highlighted). Each page also lists the HTTP status, redirects, console errors and failed requests on both sides. If one page is taller than the other, the extra height counts as difference.
Live mode
Screenshots show one moment. Live compare lets you browse both servers yourself: click Live compare on the Visual compare page and the live site opens next to the new server, full screen.
- Left: Current server (live DNS), the site your visitors see today. Right: New server, the link’s IP. Swap sides flips them. If the link has an old site address, the left side is labelled Current server — old-domain.com (with the IP in brackets when you pinned one).
- If you picked a page in the screenshot results, both sides open on that page.
- Scroll one side and the other follows to the same place. Follow a link and the other side opens the same path. The path bar at the top shows where you are; click a part of it to take both sides there.
- Pick a width for both sides: Desktop 1440, Laptop 1280, Tablet 820, Mobile 390 or a custom width. Wide pages are scaled down to fit and the zoom is shown next to the width.
- The Diagnostics panel has three tabs. Summary lists, per side, the HTTP status, time to first byte, console errors, failed resources and the last error; red marks where the new server does worse. Problems and Pages list what is worse on the new server: see Problems on the new server. Dock the panel on the right, at the bottom or on the left, open it in its own window or collapse it: see Diagnostics panel: docking and separate window.
- On a phone you see one side at a time; switch with Current server / New server. Both keep syncing.
- Press Esc or Exit to leave. Open in a new tab opens the side you are looking at on its own.
- Find differences here screenshots the page you are on, on both servers, and highlights what changed: see below.
- Share (owners and admins, or the creator of a private link) creates a client share link that opens on the page you are looking at: see Share with a client.
The toggles in the toolbar choose what follows: Sync scroll and Sync navigation are on, Sync clicks, Sync typing and Cursor are off.
Password-protected links open without asking for the password. The connection to both sides lasts 30 minutes and renews by itself while the view is open.
If a side shows not syncing, DNSPeek has already retried it once. What is usually left:
- a bot check (“Checking your browser”, a captcha) on the site: pass it once in a new tab, then reload that side;
- the server not answering: the frame shows an error page;
- a browser that blocks third-party cookies (Safari, private windows), which can drop sync after you follow a link: use a normal Chrome, Edge or Firefox window.
Diagnostics panel: docking and separate window
The Diagnostics panel docks like the developer tools in your browser. Open the layout menu in the panel header and pick where it goes:
- Right (the default): next to the two sites.
- Bottom: under the sites, so both frames keep their full width. Handy for wide pages or the Desktop 1440 width.
- Left: on the other side of the sites.
- Separate window: the panel moves into its own browser window, and the sites get the whole screen.
- Collapse: the panel shrinks to a slim bar with its title and the number of open problems. Open it again from the bar.
Press Ctrl+Shift+D to move the docked panel to the next side.
Resize the docked panel by dragging the splitter between the panel and the sites. With the keyboard, focus the splitter (Tab) and use the arrow keys. Double-click the splitter to go back to the default size.
Separate window is made for a second monitor: drag the new window to the other screen and keep both sites full size on the first. The window updates live while you browse, just like the docked panel. Close the window and the panel docks back into the compare.
- Remembered per browser: where the panel is docked, its size and whether it is collapsed are kept for your next live compare in the same browser. Another browser or computer starts from the default.
- On a phone the panel always stays at the bottom, under the side you are looking at.
- Full screen: docking, resizing, collapsing and the separate window work the same in full-screen live compare.
Find differences here
Spotted something while browsing? Click Find differences here in the toolbar. DNSPeek captures the page you are on, on the live site and on the new server, at the width you picked, the height of the frames and the place you scrolled to, and compares the two pixel by pixel.
- A panel opens while the capture runs (usually 10 to 30 seconds), then shows Live site, New server and Difference side by side, the share of pixels that differ and how many changed areas were found. Each changed area is boxed on all three images; Show changed areas hides the boxes.
- Slider puts the two screenshots in one frame: drag the handle, or focus it and use the arrow keys.
- Open full size opens an image in a new tab. Take again captures the frames where they are now.
- The screenshots are taken by DNSPeek's browsers, not yours: a login, a cart or a cookie choice you made in the frames is not part of them.
- Each workspace can take up to 200 of these per day (at most 3 at a time, 10 per minute per person); they do not use your monthly visual compares. When a limit is reached, the panel says which one.
Problems on the new server
While you browse in live compare, DNSPeek records what both servers send and what the browser sees on both sides, and lists what is worse on the new server: missing files, a certificate that would warn visitors, pages hidden from Google, lost analytics, slower pages. Open the Problems tab in the Diagnostics panel; the number on the tab is how many open problems there are.
- This page shows the problems of the page you are looking at; All pages shows every page you visited in this session, each problem with its page.
- Problems are grouped by kind (below) and the worst come first: High (fix before you switch DNS), Medium, Low and Info.
- Each problem shows what the live site and the new server returned (Old / New) and the affected URLs. Old and New next to a URL open it in that frame, so you can see it for yourself.
- How to fix explains the usual cause and fix, with a link to the matching part of this page.
- The list refreshes every few seconds while the view is open, and pauses while the browser tab is in the background.
Compression and HTTP version are checked on the servers directly, not in the frames: everything in the frames passes through DNSPeek, which changes both. DNSPeek connects to the live site’s current address (or the old site address) and to the link’s IP once per session and compares their certificates, HTTP/2 and HTTP/3 support and gzip or Brotli compression.
Pages
The Pages tab lists the pages you visited in this session, with the number of problems on each and how many are High. Pages with the most serious problems come first. Click a page to open it on both sides.
Ignore a problem
Some differences are on purpose, such as a new analytics ID or a different web server. Click Ignore on a problem to hide it: it no longer counts on the tab, stays out of exports and is folded under N ignored in its group. Ignoring applies to the link, so it stays ignored in later sessions and for your teammates. Open the folded list and click Unignore to bring it back. Ignoring and unignoring are recorded in the team activity log.
Export the problems
Export at the top of the panel saves the problems of the current view (this page or all pages) without the ignored ones:
- Markdown (.md) to paste into a ticket or a message,
- Spreadsheet (.csv) for Excel or Google Sheets,
- JSON (.json) for your own tools,
- Add to QA report… adds them to one of the link’s finished QA reports, in a Found in live compare section.
What each kind means
Resources
Files the page needs that the new server does not deliver: an image, stylesheet, script or font that answers 404 or 500, cannot be reached at all, or comes back as an HTML page (often a “not found” page served with status 200). Also redirects that send visitors to the server’s IP or a staging host, and redirect loops. Usually: files not copied, wrong paths in the theme, or rewrite rules missing on the new server.
Security
Things that make browsers warn or block: an insecure (http://) file on an https page, links and forms that still point to a staging or temporary host or the server’s IP, a certificate that is expired, self-signed, for another name or expiring within 14 days, HSTS missing where the live site sends it, and cookies that lost their Secure or SameSite flags. Search the database for the old addresses and issue a certificate before the switch.
Caching
Static files (images, CSS, JavaScript, fonts) that the live site lets browsers keep but the new server does not: no caching rules, a much shorter cache time (under a quarter of the live site’s), or no ETag / Last-Modified. Pages load slower for returning visitors. Copy the caching rules (expires, Cache-Control) into the new server’s config.
Performance
The new server answers noticeably slower: a first byte more than 1.5 times slower and over 300 ms, pages 30% heavier or with 30% more requests, worse Core Web Vitals (LCP, CLS), no compression or an older HTTP version (both checked on the servers directly). Check PHP workers and caching, and turn on gzip or Brotli and HTTP/2.
Errors
New errors in the page: JavaScript errors and uncaught exceptions the live site does not have, requests blocked by a Content Security Policy, PHP warnings or fatal errors printed on the page (often a different PHP version), and the page’s own app failing to start (a hydration error or an error page). Open the page in a new tab with the browser console to see the details.
SEO
Changes that hurt search: noindex (the page would drop out of Google, often “Discourage search engines” left on), a canonical missing or pointing to another host, a changed title or description, missing hreflang, Open Graph or structured data, a different language, or a missing or duplicated H1.
Headers
Security headers the live site sends that the new server does not: X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Add them to the web server config. A different web server or PHP version is listed as Info, for your records.
Analytics
Tracking that will stop or change after the switch: a Google Analytics, Tag Manager, Meta Pixel, Yandex Metrica, Hotjar or Clarity tag present on the live site but missing on the new server, or one with a different ID. Re-add the code or re-enable the plugin, or ignore it if the new ID is intended.
Share with a client
Your client can see the live comparison too, without a DNSPeek account. On the Visual compare page, under Share with a client, click Create share link, or click Share in the live compare toolbar:
- Label: a name for you and for the client, such as “Acme review”.
- Expires after: 1, 3, 7 (default), 14 or 30 days.
- Password (optional): asked before the comparison opens. Send it separately from the link.
- Open on the current page (from the live compare toolbar only): the link opens both sides on the page you were looking at instead of the home page.
- Allow click and typing sync: off by default. Off, the client can scroll and follow links, and both sides stay in sync, but clicks and typing on one side are not repeated on the other (View only). On, the client can turn on click and typing sync, which acts on both servers.
Copy the link right away: for security it is shown only once. QR code next to it shows the link as a code to scan with a phone, or to download as PNG or SVG. The list shows each link’s views and when it was last opened. Revoke stops the link at once for new visits; a page the client already has open stops within 30 minutes.
The client gets the same live compare you use: the path bar, the device widths, Swap sides, Diagnostics and, on a phone, one side at a time (Current server / New server). A view-only link shows View only in the toolbar instead of the click and typing switches. Find differences here and Share stay in your dashboard. The shared page shows your report branding (logo, name, colours) when your plan includes it. If the link is disabled or expires, the shared page says so instead of showing the sites.
Only workspace owners and admins can create and revoke share links. On a private link, which nobody else can see, its creator manages them instead: they can see and revoke the link’s share links whatever their role, and create new ones unless their role is read-only.
Making a link private revokes all its open share links, so a link a teammate sent to a client while the team could see it stops working. Create a new one if you still want to share.
The domain changed during the migration
By default the “live” side of a compare is the link’s own domain, looked up in public DNS. That only works if the old server still serves the site on that domain. If the site moved to a new domain at the same time as the new server, for example after a rebrand, the old server answers only on the old domain, and the Current server side stays blank or shows the wrong site.
Give the link an old site address and the old side opens there instead.
Open the link’s settings
On the Links page, open the settings of the link for the new domain (the one pointing to the new server). When creating a link, the same fields are under the advanced options.
Fill in Old site for comparison
- Old site domain: the domain the site uses on the old server, such as
old-domain.com. In the dashboard you can paste a full URL: only the host is kept. - Old server IP (optional): leave it empty to look the old domain up in public DNS. Set it when that lookup no longer reaches the old server (see below).
- Old site domain: the domain the site uses on the old server, such as
Click Save
Clear removes the old site address, and the link goes back to comparing against its own domain.
What uses the old site address:
- the Current server side of Live mode, whose label shows the address in use;
- Find differences here and Problems on the new server, for the old side;
- screenshot compares, for the live site screenshots;
- client share links, including links you created before you set the address.
The new server side does not change: it still opens the link’s own domain at the link’s IP.
The old domain already points to the new server? If you moved DNS for the old domain too, public DNS sends it to the new server, and both sides show the same thing. Set Old server IP to the old server’s address: DNSPeek then connects there directly, sending the old domain as the host name. The same address rules apply as for the link’s IP: private network and loopback addresses are not accepted. An IP needs a domain: you cannot set the IP alone.
Good to know:
- Navigation stays in sync by path. Following a link to
/pricingon one side opens/pricingon the other, even though the domains differ. If the new site uses different paths, open the page on each side yourself. - Links to the other domain are not rewritten. Inside the old pages, absolute links to the old domain are rewritten to stay in the compare. Absolute links to the new domain (and in the new pages, links to the old domain) are left as they are, so they open the real site through public DNS. See Files on other hostnames.
- The old domain goes through the same safety checks as a link’s domain. Changes appear in the team activity log as Updated a link.
- Setting the old domain to the link’s own domain without an IP changes nothing, so it is not saved.
Plans and limits
Visual compare is included from the Pro plan. One run counts as one compare, however many pages it contains. A run that could not start, or that no worker picked up within 15 minutes (it then shows as failed), is given back.
Live mode is on every plan. Paid plans have unlimited live compare; the Free plan includes 3 live compare sessions a month. A session is one person on one link for 24 hours: reopening that link, the automatic renewal and moving between pages inside those 24 hours use nothing more. The Visual compare page shows how many sessions are left. Find differences here and client share links come with visual compare, so they need a paid plan.
| Plan | Pages per run | Compares per month |
|---|---|---|
| Pro | 5 | 50 |
| Agency | 20 | 500 |
| Provider | 20 | Unlimited |
| Plan | Live compare sessions per month |
|---|---|
| Free | 3 |
| Pro | Unlimited |
| Agency | Unlimited |
| Provider | Unlimited |
Pair it with a QA report: the report covers many pages for errors, the compare covers your key pages for looks.