⚡ 100% In-Browser & Private: Your data never leaves your computer. Powered by Cloudflare Edge CDN.
ProWebTools v2.0
Free Online Developer Utilities
Web Protocols & Diagnostics

Complete HTTP Status Codes Directory

The definitive reference for all HTTP response status codes: meanings, troubleshooting steps, and ready-to-paste Apache & Nginx server fixes.

100

Continue

1xx Informational RFC 9110, 15.2.1

Description: The server has received the request headers and the client should proceed to send the request body.

Common Root Cause: Occurs when a client sends an `Expect: 100-continue` header before sending large payloads.

Apache (.htaccess / vhost)
# Usually handled automatically by Apache for POST/PUT requests
Nginx (nginx.conf)
client_body_buffer_size 128k;
client_max_body_size 50m;
101

Switching Protocols

1xx Informational RFC 9110, 15.2.2

Description: The requester has asked the server to switch protocols and the server has agreed to do so (e.g. Upgrade to WebSockets).

Common Root Cause: WebSocket handshake initiation (`Upgrade: websocket`).

Apache (.htaccess / vhost)
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://127.0.0.1:3000/$1" [P,L]
Nginx (nginx.conf)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
200

OK

2xx Success RFC 9110, 15.3.1

Description: Standard response for successful HTTP requests. The payload depends on the request method used.

Common Root Cause: The requested resource was located, executed, and returned without errors.

Apache (.htaccess / vhost)
# Response 200 is default when resources exist
Nginx (nginx.conf)
# Default success response code
201

Created

2xx Success RFC 9110, 15.3.2

Description: The request has been fulfilled, resulting in the creation of a new resource.

Common Root Cause: Returned by REST APIs after successful `POST` operations that create records.

Apache (.htaccess / vhost)
# Send header from application: header("HTTP/1.1 201 Created");
Nginx (nginx.conf)
# Handled by backend application logic
204

No Content

2xx Success RFC 9110, 15.3.5

Description: The server successfully processed the request and is not returning any content (useful for DELETE/OPTIONS).

Common Root Cause: Successful update/delete where the client does not need to navigate away from the current page.

Apache (.htaccess / vhost)
# Handled by API route logic
Nginx (nginx.conf)
# Return 204 for CORS preflight options:
if ($request_method = "OPTIONS") { return 204; }
301

Moved Permanently

3xx Redirection RFC 9110, 15.4.2

Description: The requested resource has been assigned a new permanent URI. Search engines pass 90-99% link equity.

Common Root Cause: Domain migrations, HTTPS enforcement, non-www to www consolidation, or URL restructurings.

Apache (.htaccess / vhost)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nginx (nginx.conf)
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}
302

Found (Temporary Redirect)

3xx Redirection RFC 9110, 15.4.3

Description: The requested resource resides temporarily under a different URI. Search engines retain the original URL.

Common Root Cause: Short-term maintenance, geo-targeting redirection, or A/B testing variations.

Apache (.htaccess / vhost)
Redirect 302 /old-page /temporary-promo
Nginx (nginx.conf)
rewrite ^/sale$ /black-friday-deals redirect;
304

Not Modified

3xx Redirection RFC 9110, 15.4.5

Description: Indicates that the resource has not been modified since the version specified by the request headers (ETag / If-Modified-Since).

Common Root Cause: Browser cache revalidation matches the server version; saves bandwidth by transmitting zero body payload.

Apache (.htaccess / vhost)
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 month"
</IfModule>
Nginx (nginx.conf)
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}
307

Temporary Redirect (Method Preserved)

3xx Redirection RFC 9110, 15.4.8

Description: The request should be repeated with another URI, but future requests should still use the original URI without changing the HTTP method (POST remains POST).

Common Root Cause: Modern replacement for 302 to guarantee the HTTP method and request body are preserved.

Apache (.htaccess / vhost)
Redirect 307 /api/v1/checkout /api/v2/checkout
Nginx (nginx.conf)
return 307 https://secure.example.com$request_uri;
308

Permanent Redirect (Method Preserved)

3xx Redirection RFC 9110, 15.4.9

Description: The target resource has been assigned a new permanent URI and any future references MUST use that URI while preserving the request method.

Common Root Cause: Permanent API migration where POST/PUT bodies must not be converted into GET requests.

Apache (.htaccess / vhost)
Redirect 308 /api/legacy /api/v3
Nginx (nginx.conf)
return 308 https://api.example.com$request_uri;
400

Bad Request

4xx Client Error RFC 9110, 15.5.1

Description: The server cannot or will not process the request due to an apparent client error (e.g. malformed syntax, invalid framing).

Common Root Cause: Malformed JSON payload, invalid request parameters, expired cookies, or missing mandatory headers.

Apache (.htaccess / vhost)
LimitRequestFieldSize 16384
LimitRequestBody 10485760
Nginx (nginx.conf)
large_client_header_buffers 4 16k;
client_header_buffer_size 4k;
401

Unauthorized

4xx Client Error RFC 9110, 15.5.2

Description: The request has not been applied because it lacks valid authentication credentials for the target resource.

Common Root Cause: Missing or expired Bearer JWT token, invalid API key, or missing Basic Auth credentials.

Apache (.htaccess / vhost)
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user
Nginx (nginx.conf)
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
403

Forbidden

4xx Client Error RFC 9110, 15.5.4

Description: The server understood the request, but refuses to authorize it. Unlike 401, re-authenticating makes no difference.

Common Root Cause: Incorrect file/directory permissions (e.g. 000 instead of 644/755), IP blocklist, or missing index.html.

Apache (.htaccess / vhost)
# Fix permissions via SSH:
chmod 755 -R /var/www/html/ && chmod 644 /var/www/html/*.*
# In .htaccess:
Require all granted
Nginx (nginx.conf)
# Ensure worker user has read permissions:
chown -R www-data:www-data /var/www/html
# Enable autoindex if no index file exists:
autoindex off;
404

Not Found

4xx Client Error RFC 9110, 15.5.5

Description: The server can not find the requested resource. Links that lead to a 404 are often called broken or dead links.

Common Root Cause: Typo in URL, deleted file, missing rewrite rules for single-page applications (SPAs), or missing .htaccess.

Apache (.htaccess / vhost)
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
Nginx (nginx.conf)
location / {
    try_files $uri $uri/ /index.html;
}
405

Method Not Allowed

4xx Client Error RFC 9110, 15.5.6

Description: The request method is recognized by the server but is not supported by the target resource (e.g. POST to a static file).

Common Root Cause: Sending a POST or PUT request to a static HTML endpoint or an API endpoint configured only for GET.

Apache (.htaccess / vhost)
<LimitExcept GET POST HEAD>
  deny from all
</LimitExcept>
Nginx (nginx.conf)
error_page 405 =200 $uri;
408

Request Timeout

4xx Client Error RFC 9110, 15.5.9

Description: The server timed out waiting for the request from the client. The client did not produce a request within the server timeout window.

Common Root Cause: Slow mobile network, large file upload interruption, or stalled connection.

Apache (.htaccess / vhost)
TimeOut 300
KeepAliveTimeout 5
Nginx (nginx.conf)
client_header_timeout 60s;
client_body_timeout 60s;
send_timeout 60s;
429

Too Many Requests (Rate Limited)

4xx Client Error RFC 6585, Section 4

Description: The user has sent too many requests in a given amount of time (Rate Limiting).

Common Root Cause: API rate limits exceeded, scraping bots hitting the endpoint, or DDoS protection triggers.

Apache (.htaccess / vhost)
<IfModule mod_ratelimit.c>
  SetOutputFilter RATE_LIMIT
  SetEnv rate-limit 500
</IfModule>
Nginx (nginx.conf)
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
}
500

Internal Server Error

5xx Server Error RFC 9110, 15.6.1

Description: The server encountered an unexpected condition that prevented it from fulfilling the request.

Common Root Cause: Syntax error in code, corrupted .htaccess file, exhausted PHP memory limit, or database connection crash.

Apache (.htaccess / vhost)
# Check Apache error logs:
tail -n 50 /var/log/apache2/error.log
# In php.ini increase memory:
memory_limit = 256M
Nginx (nginx.conf)
# Check PHP-FPM error logs:
tail -n 50 /var/log/php8.2-fpm.log
# In php-fpm pool config:
pm.max_children = 50
502

Bad Gateway

5xx Server Error RFC 9110, 15.6.3

Description: The server, while acting as a gateway or proxy, received an invalid response from the inbound server it accessed.

Common Root Cause: PHP-FPM or Node.js process crashed, upstream microservice timed out, or firewall blocked the upstream port.

Apache (.htaccess / vhost)
# Restart PHP-FPM service:
systemctl restart php8.2-fpm
Nginx (nginx.conf)
# Verify upstream is running and listening on correct socket/port:
upstream backend {
    server unix:/run/php/php8.2-fpm.sock;
}
proxy_buffer_size 128k;
proxy_buffers 4 256k;
503

Service Unavailable

5xx Server Error RFC 9110, 15.6.4

Description: The server is currently unable to handle the request due to temporary overloading or maintenance of the server.

Common Root Cause: Server CPU/RAM maxed out, scheduled maintenance mode enabled, or Cloudflare upstream capacity exceeded.

Apache (.htaccess / vhost)
# Return 503 during maintenance:
RewriteEngine On
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteRule .* /maintenance.html [R=503,L]
Nginx (nginx.conf)
error_page 503 /maintenance.html;
location = /maintenance.html {
    root /var/www/html;
}
504

Gateway Timeout

5xx Server Error RFC 9110, 15.6.5

Description: The server, while acting as a gateway or proxy, did not receive a timely response from the upstream server or CDN.

Common Root Cause: Long-running database query, unoptimized loop in backend script, or Cloudflare timing out after 100 seconds.

Apache (.htaccess / vhost)
ProxyTimeout 300
Nginx (nginx.conf)
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
fastcgi_read_timeout 300s;