
HTTP 203 is a successful 2xx response indicating that a transforming proxy received a 200 OK from the origin server but is returning a modified version of that response to the client. The request itself succeeded — the 203 simply signals that an intermediary altered the content or headers before they reached you.
A 203 is returned by a transforming proxy — such as a web accelerator, CDN edge node, or filtering proxy — that has modified the origin's successful response before forwarding it. Common modifications include compressing or transcoding content, stripping potentially harmful code, applying malware filters, or adding security headers.
Both codes indicate a successful request, but 200 means the response came directly from the origin server unchanged, while 203 means an intermediary has transformed it along the way. If you receive a 203, you cannot assume the payload or headers exactly match what the origin server sent.
Yes. HTTP 203 is cacheable by default, just like 200. Caches may store and reuse a 203 response unless the server includes Cache-Control directives that override this behavior.
HTTP 203 is rare in the wild. Most transforming proxies and CDNs still return 200 even when they modify a response, rather than signaling the transformation with a 203. The status code exists primarily as a transparency mechanism, but broad adoption has been limited.
For most applications, a 203 can be handled the same way as a 200 — the request succeeded. However, if your application depends on the response being an exact copy of the origin's output, a 203 is a signal that some intermediary has modified it, and you may want to investigate which proxy is responsible and what changes were applied.