HTTP status codes can directly affect your SEO.
They determine whether search engines can crawl and index your pages, how link value flows across your site, and how efficiently your crawl budget is spent.
In this guide, we take a closer look at the HTTP status codes that affect the SEO of your website and exactly what to do about them.
What are HTTP status codes?
HTTP status codes are three-digit numbers a server sends in response to a request for a web page or resource from a client, such as a browser or crawler. They indicate whether the request was completed successfully or failed.
They exist to create a standardized, shared language between servers and clients. Without them, a browser would not know why a page did not load. A crawler like Googlebot would not know whether a page exists or is unavailable.
For website owners, they are a diagnostic signal. They surface pages that need attention, helping you understand what search engines and visitors can and cannot access on your site.
Which HTTP status codes affect SEO
| HTTP status code | Effect on SEO |
|---|---|
| 200: OK | Positive – enables crawling, indexing, and ranking |
| 301: Moved Permanently | Neutral – preserves link value when moving URLs, but no ranking improvement |
| 302: Found | Neutral if used for temporary moves; Negative if used for permanent moves |
| 304: Not Modified | Positive – preserves crawl budget by preventing unnecessary recrawling |
| 404: Not Found | It depends – fine if the page had no value; Negative if the page previously ranked or had backlinks |
| 410: Gone | It depends – correct signal for deleted content, but carries the same risks as 404 if the page had value |
| 500: Internal Server Error | Negative – causes ranking drops, index loss, and crawl budget waste if left unresolved |
| 503: Service Unavailable | It depends – Neutral if temporary and paired with a Retry-After header; Negative if persistent |
200: OK/Success (Positive effect on SEO)
A 200 means the server found the page and returned it successfully. It tells Googlebot the page is available, crawlable, and eligible for indexing. All status codes in the 2xx range mean some form of success, and a 200 is the most common of them.
301: Moved permanently (Neutral effect on SEO)
A 301 is used when a URL has permanently moved to a new location (URL). When you make that move, it makes sure nothing is lost. According to Google Search Central, a 301 passes the full link value of the old URL to the destination and tells Google to update its index.
302: Found (Negative effect on SEO if misused)
A 302 means the page has been found, but it has temporarily moved to a different URL. It tells search engines the move is temporary and that the original URL will be used again, so no link value transfers to the new URL. Search engines hold on to the original, expecting it to come back.
The problem comes when a 302 is used for a permanent move by mistake. The old URL stays in Google’s index, the new URL gets no link value, and rankings are suppressed. So if the move is permanent, always use a 301. Otherwise, it will negatively affect your SEO.
Note: If a 302 is left in place long enough, Google may start treating it as a 301 (permanent move). But that is not something you should rely on. The safest approach, if the move is permanent, is to use a 301 from the start.
304: Not Modified (Positive effect on SEO)
A 304 signals that the requested page has not changed since the last time it was accessed by the client. So instead of sending the full page again, the server tells the browser or crawler to use the cached version it already has.
For SEO, a 304 is a good sign on large websites. When Googlebot receives a 304, it does not need to recrawl that page and can focus its crawl budget on new and updated pages instead. This means your crawl budget is spent on the content that matters most.
404: Not Found (Neutral or negative; depends on the page)
A 404 means the server cannot find the page at the requested URL.
On its own, it is not an SEO problem. According to Google’s John Mueller, returning a 404 is the technically correct way to handle URLs that no longer exist.
It becomes a problem when a page that previously ranked, or had backlinks pointing to it, starts returning a 404. All the link value built up in your backlink profile is now lost, and any visitor who clicks that link lands on a dead end instead of your content.
Depending on the content of the page, it may also affect your internal linking structure, topical coverage, and revenue.
410: Gone (Neutral or negative; depends on the page)
A 410 means the page is gone and will not come back.
Unlike a 404, which leaves Google wondering whether the page might return, a 410 sends a clear and deliberate signal that the removal is intentional and permanent. You are basically telling search engines to remove the URL from the index.
It carries all the same risks as a 404. If the page had value, losing it permanently may affect your backlink profile, internal linking structure, topical coverage, and revenue.

500 Internal Server Error (Negative effect on SEO)
A 500 is a generic error message that means the server encountered an unexpected condition and could not complete the request. It does not tell you what went wrong or where. It just signals that something failed.
From an SEO perspective, it is the most damaging server-level code. If Googlebot hits a 500 repeatedly, it treats the URL as unreachable and reduces how often it crawls it. Persistent 500 errors on important pages lead to ranking drops, loss of indexing, and wasted crawl budget.
503 Service Unavailable (Neutral if temporary; negative if persistent)
A 503 means the server is temporarily unable to handle the request. It is the only server-level error acceptable in planned situations, such as scheduled maintenance or temporary overload.
The key is the Retry-After header.
Adding it tells Googlebot exactly when to come back. A 503 paired with a Retry-After header is crawl-safe and will not cause indexing loss. Without it, Googlebot does not know when to return, reduces crawl frequency, and rankings begin to slip.
If a 503 persists for days, the SEO damage is the same as a 500: ranking drops, reduced crawl frequency, and eventual index loss.
How to find HTTP status code errors on your site
You can use Google Search Console to find HTTP status code errors on your site. It shows you the issues Google has actually encountered while crawling your site. Alternatively, you can use WebYes to detect the HTTP status codes to ensure correct indexing and crawling.
To find HTTP status code errors in GSC:
- Open Google Search Console and select your property
- Go to Indexing > Pages
- Scroll to the Why pages aren’t indexed section
- Look for the following error types:
- 404 errors
- Soft 404s
- Server errors (5xx)
- Redirect errors
Click any error label to see the affected URLs, then export the list and sort by traffic or referring pages to prioritize fixes.

Note: GSC shows 404, 403, and soft 404s explicitly by name. Server errors are grouped under 5xx as a category. For 3xx, GSC uses “Page with redirect” for pages that redirect elsewhere, and “Redirect error” for problematic redirects such as chains and loops.
How to fix HTTP status code errors
Not every HTTP status code error needs a fix in the traditional sense.
Some codes cause problems because they were implemented incorrectly from the start, and the solution is getting the implementation right. Others are genuine errors that need diagnosing and resolving.
In the sections below, we cover both.
How to implement 301 correctly
Use a 301 any time a URL change is permanent. Point the old URL directly to the final destination in a single hop. Never route through intermediate URLs.
A common mistake is creating redirect chains. Each extra hop reduces crawl priority and slows down link value transfer. If you find chains in your site, collapse them so every source URL points directly to its final destination.
Plan for a delay. The index update after a 301 can take weeks or longer. Rankings on the new URL may lag even after the redirect is in place. Build that into your migration timelines.
How to implement 302 correctly
Only use a 302 when the redirect is genuinely temporary, and you plan to use the original URL again. A/B tests, short-term promotional pages, and maintenance redirects are the right use cases.
If the move turns out to be permanent, update the 302 to a 301 immediately. Do not leave it and expect Google to work it out over time.
How to implement 304 correctly
A 304 requires no action if it is working correctly. The only time to investigate is when a page you have updated is still returning a 304. That means the cache has not been cleared, and Googlebot is serving stale content. Clear the cache and verify the updated version is being returned.
How to implement 410 correctly
Use a 410 when content is intentionally and permanently deleted.
Before doing so, check whether the URL can be redirected to a relevant page instead. If a closely related page exists, a 301 preserves any link value and sends users somewhere useful. If no equivalent exists and the content is genuinely gone, return a 410.
How to fix 404 errors
A 404 only needs action if the page had value.
Check whether it previously ranked, had backlinks, or drove traffic.
- If removed by mistake, restore it
- If the content moved, set up a 301 redirect from the old URL to the new one
- If the content is gone but backlinks exist, redirect to the most relevant live page
- If the page had no rankings, backlinks, or traffic, leave the 404 in place
After fixing, check the Page Indexing report in GSC after 48 to 72 hours and use URL Inspection to request recrawling.
How to fix 500 errors
Check your server error logs first. They will identify the file or process causing the failure. On WordPress, deactivate plugins one at a time to isolate the conflict. If logs point to server resources such as memory limits or connection timeouts, contact your hosting provider.
Once resolved, submit affected URLs via URL Inspection in GSC to prompt recrawling. Fix 500 errors within hours, not days.
How to fix 503 errors
For planned downtime, add a Retry-After header specifying when Googlebot should return. This prevents Googlebot from treating the downtime as a failure.
For unplanned 503s, identify the cause: overloaded server, failed deployment, or infrastructure issue. Resolve it immediately and never let it persist for more than 24 hours on pages that receive organic traffic.
Soft 404s are also an SEO problem
Soft 404s are different from everything covered above. They are not an official status code. They are a condition that occurs when a status code and the page content contradict each other.
A soft 404 happens when the server sends a 200 success code for the requested page, but Google thinks the page should return a 404. It may do this if the page content looks like an error, or if there is no content. The server reports success. The page tells a different story.
The SEO problem with soft 404s is twofold.
If Googlebot detects the mismatch, it may exclude the URL from the index entirely. If it does not detect it and indexes the page anyway, the thin content dilutes your overall site quality and wastes crawl budget on every visit.
A proper 404 tells Googlebot clearly that nothing is here. A soft 404 sends a confusing signal, and that confusion costs you either way.
How to find soft 404s
- Open Google Search Console.
- Go to Indexing > Pages.
- Look for the “Soft 404” label in the reason list.
- Click the label to see all affected URLs.
Soft 404s rarely announce themselves. As part of your technical SEO audit, check the Page Indexing report in Google Search Console regularly to catch them before they accumulate.
How to fix soft 404s
The fix depends on the situation, but the principle is always the same: make sure the status code and the page content tell the same story. If the page has no real content, do not return a 200.
Here are your options:
- Return a proper 404 or 410
- Add a noindex tag or block the URL via robots.txt
- Add real, substantive content to the page
- Redirect to a relevant page using a 301
- Restore the page with updated content
Once you have made the fix, use the URL Inspection tool in Google Search Console to request recrawling of high-priority URLs.
HTTP status codes and LLM crawlers
Making your content accessible to tools built on large language models (LLMs) is becoming just as important as making it accessible to Google.
LLMs like ChatGPT, Perplexity, and Claude find and understand website content the same way traditional search engines do. They deploy their own crawlers to collect content from the web. Like Googlebot, they all respect robots.txt and interpret HTTP status codes the same way.
Status codes that signal errors, like 404s and 500s, can block LLMs from seeing your content. As a result, your visibility in AI-generated responses suffers.
Web developer and AI engineer Vincent Schmalbach puts it plainly:
“Sites with frequent HTTP status code errors may find their content underrepresented in both search results and AI-generated responses, since both systems require reliable access to index and utilize content effectively.”
On the specific impact of 4xx and 5xx codes, Schmalbach adds:
“Both 404 and 410 responses mean no content is available, so those pages don’t contribute to training data. Server errors like 500s cause crawlers to retry later, but persistent errors result in content being skipped entirely.”
The takeaway is straightforward.
As AI-generated responses shape more of what users see and trust, the content those crawlers can access directly affects your brand visibility. Keeping your HTTP status codes clean is no longer just a search engine concern. It is an AI visibility concern, too.
FAQs on HTTP status codes
An isolated 404 on a page with no backlinks and no traffic history is not a problem. The harm comes when 404s accumulate at scale, when previously ranking pages return 404, or when backlinks point to 404 URLs. Check GSC monthly and redirect any 404 URL that has inbound links or a traffic history.
A 301 is permanent and transfers ranking signals and link equity to the destination URL. A 302 is temporary and tells Google to keep the original URL in the index. The destination URL does not inherit the original’s rankings. Using a 302 for a permanent move is a common mistake that suppresses rankings on the new URL.
A temporary 503 with a Retry-After header is crawl-safe and will not cause indexing loss. Persistent 503 errors that last days or weeks cause Google to reduce crawl frequency and eventually drop affected URLs from the index. Always include a Retry-After header during any planned maintenance window.
Yes. GPTBot, ClaudeBot, and Google’s AI crawlers follow HTTP status codes the same way Googlebot does. Pages returning 4xx or 5xx errors cannot be crawled by these bots, so they cannot appear in AI-generated responses or AI Overviews. Keeping your status codes clean protects your visibility in both traditional and AI-powered search.