HTTP 300 Multiple Choices: crawler handling
HTTP 300 Multiple Choices signals that the requested resource has more than one representation and the client (or user) should pick one, optionally guided by a Location header pointing at a preferred choice. It is defined in RFC 9110 but is almost never used in practice for web pages, because there is no standard machine-readable format for the choices. For SEO and crawling, a 300 is ambiguous: most crawlers cannot reliably follow it, so a concrete redirect is preferable.
What 300 means
300 Multiple Choices indicates the target resource has more than one representation — for example different formats or languages — and information about the alternatives is being provided so a choice can be made. RFC 9110 lets the server include a Location header naming a preferred choice, which a user agent may follow automatically.
In practice there is no standardised, machine-readable body format for listing the choices, so general-purpose clients and crawlers cannot act on a 300 the way they can on a 301. It survives mostly in niche content-negotiation setups.
Why it matters for crawling
Search crawlers want one canonical URL per piece of content. A 300 pushes the choice back to the client without a reliable mechanism, so the crawler may not index any representation. If you genuinely have multiple language or format variants, model them with hreflang, distinct canonical URLs, or content negotiation that redirects with a 301/302 — not a bare 300.
If you see 300s in logs, check what software emits them; it is unusual enough that it often points to a misconfigured negotiation layer.
- One canonical URL per content item, reachable with 200
- Use 301/302 to send agents to a preferred representation
- Use hreflang for language/region variants, not 300
How it appears in analytics and logs
A 300 on an indexable URL means the server declined to choose a representation. Crawlers do not have a defined way to disambiguate, so the URL may go unindexed. Treat repeated 300s on important pages as a configuration issue, not a healthy state.
Diagnostic use case
Recognise a 300 in logs as agent-driven content negotiation, and replace it with a single canonical 301/302 plus a real Content-Location when one representation is clearly preferred.
What WebmasterID can help detect
WebmasterID can surface 3xx status codes crawlers receive, helping you spot URLs returning an ambiguous 300 where a single canonical redirect would index more reliably.
Common mistakes
- Expecting crawlers to parse a 300 body and pick a representation — there is no standard format for them to read.
- Using 300 where a 301 to the preferred variant would be unambiguous.
- Serving 300 without a Location header, leaving agents with no preferred choice.
Privacy and accuracy notes
A 300 status is a request-level negotiation signal with no personal data. WebmasterID records the status a crawler received without attaching it to any visitor identity.
Related pages
- HTTP 301 Moved Permanently for crawlers
301 Moved Permanently tells clients and crawlers that a resource has permanently moved to a new URL. It is the standard signal for migrations and URL changes: crawlers follow it, update their index over time, and consolidate ranking signals onto the new location. Use it whenever content has a stable new home.
- HTTP 303 See Other and POST-redirect-GET
303 See Other tells the client to fetch a different URL with a GET, regardless of the original request method. It is the backbone of the POST-redirect-GET pattern, sending a browser to a result page after a form submission so a refresh does not resubmit. Because it forces GET, it differs from method-preserving 307.
- Diagnosing hreflang errors
hreflang annotations tell search engines which language and regional URL to show to which users. They are easy to get subtly wrong: return tags that are not reciprocal, invalid language or region codes, hreflang pointing at non-canonical or redirecting URLs, or a missing self-reference. These errors cause search engines to ignore the cluster, so the wrong-language page can surface for users.
- Website observability
See the status codes crawlers receive across your site, recorded server-side.
Sources and verification notes
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.