403 Forbidden
The server understood your request perfectly and refused it. Unlike most errors, this one is usually a decision - And often a decision about the network you are coming from rather than about you.
The server understood your request perfectly and refused it. Unlike most errors, this one is usually a decision - And often a decision about the network you are coming from rather than about you.
A 403 is the server saying no on purpose. It received your request, it understood it, it knows what you are asking for, and it has decided you do not get it. There is no ambiguity about whether the server is working - It is, and it is refusing.
What makes 403 confusing for visitors is that the refusal is frequently not about you as a person. It is about the address you are connecting from, the software you appear to be running, or a rule that was never meant to catch you.
The most common cause on large consumer sites by a wide margin. Bot management systems score every request on dozens of signals - User agent, TLS fingerprint, header ordering, request rate, address reputation - And refuse anything that scores badly. They are tuned aggressively because scraping is a real cost.
False positives are routine. An unusual browser, an aggressive privacy extension, a text-mode browser, or simply an address that another customer of your ISP has abused will all do it. This is the category most 403s a normal person encounters fall into.
Closely related and worth separating. Addresses get blocked in ranges, and you inherit the reputation of whoever shares yours.
Disconnecting a VPN and retrying is the single most productive test for a visitor facing a 403.
The textbook meaning. You are signed in, the server knows who you are, and your account does not have access. Note the distinction from 401 Unauthorized, which actually means "not authenticated" - A confusing piece of naming that has survived since the beginning. 401 means log in; 403 means logging in will not help.
Requesting a directory with no index file on a server configured not to list contents. Harmless and usually accidental.
Different problem, and it is an outage. When every page of a site returns 403 the usual causes are file permissions - The web server process cannot read the files it is meant to serve - Or a misconfigured access rule applied at the wrong level.
On Apache, a stray Require all denied or a botched .htaccess does this to everything beneath it. After a deploy that changes file ownership, a site-wide 403 is one of the most common failure modes on traditional hosting.
Both are refusals and the line between them is blurred in practice. A 429 should mean "you are going too fast, slow down and try again". A 403 means "no". Many services return 403 for rate limiting anyway, which is unhelpful because it removes the signal that waiting might work.
If you get a 403 immediately after making a number of requests quickly, treat it as a rate limit regardless of the number: Wait several minutes before retrying.
If none of that works and other people can reach the page, your address is almost certainly on a list. Most sites have no self-service way to get off one, and contacting support is the only route.
Check whether the 403 comes from your application, your web server, or a CDN in front of both - They look identical to a visitor and have completely different causes. A Cloudflare-served 403 carries a ray ID and means Cloudflare refused the request before your server saw it, usually a firewall rule or bot score.
For file permissions, confirm the web server user can read the document root and traverse every directory above it. For access rules, check inheritance: A rule applied at the server level overrides what you think you configured per-directory.
And be careful about over-blocking. Aggressive bot rules refuse real users, and those users get no explanation and no route to appeal. If you must block, an explanatory page with a contact route costs very little and prevents the class of complaint that starts with "your site is broken".
Most often the address you are connecting from. VPN exit nodes, datacentre ranges and shared mobile addresses are widely blocked, and you inherit the reputation of everyone else using the same address. Disconnecting a VPN and retrying is the single most useful test.
401 Unauthorized actually means you are not authenticated - Signing in should fix it. 403 Forbidden means the server knows who you are and you still do not have access, so signing in will not help. The naming has been confusing since the beginning.
Frequently. VPN exit addresses carry mixed traffic from many users and are blocked by a lot of banks, retailers and streaming services. Turning the VPN off for one request is the fastest way to confirm it.
That is different from a single forbidden page and is usually a file permission problem - The web server process cannot read the files it is meant to serve - Or an access rule applied at too high a level. It is a real outage that happens to use a client-error code.
What a 404 Not Found error means, why it is a sign of a healthy server, and the cases where a 404 really does indicate something broken.
What a 429 error means, the difference between rate limits and quotas, and how to handle one properly as a user or a developer.
Why VPNs cause 403 errors, captcha loops, slow connections and half-loading pages - And how to identify which of those you have.
What a 500 Internal Server Error actually means, why it is always the server's fault, and the handful of cases where a visitor can work around it.