URL Inspector
Break a URL into parts, edit query parameters as a table and rebuild it.
Every status code with plain-English meaning and when to use it.
Runs entirely in your browser. Nothing you type or paste is sent anywhere.
Break a URL into parts, edit query parameters as a table and rebuild it.
Turn a curl command into fetch, axios, Python requests or Go code.
Viewport, pixel ratio, user agent, time zone, features and your IP as this server sees it.
QR codes for links, Wi-Fi and contacts, downloadable as SVG or PNG.
Enter copies the top match, ↓ moves into the list, ↑ ↓ move between codes and Esc returns here. Click a code to copy it.
69 status codes, including 6 common unofficial ones.
Interim responses: the request was received and is still being handled. Application code rarely sends these.
The server has received the request headers, and the client should go ahead and send the body.
ExpectThe server agrees to switch to the protocol the client asked for in its Upgrade header.
UpgradeConnectionAn interim response telling the client the server is still working on a long request, so it shouldn’t time out.
An interim response that lets the browser start loading critical resources while the server is still preparing the page.
LinkThe request was received, understood and accepted.
The request succeeded. The body depends on the method: the resource for GET, the result of the action for POST.
The request succeeded and created a new resource.
LocationThe request was accepted for processing, but the work hasn’t finished and may still fail.
LocationRetry-AfterThe request succeeded, but a transforming proxy changed the response the origin server sent.
The request succeeded and there is deliberately no body.
The request succeeded and the client should reset the view that sent it, for example by clearing a form.
The server is sending only the byte range the client asked for in its Range header.
Content-RangeAccept-RangesThe body, usually XML, carries a separate status for each of several resources affected by one request.
Used inside a 207 response to say a collection’s members were already listed earlier in the same response.
The server answered a GET with instance manipulations applied, such as a delta against a version the client already has.
IMThe client has to go somewhere else, or can use the copy it already has.
The resource has several representations, and the client or the user should pick one.
LocationThe resource has a new permanent URL, given in the Location header.
LocationThe resource is temporarily at another URL, given in the Location header.
LocationThe answer is at another URL, which the client should fetch with GET.
LocationThe client’s cached copy is still valid, so the server sends no body.
ETagCache-ControlLast-ModifiedDeprecated. It told the client to repeat the request through the proxy named in Location.
Reserved. An early draft used it for “Switch Proxy”; it has never been used since.
The resource is temporarily at another URL, and the client must repeat the request there with the same method and body.
LocationThe resource has a new permanent URL, and the client must repeat the request there with the same method and body.
LocationSomething is wrong with the request. Retrying it unchanged will fail again.
The server can’t process the request because it is malformed: invalid syntax, broken JSON, a bad header or a missing required parameter.
The request has no valid credentials. Despite the name it means unauthenticated: the server doesn’t know who you are.
WWW-AuthenticateReserved for future use, originally for digital payments. It has no standard behaviour.
The server understood the request and refuses it. Authenticating again won’t change the answer.
The server has nothing at this URL. It doesn’t say whether that is temporary or permanent.
The resource exists but doesn’t support this HTTP method.
AllowThe server can’t produce a response in any format the client accepts, according to its Accept headers.
AcceptLike 401, but the client must first authenticate with a proxy between it and the server.
Proxy-AuthenticateThe server gave up waiting for the client to finish sending its request.
The request conflicts with the current state of the resource.
The resource used to be here and has been removed deliberately and permanently.
The server requires a Content-Length header and the request didn’t send one.
Content-LengthA condition in the request headers, such as If-Match or If-Unmodified-Since, wasn’t met.
If-MatchIf-Unmodified-SinceETagThe request body is bigger than the server is willing to accept.
Retry-AfterThe URL is longer than the server is willing to handle.
The server won’t accept the request body’s format, as given by Content-Type or Content-Encoding.
Content-TypeAcceptAccept-EncodingThe byte range in the Range header falls outside the resource.
Content-RangeThe server can’t meet the requirement in the Expect request header.
ExpectAn April Fools’ joke from the 1998 Hyper Text Coffee Pot Control Protocol: a teapot refusing to brew coffee. RFC 9110 reserves 418 as “(Unused)” because so many servers implement the joke.
The request reached a server that can’t produce a response for this combination of scheme and host.
The request is well-formed and in a supported format, but its contents fail validation.
The resource is locked and can’t be changed right now.
The request failed because it depended on another request that failed.
The server won’t process a request that might be replayed, because it arrived in TLS 1.3 early data (0-RTT).
The server won’t handle the request over the current protocol, but would after the client upgrades.
UpgradeThe server requires the request to be conditional, typically with an If-Match header.
If-MatchThe client has sent too many requests in a given time. In other words, it has been rate limited.
Retry-AfterThe request’s headers are too large, either one header or all of them together.
The server can’t provide the resource for legal reasons, such as a court order or government censorship. The number nods to Fahrenheit 451.
Linknginx records this when the client closed the connection before the server responded. The client never receives it.
The request may be fine, but the server failed to handle it.
The server hit an unexpected condition. It is the generic catch-all for server-side failures.
The server doesn’t support the functionality needed, usually an HTTP method it doesn’t recognise at all.
A gateway or proxy got an invalid response from the upstream server behind it.
The server can’t handle the request right now, because it is overloaded or down for maintenance.
Retry-AfterA gateway or proxy didn’t get a response from the upstream server in time.
The server doesn’t support the major HTTP version used in the request.
A server misconfiguration in transparent content negotiation: the chosen variant is itself set up to negotiate, creating a loop.
The server can’t store what it needs to complete the request.
The server found an infinite loop while processing the request.
The request needs further extensions before the server will fulfil it.
The client has to authenticate to get network access, usually through a captive portal.
Cloudflare got an empty, unknown or unexpected response from the origin server.
The origin server refused Cloudflare’s connection.
Cloudflare couldn’t open a TCP connection to the origin server in time.
Cloudflare can’t reach the origin server at all, usually because of a DNS or routing problem.
Cloudflare connected to the origin, but the origin took too long to send a response (100 seconds by default).