Skip to main content

HTTP Status Codes: 404, 500, 503 Explained

10 min read

10 min read

HTTP Status Codes: 404, 500, 503 Explained

Reading time: 10 minutes

Quick Definition: HTTP status codes are three-digit responses your server sends to browsers and search engines. Think of them as your server’s way of saying “OK, here’s the page” (200), “It moved” (301), “Not found” (404), or “I’m broken” (500).

Why they matter for SEO: Wrong status codes confuse search engines, waste crawl budget, and tank your rankings.

TLDR

HTTP status codes tell search engines how to handle your pages. Use 200 for normal pages, 301 for permanent redirects, and 404 for missing content. Common mistakes: using 302 instead of 301 for permanent moves, returning 200 for pages that should be 404, and ignoring 500 server errors. Fix 500 errors immediately. persistent server errors cause deindexing. For site maintenance, use 503 with Retry-After header so Google knows to check back later.


The 5 Categories

RangeMeaningExamples
1xxInformational (rarely seen)100 Continue
2xxSuccess200 OK
3xxRedirection301, 302, 307
4xxClient error (user’s fault)404 Not Found, 403 Forbidden
5xxServer error (your fault)500 Internal Server Error, 503 Service Unavailable

2xx: Success Codes

200 OK (Success)

Meaning: “Everything’s good. Here’s the page you requested.”

SEO impact:

  • Page can be indexed
  • Page can rank
  • No action needed

When you’ll see it:

  • Normal page loads
  • Successful API requests
  • Working images, CSS, JavaScript

What to check:

curl -I https://example.com
# Output: HTTP/1.1 200 OK

3xx: Redirection Codes

301 Moved Permanently

Meaning: “This page moved forever. Update your bookmarks.”

SEO impact:

  • Passes 90-99% of link equity to new URL
  • Old URL disappears from search results
  • New URL gets indexed

When to use:

  • Site migrations
  • URL structure changes
  • HTTP → HTTPS
  • www → non-www (or vice versa)

Example:

Old: http://example.com/old-page
New: https://example.com/new-page
Status: 301 Moved Permanently

More details: 301 vs 302 Redirects

302 Found (Temporary Redirect)

Meaning: “This page moved temporarily. The old URL will be back.”

SEO impact:

  • Passes little to no link equity
  • Old URL stays in search results
  • New URL may not get indexed

When to use:

  • A/B testing
  • Seasonal content
  • Maintenance pages

Common mistake: Using 302 for permanent moves. Always use 301 unless the redirect is truly temporary.

307 Temporary Redirect (HTTP/1.1)

Meaning: Same as 302, but preserves HTTP method (POST, GET, etc.)

When to use: Redirecting POST requests (like form submissions)

308 Permanent Redirect (HTTP/1.1)

Meaning: Same as 301, but preserves HTTP method

When to use: Modern replacement for 301 in HTTP/2+ environments


4xx: Client Error Codes

404 Not Found

Meaning: “That page doesn’t exist. Are you sure you typed it right?”

SEO impact:

  • Page won’t be indexed
  • Wastes crawl budget if linked internally
  • Loses link equity from external backlinks

When it’s normal:

  • User typed a wrong URL
  • Page was legitimately deleted

When it’s a problem:

  • Internal links pointing to 404s
  • Important pages returning 404
  • External backlinks going to 404s

How to find 404s:

  • Google Search Console → Coverage → Errors
  • Screaming Frog SEO Spider
  • Check server logs

How to fix:

  1. Broken internal links → Update links
  2. Deleted pages with backlinks → 301 redirect to relevant page
  3. Mistyped URLs → 301 redirect to correct spelling
  4. Legitimately gone content → Leave as 404 (don’t redirect everything to homepage)

Soft 404 (Fake 404)

Problem: Page doesn’t exist, but server returns 200 OK instead of 404.

Example:

GET /this-doesnt-exist
Response: 200 OK
Body: "Sorry, page not found"

SEO impact:

  • Google thinks it’s a real page
  • Wastes crawl budget
  • Can be flagged as thin content

How to fix: Return proper 404 status code:

// PHP
header("HTTP/1.1 404 Not Found");

// Node.js
res.status(404).send('Not Found');

// Apache .htaccess
ErrorDocument 404 /404.html

403 Forbidden

Meaning: “This page exists, but you don’t have permission to view it.”

SEO impact:

  • Page won’t be indexed
  • If accidentally applied to public pages, they’ll disappear from search

When it’s correct:

  • Password-protected pages
  • Admin areas
  • Members-only content

When it’s a problem:

  • Public pages returning 403 (check server permissions)
  • Googlebot blocked by firewall/security plugin

How to check:

curl -I https://example.com/admin
# Output: HTTP/1.1 403 Forbidden

410 Gone (Permanent Deletion)

Meaning: “This page used to exist, but it’s gone forever. Stop asking.”

SEO impact:

  • Faster removal from search results than 404
  • Tells Google “don’t waste time rechecking this URL”

When to use:

  • Discontinued products with no replacement
  • Removed content you’ll never bring back
  • Expired promotions

404 vs 410:

  • 404: “Maybe it’ll come back someday” (Google rechecks periodically)
  • 410: “It’s gone forever” (Google stops checking faster)

5xx: Server Error Codes

500 Internal Server Error

Meaning: “Something broke on our end. We don’t know what.”

SEO impact:

  • Page won’t be indexed
  • If persistent, page gets removed from search results
  • Wastes crawl budget
  • Signals poor site quality to Google

Common causes:

  • PHP errors (syntax, memory limit)
  • Database connection issues
  • Corrupted .htaccess file
  • Plugin/theme conflicts (WordPress)

How to fix:

  1. Check server error logs (/var/log/apache2/error.log)
  2. Enable WordPress debug mode:
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
  3. Test with plugins disabled
  4. Increase PHP memory limit
  5. Contact hosting support

502 Bad Gateway

Meaning: “The server got an invalid response from another server.”

SEO impact: Same as 500

Common causes:

  • Nginx can’t reach PHP-FPM
  • Overloaded server
  • Firewall blocking connections

How to fix:

  • Restart PHP-FPM/Nginx
  • Check server load (might need to upgrade hosting)
  • Review firewall rules

503 Service Unavailable

Meaning: “The server is temporarily down. Try again later.”

SEO impact:

  • Google will retry later
  • If persistent for days, page may be removed from search

When it’s normal:

  • Scheduled maintenance (show maintenance page with 503)
  • Server being updated

When it’s a problem:

  • Site down unexpectedly
  • Overloaded server can’t handle traffic

How to fix:

  • Check server status with hosting provider
  • Enable maintenance mode properly
  • Upgrade hosting if traffic exceeds capacity

Maintenance mode example:

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Retry-After: 3600'); // 1 hour
echo "We're performing scheduled maintenance. Back in 1 hour.";
?>

504 Gateway Timeout

Meaning: “The server took too long to respond.”

SEO impact: Same as 500

Common causes:

  • Slow database queries
  • External API timeouts
  • Overloaded server

How to fix:

  • Optimize database queries
  • Increase PHP max_execution_time
  • Add caching
  • Upgrade server resources

How Status Codes Affect SEO

CodeIndexed?Ranks?Passes Link Equity?Action Needed
200YesYesYesNone
301Old: No
New: Yes
New URLYes (about 90-99%)Verify redirect target
302Old: Yes
New: Maybe
Old URLNoChange to 301 if permanent
404NoNoNoFix or redirect if has backlinks
410NoNoNoAppropriate for deleted content
500NoNoNoFix immediately
503RetriesTemporarilyPausedFix quickly (hours, not days)

Checking Status Codes

Browser Developer Tools

  1. Open Dev Tools (F12)
  2. Go to Network tab
  3. Reload page
  4. Check Status column

Command Line (curl)

# Check status code
curl -I https://example.com

# Follow redirects
curl -L -I https://example.com

# Check multiple URLs
for url in url1 url2 url3; do
  curl -I -s $url | grep HTTP
done

Online Tools

Bulk Checking (SEO Tools)

  • Screaming Frog SEO Spider: Crawl entire site, filter by status code
  • Ahrefs Site Audit: Shows 404s, 500s, redirect chains
  • Google Search Console: Coverage report shows indexing issues

Common Scenarios

Scenario 1: Product Page Deleted

Bad approach:

Old product URL: 404 Not Found

Result: Lost link equity, poor user experience

Better approach:

Old product URL → 301 → Similar product or category page

Result: Preserves rankings, better UX


Scenario 2: Site Migration

Wrong:

oldsite.com/page → 302 → newsite.com/page

Result: Old URLs stay in search results

Right:

oldsite.com/page → 301 → newsite.com/page

Result: New URLs replace old in search results


Scenario 3: Maintenance Mode

Wrong:

example.com → 404 Not Found (site offline)

Result: Google thinks site is broken, may deindex

Right:

example.com → 503 Service Unavailable
Retry-After: 3600

Result: Google knows it’s temporary, will retry


Scenario 4: Plugin Conflict (WordPress)

Symptom: Random 500 errors on admin pages

Diagnosis:

  1. Rename /wp-content/plugins/ to /wp-content/plugins-disabled/
  2. If site works, rename back and disable plugins one by one
  3. Identify conflicting plugin

Fix: Update or replace problematic plugin


What Surmado Checks

Surmado Scan looks for:

  • 404 errors on internal links
  • 500/503 errors (server issues)
  • Redirect chains (multiple 301s in a row)
  • 302 redirects that should be 301s
  • Soft 404s (200 status on “not found” pages)

Quick Reference

Good for SEO:

  • 200 OK
  • 301 (for permanent moves)
  • 410 (for deleted content)

Needs attention:

  • 302 (change to 301 if permanent)
  • 404 (fix internal links, redirect if has backlinks)

Fix immediately:

  • 500 (server errors)
  • 503 (should resolve within hours)
  • Soft 404s (return proper 404)

Related: 301 vs 302 Redirects | Crawl Budget | Robots.txt Essentials

Help Us Improve This Article

Know a better way to explain this? Have a real-world example or tip to share?

Contribute and earn credits:

  • Submit: Get $25 credit (Signal, Scan, or Solutions)
  • If accepted: Get an additional $25 credit ($50 total)
  • Plus: Byline credit on this article
Contribute to This Article