300 vs 302: Multiple Choices vs Found
300 and 302 can look similar in logs, but they tell clients, crawlers, and API consumers different things.
| Aspect | HTTP 300 โ Multiple Choices | HTTP 302 โ Found |
|---|---|---|
| Definition | Multiple Choices describes how the server processed the request and what the client should do next. | The resource is temporarily available at a different URL. Unlike 301, clients should continue using the original URL for future requests. Historically misused โ prefer 307 (method-preserving) or 303 (POST/redirect/GET) for more explicit semantics. |
| Plain-language summary | HTTP 300 Multiple Choices indicates a redirection response outcome. | The resource is temporarily available at a different URL. The original URL remains valid and the client should continue using it for future requests. Unlike 301, browsers do not cache 302 redirects, and search engines do not transfer SEO signals. Historically, browsers changed POST to GET on 302, which is technically incorrect but widely implemented. |
| When to use | HTTP 300 Multiple Choices indicates a redirection response outcome. | Use 302 for temporary redirects where the original URL should be preserved. Prefer 307 when you need to guarantee method preservation (POST stays POST). Use 303 for Post/Redirect/Get (PRG) patterns after form submission. Never use 302 for permanent URL changes โ that is a 301. |
| Client behavior | Client handles 300 according to redirect-codes semantics. | Browsers follow the redirect automatically and typically change POST to GET (historical, widely-implemented non-spec behavior). The redirect is not cached; each visit to the original URL re-checks the server for a redirect. Crawlers visit the original URL again in future crawls rather than updating their index. |
| Caching behavior | See 300 caching spec. | Not cached by default. Each request to the original URL hits the server and may receive a different destination. You can add Cache-Control headers to cache 302s, but this is rarely appropriate for truly temporary redirects. |
| SEO / crawler impact | Search crawlers interpret 300 (redirect-codes) for indexation and link equity accordingly. | Search crawlers interpret 302 (redirect-codes) for indexation and link equity accordingly. |
| API / backend impact | API clients branching on 300 expect Multiple Choices semantics. | API clients branching on 302 expect Found semantics. |
| Safe to retry? | Follow redirect, then retry original intent | Follow redirect, then retry original intent |
Common real-world scenarios
When you see HTTP 300
300 appears in production when: Resource moved to a different URI; Canonicalization or routing rule.
When you see HTTP 302
Appears in login flows, feature flags, A/B testing, short-term promotional redirects, and geographic routing. Common in access logs during marketing campaigns or seasonal routing. Watch for 302s that have been "temporary" for months โ if the destination is permanent, convert to 301 and recover the lost SEO signals.
Decision rule
Use 300 when the response should communicate multiple choices behavior; use 302 when found is the accurate protocol signal.
A frequent mistake is swapping 300 and 302 for convenience; that causes client retry bugs, incorrect cache signals, and misleading monitoring data.
Use 300 when the correct protocol signal is Multiple Choices. Use 302 when the correct signal is Found. Returning either code for the wrong reason breaks client expectations, cache behavior, and monitoring accuracy.
FAQ
What is the biggest difference between 300 and 302?
300 communicates Multiple Choices, while 302 communicates Found. Choosing the right one keeps clients and intermediaries predictable.
Do 300 and 302 have SEO or caching impact?
Yes. Search engines and caches interpret status classes differently. Use each code according to its semantics to avoid accidental indexing, stale responses, or crawl inefficiency.
Can APIs safely return 300 instead of 302?
Only when it matches contract semantics. API clients often branch logic by exact code, so swapping them can break retries, auth handling, or user-facing errors.
Full guides
HTTP 300 Multiple Choices โ full guide ยท HTTP 302 Found โ full guide ยท All comparisons ยท HTTP 300 status reference ยท HTTP 302 status reference