Error fix
How to fix “403 Forbidden”
The server refuses to fulfill the request—permissions, IP rules, or policy blocked access.
Updated Apr 20, 2026
Tools that help with this
Fastest fix
Start here first. Step 1 fixes most cases—then work down the list.
- Verify cookies/tokens and that the user has the right role for the URL.
- Review WAF/geo/IP allowlists and recent rule changes.
- Check file permissions on static hosts (bucket policies, nginx deny).
Why this works
These steps work because it clears stale cached state that can cause the same request to fail repeatedly.
What this means
Unlike 401 (not authenticated), 403 usually means the server knows who you are—or allows anonymous—but will not authorize this resource.
Common causes
ACLs and roles
Missing role, wrong tenant, or object-level permissions in the app.
Edge rules
WAF, geo block, hotlink protection, or bot scoring.
Step-by-step fix
Confirm identity and policy
- Verify cookies/tokens and that the user has the right role for the URL.
- Review WAF/geo/IP allowlists and recent rule changes.
- Check file permissions on static hosts (bucket policies, nginx deny).
Related
Also see: 403 — browse the HTTP status hub.
FAQ
- 403 vs 401?
- 401 signals authentication required or failed; 403 signals authenticated or anonymous access is denied by policy.
- 403 on static files?
- Often directory listing off, wrong chmod, or S3 bucket policy blocking public reads.
- 403 only in production?
- Compare env-based feature flags, IP allowlists, and CORS vs CSRF settings.
Fix related issues
Still stuck? Try these related fixes next.
- Kubernetes CrashLoopBackOffThe container exits repeatedly—check logs, probes, and resource limits.
- Heroku H10 — app crashedThe web process exited; Heroku serves an error page. Logs show the real exception.
- Netlify — page not foundThe deploy exists but no asset matches the path—often SPA routing or a missing file in publish dir.
- Vercel — deployment not foundThe deployment URL or project alias does not exist or was removed.
- Cloudflare 525 — SSL handshake failedCloudflare could not complete TLS with your origin—cert mismatch, wrong port, or TLS version.
Edit your error
Tweak the message and run again—we'll match an existing fix or generate a new page.
Original error message
403 Forbidden
