303 See Other tells the client to retrieve a different resource, given in the Location header, with GET (or HEAD). It does not say that the original resource moved; it points to a separate resource that holds the answer.
Its main use is the Post/Redirect/Get pattern. After a form is submitted with POST, the server answers 303 with the URL of a confirmation page, and the browser loads that page with GET. Reloading it or pressing Back then does not submit the form again. Browsers switch every method except HEAD to GET when following a 303, and they drop the request body.
A 303 is not cacheable by default. A 303 in answer to a GET can also mean that the server has no representation of the requested thing itself but describes it at another URL, a pattern used in Linked Data.
Example response
HTTP/1.1 303 See Other
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: /orders/8412/confirmation
Content-Length: 0 SEO and redirect checking
Google treats 303 as a temporary redirect: the original URL usually stays indexed, and the target gets only a weak canonical signal. That fits its purpose, since 303 targets are usually result or confirmation pages rather than content that should rank. Do not use 303 to move pages permanently; use 301 or 308. A redirect check with the method set to POST shows how the request becomes a GET at a 303 hop.
Common causes and use cases
- Post/Redirect/Get: a form handler redirects to a "thank you" or order page after a
POST. - An API accepts a job and points the client to a separate resource with the result.
- Linked Data: a URI that names a real-world thing redirects to a document that describes it.