HTTP status codes are the three-digit numbers a server returns to tell you what happened to a request. You saw a 404, a 301, or a 500 and want to know what it means and what to do next. Here is a fast, accurate guide.
The five HTTP status code classes
Every code falls into one of five ranges, and the first digit tells you the family:
- 1xx Informational: the request was received and is still being processed. You rarely see these directly.
- 2xx Success: the request worked.
- 3xx Redirection: the resource lives somewhere else, follow the pointer.
- 4xx Client error: the request was wrong (bad URL, missing auth, no permission).
- 5xx Server error: the request was fine but the server failed.
If you only remember one thing: 4xx means fix the request, 5xx means fix the server.
Success and redirects (2xx and 3xx)
- 200 OK: the request succeeded. This is the normal response for a working page.
- 201 Created: a new resource was created, common after a POST to an API.
- 301 Moved Permanently: the URL has moved for good. Use 301 for permanent moves so search engines transfer ranking signals to the new URL and update their index.
- 302 Found (temporary): the move is temporary, so the original URL keeps its SEO value. Do not use 302 for a permanent move, or you waste link equity and confuse crawlers.
- 304 Not Modified: the resource has not changed since the browser last fetched it, so the cached copy is reused. This is a caching win, not an error.
The 301 vs 302 distinction is the one that bites SEOs most. Permanent move equals 301, every time.
Client and server errors (4xx and 5xx)
- 401 Unauthorized: you are not authenticated. The server does not know who you are, so log in or send valid credentials.
- 403 Forbidden: you are authenticated but not allowed. The server knows who you are and is still saying no, so this is a permissions problem, not a login problem.
- 404 Not Found: the URL does not exist. Check for typos or a moved page that needs a 301.
- 410 Gone: the resource was here and is permanently removed. Unlike 404, it tells crawlers to stop trying and drop the URL faster.
- 429 Too Many Requests: you are rate limited. Slow down and respect any
Retry-Afterheader. - 500 Internal Server Error: a generic server crash. Check application logs.
- 502 Bad Gateway: a proxy or load balancer got an invalid response from the upstream server.
- 503 Service Unavailable: the server is overloaded or down for maintenance. Usually temporary.
Look up any code
When you hit a code you do not recognize, the HTTP Status Codes Reference gives you the meaning and the fix in seconds:
- Open the HTTP Status Codes Reference.
- Type the code or browse by class.
- Read the plain-English meaning and the recommended action.
It runs entirely in your browser, so nothing you type leaves your device.
Related tools
- See the real codes a URL returns with the HTTP Header Analyzer.
- Lock down responses using the Security Headers Generator.
- Confirm a page can be crawled and indexed with the Indexability Checker.
Read the first digit, fix the request or the server, and reach for the reference when a code surprises you.