HTTP status codes are among the clearest technical signals a server sends. A page can look fine in a browser while returning the wrong status, so technical SEO audits should check the response as well as the visible content.
Quick Answer
Use 200 for a real available page, 301 for a permanent move, 404 or 410 for content that is gone without a replacement, and 503 for a temporary service outage. The best code is the one that accurately describes what happened.

200 Means the Request Succeeded
A 200 response is appropriate when the requested URL contains the intended content. Avoid returning 200 for error pages or empty placeholders.
A successful code does not guarantee indexing; it simply establishes that the server delivered a normal response.
301 Communicates a Permanent Move
Use 301 when the old URL has a clear permanent replacement. Redirect directly to the final destination and update important internal links so users and crawlers do not traverse unnecessary chains.
404 and 410 Are Normal When Content Is Gone
A real 404 is not a site-wide SEO emergency. It accurately tells the client that the requested resource is not available. A 410 is another explicit signal that a resource is gone.
Focus on fixing broken internal links and deciding whether a relevant replacement exists.
503 Is for Temporary Unavailability
If maintenance or a temporary outage prevents normal service, 503 communicates that the condition is temporary. Do not use 200 for a maintenance page that replaces the entire site.

Status Code Audit
- Test representative URLs with an HTTP checker.
- Verify redirects are direct.
- Find internal links pointing to 404s.
- Check missing URLs do not return 200 error templates.
- Confirm temporary maintenance responses do not become permanent behavior.
A Decision Table in Plain Language
If the requested page exists and contains the intended content, return 200. If the content moved permanently to a clear successor, return a 301 to that destination. If the content is gone and no replacement exists, return 404 or 410. If the server is temporarily unavailable for maintenance, use 503 rather than presenting a maintenance screen with a normal 200 response.
That sounds simple, but CMS layers can make it messy. Themes sometimes render custom error templates while the server still returns 200. Redirect plugins can leave chains behind after several migrations. A CDN can cache an old redirect after WordPress has been corrected. Always test the HTTP response that a client receives, not only the message visible in the browser.
Status Codes During a Migration
Before a migration, export the old URL set and map each important path to one outcome: unchanged, moved, removed, or temporarily unavailable. This prevents a rushed launch where every old URL gets sent to the homepage because the redirect map was never prepared.
After launch, crawl both old and new URL lists. Look for redirect chains, 404s linked internally, and unexpected 5xx responses. The objective is not “zero 404s everywhere”; it is accurate responses and no broken paths for resources the site still expects users to reach.
Common Mistakes
The most common mistakes are redirect chains, blanket homepage redirects, 200 responses on missing pages, and leaving temporary redirects in place after a permanent migration.
Watch the Topic in Context
How Google Search Crawls Pages
HTTP responses are part of what a crawler receives when fetching URLs, making them foundational to crawl and indexing diagnostics.
Watch on YouTube ↗ · Google Search Central