What does HTTP 300 mean?
The resource has several representations and the client may choose one. Meant for content negotiation (different languages or formats). Browsers do not show a choice screen, so in practice sites redirect with 301/302 or use Accept headers instead.
3xx Redirection: The client must take another step — usually follow the URL in the Location header — to complete the request.
Best practices
- Prefer a 301/302 to the best match, or serve the right variant directly with
Vary. - For languages, link alternates with
hreflanginstead.
300 and SEO
Search engines may pick the URL in the Location header if present; otherwise use canonical tags and hreflang.
Example response
HTTP/1.1 300 Multiple Choices
How to return a 300 response
Node.js (Express)
res.redirect(300, 'https://example.com/new-url');PHP
header('Location: https://example.com/new-url', true, 300);
exit;Python (Flask)
return redirect('https://example.com/new-url', code=300)Go (net/http)
http.Redirect(w, r, "https://example.com/new-url", 300)nginx
return 300 https://example.com/new-url;
Related status codes
- 301 Moved Permanently — The resource has a new permanent URL, given in the Location header.
- 302 Found — The resource is temporarily at a different URL, given in the Location header.
- 406 Not Acceptable — The server cannot produce a response matching the client’s Accept headers.
Check which status code a URL returns with the HTTP header checker, or trace a redirect chain with the redirect checker.
Frequently asked questions
What does status code 300 mean?
Does 300 affect SEO?
Location header if present; otherwise use canonical tags and hreflang.