What Is 301 Redirect?

Flavio AmielWritten byFlavio Amiel Founder, Roborank
Updated July 15, 2026

A 301 redirect is a server response carrying the HTTP status code 301 (Moved Permanently) that tells browsers and search engines a URL has permanently moved to the address named in the Location header. Google treats it as a permanent, canonicalizing signal and consolidates the old page’s ranking signals onto the destination URL.

Key Takeaways

How a 301 Redirect Works

When a browser or crawler requests a URL that has been permanently moved, the server answers not with page content but with a redirection response: the HTTP status line 301 Moved Permanently plus a Location header pointing to the new address. The client reads the Location value and automatically issues a fresh request to that URL, so the visitor lands on the destination page without ever seeing the intermediate step. The whole exchange is invisible in normal browsing.

The 301 code carries a specific meaning that separates it from an ordinary temporary hop: it declares the move to be permanent. For search engines that distinction is the entire point. According to Google Search Central, a permanent redirect is a canonicalization signal — Google will show the redirect target as the canonical URL in search results and consolidate the source page’s ranking signals onto that target. A temporary redirect does the opposite: it keeps the original URL in the index and transfers nothing.

Google recognizes 301 as one of several permanent redirect types. Alongside it sit HTTP 308 (also “Moved Permanently”), an instant meta refresh with a zero-second delay, and JavaScript location redirects. Of these, Google is explicit that a permanent server-side redirect is the most reliable choice, because meta refresh and JavaScript redirects depend on rendering that can fail and leave the move undetected.

Types of Permanent Redirect and the 301 vs 308 Nuance

There are two HTTP status codes that both mean “moved permanently,” and the difference between them matters when forms are involved:

For the overwhelming majority of SEO use cases — retiring an old URL, migrating a domain, tidying a URL structure — the redirected requests are simple GETs, so the POST-to-GET behavior is irrelevant and a plain 301 is the right tool. The moment you are redirecting an endpoint that receives form submissions or API writes, reach for 308 so the method and payload survive. Both codes send Google the same permanent canonicalization signal.

Example of a 301 Redirect

A live, documented example runs on MDN Web Docs itself. When an old documentation path is requested, MDN’s server answers with a real 301 instead of the page. Requesting the legacy GET /en-US/docs/AJAX path returns:

HTTP/2 301
cache-control: max-age=2592000,public
location: /en-US/docs/Learn_web_development/Core/Scripting/Network_requests
content-type: text/plain; charset=utf-8
content-length: 97

Moved Permanently. Redirecting to /en-US/docs/Learn_web_development/Core/Scripting/Network_requests

Two details in that response are worth reading closely. First, the location header names the exact destination — the AJAX article was folded into a broader “Network requests” lesson, and the 301 forwards every visitor and crawler there permanently. Second, the cache-control: max-age=2592000 header tells clients to remember the redirect for 2,592,000 seconds, which is 30 days. That caching is a hallmark of permanent redirects: browsers are encouraged to skip the old URL entirely on repeat visits, whereas a temporary redirect would not invite that kind of aggressive caching.

For a search engine, this exchange resolves cleanly. Google requests the old AJAX URL, receives a 301, follows it to the Network requests lesson, and treats that lesson as the canonical page — any links and authority pointing at the old AJAX path are consolidated onto the destination. The old URL quietly drops out of the index in favor of the new one, which is precisely the outcome a permanent move is supposed to produce.

The thing people get wrong

The mistake I see most often is treating the choice between 301 and 302 as a technicality that Google will sort out on its own. It won’t. The status code is a declaration of intent: 301 says "this move is permanent, move the equity," and 302 says "leave the old URL indexed, this is temporary." I have watched a site relaunch under a new URL structure with 302s across the board because a developer picked the framework default, and months later the old URLs were still the ones ranking while the new pages sat uncanonicalized. Google was doing exactly what it was told. If the move is permanent, say so with a 301 (or a 308 when you need to keep POST data intact), and don’t leave the decision to a redirect your CMS chose for you.

301 Redirect vs 302 Redirect

301 Redirect 302 Redirect
HTTP status 301 Moved Permanently 302 Found
Meaning The move is permanent The move is temporary
Google’s treatment Canonicalizes to the destination; consolidates ranking signals Keeps the original URL indexed; transfers no signals
When to use Retiring a URL for good, domain migration, URL restructuring A/B tests, short-lived promos, maintenance pages, geo/device routing
Method on POST Converts POST to GET (use 308 to preserve) Converts POST to GET (use 307 to preserve)

The two codes look almost identical on the wire but instruct search engines to do opposite things. Picking the wrong one on a permanent move — a 302 where a 301 belongs — leaves the old URL ranking and the new one uncanonicalized, which is one of the most common self-inflicted technical SEO wounds during a site migration.

Frequently Asked Questions

Does a 301 redirect pass SEO value?
Yes. Google treats a 301 as a permanent, canonicalizing signal and consolidates the old URL’s ranking signals onto the destination. It is the recommended way to move a page while keeping its accumulated search equity attached to the new address.
What is the difference between a 301 and a 302 redirect?
A 301 is permanent: Google canonicalizes to the destination and moves ranking signals there. A 302 is temporary: Google keeps the original URL in its index and does not transfer signals. Use 301 for permanent moves and 302 only when the change is genuinely short-lived.
Does a 301 redirect preserve POST data?
No. Under the Fetch Standard, when a browser receives a 301 in response to a POST it converts the method to GET on the next request, dropping the body. To keep the method and data intact, use a 308 Permanent Redirect instead, which forbids changing the method.
How long should I keep a 301 redirect in place?
Keep it as long as the old URL may still be requested or linked from elsewhere. Removing it too early sends future visitors and crawlers to a dead page, undoing the consolidation. A permanent redirect is meant to stay until the old address is truly retired everywhere.

The Bottom Line

A 301 is how you tell the web that a page has a new permanent home. The status code does two jobs at once: it forwards every visitor to the destination and it instructs search engines to treat that destination as the canonical page, carrying the old URL’s authority with it. Choose it deliberately for permanent moves, reach for 308 when a POST method must survive the hop, and never let a framework default decide permanence for you.

Sources

  1. How Google handles redirects for SearchGoogle Search Central
  2. 301 Moved Permanently - HTTPMDN Web Docs
Roborank does this

Roborank crawls your site for redirect problems — temporary redirects on permanent moves, broken hops, and chains that leak crawl budget — and tells you exactly which URLs to fix.

Audit your redirects →

Rank & Cash — the weekly SEO breakdown

One practical teardown a week on ranking in search and getting cited by AI. No fluff.