What one run covers
The checker loads your starting page, collects every link on it, and tests each one. It then opens other pages on the same site that it found along the way and does the same, until it has read 10 pages or tested 80 different link targets, whichever comes first. Internal and external links share the 80.
How each link is tested
- Only links written as an a element with an http or https address count. Images, scripts, stylesheets, iframes, mailto: and tel: links are not checked.
- Each target is tested once, even if 30 pages link to it. The Source column shows the first page where it was found.
- A #section at the end of a link is dropped, so a jump link is tested as the page it belongs to.
- The checker sends a HEAD request first and waits up to 7 seconds. If the server answers 403 or 405, which some servers do for HEAD only, it retries with a GET and stops as soon as the status code arrives, so the size of the page never matters.
- Redirects are followed, up to four. The status shown is where the link finally lands, so a link that redirects to a working page shows 200.
- Anything below 400 is fine. A status of 400 or above, or no answer at all, makes the row red and counts as broken.
- Links added by JavaScript after the page loads are not seen, because the checker reads the HTML the server sends.
Choosing the starting URL
Links are tested in the order they appear in the page source, which on most WordPress themes means the header menu first, then the content, then the sidebar and footer. On a homepage with a large mega menu, much of the 80-link budget can go on navigation before the checker reaches a single post.
So pick the start to match the question. To check a post’s outbound links, start on that post. To check the menus and footer, start on the homepage once; those links are the same on every page, so one pass covers them. To check a section, start on its category or hub page, since the pages it visits next are the ones linked earliest from there.
The crawl stays on the origin the starting URL lands on. If you type example.com and the site redirects to https://www.example.com, it crawls https://www.example.com. Links to any other host or protocol, such as an old http:// link on an https site, are tested but not crawled.
Pages crawled counts only pages that loaded. A link that appears in the menu, the content and the footer takes one place in the queue, and a page that fails to load or answers with an error is skipped, with a warning, so the next page in the queue takes its place. To keep the free check fast, it stops after 15 page requests, so a section full of dead pages can still end under 10. If the start page itself cannot be loaded, or is larger than about 900 KB, you get an error message instead of a report. If it loads but answers with an error status, its links are still tested and a warning gives the status.
Reading the report
Pages crawled, Links checked and Broken links are counts. Warnings tells you when a cap cut the run short: Link checks were capped at 80 links, or The crawl was capped at 10 pages. Either one means there are links this run did not test, so start again from a different page to cover more. A warning that some pages could not be loaded means the links on those pages were not tested; the pages themselves are in the table as broken targets.
The table lists every link tested, not only the broken ones, in the order they were checked. Broken targets are in red. Status is the HTTP code, or the error message when there was no code to show. Target is the link’s destination and Source is the page where it was found.
The report does not show the anchor text. To find a link on the source page, open that page, view its source and search for the target address. In the WordPress block editor, Options → Code editor shows the post’s markup, and your browser’s find will jump to the link.
What each status means
Red does not always mean broken for your visitors. Some sites refuse automated requests while serving people normally. Open any doubtful link in a browser before you edit anything.
| Status shown | What it usually means | Likely real? |
|---|---|---|
| 404 or 410 | The page is gone or was moved without a redirect | Yes |
| 401 | The target needs a login, such as a members area or a client portal | For public visitors, yes; it may be intended |
| 403 | Bot protection or a firewall refused the request, even after the GET retry | Often not; check in a browser |
| 429 | The site rate-limited the checker | Rarely |
| 999 | A non-standard code LinkedIn and a few other sites send to automated requests | Rarely |
| 500 to 504 | The target server failed or was overloaded | Sometimes; run the check again later |
| The domain could not be found. Check the address for typos. | A typo in the link, or a domain that has expired | Yes |
| The website took too long to respond. | No answer within 7 seconds | Sometimes |
| The website’s HTTPS certificate or secure connection could not be verified. | An expired or misconfigured certificate; browsers warn visitors too | Yes, for most visitors |
| Too many redirects. | More than four redirects before a page answered | Possibly; trace it in the Redirect Checker |
| Private or local network URLs are not supported. | The link points at localhost, an intranet or a private IP, often a leftover from staging | Yes, for public visitors |
Worked example: one old post, five red rows
Illustrative values. A gardening blog checked a 2024 post that still gets search traffic. The run reported 10 pages crawled, 80 links checked and 5 broken links, plus the warning that link checks were capped at 80.
Internal page renamed
Before: 404 · https://www.example.com/seed-starting-guide/
After: Link updated to https://www.example.com/start-seeds-indoors/
The guide was a page, not a post, so WordPress did not redirect the old slug. The link in the post was updated, and a 301 from the old address was added for links elsewhere.
External page removed
Before: 404 · https://supplier.example.org/products/tomato-cage
After: Link updated to the supplier’s current product page
Found by searching the supplier’s site. When nothing equivalent exists, remove the link or cite another source.
Domain gone
Before: The domain could not be found. Check the address for typos. · https://old-garden-forum.example/
After: Link removed
An expired domain can be registered by anyone later, so a link to it can end up pointing at something you would never endorse. Remove these promptly.
Bot protection, not a broken link
403 · https://www.big-retailer.example/item/48213
Opened normally in a browser. Left as it is.
Social profile, not a broken link
999 · https://www.linkedin.com/in/example-author
LinkedIn answers automated requests with 999. Left as it is.
Three real problems and two false alarms. The 80-link cap also meant the footer of later pages was never reached, so a second run from the homepage covered the site-wide links.
What to fix first
Google has said for years that 404s on their own do not hurt how the rest of a site ranks. The cost of a broken link falls on readers who hit a dead end, and on links you control that no longer pass anyone anywhere. Work in this order:
- 1.Internal links in menus, headers and footers, because they break on every page at once.
- 2.Internal links in posts and pages that get traffic. Point them at the current URL rather than relying on a redirect.
- 3.External links to dead domains, for the reason in the worked example.
- 4.External links that return 404 or 410 in posts people still read: replace the source or remove the link.
- 5.Everything ambiguous, such as 403, 429, 999 and timeouts: open each in a browser and act only on the ones that fail there too.
A link that redirects is not reported, because it still works. If you want internal links to point straight at final URLs, check them separately in the Redirect Checker, or look at the internal link structure with the Internal Link Checker.
Where a broken link hides in WordPress
The Source column tells you the page, not the part of WordPress that printed the link. A link that appears on every crawled page is in a menu, a widget or a template; one that appears on a single page is in that page’s content.
- Post and page content: edit the post, find the link with Options → Code editor, and change it in the visual editor or the code view.
- Menus: Appearance → Menus on classic themes, Appearance → Editor → Navigation on block themes. Custom links are typed by hand and break when the page they point to is renamed.
- Widgets: Appearance → Widgets on classic themes, often a sidebar text or HTML widget.
- Headers, footers and synced patterns on block themes: Appearance → Editor → Patterns, including the template parts, or Templates for a specific layout.
- Page builders: links inside builder layouts are edited in the builder itself and may not show in the block editor at all.
- Author bios: Users → Profile, the Website and Biographical Info fields.
- Comments: a commenter’s website link, which you can edit or remove from the Comments screen.
- Theme options: Appearance → Customize, for themes that keep social or footer links there.
When the same old address appears in dozens of posts, such as after a domain change, a search-and-replace beats editing by hand. The Better Search Replace plugin and WP-CLI’s wp search-replace command both offer a dry run that shows what would change; run it first, back up the database, and leave the guid column alone. Purge the page cache afterwards, or the checker will keep reading the old HTML.
Broken links that point at your site
This checker finds broken links on your pages. The opposite problem, other sites and old bookmarks linking to URLs you deleted, does not show up in any crawl of your own site.
Search Console lists those under Indexing → Pages → Not found (404). Inspecting one of those URLs shows, under Discovery, a referring page where Google found it, when one is known. On WordPress, a 404 log narrows it further: Tools → Redirection → 404s in the Redirection plugin, the 404 Monitor module in Rank Math, and 404 monitoring in SEOPress PRO.
Redirect the URLs that still get visits or have links from other sites to the closest live page with a 301. Leave the rest as 404s: a deleted page that nothing points to does not need a redirect, and redirecting everything to the homepage does more harm than good.
On a WordPress site connected to RankHive, the redirect side of this can come as drafts from its weekly Search Console review; each one waits for your approval, and its plugin serves the ones you accept.
Confirming the fix
Clear the page and CDN caches first, then repeat the run from the same starting URL so the same pages and links are tested. Rows you fixed should now be gone from the red list, and the Broken links count should only include the ones you decided to leave.
For an internal URL you redirected, run the old address through the Redirect Checker as well, so you know it lands on the new page in one hop. For URLs listed in Search Console’s Not found (404) report, use Validate fix only once every example URL either works or is meant to stay gone. Pages you deleted on purpose can stay listed there; Google rechecks them less and less often.
On a site that changes often, run the same three checks every few months: the homepage, the busiest post and the newest post.
When a red row can wait
Not every red row deserves an edit today. Bot blocks (403, 429 and 999) that open fine in a browser and a single 5xx that clears on a second run can be ignored. So can a 401 on a link meant for logged-in members.
Old comments with dead commenter websites, and posts that no one reads and that you plan to merge or retire, sit at the bottom of the list. If a post is about to be retired, redirect or delete the post rather than repairing its links.
The checker tests every link, including ones marked nofollow or sponsored, because a dead link frustrates a reader whatever its rel value. Those attributes change nothing about how urgent the fix is.
FAQ about the Broken Links
How deep does this checker crawl?
Up to 10 pages on the same site as the page the starting URL lands on, and up to 80 unique links across them, internal and external together. It is a spot check of one area of the site, so choose the starting page with care and run it again from other pages to cover more.
Why check external links?
Because they break without warning when other sites reorganize, and readers blame your page for the dead end. A link to an expired domain is the worst case: whoever registers it next decides what your readers land on.
Why is a link marked broken when it opens fine in my browser?
Many sites block automated requests. A 403, 429 or LinkedIn’s 999 usually means the site refused the checker, not that the page is gone. Timeouts are also often false alarms. Act on a row only if the page fails in a browser too.
Does it check images, scripts and stylesheets?
No. It tests links in a elements only. A missing image or script shows up in your browser’s developer tools on the Network tab, and Search Console’s URL Inspection lists page resources that could not be loaded.
Do broken links hurt my rankings?
Not directly, according to Google; a 404 is a normal part of the web. They do hurt readers, and broken internal links waste the paths Google uses to find and understand your pages. Fix the ones in navigation and in posts that get traffic first.
Should I fix the link or add a redirect?
For links on your own site, fix the link so it points at the current URL. Add a 301 as well when the old URL may be linked from other sites, bookmarked or shared, so those visitors still arrive.
Why does a redirected link show as OK?
The checker follows up to four redirects and reports where the link ends. A link that lands on a working page is not broken. If you want to see the chain, run the link through the Redirect Checker.
Why did it only crawl one page?
Usually because the start page’s menu and links are built by JavaScript, so the HTML the server sends has no internal links to follow. It also happens when the internal links use another host or protocol than the page the starting URL lands on, such as http:// links on an https site, and when every linked page failed to load, which the warnings tell you.