HTTP status codes explained: 200, 301, 404, 403, and 500

Reading time approx. 11 minutes

When you visit a website, your browser communicates in the background with a web server. Among other things, the server responds to the request with an HTTP status code.

These status codes indicate whether a request was successfully processed, whether a redirection is occurring, whether the requested resource was not found, or whether another error has occurred.

One of the most important status codes for website operators include 200, 301, 403, 404 and 500. If you know their meaning, you can categorize many website problems faster and search more specifically for the actual cause.

Briefly explained: An HTTP status code is a standardized response from the server to an HTTP request. The first digit already indicates which group the response belongs to: success, redirection, a problem with the request, or a server-side error.

What happens when you visit a website? #

For example, if you go to the following address:

https://example.com/kontakt

your browser sends an HTTP request to the responsible server.

Simplified, the process works like this:

Browser
   ↓
HTTP Request
   ↓
Web server
   ↓
HTTP Response
   ↓
Status code + additional information + content if applicable
   ↓
Browser

If everything works, the browser receives the status code, for example:

200 OK

If the page has been permanently moved, you can instead 301 Moved Permanently be returned. If it does not exist, the answer 404 Not Found loud.

HTTP status code and visible webpage are not the same #

A status code is technical information within the HTTP response. Visitors normally do not just see the number. 200, 404 or 500.

The server can additionally deliver an HTML page that the browser renders.

Therefore, for example, a custom error page can appear while the server technically returns the status code 404 returns.

Therefore, for a reliable diagnosis, you should not judge solely by how a page looks.

The five classes of HTTP status codes #

HTTP status codes consist of three digits. The first digit assigns the response to a specific class.

AreaMeaningSimplified
1xxInformationalInformation regarding the ongoing request
2xxSuccessfulRequest successful
3xxRedirectionFurther action or redirection
4xxClient ErrorRequest cannot be fulfilled this way
5xxServer ErrorServer could not successfully process a fundamentally valid request

For the normal operation of a website, you particularly often encounter codes from the fields of 2xx, 3xx, 4xx and 5xx.

200 OK – Request successful #

200 OK belongs to the class of successful HTTP responses.

In the case of a normal page request, this simply means that the request was processed successfully and the requested resource can be delivered.

Browser
   ↓
GET /kontakt/
   ↓
Server
   ↓
200 OK
   ↓
Contact page is served

For a regularly accessible HTML page is 200 OK therefore a typical status code.

200 does not automatically mean that everything is correct in terms of content. #

The status code 200 indicates that the HTTP request was successfully processed. However, it does not evaluate the content quality of the delivered page.

For example, a page can technically be equipped with 200 OK respond and still contain incorrect text, a broken form, or outdated information.

Even a misconfigured error page may visually display „Page not found“ under certain circumstances, even though the server 200 OK returns. This is often referred to as a soft 404 situation.

301 Moved Permanently – permanently redirected #

The status code 301 Moved Permanently belongs to the group of 3xx-Answers.

It signals that the requested resource is permanently available at a different URL.

Example:

https://example.com/alte-seite/
        ↓
301 Moved Permanently
        ↓
https://example.com/neue-seite/

The browser can then automatically open the new address.

A 301 redirect is useful, for example, when the URL of a page has changed permanently.

We explain the practical setup at Set up a 301 redirect: Permanently redirect URLs.

301 is not the only redirection status #

Next to 301 there are further HTTP status codes for redirections.

Important examples are:

301 → permanent
302 → temporary
307 → temporary, method is preserved
308 → permanent, method is preserved

We explain the differences in detail at 301, 302, 307 and 308: HTTP redirects simply explained.

403 Forbidden – Access Denied #

403 Forbidden belongs to the group of 4xx-Status codes.

The server has received and understood the request, but refuses to authorize access to the requested resource.

Simplified:

Browser requests resource
↓
Server understands the request
↓
Access is not allowed
↓
403 Forbidden

A 403 error is therefore significantly different from a 404 error.

Do not confuse 403 and 404 #

Although the two status codes belong to the same 4xx-Class, but describing different situations.

403 Forbidden
→ Access to the resource is denied

404 Not Found
→ Resource was not found under this URL

This distinction is important during troubleshooting because the potential causes and solutions are different.

What can cause a 403 error? #

A 403 status can have various causes. Which one applies depends on the respective website and server configuration.

Possible causes include access restrictions, certain security rules, or inappropriate permissions.

Also rules in a configuration file like .htaccess can play a role with appropriately configured web servers.

Important: Do not change file permissions or security rules haphazardly just to make a 403 error go away. First, you should determine why access is being denied.

404 Not Found – Resource not found #

404 Not Found is one of the best-known HTTP status codes.

It means that the requested resource was not found at the URL called.

Example:

https://example.com/nicht-vorhandene-seite/
        ↓
404 Not Found

Typical causes are deleted pages, changed URLs, broken internal links, or typos in an address.

We explain how to correctly assess and handle such errors at Find and fix 404 errors.

A 404 status can be completely correct #

If a resource actually does not exist, a corresponding 404- Answer not automatically a technical defect.

The internet contains an infinite number of conceivable URLs that have never existed on your website.

For example, if someone accesses the following fictional address:

https://example.com/gibt-es-nicht-12345

Is it fundamentally sensible for the server to communicate that this resource was not found?.

A 404 error becomes problematic in particular when an important resource should actually be available or an internal link accidentally points to a URL that no longer exists.

500 Internal Server Error – Internal Server Error #

500 Internal Server Error belongs to the class of 5xx-Status codes.

The status code indicates that the server encountered an unexpected condition or error while processing the request and therefore could not successfully complete the request.

Browser
   ↓
HTTP request
   ↓
Server
   ↓
Error during processing
   ↓
500 Internal Server Error

Unlike 404 Isn't the problem here simply that a specific URL was not found?.

What can cause a 500 error? #

A 500 error is a general server-side error status and does not reveal the exact cause on its own.

For a website, for example, faulty application code, problematic configuration rules, or other server-side processing errors may be involved.

For PHP-based websites, for example, an error within an application, a plugin, a theme, or a custom script can play a role.

Even a faulty configuration instruction can trigger a 500 status under certain conditions.

Important: 500 Internal Server Error is an error category and not a complete diagnosis. To determine the actual cause, further information such as error logs and the most recent changes must be investigated.

What to do in case of a 500 error? #

First, check whether the error affects only a single URL or the entire website.

Then consider whether any changes were made immediately prior.

These can include changes to:

Plugins
Themes
PHP code
Configuration files
PHP version
Files
Website application

to be.

If the error occurred directly after a specific change, this information is particularly valuable for troubleshooting.

Error logs instead of blind trial and error #

In the event of server-side errors, you should consult existing error logs or log files whenever possible.

A log entry can provide much more specific clues about the cause than the general message 500 Internal Server Error.

Do not change multiple settings at once on a hunch. This often makes it harder to trace which change actually caused or fixed the problem.

500 doesn't automatically mean the whole server is down #

A 500 error can also affect only a specific website, application, or individual function.

For example, if a faulty script is only executed on a specific page, other areas can continue to function.

Therefore, you should first check how large the actually affected area is.

What is the difference between 4xx and 5xx? #

The distinction helps in the initial classification of a problem.

status classMeaningExamples
4xxThe request cannot be fulfilled in its present form403, 404
5xxThe server could not successfully process a fundamentally valid request500, 502, 503, 504

The status class thus provides an initial direction for troubleshooting, but does not replace a concrete diagnosis.

Other common 2xx status codes #

Next to 200 OK are there other successful status codes.

For example, means 201 Created, that a request was successful and a new resource was created in the process.

204 No Content means that the request was successfully processed, but no message content is returned.

Website operators encounter such codes less frequently when simply accessing an HTML page, but they play a role, for example, in web applications and APIs.

Other common 4xx status codes #

Besides 403 and 404, other status codes in this class exist.

Some examples:

400 Bad Request
→ Request is malformed or cannot be processed

401 Unauthorized
→ Authentication is required or missing

403 Forbidden
→ Access is denied

404 Not Found
→ Resource not found

429 Too Many Requests
→ Too many requests in a given time frame

The exact interpretation should always be made in the context of the respective application.

401 and 403 are not the same #

The terms can lead to confusion in everyday life.

401 Unauthorized is used when valid authentication is required for access.

403 Forbidden means, on the other hand, that the server understands the request but denies access.

Therefore, the two status codes should not simply be used synonymously.

Other common 5xx status codes #

There are also several important status codes in the area of server errors.

500 Internal Server Error
→ general internal server error

502 Bad Gateway
→ invalid response from an upstream server

503 Service Unavailable
→ service currently unavailable

504 Gateway Timeout
→ upstream server did not respond in time

Especially for websites with reverse proxies, multiple server services, or external components, distinguishing these codes can be helpful in diagnosis.

503 Service Unavailable #

503 Service Unavailable means that the server or service is currently unable to process the request.

This may be related to a temporary overload or maintenance, for example.

A 503 status thus describes a different situation than a general 500 Internal Server Error.

502 Bad Gateway and 504 Gateway Timeout #

These status codes frequently occur in architectures where a server or gateway communicates with another service.

502 Bad Gateway indicates that an invalid response was received in the process.

504 Gateway Timeout means, on the other hand, that a required response did not arrive in time.

For website operators, this distinction is helpful because not every 5xx-error has the same cause.

HTTP Status Codes and SEO #

HTTP status codes also help search engines understand what is happening with a URL.

Some simplified examples:

200
→ Resource successfully reachable

301
→ Resource permanently moved

404
→ Resource not found under this URL

5xx
→ Server-side issue during retrieval

Therefore, it is important that the technical status matches the actual situation of the URL as closely as possible.

An error page with 200 OK can be problematic #

Assuming a URL does not exist. However, instead of a 404 status, the server returns an error page with:

200 OK

Technically, the server is thereby communicating that the request was successful, even though the requested content is not present.

Such a constellation can unnecessarily confuse search engines and diagnostic tools.

Therefore, a truly non-existent resource should not be simulated solely through the design of an error page.

A redirection is not the same as an error page #

During a redirection, the client receives a 3xxstatus and a new destination address.

A 404 error, on the other hand, indicates that the resource was not found.

301
old URL
   ↓
new URL

404
requested URL
   ↓
resource not found

Which answer is correct depends on what actually happened to the original resource.

How can I check the HTTP status code of a URL? #

For a technical check, you can use the developer tools of a modern browser, for example.

Open the network view there and then load the URL in question.

You can then inspect the individual HTTP requests and their status codes.

Depending on the browser, for example, values such as 200, 301, 404 or 500 displayed directly in the overview.

How to properly check browser redirects #

During a redirection, the address bar normally already shows the new destination address after the process.

However, that does not necessarily show you which status code was used for the previous step.

In the network view, on the other hand, you can examine the redirect chain.

GET /old-url/
301

GET /new-url/
200

This shows that the old URL with 301 forwarded and the new destination subsequently with successfully 200 was delivered.

Multiple status codes can belong to a single page view #

A modern website usually consists of more than just the HTML document.

The browser also loads, for example, images, stylesheets, JavaScript files, and other resources.

Therefore, numerous HTTP requests with different status codes can appear in the network view during a single page load.

If you want to examine a specific page URL, make sure that you are actually evaluating the response for the corresponding document and not accidentally just an image or script file.

Check status code first, then look for the cause #

If a website is not working, it is worth first determining what kind of problem actually exists.

Page not working as expected
        ↓
Check HTTP status
        ↓
200? → Inspect content/function in detail
301? → Check redirect target
403? → Check access/permissions/security rule
404? → Check URL/resource
500? → Investigate server-side error

This initial classification can prevent you from looking for the cause in the wrong place.

Do not change multiple settings at the same time #

When an error occurs, you should not indiscriminately change DNS, PHP, file permissions, redirects, and other settings all at once.

First, determine which status code is present and which layer is likely affected.

Also consider what change was made immediately before the problem occurred.

Practical Tip: Good troubleshooting starts with observation and narrowing down. Only after that should a specific setting be changed.

HTTP Status Codes During a Website Relaunch #

Following a relaunch, the status codes in particular 200, 301 and 404 Interesting.

Important new URLs should be successfully reachable. Old URLs with a clear new successor should be redirected correctly. Non-existent URLs without a sensible replacement, on the other hand, can continue to return an appropriate error status.

A simplified relaunch check looks like this, for example:

New important URL
→ 200

Old URL with successor
→ 301 → new URL → 200

Non-existent URL without successor
→ 404

Status Codes and Website Monitoring #

Monitoring systems can also use HTTP status codes to check the availability of a website.

If one normally with 200 the responding side suddenly returns an error status, this can indicate a problem.

Therefore, a mere HTTP response does not necessarily mean that a website is functioning completely correctly. What is also crucial is which status is returned and what behavior is expected for the monitored URL.

We will cover this topic in detail later under Website Monitoring: Monitor Availability and Outages.

An overview of the most important status codes #

CodeNameMeaning
200OKRequest successful
301Moved PermanentlyResource permanently moved
302FoundTemporary redirection
307Temporary RedirectTemporary redirect upon receipt of method
308Permanent RedirectPermanent redirect upon receipt of the method
400Bad RequestRequest cannot be processed correctly
401UnauthorizedAuthentication required
403ForbiddenAccess denied
404Not FoundResource not found
429Too Many RequestsToo many requests
500Internal Server ErrorGeneral internal server error
502Bad GatewayInvalid response from an upstream service
503Service UnavailableService currently unavailable
504Gateway TimeoutResponse from an upstream service not received in time

Summary #

HTTP status codes are standardized responses from a server to HTTP requests. They help browsers, search engines, monitoring systems, and website operators understand what happened with a request.

200 OK stands for a successful request. 301 Moved Permanently indicates a permanent redirect. 403 Forbidden means access is denied. 404 Not Found indicates that a resource was not found at the requested URL. 500 Internal Server Error indicates a server-side error during processing.

The first digit of a status code already provides an important orientation: 2xx stands for successful answers, 3xx for redirects, 4xx for problems in fulfilling a request and 5xx for server-side errors.

Therefore, when troubleshooting, you should first check the actual HTTP status and only then investigate the potential cause.

The status code doesn't solve a problem—but it often shows you in which direction you should look for the cause.

Last updated August 30, 2026
Was this article helpful?
Cookie Consent with Real Cookie Banner