CoreCited
Technical

301 Moved Permanently: what the response means, and what a 301 does for SEO

301 Moved Permanently explained: what the status means, how search engines and AI crawlers treat a 301, how signals move, and the mistakes to avoid.

AlexFounder & Developer12 min read

301 Moved Permanently is the response a server sends when a URL has moved for good. The browser goes to the new address, Google treats the move as a strong signal to show the new URL instead of the old one, and links to the old URL keep their value. The word that causes trouble is “permanently”. Browsers may cache a 301, so a wrong one keeps sending people to the wrong page after you fix it. And AI assistants may cite your old URLs for years. This post covers what the response means, what it does for SEO, how long to keep it, and how to set one up. To see what any URL returns right now, paste it into the free redirect checker.

Key takeaways
1A 301 says a URL has moved for good. Send one only when you will not undo the move.
2Google treats a 301 or 308 as a strong signal that the new URL should be canonical, and says permanent redirects don't cause a loss in PageRank.
3Browsers may cache a 301 without asking your server again. Deleting the rule later does not reach them.
4Keep 301s for at least a year, Google says. Old links in AI answers, emails and bookmarks never expire, so keep them for good.
5Send each old URL to its closest match in one hop. Never send everything to the homepage.
1 year
minimum Google advises keeping redirects after a site move
Google, Aug 2026
10
redirect hops Google's crawlers follow by default
Google, Feb 2026
2.87x
the rate at which AI assistants send visitors to 404 pages, compared with Google
Ahrefs (vendor), Sep 2025
30 days
how long Google's own 301 lets browsers reuse it
Response header, 2 Oct 2026

Sources: Google[8][7]; Ahrefs, from 16 million URLs cited by AI assistants[10]. The 30 days is the Cache-Control header on the 301 Google sent us when we requested one of its own moved help pages on 2 October 2026. It is shown in full below.

What 301 Moved Permanently means

The HTTP standard, RFC 9110, defines it in one sentence. The 301 status code “indicates that the target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs”[1]. The server names the new address in a Location header. The browser follows it without asking and shows the new URL in the address bar.

Here is a real one. On 2 October 2026 we requested the old address of Google’s page about HTTP status codes. Google had moved the page, and this is what came back, shortened to the lines that matter:

A real 301, from Google (2 October 2026)
$ curl -sI https://developers.google.com/search/docs/crawling-indexing/http-network-errors
HTTP/1.1 301 Moved Permanently
location: /crawling/docs/troubleshooting/http-status-codes
cache-control: private, max-age=2592000

Three lines are worth reading. The status line says the move is permanent. The location says where to go. It can be a relative path, as here, and the client resolves it against the old URL[1]. And cache-control says a browser may reuse this answer for 2,592,000 seconds, which is 30 days, without asking Google again. That last line is the one most people never look at. It comes up again below.

The method can change. That is what 308 is for.

The standard has one note that matters for developers: “For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead”[1]. Browsers do change it. Under the Fetch Standard, a POST answered with a 301 is sent again as a GET[3]. A form posted to a moved URL arrives without its data.

A 308 also means “moved for good”, but it forbids that change[4]. Pages that people and crawlers read are fetched with GET, so for them the two codes behave the same, and Google lists a 308 as “Equivalent to 301”[7]. Use 308 when forms or APIs post to the moved URL. The temporary codes are a different question, covered in 301 vs 302.

301 and 308 at a glance
Both are permanent. Sources: RFC 9110, MDN, Google, and each server's documentation. Toggle columns.
PermanentRequest methodGoogle treats it asWhat sends it
301 Moved Permanently✓YesGET stays GET; POST may become GETA strong signal to show the new URLApache Redirect 301, nginx return 301, wp_redirect(…, 301)
308 Permanent Redirect✓YesAlways keptEquivalent to 301Next.js permanent: true

Why a wrong 301 is hard to take back

“Permanent” has a practical meaning in browsers. RFC 9110 says “A 301 response is heuristically cacheable”[1]. So a browser may store the redirect and reuse it without contacting your server, even if you never sent a caching header. The caching standard leaves the details to each cache. It “does not provide specific algorithms” for that guess. It only suggests a cap, with 10% of the time since the response was last modified as “a typical setting”[2]. No major browser publishes the exact rule it uses for redirects. You cannot predict how long a cached 301 lives.

Here is the consequence. Send a 301 by mistake, then delete the rule, and every browser that already cached it keeps going to the wrong page. You cannot reach those browsers. Clearing your own cache fixes it for you and nobody else. Google’s advice fits: “Use permanent redirects when you’re sure that the redirect won’t be reverted”[6].

You can limit the damage before it happens. An explicit lifetime overrides the guessing: a cache “MUST NOT use heuristics” when the response states one[2]. Send Cache-Control: max-age=3600 with a new redirect, and the response “remains fresh until N seconds after the response is generated”[5], here one hour. After that the browser asks again. Raise the lifetime once you are sure. Google uses 30 days on the redirect above.

Not sure yet? Don't send a bare 301
If a move might be reversed, during a test or a staged launch for example, use a temporary redirect, or a 301 with a short max-age. A 301 with no caching headers is a decision you may not be able to take back.

What a 301 redirect does for SEO

Most 301 redirect SEO advice comes down to a few sentences in Google’s documentation. Here is what they say, and what they don’t.

It moves the URL in results. For a permanent redirect, “Googlebot follows the redirect, and the indexing pipeline uses the redirect as a signal that the redirect target should be canonical”[6]. Google’s crawler documentation calls a 301 a “strong signal” and a 302 a “weak signal”. It also ignores any content on the redirecting URL itself[7].

It carries the links. Canonicalization exists so search engines can “consolidate the signals they have for the individual URLs (such as links to them) into a single, preferred URL”[9]. On PageRank, Google’s site move guide is direct: “Don’t worry about link credit. 301 and other permanent redirects don’t cause a loss in PageRank”[8]. Google’s main redirects page doesn’t mention PageRank at all, so the site move guide is the one to quote.

It is a signal, not a command. Google keeps both URLs on file. One becomes canonical. The other becomes an “alternate name”, which “may appear in search results when a user’s query hints that they might trust the old URL more”. After a domain move, Google says it is “very likely” the old URLs will still show now and then[6]. An old URL in results a month after a move is normal, not a failure.

It takes time. “For medium-sized websites, it can take a few weeks or more for Google to gradually start showing the new URLs instead of the old ones (and for larger sites, even longer)”[8]. Expect rankings to move around while that happens.

Myth
Every 301 leaks some link value, so avoid them.
What is true
Google's site move guide says 301 and other permanent redirects don't cause a loss in PageRank. Chains still cost speed and crawling.
Myth
Once the new URL is indexed, the 301 can go.
What is true
Google says keep it at least a year, so it can recrawl and reassign links from other sites. Links outside Google never expire.
Myth
Pointing old pages at the homepage keeps their value.
What is true
Google says this may be treated as a soft 404. Send each URL to its closest match, or let it return 404.
Myth
A 301 swaps the URL in results overnight.
What is true
Google says a few weeks or more for a medium-sized site, and longer for a large one.

How long to keep a 301

Google’s answer, from its guide to site moves: “Keep the redirects for as long as possible, generally at least 1 year. This timeframe allows Google to transfer all signals to the new URLs, including recrawling and reassigning links on other sites that point to your old URLs.” It adds: “From users’ perspective, consider keeping redirects indefinitely”[8].

Our view is simpler: keep them for good. The old URL lives on in places you cannot edit. Links on other sites, old newsletters, PDFs, bookmarks, and AI answers built from older data (more on that below). A redirect rule costs almost nothing to keep. Deleting it turns every one of those references into a 404.

What you can retire is your own need for it. Each redirect is an extra round trip, so Google suggests updating “your own links and any high-volume links from other websites to point to the new URLs”[8]. Internal links, canonical tags and the sitemap should all use the new URL. The 301 is for everyone else.

Send each URL to its closest match

A 301 promises that the content now lives somewhere else. Google checks the promise. “Don’t redirect many old URLs to one irrelevant single URL destination, such as the home page of the new site. This can confuse users and might be treated as a soft 404 error.” Merged content is the exception: if several old pages became one new page, they can all point to it[8].

When there is no equivalent, a 404 or 410 is the honest answer. Google treats every 4xx code except 429 the same way, and a URL that returns one is removed from the index[7]. That beats a redirect to a page that doesn’t answer the visitor’s question.

Where should an old URL go?
Common cases in a migration or a cleanup. Based on Google's site move and status code guidance.
Send it toResponse
Page moved to a new URLThe new URL301 or 308
Several pages merged into oneThe merged page301 or 308 from each
Product replaced by a newer modelThe successor's page301 or 308
Page removed, nothing similar existsNowhere404 or 410
http, non-www or old domainThe same path on the final https hostOne 301 or 308
Page down for a short timeA page explaining whyTemporary (302 or 307)

Chains: collapse every old URL to one hop

A chain forms when redirects pile up over the years. A typical case: one year /pricing moves to /plans. Two years later /plans moves to /pricing-plans. Both rules still run, so an old link now takes two hops, and a third if it starts on http.

Google’s crawlers follow “up to 10 redirect hops” by default[7], but its site move guide asks for less: “we advise redirecting to the final destination directly. If this is not possible, keep the number of redirects in the chain low, ideally no more than 3 and fewer than 5. Chaining redirects adds latency for users, and not all user agents and browsers support long redirect chains”[8].

The fix is a habit. Whenever you add a redirect from B to C, search your rules for anything that points at B and point it at C instead. Paste old URLs into the bulk mode of the redirect checker to find the ones with more than one hop. If two rules point at each other, you have a loop, not a chain. The ERR_TOO_MANY_REDIRECTS guide covers those.

301s, AI crawlers and AI answers

Start with what is not known. No AI company publishes how its crawler handles a 301, how many hops it follows, or when it swaps a URL it has already cited for the new one. Anyone who gives you a number is guessing. What can be measured points one way.

AI answers cite old URLs. Ahrefs checked 16 million URLs cited by ChatGPT, Perplexity, Copilot, Gemini, Claude and Mistral. AI assistants sent visitors to 404 pages 2.87 times as often as Google Search. ChatGPT was highest: 1.01% of the URLs people clicked and 2.38% of all cited URLs returned a 404[10]. Ahrefs suspects part of the cause is URLs that “may have existed at one time, but have since been deleted or moved (without redirecting the original page)”, especially when an assistant answers from its own memory instead of a fresh search. That is the authors’ reading, not a proven cause, and it is a vendor study.

The reasoning holds even without the numbers. A model trained before your move knows the old URL. An answer built from that memory links to it. If the 301 is still in place, the click lands on the right page. If it isn’t, the click lands on a 404. That is the strongest reason to keep redirects for years, not months.

Only server-side redirects reach every crawler. Vercel’s study of AI crawler traffic on its network found that “none of the major AI crawlers currently render JavaScript”, naming OpenAI’s, Anthropic’s and Perplexity’s crawlers among them[11]. A redirect done in JavaScript leaves those crawlers on the old page. Even Google says to “only use JavaScript redirects if you can’t do server-side or meta refresh redirects”[6]. No AI company documents whether its crawler follows a meta refresh either. A 301 or 308 from the server needs no rendering at all.

Redirects already take a share of their crawling. In the same study, 14.36% of the ChatGPT crawler’s fetches went on following redirects, against 1.49% for Googlebot[11]. Collapsing chains to one hop is the part of that you control.

One more check is worth doing. Some firewalls and bot-protection rules treat crawlers differently from browsers. The redirect checker repeats each chain as GPTBot, ClaudeBot, PerplexityBot and Googlebot. It sends their user-agent strings from our own server, so treat a difference as a lead and confirm it in your logs. The log file analysis guide shows how.

How to check a URL’s 301

A browser never shows you the 301. It follows it before the page loads. To see it, ask the server directly from a terminal:

Terminal
# One response: the status line, Location and Cache-Control
curl -sI https://example.com/old-page

# Follow every hop, printing each status line and Location
curl -sIL https://example.com/old-page | grep -i "^HTTP\|^location"

Read three things. The status code: 301 or 308 for a permanent move. The Location: the final URL, not another redirect. And the Cache-Control lifetime, if there is one. The redirect checker does the same in the browser, for up to 10 URLs at a time.

Setting up a 301 on your server

The rule everywhere: name the code. Several common tools send a temporary redirect unless you ask for a permanent one. Pick your platform.

Without a status, Redirect sends a 302. Give it 301 or the word permanent. RedirectMatch handles a whole folder[12].
.htaccess or virtual host
# One page
Redirect 301 /old-page https://www.example.com/new-page

# A whole folder, keeping the rest of the path
RedirectMatch 301 ^/blog/(.*)$ https://www.example.com/articles/$1

A site migration checklist

A migration is where 301s are won or lost: a new domain, a new CMS, or a new URL structure. Google’s advice is to change one thing at a time and to map every old URL before you switch anything on[8]. Your ticks are saved in this browser only.

Before, during and after the move
0/10
A 301 is a promise that the old URL is gone for good. Keep it, and keep it for years.

Finding redirects across a whole site

Checking the URLs you remember is the easy part. The redirects that cost you are often the ones nobody remembers, such as a sitemap that still lists an old slug. CoreCited’s Site Audit runs a “Clean 200 response” check on every page it audits, and groups the pages that only answer after a redirect into one task, with the fix: point links and the sitemap at the final URL.

Questions people ask

What does 301 Moved Permanently mean?

It is the HTTP status a server sends when a URL has moved for good. The response names the new address in a Location header, and the browser goes there automatically. The HTTP standard says future references to the old URL ought to use the new one, which is why search engines replace the old URL with the new one in their results.

Is a 301 redirect bad for SEO?

No. Google treats a 301 as a strong signal that the new URL should be canonical, and its site move guide says 301 and other permanent redirects don't cause a loss in PageRank. What hurts is misuse: chains of several redirects, redirects to irrelevant pages such as the homepage, which Google may treat as a soft 404, and removing redirects too early.

How long should I keep a 301 redirect?

Google's guidance is to keep redirects for as long as possible, generally at least one year, so it can recrawl and reassign links from other sites, and to consider keeping them indefinitely for users. Old links in emails, documents and AI answers never expire, so keeping them for good is the safe choice.

Why does my browser still redirect after I removed the 301?

Because the browser cached it. The HTTP standard makes a 301 heuristically cacheable, so a browser may reuse it without asking your server again. Clearing your browser cache fixes it for you, but not for other visitors who cached it. Sending a Cache-Control max-age with new redirects limits how long that can last.

Should I use a 301 or a 308?

Both mean a permanent move, and Google treats a 308 as equivalent to a 301. The difference is the request method: after a 301, a browser may turn a POST into a GET, while a 308 forbids that. Use 308 when forms or APIs post to the moved URL. For ordinary pages either works. Next.js sends 308 for permanent redirects.

Do AI assistants follow 301 redirects?

No AI company documents how its crawler handles redirects. What is known is that AI answers often cite old URLs: Ahrefs found AI assistants send visitors to 404 pages 2.87 times as often as Google. A server-side 301 sends those clicks to the right page, and because the major AI crawlers do not run JavaScript, a JavaScript redirect would not work for them.

Keep reading

Sources

[3]301 Moved Permanently — MDN Web Docs, updated 22 June 2026
[4]308 Permanent Redirect — MDN Web Docs, updated 14 January 2026
[5]Cache-Control header — MDN Web Docs, updated 17 September 2026
[6]Redirects and Google Search — Google Search Central, updated 14 April 2026
[7]How HTTP status codes affect Google's crawlers — Google Crawling Infrastructure docs, updated 4 February 2026
[8]Site moves with URL changes — Google Search Central, updated 20 August 2026
[9]How to specify a canonical URL with rel="canonical" and other methods — Google Search Central, updated 10 July 2026
[10]New study: How often do AI assistants hallucinate links? (16 million URLs studied) — Ahrefs (vendor study, Ryan Law), 2 September 2025, modified 31 May 2026
[11]The rise of the AI crawler — Vercel (vendor study of its own network), 17 December 2024
[12]Apache Module mod_alias — Apache HTTP Server 2.4 documentation, read 2 October 2026
[13]Module ngx_http_rewrite_module — nginx.org, read 2 October 2026
[14]redirects (next.config.js) — Next.js docs, updated 30 June 2026
[15]wp_redirect() — WordPress Developer Resources, read 2 October 2026

Find out where you actually stand

One real question, real AI engines, and the answer they gave — including who was named in it. No account, no card.