{"id":7215,"date":"2026-07-15T10:05:44","date_gmt":"2026-07-15T10:05:44","guid":{"rendered":"https:\/\/checksitestatus.com\/?p=7215"},"modified":"2026-07-15T10:07:17","modified_gmt":"2026-07-15T10:07:17","slug":"http-status-codes-explained","status":"publish","type":"post","link":"https:\/\/checksitestatus.com\/fr\/http-status-codes-explained\/","title":{"rendered":"HTTP Status Codes Explained (Full List + What Each One Means)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"7215\" class=\"elementor elementor-7215\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ca3f638 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ca3f638\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-da6df75\" data-id=\"da6df75\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cf283c5 elementor-widget elementor-widget-text-editor\" data-id=\"cf283c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"11:1-11:390;517-906\">Every time a browser or an app requests a web page, image, or API endpoint, the server sends back a three-digit status code along with the response. Most people never see these codes because everything works and the page just loads. You only notice them when something breaks, and by then you&#8217;re staring at a number like 502 or 429 with no idea what it means or whose problem it is to fix.<br \/><br \/><\/p><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"13:1-13:140;908-1047\">This is the full reference, organized by category, with plain explanations of what each code actually indicates and what usually causes it.<br \/><br \/><\/p><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"15:1-15:34;1049-1082\"><strong>How the numbering system works<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"17:1-17:210;1084-1293\">HTTP status codes are grouped into five classes based on the first digit. Once you know the class, you already know roughly what kind of response you&#8217;re dealing with, even before you look up the specific code.<br \/><br \/><\/p><ul class=\"[li_&amp;]:mb-0 [li_&amp;]:mt-1 [li_&amp;]:gap-1 [&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3\" data-sourcepos=\"19:1-23:86;1295-1813\"><li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"19:1-19:96;1295-1390\"><strong>1xx (Informational):<\/strong> The request was received, and the server is continuing to process it.<\/li><li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"20:1-20:87;1391-1477\"><strong>2xx (Success):<\/strong> The request was received, understood, and processed successfully.<\/li><li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"21:1-21:111;1478-1588\"><strong>3xx (Redirection):<\/strong> Further action is needed to complete the request, usually because the resource moved.<\/li><li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"22:1-22:139;1589-1727\"><strong>4xx (Client Error):<\/strong> Something about the request itself was wrong, whether that&#8217;s a bad URL, missing authentication, or invalid data.<\/li><li class=\"font-claude-response-body whitespace-normal break-words pl-2\" data-sourcepos=\"23:1-23:86;1728-1813\"><strong>5xx (Server Error):<\/strong> The request was valid, but the server failed to fulfill it.<br \/><br \/><\/li><\/ul><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"25:1-25:279;1815-2093\">That last distinction matters more than people realize. A 4xx code means you (or whatever client sent the request) need to change something. A 5xx code means the problem is on the server, and there&#8217;s nothing you can do from the client side except wait or contact the site owner.<br \/><br \/><\/p><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"27:1-27:32;2095-2126\"><strong>1xx: Informational responses<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"29:1-29:107;2128-2234\">These codes rarely show up in a browser because they&#8217;re intermediate responses, sent before the final one.<\/p><div class=\"overflow-x-auto w-full px-2 mb-6\" data-sourcepos=\"31:1-36:119;2236-2838\"><table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\"><thead class=\"text-left\"><tr><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Code<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Name<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it means<\/th><\/tr><\/thead><tbody><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">100<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Continue<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server received the initial part of the request, and the client should continue sending the rest.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">101<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Switching Protocols<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server is switching to a different protocol as requested by the client, commonly used when upgrading to WebSockets.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">102<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Processing<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server accepted the request, but processing will take a while, so it sends this to prevent the client from timing out.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">103<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Early Hints<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server sends preliminary headers, like resource hints, before the final response is ready.<\/td><\/tr><\/tbody><\/table><\/div><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"38:1-38:26;2840-2865\"><br \/><strong>2xx: Success responses<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"40:1-40:147;2867-3013\">Everything worked as expected. These are the codes you want to see, even though you rarely see them directly since they don&#8217;t produce error pages.<\/p><div class=\"overflow-x-auto w-full px-2 mb-6\" data-sourcepos=\"42:1-50:164;3015-3932\"><table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\"><thead class=\"text-left\"><tr><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Code<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Name<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it means<\/th><\/tr><\/thead><tbody><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">200<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">OK<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request succeeded and the server returned the expected data.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">201<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Created<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request succeeded and a new resource was created as a result, common after a POST request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">202<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Accepted<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request was accepted for processing, but that processing isn&#8217;t finished yet.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">203<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Non-Authoritative Information<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request succeeded, but the returned data came from a copy or transformation rather than the origin server.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">204<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">No Content<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request succeeded but there&#8217;s no content to send back, often used after a delete or update action.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">205<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Reset Content<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request succeeded and the client should reset the view that submitted the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">206<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Partial Content<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server is delivering only part of the resource, typically in response to a range request used for streaming or resumable downloads.<\/td><\/tr><\/tbody><\/table><\/div><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"52:1-52:30;3934-3963\"><br \/><strong>3xx: Redirection responses<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"54:1-54:76;3965-4040\">These tell the client that the resource has moved and where to find it now.<\/p><div class=\"overflow-x-auto w-full px-2 mb-6\" data-sourcepos=\"56:1-64:121;4042-5037\"><table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\"><thead class=\"text-left\"><tr><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Code<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Name<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it means<\/th><\/tr><\/thead><tbody><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">300<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Multiple Choices<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request has more than one possible response, and the client needs to pick one. Rarely used in practice.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">301<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Moved Permanently<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The resource has permanently moved to a new URL, and future requests should use the new address.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">302<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Found<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The resource temporarily lives at a different URL, but the original address remains valid for future requests.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">303<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">See Other<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The response to the request can be found at a different URL using a GET request, common after form submissions.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">304<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Not Modified<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The cached version of the resource is still valid, so the server tells the browser to use it instead of sending the full response again.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">307<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Temporary Redirect<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Similar to 302, but guarantees the request method and body stay the same on the redirect.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">308<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Permanent Redirect<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Similar to 301, but guarantees the request method and body stay the same on the redirect.<\/td><\/tr><\/tbody><\/table><\/div><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"66:1-66:247;5039-5285\">301 and 302 cause the most confusion for site owners, mainly because search engines treat them differently. A 301 passes ranking signals to the new URL. A 302 tells search engines the move is temporary, so they keep indexing the original address.<br \/><br \/><\/p><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"68:1-68:31;5287-5317\"><strong>4xx: Client error responses<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"70:1-70:161;5319-5479\">Something about the request was invalid, unauthorized, or pointed at something that doesn&#8217;t exist. This is the largest and most frequently encountered category.<\/p><div class=\"overflow-x-auto w-full px-2 mb-6\" data-sourcepos=\"72:1-99:132;5481-8386\"><table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\"><thead class=\"text-left\"><tr><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Code<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Name<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it means<\/th><\/tr><\/thead><tbody><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">400<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Bad Request<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server couldn&#8217;t understand the request due to malformed syntax or invalid data.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">401<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Unauthorized<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request lacks valid authentication credentials for the resource.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">402<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Payment Required<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Reserved for future use, occasionally used by APIs to indicate a billing issue.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">403<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Forbidden<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server understood the request but refuses to authorize it, even if the client is authenticated.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">404<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Not Found<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server can&#8217;t find the requested resource, usually because the URL is wrong or the page was removed.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">405<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Method Not Allowed<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request method isn&#8217;t supported for this particular resource.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">406<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Not Acceptable<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server can&#8217;t produce a response matching the content types the client will accept.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">407<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Proxy Authentication Required<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The client needs to authenticate with a proxy before the request can proceed.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">408<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Request Timeout<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server timed out waiting for the client to finish sending the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">409<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Conflict<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request conflicts with the current state of the resource, common in concurrent editing scenarios.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">410<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Gone<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The resource used to exist but has been permanently removed, with no forwarding address.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">411<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Length Required<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server requires a Content-Length header that the request didn&#8217;t include.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">412<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Precondition Failed<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">A condition specified in the request headers wasn&#8217;t met by the server.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">413<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Payload Too Large<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request body exceeds the size the server is willing to process.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">414<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">URI Too Long<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The requested URL is longer than the server can handle.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">415<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Unsupported Media Type<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request body is in a format the server doesn&#8217;t support.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">416<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Range Not Satisfiable<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The requested range for a partial download can&#8217;t be fulfilled.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">417<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Expectation Failed<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server can&#8217;t meet the requirements of the Expect header in the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">418<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">I&#8217;m a Teapot<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">An April Fools joke from an old IETF specification, occasionally implemented for humor or as an easter egg.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">422<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Unprocessable Entity<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request was well-formed but contains semantic errors, common in APIs validating form data.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">425<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Too Early<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server is unwilling to process a request that might be replayed.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">426<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Upgrade Required<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The client should switch to a different protocol to complete the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">428<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Precondition Required<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server requires the request to include conditional headers to avoid conflicting updates.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">429<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Too Many Requests<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The client has sent too many requests in a given period, triggering rate limiting.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">431<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Request Header Fields Too Large<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The request&#8217;s headers are too large for the server to process.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">451<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Unavailable For Legal Reasons<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The resource is unavailable due to a legal demand, such as a government takedown request.<\/td><\/tr><\/tbody><\/table><\/div><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"101:1-101:345;8388-8732\">404 is the code most people run into. If you&#8217;re seeing one and you&#8217;re not sure whether it&#8217;s a typo on your end or a real broken link, our guide on how to <a class=\"underline underline underline-offset-2 decoration-1 decoration-current\/40 hover:decoration-current focus:decoration-current\" href=\"https:\/\/checksitestatus.com\/is-it-down-right-now-website-down-or-not\/\">check if a website is down right now<\/a> covers how to tell the difference between a missing page and a site-wide outage.<br \/><br \/><\/p><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"103:1-103:31;8734-8764\"><strong>5xx: Server error responses<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"105:1-105:57;8766-8822\">The request was fine. The server is the one that failed.<\/p><div class=\"overflow-x-auto w-full px-2 mb-6\" data-sourcepos=\"107:1-119:137;8824-10109\"><table class=\"min-w-full border-collapse text-sm leading-[1.7] whitespace-normal\"><thead class=\"text-left\"><tr><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Code<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">Name<\/th><th class=\"text-text-100 border-b-0.5 border-[hsl(var(--border-300)\/0.6)] py-2 pr-4 align-top font-bold\" scope=\"col\">What it means<\/th><\/tr><\/thead><tbody><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">500<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Internal Server Error<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">A generic failure on the server with no more specific code available.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">501<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Not Implemented<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server doesn&#8217;t support the functionality required to fulfill the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">502<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Bad Gateway<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">A server acting as a gateway or proxy received an invalid response from an upstream server.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">503<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Service Unavailable<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server is temporarily unable to handle the request, often due to overload or maintenance.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">504<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Gateway Timeout<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">A gateway or proxy server didn&#8217;t get a response from the upstream server in time.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">505<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">HTTP Version Not Supported<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server doesn&#8217;t support the HTTP protocol version used in the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">506<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Variant Also Negotiates<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">An internal server configuration error related to content negotiation.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">507<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Insufficient Storage<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server can&#8217;t store the representation needed to complete the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">508<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Loop Detected<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The server detected an infinite loop while processing the request.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">510<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Not Extended<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Further extensions to the request are required for the server to fulfill it.<\/td><\/tr><tr><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">511<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">Network Authentication Required<\/td><td class=\"border-b-0.5 border-[hsl(var(--border-300)\/0.3)] py-2 pr-4 align-top\">The client needs to authenticate to gain network access, common on public Wi-Fi login pages.<\/td><\/tr><\/tbody><\/table><\/div><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"121:1-121:397;10111-10507\">502 and 504 are two of the most common errors site owners deal with, and they get confused with each other constantly even though the cause is different. We cover the difference in detail in our guides on <a class=\"underline underline underline-offset-2 decoration-1 decoration-current\/40 hover:decoration-current focus:decoration-current\" href=\"https:\/\/checksitestatus.com\/what-does-502-bad-gateway-mean\/\">what a 502 Bad Gateway actually means<\/a> and <a class=\"underline underline underline-offset-2 decoration-1 decoration-current\/40 hover:decoration-current focus:decoration-current\" href=\"https:\/\/checksitestatus.com\/504-gateway-timeout\/\">what causes a 504 Gateway Timeout<\/a>.<br \/><br \/><\/p><h2 class=\"text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold\" data-sourcepos=\"123:1-123:46;10509-10554\"><strong>Why status codes matter beyond error pages<\/strong><\/h2><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"125:1-125:393;10556-10948\">Status codes aren&#8217;t just diagnostic information for developers. Search engines read them to decide how to treat a page. A 404 tells Google the page is gone, so it eventually drops out of the index. A 301 tells Google to transfer ranking value to the new URL. A string of 500 or 503 errors during a crawl can hurt indexing if it happens repeatedly, since it signals the site may be unreliable.<br \/><br \/><\/p><p class=\"font-claude-response-body break-words whitespace-normal\" data-sourcepos=\"127:1-127:620;10950-11569\">If you&#8217;re running a site and want to know how often your server is throwing errors before it starts affecting your traffic or your visitors&#8217; experience, keeping an eye on <a class=\"underline underline underline-offset-2 decoration-1 decoration-current\/40 hover:decoration-current focus:decoration-current\" href=\"https:\/\/checksitestatus.com\/check-website-performance-and-response-online\/\">website performance and response times<\/a> is a good habit. Slow responses and error codes tend to show up together, so tracking one often catches the other early. It&#8217;s also worth understanding the basics of <a class=\"underline underline underline-offset-2 decoration-1 decoration-current\/40 hover:decoration-current focus:decoration-current\" href=\"https:\/\/checksitestatus.com\/website-monitoring-definition-benefits-and-types\/\">what website monitoring actually covers<\/a> if you&#8217;re setting this up for the first time.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c56d13c elementor-widget elementor-widget-accordion\" data-id=\"c56d13c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion\">\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2071\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"button\" aria-controls=\"elementor-tab-content-2071\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">What's the difference between a 4xx and a 5xx error?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2071\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"region\" aria-labelledby=\"elementor-tab-title-2071\"><p>A 4xx error means the problem is with the request itself, like a wrong URL, missing permissions, or bad data. A 5xx error means the request was fine but the server failed to process it. If you&#8217;re the visitor, a 4xx is usually something you can fix (check the URL), while a 5xx is entirely on the site owner&#8217;s end.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2072\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"button\" aria-controls=\"elementor-tab-content-2072\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Why do I see both 301 and 302 redirects, and does it matter which one a site uses?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2072\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"region\" aria-labelledby=\"elementor-tab-title-2072\"><p>Yes, it matters, mainly for SEO. A 301 tells browsers and search engines the move is permanent, so ranking signals transfer to the new URL. A 302 signals a temporary move, so the original URL stays indexed and keeps its ranking. Using the wrong one on a permanent page move can hurt search rankings.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2073\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"button\" aria-controls=\"elementor-tab-content-2073\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">What does a 403 error mean if I know I'm logged in?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2073\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"region\" aria-labelledby=\"elementor-tab-title-2073\"><p>A 403 means the server recognized your request but is specifically refusing to authorize it, which is different from not being logged in. It usually points to a permissions issue, a blocked IP address, a firewall rule, or a resource that&#8217;s restricted regardless of authentication status.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2074\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"button\" aria-controls=\"elementor-tab-content-2074\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">Is 429 my fault or the website's fault?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2074\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"region\" aria-labelledby=\"elementor-tab-title-2074\"><p>It&#8217;s a bit of both. A 429 means you (or an app acting on your behalf) sent too many requests in too short a window. It&#8217;s the server protecting itself from being overwhelmed, so waiting a bit before retrying usually resolves it.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-accordion-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-2075\" class=\"elementor-tab-title\" data-tab=\"5\" role=\"button\" aria-controls=\"elementor-tab-content-2075\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon elementor-accordion-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-closed\"><i class=\"fas fa-plus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-accordion-icon-opened\"><i class=\"fas fa-minus\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-accordion-title\" tabindex=\"0\">How can I check which status code a website is returning right now?<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div id=\"elementor-tab-content-2075\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"region\" aria-labelledby=\"elementor-tab-title-2075\"><p>You can check response headers using your browser&#8217;s developer tools under the Network tab, or use an online status checker that tests the URL from an external server and reports back the exact code along with response time.<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<script type=\"application\/ld+json\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What's the difference between a 4xx and a 5xx error?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p>A 4xx error means the problem is with the request itself, like a wrong URL, missing permissions, or bad data. A 5xx error means the request was fine but the server failed to process it. If you&#8217;re the visitor, a 4xx is usually something you can fix (check the URL), while a 5xx is entirely on the site owner&#8217;s end.<\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Why do I see both 301 and 302 redirects, and does it matter which one a site uses?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p>Yes, it matters, mainly for SEO. A 301 tells browsers and search engines the move is permanent, so ranking signals transfer to the new URL. A 302 signals a temporary move, so the original URL stays indexed and keeps its ranking. Using the wrong one on a permanent page move can hurt search rankings.<\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"What does a 403 error mean if I know I'm logged in?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p>A 403 means the server recognized your request but is specifically refusing to authorize it, which is different from not being logged in. It usually points to a permissions issue, a blocked IP address, a firewall rule, or a resource that&#8217;s restricted regardless of authentication status.<\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"Is 429 my fault or the website's fault?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p>It&#8217;s a bit of both. A 429 means you (or an app acting on your behalf) sent too many requests in too short a window. It&#8217;s the server protecting itself from being overwhelmed, so waiting a bit before retrying usually resolves it.<\\\/p>\"}},{\"@type\":\"Question\",\"name\":\"How can I check which status code a website is returning right now?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"<p>You can check response headers using your browser&#8217;s developer tools under the Network tab, or use an online status checker that tests the URL from an external server and reports back the exact code along with response time.<\\\/p>\"}}]}<\/script>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Every time a browser or an app requests a web page, image, or API endpoint, the server sends back a three-digit status code along with the response. Most people never see these codes because everything works and the page just loads. You only notice them when something breaks, and by then you&#8217;re staring at a [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":7216,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50],"tags":[403,401,402,379,406,400,405,404,387,100],"class_list":["post-7215","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-403-forbidden","tag-404-not-found","tag-500-internal-server-error","tag-502-bad-gateway","tag-api-error-codes","tag-http-status-codes","tag-redirect-status-codes","tag-status-code-list","tag-web-server-errors","tag-website-monitoring"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/posts\/7215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/comments?post=7215"}],"version-history":[{"count":7,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/posts\/7215\/revisions"}],"predecessor-version":[{"id":7223,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/posts\/7215\/revisions\/7223"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/media\/7216"}],"wp:attachment":[{"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/media?parent=7215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/categories?post=7215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/checksitestatus.com\/fr\/wp-json\/wp\/v2\/tags?post=7215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}