GlossarySEO
What is the difference between 307 and 308?
Also called: 307 redirect, 308 redirect, 307 temporary redirect, 308 permanent redirect
Definition
A 307 is a temporary redirect and a 308 is a permanent one. Unlike 302 and 301, both require the browser to repeat the request with the same method and body. Google treats 308 like 301 and 307 like 302.
307 vs 308 redirect, explained
The older codes 301 and 302 let browsers change a POST into a GET when following the redirect. 307 and 308 were added to forbid that: the method and body must stay the same. For normal page views, which are all GET requests, the behavior is identical to their older siblings.
Google's redirect documentation groups them clearly. 301 and 308 are permanent redirects, which Google uses as a strong signal that the target should become the canonical URL. 302, 303 and 307 are temporary, so Google follows them but tends to keep the original URL in results. For SEO, choose permanent or temporary; the specific number within each group doesn't matter to Google.
You'll meet these codes on modern stacks. In Next.js, permanent: true redirects in the config send 308, permanentRedirect() sends 308, and redirect() sends 307 by default. So a Next.js site can end up with temporary redirects for moves that were meant to be permanent. Chrome also shows "307 Internal Redirect" when HSTS upgrades an http:// link to https:// inside the browser; that one never reaches your server or Google.
The rule is the same as always: permanent moves get a permanent code, and the old URL should point directly at the final one.
Why it matters for founders
If you use a framework default without checking, a permanent URL change can go out as a 307. Google may keep showing the old URL, and the signals you earned stay split across two addresses.
Example
You move /pricing-old to /pricing with redirect() in a Next.js route. The redirect checker shows 307. You switch to permanentRedirect(), it now returns 308, and Google treats /pricing as canonical.
Common mistakes
- Using
307for a permanent URL change. - Assuming Google prefers
301over308. It treats them the same. - Debugging HSTS's in-browser 307 as if it were a server redirect.
- Switching codes but leaving internal links on the old URL.
Sources
- Google Search Central: Redirects and Google Search
- Google Search Central: How HTTP status codes and network errors affect Google Search
Checked
Related terms
- 301 vs 302 redirectA 301 redirect says a page has moved permanently, so search engines should treat the new URL as canonical. A 302 says the move is temporary, so they keep showing the original URL.
- Redirect chainA redirect chain is when a URL redirects to another URL that redirects again before reaching the final page. Each hop adds delay, and long chains or loops can stop crawlers from reaching the page.
- HSTSHSTS (HTTP Strict Transport Security) is a response header telling browsers to only ever connect to your domain over HTTPS, for a set period. Browsers then upgrade any
http://link before sending it. - CanonicalizationCanonicalization is how a search engine picks one representative URL from a group of pages with the same or very similar content, and shows only that one in results.