Your link checker says 403. Most of those links aren’t broken.

A 403, 429 or 999 from a link checker usually means “this site blocks bots”, not “this page is gone”. Here’s how to tell the difference — and what to actually fix.

What the codes mean

CodeWhat the site saidBroken?
404 Not Found · 410 GoneThe page doesn’t exist.Yes — fix or remove the link.
5xx Server errorThe site is failing. Sometimes temporary.Usually — check again later.
403 Forbidden“I won’t answer you.” Often bot protection (Cloudflare, large shops, news sites).Usually not — open it in a browser.
429 Too Many Requests“Slow down.” The checker asked too fast.No — wait and retry.
999LinkedIn’s answer to automated requests.No — it’s LinkedIn blocking robots.
401 UnauthorizedThe page needs a login.No — unless your visitors can’t log in either.

Why checkers get it wrong

Many sites respond differently to a browser than to an automated request. A checker that sends one quick request and reports whatever comes back will list working links as broken. Three common causes:

  • Bot protection. Cloudflare, Akamai and similar services return 403 to requests that don’t look like a person.
  • HEAD requests. Checkers often ask only for headers. Some servers answer that with 403, 404 or 405, while a normal page load works.
  • Too many requests at once. Checking 200 links on one site in a second triggers 429 or temporary 503s.

Tell blocked from broken in 10 seconds

  1. Open the link in a normal browser tab. If the page loads, the link works.
  2. If it’s a 404 page — “not found”, “doesn’t exist” — it’s broken.
  3. A 999 almost always comes from LinkedIn. Open it once to be sure.

Or let the checker do it

Linkcrisp confirms suspicious answers with a full page request, waits and retries when a site says “slow down”, and puts links to sites that block automated checks into a separate “Couldn’t verify” list. Your broken list stays short.

Add Linkcrisp to Chrome — free

Try it on the sample page: 3 broken links, 2 blocked, 2 redirects.