HTTP Status Codes: 404, 500, 503 Explained
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
| Range | Meaning | Examples |
|---|---|---|
| 1xx | Informational (rarely seen) | 100 Continue |
| 2xx | Success | 200 OK |
| 3xx | Redirection | 301, 302, 307 |
| 4xx | Client error (user’s fault) | 404 Not Found, 403 Forbidden |
| 5xx | Server 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:
- Broken internal links → Update links
- Deleted pages with backlinks → 301 redirect to relevant page
- Mistyped URLs → 301 redirect to correct spelling
- 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
.htaccessfile - Plugin/theme conflicts (WordPress)
How to fix:
- Check server error logs (
/var/log/apache2/error.log) - Enable WordPress debug mode:
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); - Test with plugins disabled
- Increase PHP memory limit
- 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
| Code | Indexed? | Ranks? | Passes Link Equity? | Action Needed |
|---|---|---|---|---|
| 200 | Yes | Yes | Yes | None |
| 301 | Old: No New: Yes | New URL | Yes (about 90-99%) | Verify redirect target |
| 302 | Old: Yes New: Maybe | Old URL | No | Change to 301 if permanent |
| 404 | No | No | No | Fix or redirect if has backlinks |
| 410 | No | No | No | Appropriate for deleted content |
| 500 | No | No | No | Fix immediately |
| 503 | Retries | Temporarily | Paused | Fix quickly (hours, not days) |
Checking Status Codes
Browser Developer Tools
- Open Dev Tools (F12)
- Go to Network tab
- Reload page
- 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
- HTTP Status Code Checker
- Redirect Checker
- GTmetrix (shows all resource status codes)
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:
- Rename
/wp-content/plugins/to/wp-content/plugins-disabled/ - If site works, rename back and disable plugins one by one
- 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
Was this helpful?
Thanks for your feedback!
Have suggestions for improvement?
Tell us moreHelp 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