TL;DR
to check a whole site, use a crawler, which follows the links from page to page. To check the page you are working on, or one section of it, use a browser extension. Then read each result before you fix it: a 404 means the page is gone, but a timeout or an “access denied” often means the link still works.
A broken link scanner requests the URL behind each link and reports the ones that fail. The tools differ less in how they check than in what they check.
We make one of these tools: LinkScan – Broken Link Checker, an extension for Chrome. It checks one page at a time, or only the links in text you select. It does not crawl a site. Where another tool fits the job better, this guide says so.
Which broken link scanner fits which job
The methods differ in scope: how much one check covers, and what it misses.
| Method | What one check covers | Cost | What you need | What it misses |
|---|---|---|---|---|
| Online crawler | The pages it reaches from the URL you enter | Free and paid versions | Often an account | Pages it cannot reach |
| Desktop crawler | The pages it reaches from the start URL, a sitemap or a URL list | Free and paid versions | A program on your computer | Pages it cannot reach |
| Google Search Console | URLs on your site that Google tried to crawl and could not use | Free | A Google account and a verified site | Links from your pages to other sites |
| CMS plugin | The site it is installed on | Free and paid plugins | Admin access to the site | Sites on other platforms |
| Browser extension | The open page, or the links in selected text | Free | A free install | The rest of the site |
Examples: the W3C Link Checker is a free online checker. Screaming Frog SEO Spider is a desktop crawler (see its broken link tutorial). WordPress has several broken link plugins.
Search Console’s Page indexing report lists URLs on your own site that Google found and could not index, including pages that return 404. It does not check links from your pages to other sites.
Find dead links on a website, step by step
Most sites need a site-wide check first, then a page-level check as you work.
- Check the whole site. Run a crawler, and open Search Console’s Page indexing report if your site is verified.
- Export the list, one row per broken link, with the page that contains it.
- Start with your most important pages: the most visited, and the ones that bring sales or sign-ups.
- Read each result. Separate missing pages from temporary or blocked requests.
- Fix each link. Update, remove or redirect it.
- Run the same crawl again, and make sure the list is shorter.
- Then check each page before you publish or update it.
Scan a whole site for broken links
A crawler starts at one URL and follows links from page to page across the site. For each link it records the URL, the status code and the page that contains it, so you know which page to edit.
Following links misses orphan pages, which no page links to. Many crawlers also read your XML sitemap or a URL list, which closes most of that gap.
When another kind of tool fits better
Use a tool that covers the job you need, beyond a page-level link check:
| If you need | Use |
|---|---|
| Every broken link across a whole site | A site crawler (desktop or online) |
| Your own pages that return 404 to Google | Google Search Console |
| Ongoing monitoring with alerts | A monitoring service or a CMS plugin |
| Whether a link is safe to click | A link-safety scanner. LinkScan does not check whether a link is safe. |
| Backlinks pointing at your site | An SEO backlink tool |
| A full accessibility review | An accessibility audit. LinkScan only flags unclear or missing link text. |
Check one page, or one section, in your browser
For a new post or an updated page, a crawl of the whole site is slow. With LinkScan:
- Install it from the Chrome Web Store.
- Open the page. To check one section only, select the text that contains its links.
- Click the LinkScan icon in the toolbar. A side panel opens, with a Scan All Links button, or Check Selected Links when text is selected.
- Click it. The first time, LinkScan explains why it needs access to sites, with the note “Checked locally · Never leaves your device”. Click Grant access, then confirm in Chrome’s dialog, and the scan starts. Not now skips the scan and shows “Host access required to scan links”, with a Grant access button. History, Domains, Links and Settings still work, and Settings has a Grant access button too.
Results appear in groups: Broken, Redirect & Accessibility, Unknown and OK. Each row shows the link text, the problem in plain words, a suggested fix, the status code and the URL. Locate on page scrolls to the link. LinkScan sends at most two requests a second, and one at a time to each site.
Pages you are logged into work too, such as a WordPress preview, because LinkScan reads the links from the page you have open. But the checks do not send your login: each link is checked as a logged-out visitor sees it. A link to a members-only page can come back as access denied. A recognised login redirect or a final 401 is Unknown, “Needs login”. A plain 403 without login or challenge signals remains Broken.
LinkScan also flags three link-text problems: no text a screen reader can announce, a vague phrase such as “click here”, and no destination. WCAG asks that the purpose of each link be clear from its text or context. It is not an accessibility audit.
Know the limits. LinkScan checks links only, not images, styles or scripts. It skips email, phone and JavaScript links, and links inside embedded frames. Dead same-page # targets are checked in the DOM; targets on another page are not checked. It does not monitor pages or send alerts.
Add to Chrome, free. It checks the page you have open, in your browser, after a free install. It does not crawl your whole site.
Check a page before you publish
The best time to fix a link is before readers find it. A crawl usually runs after a page is live; a page-level check works on the preview.
- Open the preview, or the page on your staging site.
- Select the article body, so the check leaves out the menus and footer every page shares.
- Run the check. Fix the Broken rows first. Replace a redirect chain with the final URL the row shows.
- Rewrite “click here” and “read more” so the text says where the link goes.
- Check again after you fix. Reload the page and scan it again. A link you changed is a new URL and gets checked. A link checked recently (48 hours by default; change it under Staleness threshold in Settings) shows its stored result; click the refresh button (Re-check) on its row for a fresh check.
Read the result before you fix it
A checker reports what the server answered, and some answers are stronger evidence than others. Each “Try it” link opens a live case on a test page full of known broken links.
| What the checker reports | What it usually means | In LinkScan | What to do | Try it |
|---|---|---|---|---|
| 404 Not Found, 410 Gone | The page does not exist. 410 says it was removed on purpose. | Broken, “Page not found” | Fix the link. | Status codes |
| One ordinary redirect (301, 302), with no other finding, to a working page | The link works, but its URL is out of date. | OK, with the final URL under the row | Update the URL when you next edit the page. | Redirects |
| Two or more redirects to a working page | A redirect chain. | Redirect chain, with the hop count and final URL | Link straight to the final URL. | Redirects |
| A redirect to an error, or in circles | The link is broken. | Broken, with the final status, or “Redirect loop” after 10 hops | Fix the link. | Redirects |
| 401 or 403, but the page opens in your browser | The site blocks automated requests, or the page needs a login. | 401 or a recognised login redirect: Unknown, “Needs login”. A recognised challenge: Unknown, “Could not check”. Plain 403 stays Broken, “Access denied” | Open it in a private window. If it works there, keep the link. | Bot wall |
| An unusual code such as 999 | The site answers automated checks with its own code. | Unknown, “Could not check — site blocked the request” | Open the link. If it works, keep it. | – |
| 429 Too Many Requests | The site asked the checker to slow down. | Unknown, “Rate-limited” | Check again later. | Rate limit |
| 503 Service Unavailable | The server is down for now. | Unknown, “Temporarily unavailable” | Check again later. | Maintenance |
| Other 5xx server errors | The server has a problem. | Broken, “Server error” | Check again later. If it stays, fix the link. | Status codes |
| Timeout | The server is too slow. | Unknown, “No response”, after 10 seconds | Open it. If it is slow for you, it is slow for visitors. | Status codes |
| No connection | The domain is gone, the certificate is invalid, or the connection failed. | Broken, “Can’t connect” | Check the address and open it. If it fails for you too, fix the link. | Network failures |
| 200 OK, but the page says “not found” | A soft 404. | OK. Most checkers, LinkScan included, cannot see this | Open the page if it looks wrong. | Soft 404 |
A deep-path redirect to the home page is Redirect, even with one hop; a recognised login redirect is Unknown. A redirect ending at a not-found path is Broken even when the final status is 200. Open the destination before deciding what to change.
Google does not index URLs that return a 4xx code, except 429, which it treats as a server error (Google’s status code documentation).
Why a working link can show as broken
A checker is not a visitor. It sends many requests in a row, without your login, and some servers answer that differently. That is why Unknown is kept apart from Broken: a timeout, a 429 or a 503 says “not now”, not “gone”. Do not remove a link for one Unknown result; the Re-check button on its row asks again.
One cause is handled for you. A checker that asks only for the headers (a HEAD request) can get an error from a server that would send the full page (a GET request). The HTTP standard says servers should answer both the same way, but some do not. When the HEAD request gets a 403, 404, 405 or 501, or no answer, LinkScan sends a GET and reports that answer.
Why broken links matter for visitors and SEO
A reader who clicks for a source, a product or a next step and gets an error page often leaves. On a shop, one dead step can end a purchase. A page with several broken links also looks unmaintained.
For search, Google says that 404s for URLs that should not exist do not, by themselves, hurt your site’s rankings. The real cost is broken internal links: they interrupt navigation and can stop visitors and crawlers from reaching pages you want found.
A few broken links are normal on an older site. The cost grows with their number and the importance of their pages.
Internal and external broken links
An internal link points to another page on your own site. An external link points to someone else’s site.
For internal links, you control both ends: correct the link, restore the page, or redirect the old URL. These breaks usually follow your own changes, such as a renamed page.
For external links, you control only the link: update it, link to another source, or remove it. They break without any change on your side.
A one-page check finds both kinds on one page. After a new URL structure, use a crawler to find internal breaks site-wide.
Fix what you find: update, remove or redirect
Put the list in a spreadsheet, with a column for your decision. In LinkScan, click Export after a check. Copy as table copies rows that paste into a spreadsheet, with the columns Severity, Link text, Location, Page, URL, Status, Issue and Fix. Copy to Clipboard copies the same findings as plain text, for a message or a ticket. Export copies the issues the current filter shows. OK rows, including ordinary single redirects without another finding, and links you marked as known are left out; select All first to copy every issue.
Then decide link by link:
- The page moved. Update the link to the new URL.
- The page is gone, but a good replacement exists. Link to the replacement.
- The page is gone, and nothing replaces it. Remove the link. Keep the text if it still makes sense.
- Your own page moved. Add a 301 redirect from the old URL to the new one, and update your own links to the new URL.
- Blocked, slow or a server error. Open it in your browser, or check again later.
- A working redirect. Replace the URL with the final one when you next edit the page, starting with redirect chains.
Do not redirect every missing page to your homepage: visitors who wanted a specific page have to search again. Redirect only to a page with the same purpose. Then check the same pages again to confirm each fix.
If an AI agent (Claude Code, Cursor, ChatGPT and so on) can reach your site’s code or CMS, paste your Copy as table export into this prompt.
Site: [YOUR SITE URL], content in [REPO OR CMS]. Below is LinkScan's "Copy as table" export (Severity, Link text, Location, Page, URL, Status, Issue, Fix).
[PASTE THE EXPORT HERE]
Goal: fix each link at its source.
- Broken (404, 410): the new address or a same-purpose replacement; else remove the link, keep the text.
- Redirect chain: the final URL from the Fix column.
- Our own page moved: also a 301 from the old URL, never to the home page.
- Unknown (timeout, 429, 503, needs login or bot-blocked) or Access denied (plain 403): list them for me to open in a browser.
- "click here" or empty link text: say where the link goes.
Check new URLs with `curl -I` (a 403 may be a bot challenge). Inspect first, propose, and wait for my approval before editing, publishing or deploying. Report what changed.Free broken link checkers, and where free stops
There is no single best free broken link checker. Pick the one whose scope matches your job:
- The whole site, no install: the free version of an online checker.
- The whole site, with more settings: the free version of a desktop crawler.
- Your own URLs, as Google sees them: Search Console.
- A WordPress site: a free broken link plugin.
- One page or one section, no account: a browser extension.
Free versions of site-wide tools can limit how much of a site one run covers, how often you run it, scheduling or exports, and many ask for an account. These terms change, so read them on the tool’s own site.
SEO broken link checker tools
SEO suites such as Ahrefs and Semrush include site audits that report broken links. They also report backlinks: links on other sites that point to your pages. When a backlink points to a URL on your site that no longer exists, you cannot edit the other site. Fix it on your side, with a 301 redirect to the right page or by restoring the page.
A one-page checker does not see backlinks. For SEO work, use it to confirm a page’s own links before search engines follow them.
Frequently asked questions
Can I check broken links free without signing up?
Yes. Some online checkers need no account, though many do. Search Console needs a Google account and a verified site. LinkScan needs no account, only a free install.
Are free broken link checkers accurate?
Mostly, but a working link can show as broken when a site blocks, slows or limits automatic requests. Trust 404 and 410, and open the other failures in your browser before you change them.
How often should I check my website for broken links?
Match it to how often you publish: the whole site on a regular schedule, and each new or edited page before it goes live. Links to other sites break without warning, so even a quiet site needs a check now and then.
Is there an online broken link checker that needs no install?
Yes, such as the W3C Link Checker. LinkScan is not an online tool. It runs in your browser after a free install and checks the page you have open.
Will a link checker slow down my site?
A large crawl adds some load to your server while it runs. A browser extension requests only the links on one page, and LinkScan sends at most two requests a second.
Should I fix a broken link by redirecting it?
Only when the broken URL is on your own site and the page moved. Then a 301 redirect sends visitors and search engines to the new URL. If a page on another site moved, update your link instead.