403 Forbidden

Client Error - Access denied

403 Forbidden

What It Means

HTTP 403 Forbidden means the server understood the request and knows who you are, but refuses to authorize it. You simply don't have permission to access this resource. Unlike a 401 Unauthorized, sending valid credentials for the same account won't fix a 403 — the problem is permissions or policy, not identity.

HTTP/1.1 403 Forbidden
Content-Type: application/json

{"error": "forbidden", "message": "You do not have access to this resource"}

Common Causes

  • Insufficient permissions: Your account or API key lacks the required role or scope
  • IP restrictions: An allowlist or blocklist is rejecting your address
  • WAF / bot protection: Cloudflare or similar blocked the request as suspicious
  • File permissions: Server-side chmod denies read access
  • Directory listing disabled: No index file and listing turned off
  • Expired signed URL: A pre-signed S3/CDN link is past its expiry
  • Hotlink / geo restrictions: Referrer or region blocked by policy

How to Fix It

Server file permissions

# Files should be readable (644), directories traversable (755)
chmod 644 /var/www/html/index.html
chmod 755 /var/www/html

# Check ownership matches the web server user
chown -R www-data:www-data /var/www/html

# Nginx: confirm an index file is configured
index index.html index.htm;

Permissions, WAF, and access rules

  • Confirm the account/API key has the required role or scope
  • Check IP allowlists and WAF/bot rules for false positives
  • Verify signed URLs haven't expired and signatures match
  • Review referrer (hotlink) and geographic restrictions
  • For static hosting, ensure an index file exists or enable directory listing

403 vs 401

  • 401 Unauthorized: Not authenticated — the server doesn't know who you are. Valid credentials may fix it.
  • 403 Forbidden: Authenticated (or identity isn't the issue) but not allowed. Different credentials for the same account won't help.

Shorthand: 401 = who are you?   403 = you can't do that.

How to Monitor for 403 Errors

A sudden 403 often means a permissions change, a new WAF rule, an expired signed URL, or an IP allowlist mistake locked out legitimate traffic. UptimeSignal checks your endpoints on a schedule and flags non-2xx responses including 403, so you catch the misconfiguration before users report being denied. Combine it with 401 and 429 checks for full coverage of access-related failures.

Frequently Asked Questions

What does HTTP 403 mean?
403 Forbidden means the server understood the request and knows who you are, but refuses to authorize it — you don't have permission. Unlike 401, providing valid credentials for the same account won't help, because the issue is permissions or policy, not identity.
What causes a 403 error?
Insufficient permissions or missing scopes, IP allowlist/blocklist rules, WAF or bot protection, disabled directory listing, wrong server file permissions (chmod), an expired signed URL, hotlink protection, or geographic restrictions.
What is the difference between 403 and 401?
401 Unauthorized means you're not authenticated — valid credentials may fix it. 403 Forbidden means you're authenticated but not allowed; different credentials for the same account won't help. 401 = who are you, 403 = you can't do that.
How do I fix a 403 error?
Check your account/API key has the right permissions or scopes, verify server file permissions (644 for files, 755 for directories) and ownership, review IP allowlists and WAF rules, confirm signed URLs haven't expired, and ensure an index file exists or directory listing is enabled for static hosting.
Why am I getting 403 from Cloudflare?
Cloudflare returns 403 when a WAF rule, firewall rule, bot management, or IP access rule blocks the request. Check the Cloudflare Security Events log to see which rule triggered, then adjust the rule or allowlist the legitimate source. Automated clients and scrapers are common false positives.

Catch access lockouts before your users do

UptimeSignal detects 403 and other error responses within minutes and alerts you instantly.

Monitor all your endpoints. 25 monitors free, unlimited for $10/month.

Related Errors & Resources