Validate migration and launch URL lists
Check representative old and new URLs together, confirm their final destinations, and identify broken or unnecessarily long paths before launch evidence goes stale.
Free, no signup. A site migration or audit turns up hundreds of URLs to check, one at a time is not an option. Paste up to 500 and get status codes, full redirect chains, and final destinations, with the SEO problems already flagged.
Up to 5 response-negotiation headers: Accept, Accept-Language,
Cache-Control, and Pragma. Credentials, cookies, and X-*
headers are refused. Headered checks are never cached or stored.
Example data — replace with your own, then press Check status codes
Checks run from our server; we fetch the URL you enter and don't keep the results. Re-running the same list within about ten minutes reuses a short-lived cache. Checks with custom headers deliberately bypass that cache. Anonymous run-level outcome counters may be used for aggregate research; URLs, domains, IPs, and identifiers are never included, and no statistic is released below 100 runs.
Say you paste four URLs:
https://example.com/old-trail-shoe
https://example.com/products/trail-runner
https://example.com/products/retired-boot
https://example.com/dead-link …and the checker returns:
https://example.com/old-trail-shoe lands on
https://example.com/products/trail-runner in a single hop (green→amber dots show it) — expand the row for
the full chain detail.
Suppose /products/retired-boot returns 200, but its title is
“Product unavailable” and its body is the same empty shell used by thousands of retired
SKUs. This checker correctly reports the HTTP response as successful; it does not pretend
that status alone proves useful content. Cluster repeated titles/body templates with a
crawler, inspect representative rendered pages, and confirm Google's classification in
Search Console. The `.example` URL and scenario are illustrative.
example.com/pricing is treated as https://. Duplicate lines are removed
automatically.sitemap.xml URL, and the tool
pulls every <loc> into the list for you (capped at 500).Accept, Accept-Language, Cache-Control, and
Pragma; credentials, cookies, and X-* headers are intentionally blocked.
Those checks bypass the short-lived cache.+ saves the current site or page. Use ☆ beside any saved site, page, or list to favorite it. Recent check history appears below.
Target filled from your local choices.
Saved targets, named lists, and recent check summaries remain only in this browser.
| URL | Final URL |
|---|
Checks run from datacenter IPs at the edge — some bot-protected sites (Cloudflare challenges, WAFs, CDN bot rules) answer these requests differently than they would answer a real browser.
Every row's status pill is colored by its status class:
Amber flags on a row call out specific redirect problems the tool detects, including:
The page splits your list into batches of up to 25 URLs and posts them to a server-side checker (URL
fetching can't run in your browser). Batches are dispatched at a deliberate pace, with no more than
10 URLs for one host in a batch, and each completed batch streams back into the table. For each URL the
checker requests it without auto-following redirects, records the status and
Location at every hop up to five, and reports the final status and destination. It also
reads the final HTML for a meta refresh.
Everything after the fetch — the status-class chips, sorting, filtering, and CSV export — runs entirely in your browser. No URLs are stored, and re-running the same list within about ten minutes reuses a short-lived edge cache.
sitemap.xml.
Checks run from datacenter IPs at the edge, so bot-protected sites (Cloudflare challenges, WAFs, CDN
bot rules) may answer differently than they would a real browser — and choosing the Googlebot
user-agent doesn't make the request pass reverse-DNS verification. It follows the HTTP
chain plus one layer of meta refresh, not JavaScript redirects (window.location,
framework routers won't appear). Each chain stops at five hops. It only reaches pages a public crawler
could reach — login-gated, IP-restricted, or private addresses are refused. And the 500-URL cap plus a
courtesy limit of 10 URLs per host per batch mean very large single-site lists are spread across
multiple batches.
Up to 500 URLs per run. Paste them one per line, or import them straight from a sitemap URLA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.. The tool splits the list into batches of 25 and deliberately paces requests to avoid overwhelming one host or the checking service, so a full single-site run can take a couple of minutes. Duplicate lines are removed before checking.
The status codeAn HTTP status code is the three-digit number a server returns with every response to tell a browser or crawler what happened to its request — success, redirect, client error, or server error. For SEO the code matters as much as the content: it tells Google and Bing whether to index a page, follow a redirect, retry later, or drop the URL from the index. shown is the final status — the code of the page the URL actually lands on after following any redirects. The Final URL column shows where a redirecting URL ended up. If a URL redirects, the tool follows the whole chain (up to five hops) and reports the destination, not the first hop. Expand any row to see every hop and its individual code.
Rows are colored by status class. Green is 2xx (success), amber is 3xx (redirect), and red is 4xx (client errors like 404), 5xx (server errors like 503), or a connection error. The color lets you scan a large list and spot the broken and redirecting URLs without reading every code.
It can send the browser, GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer., BingbotBingbot is Microsoft Bing's primary web crawler — the bot that discovers, fetches, and renders pages to build the Bing index. That index also powers Yahoo, DuckDuckGo, Ecosia, and Microsoft Copilot, so Bingbot's reach is far wider than Bing's own search-market share., GPTBot, ClaudeBot, or PerplexityBot user-agent string, which can surface crawler-specific rules. The request still comes from a datacenter IP, not that crawler's verified network, so IP-verifying sites may treat it as an unverified bot.
No. URLs are sent to the checking endpoint only to fetch their status and are never saved. Filtering, sorting, and CSV export all run in your browser. Re-running the same list within about ten minutes reuses a short-lived cache so repeat checks are faster, but nothing is persisted to an account or database.
Upvote what you want most. New ideas can be submitted from the floating Feedback menu; requests appear here once approved, and the most-wanted rise to the top.
You won't be emailed about that request anymore.
Loading…
New requests are reviewed before they appear here.
Where this tool helps
Check representative old and new URLs together, confirm their final destinations, and identify broken or unnecessarily long paths before launch evidence goes stale.
Filter a large result set by response class so broken links, server errors, and requests that were not completed can be investigated without treating every failure as the same problem.
Expand redirecting rows to inspect each observed hop, then replace temporary, looping, or multi-hop routes with the shortest correct permanent destination where appropriate.
Repeat an authorized check with a selected user-agent or allowlisted response-negotiation header while remembering that a name string does not make the request a verified crawler.
Export a local baseline and compare a later run to surface changed statuses, new 4xx responses, longer chains, different final URLs, and changed error states.
Export the exact input, final status, destination, chain, latency, flags, and errors, then validate content quality and indexability separately from the HTTP response.
Watch the full workflow
This beginner walkthrough explains what an H-T-T-P status checker observes, when to use it, how to import or paste a list, how to run a complete fictional check, how final statuses differ from redirect chains, how to filter failures and compare snapshots, and what a successful response still cannot prove.
This tool checks up to five hundred public U-R-Ls and records the final H-T-T-P status, final destination, each observed redirect hop, total latency, and selected response evidence. It also flags common redirect problems. Use that evidence for migration checks and audits, but remember that it describes the response path, not the complete quality of the page.
Use the checker to validate migration or launch lists, prioritize four-x-x, five-x-x, and connection failures, simplify redirect chains, compare bounded crawler or language responses, compare status snapshots over time, or create an evidence-led remediation handoff. Each use case keeps the exact U-R-L and observed response attached to the decision.
Paste one public U-R-L per line, choose Try an example, or import a leaf sitemap. A bare domain is treated as H-T-T-P-S, duplicate lines are removed, and the run is capped at five hundred. The disclosure says checks run on the server, results are not kept, and ordinary repeats may use a short-lived ten-minute cache.
Choose Import sitemap, enter a public leaf sitemap U-R-L, and fetch its page locations. The fictional sitemap adds six reserved dot-example addresses and updates the count to one batch. A sitemap index is rejected here; select one child sitemap at a time. Imported U-R-Ls are still only inputs and are not proof that search engines crawl or index them.
Advanced mode accepts only response-negotiation headers such as Accept-Language, Accept, Cache-Control, and Pragma. Credentials, cookies, and X-prefixed headers are refused, and headered checks bypass the cache. You can also choose browser, search-bot, or A-I crawler user-agent strings. That changes the request label; it does not make the request originate from a verified crawler network.
The sample report shows two final two-hundred responses, one clean three-oh-one redirect, and one broken four-oh-four. The status pill, input U-R-L, final destination, latency, chain dots, flags, and expand control all have different jobs. Sort or filter a large list to prioritize work, then expand any redirect or error before deciding what to change.
The soft-four-oh-four example is essential. A retired product can return H-T-T-P two hundred while showing Product unavailable or a repeated empty template. This checker correctly reports the response as successful; it cannot prove that the content is useful or indexable. Inspect rendered content with a crawler and confirm search classification separately.
The full workflow is: paste or import up to five hundred U-R-Ls, select a user-agent only when needed, optionally add safe headers, run the check, filter or sort the streamed results, expand redirect rows, and export C-S-V or a local snapshot. The snapshot can be compared with a later run to call out status and chain changes.
The complete example contains six reserved dot-example U-R-Ls: a multi-hop redirect, a live product, a retired product that still returns two hundred, a dead link, a temporary server failure, and a host that cannot be resolved. Every endpoint response is fulfilled locally and every external response is blocked, so no public site is contacted.
Choose Check status codes. The table appears while batches run, then the summary confirms six U-R-Ls checked with the browser profile. A live run may vary with the server, network path, cache, bot protection, or deployment state. The fixed local response makes the evidence identical across retakes.
The chips count six evaluated rows: three ending in two-x-x, one four-x-x, one five-x-x, and one connection error. Three-x-x is zero because the redirecting old-product U-R-L ultimately lands on two hundred. The pill shows the final response; the colored dots and flags reveal that redirects happened earlier.
Expand old-product to see H-T-T-P three-oh-one to an intermediate catalog U-R-L, then a temporary three-oh-two, then the final two-hundred trail-shoe page. The tool flags a two-hop chain and the temporary redirect. Replace that path with one intentional permanent redirect to the correct final destination when the migration requirements support it.
Live-product and retired-product both end on two hundred. The table can preserve a bounded title in expanded evidence, but a green pill still cannot validate the rendered copy, canonical choice, indexing directives, template quality, or search-engine soft-four-oh-four classification. Treat it as a successful server response and continue the content review.
Choose the four-x-x chip to isolate the dead-link row. Four-oh-four means the requested page is missing; fix or remove internal links, or restore the intended resource. Five-oh-three is a server-side failure that may be temporary and should be retested. A D-N-S, T-L-S, timeout, or refused connection produces an error row, but this snapshot alone cannot identify the complete root cause.
Use the row control to open the exact chain, select four-x-x to isolate broken pages, then return to All. The other chips isolate terminal three-x-x, server errors, or requests with no usable response. Sorting by status, latency, or chain length changes the view only; it does not change the captured evidence.
Import a previously exported local snapshot to compare the same U-R-Ls. This baseline reports four changed rows, one new four-x-x, and one chain that grew. It also names the final-destination and error-state changes. A comparison is a triage aid: confirm the baseline date, deployment context, and each current row before assigning a regression.
Export C-S-V for the input, final status, final U-R-L, redirect count, chain, latency, flags, and errors. Export evidence package adds structured per-U-R-L acquisition evidence and a decisive result image. Export snapshot creates the local baseline used by Compare snapshot. Review every not-evaluated row separately; an absent observation must never be converted into a clean result.
Two-x-x means the chain ended with a successful H-T-T-P response, not that the content is healthy. A terminal three-x-x means the checker ended on a redirect response it could not or should not follow. Four-x-x identifies client-side missing or forbidden resources, five-x-x identifies server failure, and E-R-R means no usable H-T-T-P response completed.
The browser divides the list into batches of up to twenty-five, keeping one host to ten or fewer U-R-Ls per batch, and dispatches batches at a deliberate pace. The server requests each U-R-L without automatic redirect following, records status and Location at every hop up to five, and reads the final H-T-M-L for one layer of meta refresh. Filtering, sorting, and exports then run locally.
The main features are five-hundred-U-R-L runs, paced batches with progress, full expandable redirect chains, status filters and sortable columns, redirect-problem flags, leaf-sitemap import, several user-agent profiles, bounded request-header overrides, C-S-V and evidence exports, and local snapshots for later comparison.
Checks come from datacenter edge I-Ps, so bot protection may answer differently than a real browser. A Googlebot label is not a verified Googlebot network. The tool follows H-T-T-P plus one meta refresh layer, not JavaScript navigation, and stops after five hops. It refuses private or gated targets, cannot prove content quality or indexability, and cannot turn one latency or connection error into a complete diagnosis.
Export the exact U-R-Ls, final statuses, destinations, redirect chains, latency observations, flags, and errors with your handoff. Fix broken links and redirect rules at the source, then rerun the same list. Use a crawler, rendered-page inspection, Search Console, logs, and monitoring to validate content, indexability, JavaScript behavior, and availability questions that an H-T-T-P response alone cannot answer.