3xx Redirects
Last updated Jun 09, 2026

What is HTTP Status Code 308? - Permanent Redirect

Benjamin Bouchet
Benjamin Bouchet
Get your free
Abstract
 API key now
stars rating
4.8 from 1,863 votes
See why the best developers build on Abstract
START FOR FREE
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No credit card required

The HTTP Status Code 308 means that the request and all future requests should be repeated using another URI.

Note that status codes 307 and 308 are similar to the behaviors and purpose of status codes 302 and 301, but that 307 and 308 do not allow the HTTP method to change.

Frequently Asked Questions

What does HTTP 308 mean?

HTTP 308 Permanent Redirect means the requested resource has been permanently moved to a new URI, and the client should use that new URI for all future requests. Unlike a 301 redirect, a 308 requires the client to repeat the request using the exact same HTTP method that was used originally.

What is the difference between HTTP 308 and 301?

Both 308 and 301 signal that a resource has permanently moved, but they differ in how clients must handle the follow-up request. A 301 allows the client to change the HTTP method — for example, converting a POST to a GET — whereas a 308 does not allow the method to change. If the original request was a POST, the redirected request must also be a POST.

What is the difference between HTTP 308 and 307?

Both 307 and 308 preserve the original HTTP method on redirect, which sets them apart from 302 and 301 respectively. The key difference is permanence: a 307 Temporary Redirect indicates the move is temporary and future requests should still go to the original URI, while a 308 Permanent Redirect indicates the resource has moved for good.

When should a server return a 308 status code?

A server returns 308 when a resource has been permanently relocated to a new URI and it is important that the client does not change the HTTP method when following the redirect. This is particularly relevant for API endpoints and non-GET requests such as POST or PUT, where changing the method would alter the intended behavior of the request.

Why does HTTP 308 preserve the request method?

The 308 status code was defined specifically to close the gap left by 301, which historically allowed browsers and clients to switch a POST request to a GET on redirect. By prohibiting method changes, 308 guarantees that data sent in the request body is not silently dropped when following a permanent redirect. This behavior is formally specified in IETF RFC 7538.

Is HTTP 308 an error?

No, HTTP 308 is not an error. It belongs to the 3xx class of status codes, which covers redirects rather than client or server failures. It is an informational signal telling the client where to find the resource going forward, and well-behaved clients will follow the redirect automatically.

Get your free
API
key now
stars rating
4.8 from 1,863 votes
See why the best developers build on Abstract
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No credit card required