🌐 HTTP Status Codes — Interactive Reference

HTTP Status Codes Complete Interactive Reference — Every Code Explained

Search 63+ HTTP status codes by number or keyword — type 404, forbidden, rate limit, redirect or any term. Every code includes a plain-English explanation, when to return it, the most common causes, a fix guide for developers, relevant HTTP headers, retry strategy (safe/unsafe/follow), and Googlebot SEO crawl impact. Covers all RFC 9110 standard codes, WebDAV extensions (423, 507, 508), the informal 418 teapot and 451 legal, and Nginx-specific 499. Click any card for the full detail panel.

63+ status codesSearch by number or keywordFix guide per codeSEO & retry impact
AdSense — 728×90 Leaderboard
🌐 HTTP Status Code Reference

Search All HTTP Status Codes

Type a code number (404) or keyword (forbidden, rate limit, redirect). Click any card for the full detail panel.

AdSense — 728×90 Leaderboard

Status code quick reference

2xx
Success
200OK — Standard success
201Created — New resource made
202Accepted — Processing async
204No Content — Success, no body
206Partial — Range response
3xx
Redirects
301Permanent — passes PageRank
302Temporary — no PageRank
304Not Modified — use cache
307Temp — preserves method
308Permanent — preserves method
4xx
Client Errors
400Bad Request — malformed
401Unauthorized — not authed
403Forbidden — no permission
404Not Found — doesn't exist
429Rate Limited — slow down
5xx
Server Errors
500Internal Error — server broke
502Bad Gateway — upstream bad
503Unavailable — maintenance
504Gateway Timeout — too slow
429Too Many — rate limit
🔗
Encode URLs for your HTTP requests.
Use the free URL Encoder / Decoder to percent-encode query strings and API parameters correctly before making HTTP requests.
URL Encoder →
⭐ Ratings

Rate this tool

4.9
★★★★★
Based on 52,300 ratings
5
10,120
4
435
3
218
2
109
1
0
Was this your API photo guide helpful?
Thank you! G'day!
What Are HTTP Status Codes?

HTTP Status Codes — The Complete Guide for Developers

HTTP status codes are three-digit numbers returned by a web server in response to every HTTP request. They tell the client — a browser, API client, or application — whether the request succeeded, failed, was redirected, or encountered an error. Understanding status codes is foundational for web development, REST API design, debugging, SEO and infrastructure monitoring.

Status codes are standardised in RFC 9110 (HTTP Semantics, 2022), which supersedes RFC 7231. The first digit determines the class of response. Every subsequent digit adds specificity within that class.

ClassRangeMeaningClient action
1xx100–199Informational — request received, processing continuesUsually handled transparently by HTTP client
2xx200–299Success — request was received, understood, and acceptedProcess the response body
3xx300–399Redirection — further action required to complete the requestFollow Location header to new URL
4xx400–499Client Error — the request was malformed or cannot be fulfilledFix the request before retrying
5xx500–599Server Error — the server failed to fulfill a valid requestRetry with backoff; report if persistent
Most Common Codes

The 10 Most Important HTTP Status Codes Every Developer Must Know

HTTP 200 OK — the baseline

200 is the default success response. For GET requests it means the requested resource is in the body. For POST it means the action was completed and the result is in the body. Never return 200 with an error body — this is a common anti-pattern in older APIs that breaks monitoring and client error handling.

HTTP 201 Created — resource born

Return 201 after a POST creates a new resource. Always include a Location: /api/resource/id header pointing to the new resource. Omitting the Location header is a spec violation. If creation is asynchronous (queued), use 202 Accepted instead and point the Location header to a status endpoint.

HTTP 204 No Content — success with nothing to say

Return 204 for successful DELETE operations and PUT/PATCH operations where you do not need to return the updated resource. The response must not include a body — some clients break if you send a body with 204. Also used for CORS preflight responses.

HTTP 400 vs 422 — the malformed vs invalid distinction

Use 400 Bad Request when the request itself is malformed: unparseable JSON, missing Content-Type header, invalid URL structure. Use 422 Unprocessable Content when the request is syntactically valid but semantically wrong: email format invalid, age must be positive, required relationship missing. Return RFC 9457 Problem Details format for structured error responses.

HTTP 401 vs 403 — the authentication vs authorisation distinction

This is the most commonly confused pair in the entire status code spec. 401 Unauthorized means the request lacks valid authentication — the server does not know who you are. Always include WWW-Authenticate header. 403 Forbidden means the client is authenticated but lacks permission — the server knows who you are but refuses access. Re-authenticating will not help a 403. A third option: return 404 instead of 403 when you want to hide that a resource exists at all (security through obscurity, sometimes appropriate).

HTTP 404 vs 410 — gone vs gone forever

404 Not Found is ambiguous — the resource may be temporarily or permanently unavailable. Google typically deindexes a 404 after several crawl cycles over days or weeks. 410 Gone is definitive — the resource is permanently deleted. Google deindexes 410 within one or two crawl cycles. For deleted content you want removed from search results quickly (cancelled accounts, removed products, deprecated endpoints), use 410 deliberately.

HTTP 429 Too Many Requests — rate limiting done right

Always include Retry-After (seconds or HTTP date) so clients know when to retry. Also include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers so clients can implement proactive throttling rather than reacting to 429s. Implement exponential backoff in clients — naive retry loops after 429 make the rate limiting problem worse.

HTTP 500 Internal Server Error — the critical rule

Never expose internal error details in a 500 response — not stack traces, not file paths, not database connection strings, not error IDs that enumerate internal systems. Log the full error internally with a correlation ID, then return a generic message to the client. Include the correlation ID in the response so users can report it: {"error":"Something went wrong","reference":"ERR-abc123"}. 500s are safe to retry with exponential backoff.

HTTP 503 Service Unavailable — maintenance done right

Always include Retry-After so load balancers and API clients know when to try again. Return an HTML error page for browser requests and JSON for API clients (check the Accept header). Googlebot reduces its crawl rate for sites returning 503. If 503s persist for more than a few days, Google may begin removing affected URLs from search results.

HTTP 301 vs 302 redirects — the SEO difference

301 Moved Permanently passes PageRank (link equity) to the destination URL. Search engines update their index to the new URL. 302 Found does not pass PageRank — Google indexes the original URL, not the destination. Use 301 for all permanent URL changes: HTTP to HTTPS migrations, domain changes, www to non-www. Use 302 for temporary redirects: A/B testing, login redirects, maintenance pages. Avoid redirect chains — go directly to the final destination.

API Design

Choosing the Right Status Code for REST APIs — Practical Decision Guide

GET request outcomes

ScenarioStatus codeNotes
Resource found and returned200 OKBody contains the resource
Resource not found404 Not FoundOr 410 if permanently deleted
Resource exists but user cannot see it403 Forbidden or 404 Not FoundUse 404 to hide existence
Resource unchanged since cached version304 Not ModifiedETag/Last-Modified match
Partial content (range request)206 Partial ContentContent-Range header required

POST request outcomes

ScenarioStatus codeNotes
New resource created immediately201 CreatedLocation header required
Action completed, no new resource200 OKReturn result in body
Processing async (queued)202 AcceptedLocation: status endpoint
Input validation failure422 UnprocessableList all validation errors
Malformed request body400 Bad RequestCannot parse the body
Duplicate resource (unique constraint)409 ConflictReturn conflicting resource
Post-redirect-get pattern303 See OtherPrevents form resubmission

DELETE request outcomes

ScenarioStatus codeNotes
Resource deleted successfully204 No ContentNo body returned
Resource deleted, returning confirmation200 OKReturn deleted resource or confirmation message
Resource not found404 Not FoundOr 204 for idempotent deletes
Cannot delete (has dependents)409 ConflictExplain constraint in body
SEO Impact

How HTTP Status Codes Affect SEO & Googlebot Crawling

Every status code your server returns to Googlebot directly affects crawl budget, indexing, link equity and how quickly changes take effect in search results.

200 OK — crawled and eligible for indexing — Pages returning 200 are crawled and eligible for indexing. Googlebot respects noindex meta tags and X-Robots-Tag headers on 200 responses. Canonical tags on 200 responses signal the preferred URL to index.
➡️
301 — full PageRank passes, Googlebot updates index to new URL — Google follows 301 redirects and passes essentially all link equity (PageRank) to the destination URL. The destination URL is indexed, not the source. Google follows up to 10 redirect hops before stopping — avoid chains. HTTP to HTTPS 301s are the canonical way to migrate your entire site’s protocol.
↪️
302 — source URL indexed, no PageRank passed — Google temporarily follows 302s but indexes the source URL rather than the destination. No PageRank is passed through 302s. This is intentional — Google assumes the redirect may be reversed. Use 302 only for genuinely temporary redirects. Accidentally using 302 for permanent moves is a common SEO mistake.
🗑️
404 — deindexed after several crawl cycles — Googlebot deindexes 404 URLs after seeing consistent 404s over multiple crawl visits, typically days to weeks. URLs stay in Search Console for 90 days after deindexing. Use 404 for resources that may return — use 410 for content you want removed from search results immediately.
410 — fastest deindex signal to Google — Google treats 410 as a definitive signal that content is permanently gone and deindexes it much faster than 404 — typically within one or two crawl cycles. Use 410 for deleted user accounts, removed products, deprecated API endpoints, and content you need removed from search results quickly such as DMCA takedowns or GDPR right-to-be-forgotten requests.
503 — temporary crawl rate reduction, deindex if persistent — Googlebot temporarily reduces crawl frequency for sites returning 503. If 503s persist for more than a few days, Google may begin deindexing affected URLs. Always include Retry-After to signal when the site will be available again. Google Search Console will report crawl errors under Coverage.
💥
500/502/504 — reduce crawl rate, potential deindex — Server errors cause Googlebot to temporarily reduce crawl rate. Sustained server errors (several days) may result in deindexing of affected pages. Monitor Google Search Console’s Coverage report for server error patterns. Use structured logging and alerting to catch 5xx spikes early.
Retry Logic

Which HTTP Status Codes Are Safe to Retry?

A well-designed HTTP client should implement selective retry logic — not all status codes are safe to retry automatically.

StatusSafe to retry?Recommended strategy
408, 429, 500, 502, 503, 504YesExponential backoff with jitter. Respect Retry-After on 429/503.
400, 401, 403, 404, 405, 410, 422NoFix the request or user permissions first. Retrying returns same error.
409ConditionalFetch current state, merge, retry with new ETag.
501NoFeature not implemented. Retry will never succeed.
425ConditionalRetry without TLS 0-RTT early data.
3xxFollow redirectFollow Location header automatically. Limit to 10 hops.

Implement exponential backoff: start with 1 second, double each retry, add random jitter, cap at 60–120 seconds. After 3–5 retries, fail gracefully and notify the user.

Comparison

LazyTools vs Other HTTP Status Code References

FeatureLazyToolsMDN Web Docshttpstatus.comJLV DevTools
Instant keyword search✅ Number or keyword❌ No search❌ No search✅ Yes
Retry strategy per code✅ Every code❌ None❌ None❌ None
Googlebot SEO impact✅ Per code❌ None❌ None❌ None
vs. similar codes comparisons✅ 401 vs 403, etc.⚠ Separate pages❌ None✅ Partial
Fix guide per code✅ Every code⚠ Some❌ None❌ None
Relevant HTTP headers✅ Per code✅ Yes❌ None❌ None
No account required✅ Yes✅ Yes✅ Yes✅ Yes
FAQ

HTTP Status Code FAQ

HTTP 404 Not Found means the server cannot find the requested resource. For permanently deleted content, return 410 Gone instead — Google deindexes 410 URLs faster. For restricted resources you do not want users to know exist, return 404 rather than 403.

HTTP 403 Forbidden means the server understood the request but refuses to authorize it. The client is authenticated but does not have permission. Unlike 401, re-authenticating will not help — the user needs different permissions or a different account. Consider returning 404 if you want to hide that the resource exists.

401 = not authenticated (server does not know who you are). Always include WWW-Authenticate header. Re-authenticating may help. 403 = authenticated but not authorized (server knows who you are, but you lack permission). Re-authenticating will not help. Mnemonic: 401 = "Who are you?", 403 = "I know who you are — still no."

HTTP 500 is a catch-all for server-side errors. Never expose stack traces or internal details. Log full error server-side with a correlation ID and return a generic message. It is safe to retry with exponential backoff as it may be transient.

HTTP 429 is a rate limiting response. Always include Retry-After header. Also include X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset for transparency. Clients should implement exponential backoff, not retry immediately.

301 = permanent redirect, Google passes PageRank, indexes the destination URL. 302 = temporary redirect, Google indexes the source URL, no PageRank passed. Use 301 for permanent URL changes (HTTP to HTTPS, domain migrations). Use 302 for temporary redirects.

Standard success response. Use 201 when creating new resources, 204 when there is no body to return, 202 when processing is asynchronous. Never return 200 with an error body — this breaks monitoring and client error handling.

503 Service Unavailable means the server is temporarily unable to handle requests. Always include Retry-After. Googlebot reduces crawl rate for 503s. If persistent for days, Google may deindex affected URLs. Return HTML for browsers, JSON for API clients.

Request syntax is valid but content fails semantic validation (invalid email format, out-of-range value, missing required relationship). Return a detailed error body listing each validation failure. Use 400 for syntactically malformed requests instead.

Both are temporary redirects. 307 guarantees the HTTP method is preserved (POST stays POST). 302 browsers have historically converted POST to GET. Use 307 when redirecting POST requests temporarily. Use 303 See Other to redirect POST to a GET page (post-redirect-get pattern).

A gateway (Nginx, load balancer, API proxy) received an invalid response from an upstream server. Check upstream server logs, verify the backend is running, test the upstream endpoint directly. 502 is safe to retry with exponential backoff.

410 Gone means content is permanently deleted — Googlebot deindexes within 1–2 crawl cycles. 404 Not Found is ambiguous and Googlebot deindexes over several cycles. Use 410 to remove content from search results quickly.

Success with no response body. Used for DELETE operations, PUT/PATCH without body needed, and CORS preflight. The response must not include a body — some clients break if you send one. Use 200 OK if you want to return confirmation data.

Return after POST successfully creates a new resource. Always include Location header: Location: /api/users/123. Use 200 OK if no new resource is created, 202 Accepted if creation is asynchronous and not yet complete.

The resource has not changed since the client's cached version (ETag or Last-Modified matched). Response has no body — client uses cached copy. Essential HTTP caching mechanism that saves bandwidth significantly. Implement ETag or Last-Modified on all cacheable resources.

1xx Informational: 100 Continue, 101 Switching Protocols, 103 Early Hints. 2xx Success: 200 OK, 201 Created, 202 Accepted, 204 No Content, 206 Partial Content. 3xx Redirection: 301, 302, 303, 304, 307, 308. 4xx Client Error: 400, 401, 403, 404, 405, 408, 409, 410, 413, 415, 422, 429, 451. 5xx Server Error: 500, 502, 503, 504. Search the tool above to look up any code instantly.

Related tools

More Free Developer Tools