300 Multiple Choices: one URL, several versions

300 Multiple Choices says a resource has several representations and the client should pick one; it is rarely used on today’s web.

Check a URL’s status code

300 Multiple Choices says the requested resource exists in several versions (different formats, languages or variants) and the client should pick one. It’s one of the least-used status codes on the web, and for most sites there’s a better tool for the job.

Definition

RFC 9110, section 15.4.1 describes 300 as offering the user or user agent a choice between representations, each with its own more specific URL. This is called reactive negotiation. If the server has a preferred choice, it should name it in a Location header, and a browser may follow that automatically. The body should list the alternatives, but HTTP defines no standard format for that list, so clients handle 300 inconsistently. A 300 is cacheable by default.

Where it appears

  • Some content-negotiation setups that can’t pick a variant on their own.
  • Specialized APIs and archives that expose several formats of one document.
  • Misconfigured servers or plugins, which is the most likely reason you’d find one in an audit.

SEO impact

Google’s documentation explains how Googlebot handles 301, 302, 303, 304, 307 and 308, but says nothing specific about 300. You can’t predict which URL, if any, would end up indexed, and that alone is reason to avoid it for public pages.

For the usual use case, language or region versions, Google recommends a separate URL for each version, connected with hreflang, and advises against automatically redirecting visitors based on the language it thinks they speak. A language picker page can return 200 and be marked as x-default. For a page that has moved, use 301; for a temporary detour, 302.

How to check

Trace the URL with the redirect checker to see its status and any Location header, and validate your language setup with the hreflang checker. A 300 response looks like this:

HTTP/1.1 300 Multiple Choices
Location: https://www.example.com/report.html
Content-Type: text/html; charset=utf-8

<ul>
  <li><a href="/report.html">HTML version</a></li>
  <li><a href="/report.pdf">PDF version</a></li>
</ul>

Frequently asked questions

Do browsers follow a 300 redirect automatically?

They may, if the response includes a Location header with the preferred choice. Without one, the visitor sees whatever list of options the server sent in the body.

Should I use 300 for language versions of my site?

No. Give each language its own URL, connect them with hreflang, and let visitors switch languages themselves. Google advises against automatic language redirects.

How does Google handle a 300 status code?

Google’s status code documentation doesn’t describe 300, so its handling isn’t predictable. Use 301 or 308 for permanent moves and 302 or 307 for temporary ones.