Glossary
HTTP 403 Forbidden
HTTP 403 Forbidden means the server understood the request, knows who is asking, and refuses to serve it anyway. Unlike 401, it is not an invitation to authenticate: repeating the request with credentials will not usually change the answer. On a public website a 403 returned to an automated client is more often a bot filter, a firewall rule or a geographic restriction than a genuinely protected resource, which is why it has to be interpreted rather than counted as a broken link.
403 and 401 are not the same refusal
`401 Unauthorized` means the request lacked valid credentials and the server will accept some. It must be accompanied by a `WWW-Authenticate` header naming the scheme, which is the client's instruction on how to retry.
`403 Forbidden` means the server is refusing regardless. It may know exactly who is asking and still say no, and there is no header telling the client how to succeed.
The practical difference: a 401 is a door with a lock, a 403 is a wall. A client that receives 401 has something to do next; a client that receives 403 does not.
Servers frequently return 403 where 404 would be more discreet, deliberately: answering 404 for a resource that exists but is not yours avoids confirming that it exists at all.
Why an automated check sees 403 so often
Bot management. A CDN or a web application firewall classifies the request as automated and refuses it, usually on the basis of the user agent string, the TLS fingerprint, or the absence of browser-like headers.
Rate limiting that returns 403 instead of 429. The refusal is temporary, but the code does not say so, and a second attempt a minute later frequently succeeds.
Geographic and network restrictions: content licensed by region, or an origin that only accepts traffic from its own CDN.
Hotlink protection on images, which refuses requests whose `Referer` does not belong to the site.
Directory rules: many servers answer 403 rather than 404 for a directory with no index file and listing disabled, which is a configuration default rather than a decision.
When it is a real problem
A page linked from your own navigation that returns 403 to ordinary visitors is broken, and it is worth confirming in a browser before treating it as a crawler artefact.
A CSS or JavaScript file returning 403 breaks the page for everyone. Subresources are requested with the same headers as the document, so a bot filter rarely explains it.
A 403 on a URL you expect search engines to index is a real indexing failure: a crawler that cannot fetch a page cannot index it, and repeated 403s lead to the URL being dropped.
A 403 on `/robots.txt` is worse than a missing file. Crawlers treat a persistently unreachable robots.txt as a reason to slow or stop crawling the whole host.
How to tell the two apart
Open the URL in a normal browser session. If it loads, the refusal is aimed at automated clients and the page itself is fine.
Compare `curl -I https://example.com/path` against the same request with a browser user agent string. A different answer identifies the filter directly.
Check whether the pattern is per-URL or per-host. Scattered 403s across unrelated destinations point at your own outbound traffic being filtered; 403s concentrated on one host point at that host.
In Search Console, look at whether Googlebot is also refused. A 403 that affects only third-party checkers and not search engines is a reporting artefact; one that affects Googlebot is an indexing problem.
Frequently asked questions
- Does a 403 on an external link mean the link is broken?
- Usually not. It most often means the destination refused an automated request. Confirm in a browser before changing or removing the link.
- Should a protected page return 403 or 404?
- Either is defensible. 403 states the refusal plainly; 404 avoids confirming that the resource exists, which is preferable when the existence itself is sensitive.
- Can a 403 hurt search visibility?
- Yes, if search engine crawlers receive it. A page a crawler cannot fetch cannot be indexed, and repeated refusals lead to the URL being dropped from the index.
Sources
Related
VeriFixScan crawls a site and applies its checks to every page it reaches, keeping the evidence behind each finding. Scanning one website is free.
Scan a website