HTTP status codes? Here's a cheat sheet
Published on August 11, 2025 by Laurens Goethals

Whenever you visit a website or click on a link, there’s a whole conversation happening behind the scenes between your browser and the web server. That conversation includes something called HTTP status codes and knowing what they mean can help you make a diagnosis, so to speak.
Usually, everything goes smoothly (like a 200 OK), but sometimes things break (looking at you, 404 and 500). Whether you're a developer, website owner, or just someone who wants to understand what those error messages mean, this handy dandy cheat sheet is for you.
Let’s decode what HTTP status codes are, why they matter, and how to resolve the most common ones.
What are HTTP status codes?
HTTP status codes are 3-digit numbers that indicate the result of a request made by your browser to a server. They’re part of the HTTP protocol, which is the foundation of data communication on the web.
The codes are grouped by the first digit:
- 1xx: Informational
- 2xx: Success
- 3xx: Redirection
- 4xx: Client errors
- 5xx: Server errors
Let’s break it down.
1xx – Informational responses
These are pretty rare in the wild and mostly used behind the scenes.
100 (Continue)
The server received the request headers and the client should proceed to send the request body. You’ll rarely see this unless you're debugging something super low-level.
2xx – Success codes
These are your desirable scenarios, basically.
200 (OK)
Everything went fine. The request succeeded, and the content is being returned as expected. No fix needed here. This is the happy path.
201 (Created)
A new resource has been successfully created (e.g. after a POST request). Useful for API endpoints.
204 (No Content)
The request was successful, but there’s nothing to send back there, bucko. Usually encountered when updating or deleting something.
3xx – Redirection codes
These tell the browser that the requested content is somewhere else.
301 (Moved permanently)
The resource has been permanently moved to a new URL. Quick tip: If your page URL changes, set up a 301 redirect to retain SEO value.
302 (Found)
The resource is temporarily available at a different URL. Use with caution as it doesn’t pass link equity by Google like a 301 does.
307 (Temporary redirect)
Like 302, but ensures the HTTP method (like POST, for example) stays the same.
308 (Permanent redirect)
Like 301, but also ensures the request method remains unchanged.
4xx – Client errors
These are the “You messed up” messages, usually the fault of the browser or user.
400 (Bad request)
The server couldn’t understand the request due to invalid syntax. Here it would be a good idea to check for malformed URLs, missing headers, or corrupted cookies.
401 (Unauthorized)
Authentication required. You’re not logged in or don’t have permission. To fix this: just log in, dude.
403 (Forbidden)
You’re not allowed to access this resource, even if you’re authenticated. Check permissions or file access settings on your server.
404 (Not found)
The requested page doesn’t exist. Here, you can try:
- Double-checking the URL.
- Setting up redirects for moved content.
- Using a custom 404 page to guide lost visitors.
405 (Method not allowed)
The request method (e.g. POST, GET) is not supported by the resource. Fix tip: Check the HTTP methods supported by the route or API endpoint.
408 (Request timeout)
The server timed out waiting for the request. You might want to check your internet connection or server response time.
429 (Too many requests)
You’ve hit a rate limit. Slow down your requests or implement exponential backoff if you’re making API calls. Worst case scenario, you may be getting DDoS'd.
5xx – Server errors
These indicate the server messed up, not you. Phew!
500 (Internal server error)
The server encountered an unexpected condition that prevented it from fulfilling the request. This is kind of a catch-all error. Check server logs, plugins, misconfigurations, or failing scripts.
502 (Bad gateway)
One server acting as a gateway or proxy received an invalid response from an upstream server. Check your CDN, load balancer, or API gateway settings.
503 (Service unavailable)
The server is temporarily unavailable (e.g. overloaded or down for maintenance). Try again later, or check server status and resources.
504 (Gateway timeout)
A server acting as a gateway or proxy didn’t receive a timely response from the upstream server. Investigate network latency or slow backend services.
Why do these HTTP status codes matter?
Status codes are the first clue when diagnosing website issues. They can tell you things about:
- The user experience (nobody likes 404s)
- SEO (Google hates broken links and slow pages)
- API reliability
- Website health and uptime
If you're not keeping an eye on them, small problems can snowball into big ones.
Tools to help you catch errors
In practice, are you manually going to check every page errors? Nope. Ain't nobody got time for that. You'd be better off using a set-and-forget monitoring tool or something along those lines. I wonder, what could be a good example?
Lucky for you, you're already at the right place. Oh Dear is an all-in-one website monitoring tool that checks for:
- Broken links (with 404 detection)
- Uptime and downtime (500 errors, timeouts)
- SSL certificate issues
- Scheduled task failures
- SEO performance
- Redirects and slow responses
Our crawler goes through every single page of all your sites and flags anythings that returns 404, 500, or other problematic codes that need immediate attention.
That means you'll get a heads-up before any of your users (or Google) run into errors.
If you want that kind of peace of mind, Oh Dear offers a free 30-day trial. Don't even need to provide payment details. Try it out, fix what’s broken, and sleep better knowing your site’s status codes are playing nice.
In summary
HTTP status codes might seem technical at first glance, but they’re the backbone of every web interaction. Whether you’re debugging your site, optimizing SEO, or building APIs, knowing what these codes mean—and how to fix them—gives you a major edge.
Remember:
- 2xx = all good
- 3xx = redirection happening
- 4xx = something’s wrong on the client side
- 5xx = the server needs attention
And if you rather not fill your head with any of that, check out Oh Dear :)