TrueURL

301 Moved Permanently

The resource has a new permanent URL, given in the Location header. Clients and search engines should use the new URL from now on.

Reason phrase
Moved Permanently
Redirect
Yes
Cacheable by default
Yes

301 Moved Permanently tells the client that the target resource has been given a new permanent URL, sent in the Location header, and that future references should use it. Browsers follow it immediately, and clients that can edit links, such as bookmark managers and link checkers, are expected to update them.

A 301 is heuristically cacheable. Browsers store permanent redirects, often for a long time when no Cache-Control header is set, and on later visits go straight to the new URL without asking the old one again. That makes a wrong 301 hard to undo: test with a short Cache-Control: max-age first, or use a temporary redirect until the move is final.

For historical reasons, user agents may change the method from POST to GET when they follow a 301, and all major browsers do. If a redirected POST must stay a POST, for example for an API or a form endpoint, use 308 Permanent Redirect instead.

Example response

HTTP
HTTP/1.1 301 Moved Permanently
Date: Fri, 06 Nov 2026 10:15:32 GMT
Server: nginx
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: https://www.example.com/new-page

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

SEO and redirect checking

A 301 is the standard way to move content without losing search visibility. Google treats it as a strong signal that the target should be the canonical URL, so the new URL replaces the old one in search results over time, and Google has stated that 3xx redirects do not lose PageRank. Use 301 for domain moves, HTTP to HTTPS, www normalisation, changed slugs and merged pages. Redirect each old URL to its closest equivalent rather than to the homepage, which Google may treat as a soft 404.

Keep chains short. Every extra hop costs a round trip, and Googlebot follows at most 10 hops before it reports a redirect error. Point internal links and sitemaps directly at final URLs and avoid chains like http:// → https:// → https://www. → /new-page. The 301 Redirect Checker shows whether every hop is permanent, and HTTP redirect status codes explained compares 301 with 302, 307 and 308.

Common causes and use cases

  • A site moved to HTTPS or to a new domain, and every old URL redirects to its new equivalent.
  • www and non-www hosts or trailing-slash variants are normalised to one canonical form. Test them with the HTTPS Redirect Checker and the Trailing Slash Checker.
  • A page was renamed or merged into another page.
  • A 301 was set up by mistake and browsers keep using the cached redirect. Fix the server, then clear the browser cache or test in a private window.

301 Redirect Checker

See every status code a URL returns, hop by hop, with the free TrueURL redirect checker.