Every time someone visits a page on your site, a quick exchange happens behind the scenes between their browser and your web server. The browser asks for a page; the server responds with a status code before it delivers anything else. That tiny code tells the browser — and search engines — exactly what happened.
Most of the time, this exchange goes smoothly and nobody notices. But when something goes wrong, or when an SEO audit flags a long list of “errors,” understanding these codes is what separates a measured response from an unnecessary panic. Here’s what the codes actually mean, when they’re working correctly, and when they’re genuinely something to fix.
How the Codes Are Organized
Status codes are grouped by their leading number, which makes them easier to learn than they look at first glance:
- 2xx — Success. The request worked. This is where you want most of your pages to land.
- 3xx — Redirection. The content is somewhere else, and the server is pointing the way.
- 4xx — Client error. Something about the request was wrong — usually a broken or outdated link.
- 5xx — Server error. Something went wrong on your server’s end. These always warrant attention.
The Codes You’ll See Most Often
200 — OK
A 200 means everything worked. The browser asked for a page, the server found it, and the content was delivered. To a search engine crawler, a 200 says “index this page and keep it.” What you might not expect: a 200 can actually be a problem. If your server returns a 200 for pages that no longer exist — old products, discontinued categories, expired promotions — those pages stay in Google’s index and can outrank your active pages. A retailer once had a page full of discontinued product listings outranking their current inventory because every URL on the site returned a 200, whether the product existed or not. A correct 404 would have cleared those out of the index automatically.
301 — Moved Permanently
A 301 tells the browser (and search engines) that a page has permanently moved to a new location. The server redirects the request to the new URL and passes along the ranking signals the old page had built up. Use a 301 when you’ve updated a URL, consolidated content, or moved a page to a new location for good. It’s also the right code when you want to make sure visitors hitting the non-www version of your domain land on the www version (or vice versa). Where it goes wrong: using a 301 when the old page still exists and should still be indexed,
or redirecting to a page that has nothing to do with the original. Misused redirects are a common spam signal that search engines watch for.
302 — Found (Temporary Redirect)
A 302 means “the content is somewhere else right now, but come back and check the original URL later.” Unlike a 301, a 302 tells search engines to hold onto the original URL in their index. Use a 302 for genuinely temporary situations: a page under revision, a seasonal promotion that redirects to a placeholder, or A/B testing. Where retailers get into trouble is using 302s when a 301 was the right call — for example, redirecting a discontinued product page to a category page with a 302 instead of a 301. The old, dead URL stays in Google’s index indefinitely.
304 — Not Modified
This one rarely gets talked about, but it’s worth knowing. A 304 tells the browser that the page hasn’t changed since the last time it was loaded, so it can use the cached version instead of downloading everything again. This is normal and intentional — it speeds up load times for returning visitors. If you’ve ever been asked to “clear your cache to see the updates,” a 304 is usually what was happening before you did.
403 — Forbidden
A 403 means the server understood the request but refused to fulfill it — the client doesn’t have permission. This is the correct response when a search engine crawler tries to access your admin pages or other restricted areas of your site. It becomes a problem when pages you want visitors or crawlers to access return a 403. This can happen with overly aggressive robots.txt files or misconfigured server permissions.
404 — Not Found
Here’s the one that gets the most undeserved alarm. A 404 means the server can’t find what was requested — and in most cases, that’s exactly the right response. Pages get removed. Products get discontinued. URLs change. When that happens, a 404 correctly tells the browser and search engine crawlers: this doesn’t exist, stop looking here. SEO audits flag 404s as errors by default, and that leads a lot of site owners to panic and start redirecting everything. That’s often the wrong move. Redirecting a 404 to an irrelevant page — like sending every broken link to the homepage — doesn’t help users find what they were looking for, and it creates a different kind of problem for search engines trying to understand your site structure. What’s actually worth fixing: 404s that show up in your own internal links. If your site is
linking to pages that don’t exist, fix the links. External links you don’t control pointing to dead pages are generally not worth stressing over. And if a page is truly gone for good, consider a 410 instead (see below).
410 — Gone
A 410 is a more definitive version of a 404. Where a 404 says “I can’t find this,” a 410 says “this used to exist and it’s gone permanently.” Search engine crawlers treat a 410 as final and remove the URL from their index faster than they would a 404. Use a 410 when you’ve intentionally removed content — a discontinued product line, a retired landing page — and you want search engines to stop crawling it right away. Because 410s are more absolute, many developers choose to return a 404 for everything that’s missing and reserve 410s for situations where speed of de-indexing matters.
503 — Service Unavailable
A 503 means your server is temporarily unable to handle requests — usually because it’s overloaded or undergoing maintenance. Unlike the 4xx codes, a 503 is always a server-side issue that needs to be resolved. Any 5xx error is a priority fix. You can’t do anything useful for visitors or search engines if your server isn’t responding.
The Takeaway
Server response codes are your server communicating clearly about what’s happening. A 404 on a page that doesn’t exist is your server doing its job correctly. A 200 on a page that shouldn’t exist anymore is a problem. A 301 to a relevant new location is good housekeeping. A 302 used in place of a 301 is a common mistake worth auditing. When an SEO report hands you a list of 404s, the right question isn’t “how do I eliminate these?” It’s “are any of these coming from my own internal links?” That’s the slice that’s actually worth your time. Understanding what these codes mean — and when they’re working as intended — puts you in a much better position to make decisions based on what’s actually happening on your site, rather than what an automated report says looks like a problem. For more on how your eCommerce site’s technical foundation affects search visibility, contact the Virid team.
