HTTP Status Codes / 3xx HTTP Status Codes / HTTP 301

301 Moved Permanently

This is an educational reference page about HTTP 301 Moved Permanently. The page itself is served as 200 OK so it can be indexed as HTTP documentation.

The target resource has been assigned a new permanent URI. The server sends that URI in the Location header, and clients should use it for future requests.

What it means

HTTP 301 Moved Permanently is a permanent redirect. The Location header gives the replacement URL for future requests, bookmarks, and crawlers.

Common causes

How to fix it

Example response

HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-url
Cache-Control: public, max-age=3600

Developer notes

301 is the normal status code for permanent site moves and HTTP-to-HTTPS migrations. Many clients cache it, and older clients may retry a redirected POST as GET. For APIs or forms where the method must not change, prefer 308.

Questions

What does HTTP 301 mean?

HTTP 301 means the resource moved permanently. Read the Location header for the new URL.

Should a 301 redirect be used for SEO?

Use 301 for a permanent move. Then update internal links and sitemaps so crawlers reach the final URL without an extra hop.

How long should a 301 redirect stay live?

Keep it while old URLs still have backlinks, bookmarks, traffic, or crawler hits.

What is the difference between 301 and 308?

Both are permanent redirects. 308 preserves the request method and body; 301 has older client behavior where non-GET requests may become GET.

Related comparisons

3xx redirection – further action needs to be taken in order to complete the request


HTTP status code lookup
By Ping Now, a website/API/service uptime monitor
Data from Wikipedia