A 302 redirect is an HTTP status code indicating that a resource has been temporarily moved to a different URL. Unlike a 301, a 302 tells browsers and search engines that the original URL is still valid and should be used for future requests. The redirect is treated as a temporary detour rather than a permanent change.
In URL shortening, 302 redirects are commonly used because they allow the shortening service to maintain control over the redirect and accurately track every click. Since browsers do not cache 302 redirects as aggressively as 301s, each visit to the short URL passes through the shortening service's servers, enabling real-time analytics.
The SEO implications of 302 redirects differ from 301s. Google Search Central documentation states that the indexing pipeline uses a 301 as a signal that the redirect target should be canonical, but doesn't use a 302 as that signal (as of April 2026), so with a 302 search engines keep showing the original URL in search results. For most URL shortening use cases, this distinction is irrelevant because short URLs are not intended to rank in search results.
| Aspect | 301 redirect | 302 redirect |
|---|---|---|
| What it says about the URL | The move is permanent | The move is a temporary detour, and the original URL is still valid |
| Browser caching | Cached aggressively, so later visits go straight to the destination | Not cached as aggressively, so each visit goes through the server again |
| Click tracking | Later visits bypass the shortening service | Every visit passes through the service, which makes real-time analytics possible |
| Ranking signals | Used as a signal that the destination URL should be the canonical one | Not used as that signal, so search engines keep showing the original URL |
| Typical use | A change that is meant to last | URL shortening, where the service keeps control of the redirect |
Historically, there was confusion about the semantics of 302 redirects. The HTTP/1.0 specification defined 302 as a generic temporary redirect, but implementations varied. HTTP/1.1 introduced 303 and 307 to clarify the intended behavior, though 302 remains widely used.