301 Redirect Checker
Find out whether a redirect is permanent. See the status code of every hop and catch the 302s that should be 301s.
Every link gets its own permanent or temporary verdict. Add an expected URL after a link to check where it lands as well.
301, 302, 307 and 308 in one table
| Code | Name | Permanent? | Method kept? | Search engines |
|---|---|---|---|---|
301 | Moved Permanently | Yes | Not guaranteed | Index the new URL and pass signals to it |
308 | Permanent Redirect | Yes | Yes | Same as 301 |
302 | Found | No | Not guaranteed | May keep the old URL indexed |
307 | Temporary Redirect | No | Yes | Same as 302 |
303 | See Other | No | Becomes GET | Used after forms, not for moved pages |
Google has said it treats a 302 that stays in place for a long time much like a 301 in the end. That is not a reason to rely on it: until it does, the old address can stay in results, and Bing and other engines make their own call. If the move is permanent, say so with a 301 or 308.
When a 301 is the right answer
- Moving a site from
httptohttps - Choosing between
www.example.comandexample.com - Changing a page's URL, merging two pages or deleting one that has a close replacement
- Moving to a new domain
Use a 302 or 307 only when the original address will come back: a page under maintenance, a country or language switch, a sign-in bounce, an A/B test.
How to set up a 301 redirect
Apache (.htaccess)
One page:
Redirect 301 /old-page https://example.com/new-page
Whole site to HTTPS and the bare domain, in one hop:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
More patterns are in our guide to redirecting www to non-www with .htaccess.
Nginx
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
location = /old-page { return 301 /new-page; }
WordPress
Changing a post's slug makes WordPress send a 301 from the old one automatically. For anything else, a redirect plugin or your SEO plugin's redirect manager lets you choose 301 per rule; check that it is not left on the 302 default. If redirects loop after an HTTPS change, see fixing “redirected you too many times”.
Cloudflare
Redirect Rules and Bulk Redirects let you pick the status code for each rule. The Always Use HTTPS setting also answers with a 301.
Why your browser may show a different code
Browsers remember. After a site sends a 301, Chrome and others cache it and may skip the request entirely next time, and a site on the HSTS list is upgraded to https before anything is sent, which Chrome's developer tools label 307 Internal Redirect. That is why testing in your own browser can mislead. This checker starts fresh every time and reports what the server actually sends.
Check the chain, not only the first hop
A 301 that lands on another redirect is still a chain. Search engines follow a few hops, but each one adds a round trip for visitors and a chance for a rule to break. The verdict on each result tells you when every hop is permanent and when the chain is long enough to be worth shortening. To test many old URLs at once, use the bulk redirect checker.
Questions
How do I check if a redirect is a 301?
Paste the old address above and press Check 301. First response shows the status code the server answered with, and the note under the card says whether every hop in the chain is permanent.
Is a 301 or a 302 better for SEO?
For a page that has moved for good, a 301. It tells search engines to replace the old address with the new one and carry its ranking signals across. A 302 says the move is temporary, so the old address may stay in the index.
What is the difference between a 301 and a 308?
Both are permanent. A 308 also promises that the browser will repeat the same request method, so a form that POSTs to the old address still POSTs to the new one. For ordinary pages, search engines treat them the same.
My browser shows "307 Internal Redirect". Is my redirect wrong?
Probably not. Chrome shows that when it upgrades a site to HTTPS on its own because of HSTS, before any request is sent. The checker does not keep that memory, so it shows what your server really answers.
How long should a 301 redirect stay in place?
As long as you can, and at least a year. Google recommends keeping redirects for a year or more so that crawlers and people with old links are sent to the new address.
Why does my 301 show up as a chain?
Usually because separate rules each do one job: one adds https, another adds or removes www, a third moves the page. Combine them so the old address goes straight to the final one.
Related tools
Browse all Sigma Wire tools - every free tool on the site, grouped by category.