203 Non-Authoritative Information
The request succeeded, but a proxy between you and the origin server altered the response body or headers.
At a glance
- Status code
- 203 Non-Authoritative Information
- Class
- 2xx, success, the request was received and accepted
- Defined in
- RFC 9110
- Cacheable by default
- yes
- Response body
- Yes, a modified version of what the origin sent.
In detail
203 is a transforming proxy being honest. It fetched a 200 from the origin, changed something (recompressed an image, stripped a header, rewrote markup) and is telling the client that what arrived is not exactly what the origin produced.
Only an intermediary should ever send this. An origin server that returns 203 about its own response is making a statement it cannot support.
Seeing 203 in production usually means a transparent proxy or a mobile carrier optimiser is in the path. If content looks subtly wrong, that is where to look.
Examples
HTTP/1.1 203 Non-Authoritative Information
Warning: 214 proxy "Transformation applied"
Content-Type: image/jpegThings that catch people out
- 203 is cacheable, so a transformed response can be stored and served to other clients that never wanted the transformation.
- It is rare enough that client code often falls through to a generic error branch. Treat any 2xx as success unless you have a reason not to.
Try it: HTTP Request Builder
Build a request with any method, headers and body, send it, and read the status line the server returns.
HTTP Request Builder
LOCAL · Browser-OnlyBuild and test HTTP requests with custom headers and body
Authentication
Headers
Generate Code
curl -X GET 'https://api.example.com/endpoint' \
-H 'Content-Type: application/json'Showing a sample URL. Enter your endpoint above to update the snippet.
Related HTTP status codes
All http status codes →200 OK
The request succeeded. What the body contains depends on the method: a GET returns the resource, a POST returns the result of the action.
502 Bad Gateway
A proxy or load balancer got an invalid response from the upstream server it was relaying to. The failure is behind the thing that answered you.
300 Multiple Choices
The request matched more than one representation and the server is asking the client to pick, rather than choosing for it.
204 No Content
The request succeeded and there is deliberately nothing to send back. The browser stays on the current page.
205 Reset Content
The request succeeded and the client should clear the form that sent it, ready for another entry.
206 Partial Content
The server is returning part of the resource because the request carried a Range header. This is what makes resumable downloads and video seeking work.
Tools for this
- HTTP Request Builder Free online HTTP request builder - build and test HTTP requests with custom headers and body
- HTTP Headers Checker Free online HTTP headers checker - view HTTP response headers for any URL