Read more articles
Published September 21, 2025 · Updated September 28, 2026

HTTP status codes explained: a practical cheat sheet

HTTP status codes explained: what every 1xx–5xx response means, which errors hurt SEO and uptime, and how to monitor 4xx and 5xx issues before users do.

What are HTTP status codes?

HTTP status codes are the three-digit numbers a server sends back with every response to tell the client what happened: the request worked, the resource moved, the client made a mistake, or the server failed. They are defined in the HTTP standard (RFC 9110) and are the fastest way to understand why a page, API call or monitoring check behaved the way it did. This cheat sheet covers the codes you will actually meet in production, what they mean for SEO and uptime, and which ones deserve an alert.

The five classes of HTTP status codes

The first digit of a status code defines its class. Knowing the class tells you immediately whether you are looking at a success, a redirect, a client-side problem or a server-side failure.

1xx informational responses

1xx codes are interim responses sent before the final one. Browsers and HTTP libraries handle them automatically, so you rarely see them in logs or monitoring results.

100

Continue

The server has received the request headers and the client may send the request body. Used with the Expect: 100-continue header for large uploads.

101

Switching Protocols

The server agrees to switch protocols at the client's request, most commonly when upgrading a connection to WebSocket.

103

Early Hints

Early Hints: the server sends Link headers ahead of the final response so the browser can start preloading critical CSS, fonts or scripts.

2xx success responses

2xx codes mean the request was received, understood and accepted. For most pages and health-check endpoints, 200 is the response you expect – anything else deserves a second look.

200

OK

The request succeeded and the response body contains the requested resource. This is the normal response for pages and GET requests.

201

Created

The request succeeded and created a new resource, typically after a POST to an API. The Location header usually points to the new resource.

204

No Content

The request succeeded but there is no body to return. Common for DELETE requests and for APIs that only need to confirm an action.

206

Partial Content

The server is returning only part of the resource because the client sent a Range header. Used for video streaming and resumable downloads.

What to watch in 2xx responses

  • A 200 is not proof the page works: an error page served with 200 is a 'soft 404' in Google Search Console
  • Check that key pages return the expected content, not just a success code
  • Expect 201 or 204 from write endpoints; a 200 there can signal an API contract change
  • Watch for 206 only where you actually serve range requests

3xx redirection responses

3xx codes tell the client that the resource lives somewhere else or hasn't changed. Choosing the right redirect matters for SEO: Google treats permanent and temporary redirects differently when deciding which URL to index.

301

Moved Permanently

Moved Permanently. The resource has a new permanent URL. Use it for domain moves, HTTPS migrations and URL restructures. Clients may change POST to GET when following it.

302

Found

Found. The resource is temporarily at a different URL and the original should stay indexed. Use it for short-term moves such as maintenance pages.

304

Not Modified

Not Modified. The cached copy is still valid, so the server sends no body. A sign that conditional requests and caching headers are working.

307

Temporary Redirect

Temporary Redirect. Like 302, but the client must repeat the request with the same method and body – important for form posts and API calls.

308

Permanent Redirect

Permanent Redirect. Like 301, but the method and body must not change. The safe choice for permanently moving API endpoints.

How redirects affect SEO

  • Google treats 301 and 308 as a strong signal that the target URL should be indexed, and 302 and 307 as a weak signal (Google Search Central)
  • Google's crawlers follow up to 10 redirect hops by default – but every hop adds latency, so point links straight at the final URL
  • Redirect loops make a URL unreachable for users and crawlers alike
  • Use permanent redirects for permanent moves; a long-lived 302 sends mixed signals
  • After a migration, check that old URLs redirect instead of returning 404

4xx client error responses

4xx codes mean the server thinks the client made a mistake: a bad URL, missing credentials or too many requests. They are the errors users see most often, and a sudden spike usually points to a broken link, a deployment bug or an API change.

400

Bad Request

Bad Request. The server can't process the request because of malformed syntax, invalid JSON or missing parameters. Check client-side validation and API payloads.

401

Unauthorized

Unauthorized. Authentication is missing or invalid. Expected on protected endpoints; a spike may indicate expired tokens or credential-stuffing attempts.

403

Forbidden

Forbidden. The server understood the request but refuses it, even with valid credentials. Check roles, file permissions, firewall and CDN rules.

404

Not Found

Not Found. The server can't find the requested resource. Usually caused by deleted pages, typos or missing redirects.

410

Gone

Gone. The resource was removed on purpose and won't come back. Google handles 404 and 410 the same way: the URL is dropped from the index.

429

Too Many Requests

Too Many Requests. The client exceeded a rate limit. The Retry-After header tells it when to try again. Google treats 429 like a server error and slows crawling.

What to watch in 4xx responses

  • 404s on pages that used to work – usually a missing redirect after a release or migration
  • Rising 401/403 rates, which can signal expired credentials or misconfigured access rules
  • 400s after a deployment, often a sign of a changed API contract
  • 429s hitting legitimate users or Googlebot, which means your rate limits are too strict
  • Indexed URLs returning 4xx are removed from Google's index

5xx server error responses

5xx codes mean the request was valid but the server – or something behind it – failed. These are the errors that take a site down, so they should always trigger an alert.

500

Internal Server Error

Internal Server Error. An unexpected condition stopped the server from fulfilling the request – typically an unhandled exception, a failed database query or a bad configuration.

502

Bad Gateway

Bad Gateway. A proxy, load balancer or CDN got an invalid response from the upstream server. Check that the application behind it is running and reachable.

503

Service Unavailable

Service Unavailable. The server is temporarily unable to handle the request because of overload or maintenance. Send a Retry-After header during planned downtime.

504

Gateway Timeout

Gateway Timeout. A proxy or gateway didn't get a response from the upstream server in time. Look for slow queries, stuck workers or network problems.

What to watch in 5xx responses

  • Any 5xx on your homepage, login, checkout or health-check endpoint needs immediate attention
  • 502 and 504 usually point to infrastructure between the user and your app: proxies, load balancers, CDNs
  • 503 during traffic peaks is a capacity warning
  • Persistent 5xx errors make Google slow down crawling and eventually drop indexed URLs (Google Search Central)
  • Intermittent 5xx errors are easy to miss without continuous monitoring

How to monitor HTTP status codes

You can't watch server logs around the clock, so automate it: an uptime monitor requests your URLs at a fixed interval and alerts you as soon as a check fails. Start with the pages that make you money or matter to users, then add API and health-check endpoints. Our website monitoring guide explains how to choose what to monitor.

Monitor status codes with nanokoi.io

nanokoi.io uptime monitoring checks your URLs every 5 minutes on the Free plan, every minute on Starter and every 30 seconds on Professional, and alerts you by email, Slack or webhook when a check fails. It also monitors SSL certificates and DNS records, so you catch problems that cause errors before they reach users. See the plans and check intervals.

Best practices

  • Monitor critical pages and endpoints, not just the homepage
  • Alert on every 5xx and on 4xx responses from URLs that should always work
  • Route alerts to where your team works – for example a dedicated Slack channel (see our Slack webhook setup guide)
  • Re-check redirects after every migration or URL change
  • Serve helpful error pages with the correct status code, never an error page with 200

Common status code scenarios

Status codes rarely appear alone. These are patterns you'll recognize in production, with the codes to look for and where to start fixing.

1

Checkout fails under load

Customers get an error when they try to complete a purchase.

Status codes:

500, 502, 503

Impact:

Lost orders and abandoned carts

Where to start:

Check application logs, database connections, payment gateway status and server capacity

2

Mobile app can't load content

App users suddenly see empty screens or error messages.

Status codes:

429, 401

Impact:

Frustrated users and failed sessions

Where to start:

Review API rate limits, token expiry and client retry logic

3

Traffic drops after a redesign

Old URLs return errors instead of pointing to their new location.

Status codes:

404, 301

Impact:

Lost search rankings and broken backlinks

Where to start:

Map every old URL to a 301 or 308 redirect, update the sitemap and fix internal links

4

Images and CSS missing for some users

Pages load without styling or images in certain regions.

Status codes:

403, 404, 502

Impact:

A broken-looking site and a poor user experience

Where to start:

Check CDN configuration, origin connectivity, access rules and cache settings

How to troubleshoot an HTTP error

When an alert fires, work through the problem in a fixed order. It saves time and stops you from fixing symptoms instead of causes.

  1. 1

    Assess scope and impact

    Which URLs are affected, since when, and for whom? A single endpoint and a whole domain are very different incidents.

  2. 2

    Reproduce the request

    Repeat the request with curl or your browser's developer tools. Check the URL, method, headers and body for typos or missing parameters.

  3. 3

    Test from another network

    Request the same URL from a different location or network to rule out local issues, and compare the CDN response with the origin server's.

  4. 4

    Check dependencies

    For 5xx errors, verify databases, backend services, third-party APIs and server resources such as CPU, memory and disk.

  5. 5

    Review recent changes

    Most incidents follow a deployment, a configuration change or an expired certificate or domain. Check your change log first.

  6. 6

    Prevent a repeat

    Once it's fixed, add a monitor for the affected URL and document what happened so the next incident is faster to resolve.

nanokoi.io uptime monitoring dashboard
Uptime checks show when a URL stops responding correctly

HTTP status codes FAQ

What is the difference between 4xx and 5xx status codes?

4xx codes mean the server believes the client made an error, such as requesting a missing page or sending invalid credentials. 5xx codes mean the request was valid but the server failed to handle it.

Should I use a 301 or a 302 redirect?

Use 301 (or 308) when a page has moved for good – Google treats it as a strong signal to index the new URL. Use 302 (or 307) only for temporary moves where the original URL should stay indexed.

What is the difference between 404 and 410?

404 says the resource wasn't found; 410 says it was removed on purpose and won't return. Google treats both the same way and removes the URL from its index.

Which HTTP status codes should trigger an alert?

Every 5xx response, plus 4xx responses from URLs that should always work – such as your homepage, login, checkout and health-check endpoints. Unexpected redirects on those URLs are worth an alert too.

Catch HTTP errors before your users do

Monitor your key URLs with nanokoi.io and get alerted by email, Slack or webhook when a check fails. The Free plan covers up to 5 URLs with 5-minute checks.

Start monitoring for free

No credit card required

HTTP status codes explained: a practical cheat sheet