HTTP status codes are 3-digit numbers returned by a web server in response to every request made by a browser or search engine crawler. The code tells the requester what happened: did the page load successfully, has it moved, is it restricted, or did something go wrong? For SEO, understanding status codes is fundamental because they directly control whether your pages get crawled, indexed, and ranked by search engines.
The 5 Status Code Categories
- 1XX — Informational: The request was received and is being processed. Rare in normal browsing; mainly used in protocol upgrades
- 2XX — Success: The request was successful. 200 OK is what you want for every indexable page
- 3XX — Redirection: The resource has moved. The client should look elsewhere. 301 and 302 are the most common
- 4XX — Client error: Something is wrong with the request. The page does not exist (404), access is denied (403), or the request is malformed (400)
- 5XX — Server error: The server failed to handle a valid request. Indicates problems on your hosting or backend
2XX Success Codes
- 200 OK — The standard success response. The page loaded correctly. This is what every indexable page should return
- 204 No Content — The server processed the request but returns no content. Used in APIs; should not appear on public web pages
- 206 Partial Content — The server is delivering part of a resource (used for range requests like video streaming)
3XX Redirect Codes
- 301 Moved Permanently — The best redirect for SEO. Passes full link equity to the new URL. Use for all permanent URL changes
- 302 Found (Temporary) — Temporary redirect. Does not pass full link equity. Use only when the original URL will return
- 307 Temporary Redirect — HTTP/1.1 equivalent of 302. Preserves the request method
- 308 Permanent Redirect — HTTP/1.1 equivalent of 301. Preserves the request method
See the full 3XX Redirects guide for details.
4XX Client Error Codes
- 400 Bad Request — The server cannot process the request due to invalid syntax
- 401 Unauthorized — Authentication required. Login pages return this for unauthenticated users
- 403 Forbidden — Access denied. Server understood but refuses to authorize. Googlebot receiving 403 cannot crawl the page
- 404 Not Found — The page does not exist. Most common crawl error. Fix with 301 redirects to relevant pages
- 410 Gone — The page is permanently deleted. Google deindexes 410 pages faster than 404 pages
- 429 Too Many Requests — Rate limit exceeded. May appear in server logs if Googlebot crawls too aggressively
See the full 4XX Errors guide for details.
5XX Server Error Codes
- 500 Internal Server Error — Generic server error. Your server crashed or has a misconfiguration. Pages returning 500 cannot be crawled or indexed
- 502 Bad Gateway — The server received an invalid response from an upstream server (common with reverse proxies and CDNs)
- 503 Service Unavailable — The server is temporarily overloaded or down for maintenance. Google will retry crawling and does not immediately deindex pages returning 503. Include a Retry-After header when using for planned maintenance
- 504 Gateway Timeout — The upstream server did not respond in time. Common cause of crawl errors on slow hosting
503 during maintenance: If you need to take your site down for maintenance, return a 503 with a Retry-After header. Google will hold off on crawling and not penalise you for the downtime. Never return a 200 on a maintenance page (Google will index the maintenance notice instead of your content).
How to Check Status Codes
- Browser DevTools: Open the Network tab, reload the page, and check the Status column for any URL
- Google Search Console: Coverage report shows all 4XX and 5XX errors Googlebot has encountered
- Screaming Frog: Crawl your entire site and filter by status code to find all errors at scale
- Ahrefs / Semrush Site Audit: Automated crawls flag all non-200 status codes with recommendations
- curl command:
curl -o /dev/null -s -w "%{http_code}" https://yoursite.com/pagereturns the status code in the terminal