| 开发者 |
onsitetools
freemius |
|---|---|
| 更新时间 | 2026年10月23日 01:39 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
999), Amazon (429, 503), X (403) or a site behind a bot firewall are kept out of your list of broken links: refusals go to their own tab, "Unverifiable", and server errors wait under "Warnings" to be checked again. And the checking runs in small background batches, so it does not slow down your site.
It knows the difference between "broken" and "I could not check it"
This distinction is the whole reason this plugin exists.
Plenty of servers refuse automated requests. Amazon answers 503 to bots. X answers 403. LinkedIn answers 999. A site behind a firewall throws a challenge page. None of those links are broken — they open perfectly well in your browser. Report them as broken and you hand the user a list of two hundred problems, of which one hundred and ninety are not problems, and they stop trusting the list.
So Onsite Link Verdict only ever calls a link broken when it has proof:
404 or 410. And even then we ask a second time, with a different method, before accusing the link: there are servers that answer 404 to one kind of request and 200 to another, and a wrong accusation here is the most expensive kind.403, 503, a rate limit, a challenge page, anything that is not 404 or 410 — it answered, and that is not proof the page died. Your list of real problems stays short, and short means believable.
It speaks your language
The plugin ships translated into Portuguese (Portugal), Portuguese (Brazil), Spanish, French, German, Italian and Dutch, as well as English. That includes the explanations, not just the buttons — which is the point: 403 reads the same in every language, and "the server is refusing automated checks, it is not saying the page is gone" does not.
If your language is missing, the translation template in /languages is generated from the current version and covers every text in the plugin.
It runs on your own server, and stays out of the way
There is no account to create, no cloud service and no credit card. Your posts, pages and comments are not uploaded anywhere — see "External services" below for everything that does leave your site, and why.
Checking links is real work for the same server that answers your readers. Onsite Link Verdict is built around that:
HEAD requests first, falling back to GET only when a verdict depends on it. At most 2 KB of any response body is ever read.404 — and instead of telling you the page no longer exists, Onsite Link Verdict tells you it exists and is not published, and which status it is inAlmost always, the link is fine. Many servers answer an automated request differently from a person with a browser: they refuse it with 403, slow it down with 429, answer 503, or show a challenge page. None of those mean the page is gone.
Onsite Link Verdict only reports a link as broken when the server says the page is gone (404 or 410, confirmed with a GET request) or when nothing answers at all, three checks in a row. Every other answer stays out of "Broken": refusals (403, 429, 999, challenge pages) go to "Unverifiable", and server errors wait under "Warnings" and are checked again. Each one comes with a note saying what happened.
999 is the code LinkedIn uses to refuse automated requests. Amazon answers 503 or 429 to them. The pages are there; the server just does not talk to robots. Onsite Link Verdict never reports them as broken: 999 and 429 go straight to "Unverifiable"; a 503 is checked again first, and after three answers like it the link goes to "Unverifiable" too. Once there, it is not asked again the next day.
It lives under Tools → Onsite Link Verdict. Press the button to scan the whole site. Finding the links is quick; checking each one happens in the background, in small batches, so the lists fill up over the first minutes or hours depending on the size of your site. The panel shows how far it got ("750 of 1,000 links checked") and an estimate of the time left. If nothing moves at all, your site's cron is probably disabled, and the plugin shows a warning about it at the top of the page.
Yes: links and images in posts, pages, custom post types and comments, internal and external, including redirect chains. Once the first sweep is done it keeps checking, so a link that dies next month shows up next month.
Yes. On a page built with a page builder the links are not in the stored post content; they are assembled when the page is rendered. Onsite Link Verdict renders the page first and reads what a visitor sees, so those links are found.
Yes. And when a link points at one of your own pages that still exists but is a draft, private or pending, it tells you exactly that, instead of saying the page is gone.
Yes. The checking runs inside your own WordPress, so a site that cannot be reached from the public internet is checked like any other.
Finding and checking is free, with no account and no credits, and the number of links does not change anything. The only limit: a single post or comment with more than 1,000 links is checked to its first 1,000. The paid add-on (below) is for fixing many links at once.
Yes, with two free tools on our site, no account needed: https://onsitetools.dev/check-a-link/ checks one link the way a robot and a browser see it, side by side, and https://onsitetools.dev/scan/ checks up to 40 public pages of any site.
No. Your posts, pages and comments stay where they are, and the results are stored in your own database. There is no cloud service behind the plugin holding your content. See "External services" below for everything that does go out, and why.
It reads your posts, pages and comments and stores the links it finds in a table in your own database. Your content is not uploaded, and there is no cloud service behind it. Two destinations are contacted, and both are set out in full under "External services" above: the servers that host the links being checked, and Freemius, which runs our licensing and checkout. The Freemius contact starts with an opt-in screen you can decline. What that means for your own processing records is for you to decide — this is a description of the plugin, not legal advice.
It is built not to. No checking happens while a visitor is waiting for a page: it runs on your site's cron, in batches, and no new check starts after 45 seconds in a run, whatever the speed setting. The same address repeated across fifty posts is checked once per run, not fifty times. On shared hosting, pick the "Careful" speed.
No. It finds them and tells you exactly where each one is; you change the link in the post editor, where you can see it in context. Replacing a URL across the whole site in one step — with a preview of every change before it happens, and an undo — is what the paid add-on does.
Because the server answered us with something that is not 404 or 410. Some servers refuse automated requests — Amazon, X, LinkedIn and anything behind a bot firewall all do. The link is probably fine; open it in your browser to confirm.
They are kept separate on purpose. A refusal is not a death: the page is there, and a reader with a browser reaches it. Nor is it something you can fix from your own site, since what a distant server does with an automated request is not yours to configure.
Because it deliberately works in small bites in the background. How long depends on how many links you have and which speed you picked: the panel shows the estimate for your own site next to each setting, under Tools → Onsite Link Verdict. If it is slower than you want, change the setting to Fast — but read what it says there first. Checking faster means hammering the sites you link to harder, and more of them will start refusing the checks, which puts those links in "Couldn't verify" instead of giving you a real answer.
They leave the list as each post is checked again, not all at once. A rule takes effect the next time Onsite Link Verdict scans the post, page or comment a link sits in — so on a small site they disappear quickly, and on a site with hundreds of posts a full sweep takes several background runs. Nothing is stuck; the list is catching up. If you want a rule to take effect on one specific post right away, open that post and save it. That schedules a fresh scan of it. (Exclusion rules are part of Pro.)
Yes, on WordPress 6.9 or later. The plugin registers three abilities with the WordPress Abilities API: onsite-link-verdict/get-summary (how many links are broken, unverifiable, good or waiting), onsite-link-verdict/get-links (the links in one group, with the explanation of each result and the post it appears in) and onsite-link-verdict/start-scan (the same as the "Start scan" button). An assistant connected through the MCP Adapter plugin can then answer "are there broken links on this site?" without you opening the panel. They need an administrator account, they never edit your content, and starting a scan only queues it: the checking still runs in small background batches.
Your site's cron is probably disabled. Onsite Link Verdict shows a warning at the top of its page when it detects this. Ask your host how to set up a real cron job.
the_content and need to know which post they are drawing, which they ask the global $post. Onsite Link Verdict was not setting it up, so on a page built with Elementor — where the post content itself is empty — the scan found nothing and reported a clean bill of health. A false all-clear is worse than a false positive: with a false positive you lose time, with this you lose the page and never know. Verified against a real Elementor install.HEAD request alone. Some servers answer 404 to HEAD and 200 to GET — zazzle.com does exactly this — and a 404 is the one verdict Onsite Link Verdict gives immediately, with no second chance. Every 404 and 410 is now confirmed with a GET before the link is accused. Healthy links still cost a single request.404, 410 and a total absence of response now count as proof. This fixes the case where a site that persistently answers 503 to bots — Amazon does exactly this — was reported as a broken link after three checks.CF-Mitigated, CF-Chl-Bypass, X-DataDome, Retry-After) and go straight to Unverifiable, whatever status code they carry.