Skip to main content

HTTP Status Code.

SEO SEO Fundamentals

Non-200 status codes tell search engines your page has problems

What does this check test?

This check verifies that pages intended to be indexed return an HTTP 200 status code, that deleted or moved pages return proper 301 (permanent redirect) or 410 (gone) status codes, and that error pages return 404 (not found) rather than a soft 404 (a custom error page that returns 200). Redirect chains (301 to 301 to 301) should be minimized — ideally no more than one redirect hop. Server errors (5xx) indicate infrastructure problems that prevent indexing entirely.

Why does it matter?

Search engine crawlers rely heavily on HTTP status codes to understand how to treat each URL. A 200 tells Googlebot the page exists and should be indexed. A 301 transfers ranking authority ("link juice") to the new URL. A 404 tells Google to eventually remove the URL from its index. A soft 404 — where an error page returns 200 — confuses Google into trying to index your error page, wasting crawl budget and potentially showing error pages in search results. Redirect chains slow down crawling and dilute link equity with each hop. Consistent, correct status codes are foundational to a healthy crawl.

Who is affected?

Back-end developers configuring server responses and routing, DevOps engineers managing redirects and server health, front-end developers implementing client-side routing that must align with server responses, and SEO specialists auditing crawl reports for status code anomalies.

Where does this apply?

Every URL that Googlebot may encounter: pages linked from your sitemap, pages with inbound links from other sites, URLs from old site versions that should redirect, API endpoints that might be accidentally exposed to crawlers, and dynamically generated URLs from search or filter parameters. Pay special attention to URL migrations, domain changes, and CMS slug updates.

How to fix it

For active pages, ensure your server returns 200. Avoid soft 404s — if your custom 404 page returns a 200 status, Google will try to index it. Fix redirect chains by pointing all redirects directly to the final destination. Next.js redirects in config:
ts
// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/old-path',
        destination: '/new-path',
        permanent: true, // 301 redirect
      },
    ];
  },
};
Returning correct status codes in Next.js App Router:
ts
// app/blog/[slug]/page.tsx
import { notFound } from 'next/navigation';

export default async function Page({ params }) {
  const post = await getPost(params.slug);
  if (!post) notFound(); // returns 404, not a soft 404
  return <Article post={post} />;
}
Monitor status codes in Google Search Console under the "Pages" report. Use `curl -I https://example.com/page` to verify headers.

References

AppVet checks HTTP Status Code automatically

Run a free seo scan and get a full report with actionable fixes, including a Fix with AI prompt you can paste into any coding tool.

Run Audit