--- title: "300 Multiple Choices — what it means and how to fix it" description: "The requested URL has several representations and the server is not choosing between them. What causes an HTTP 300, what to try as a visitor, and what to check if it is your own site." url: https://atoneplace.net/error/300/ site: "At One Place" --- # HTTP 300 — Multiple Choices **HTTP 300: Multiple Choices** The requested URL has several representations and the server is not choosing between them. ## What 300 actually means The resource exists in more than one form — different languages, different formats, different qualities — and the server is handing back a list rather than picking one. There is no standard machine-readable format for that list, which is why almost nobody uses it: content negotiation via `Accept` headers solves the same problem without a round trip. Apache's MultiViews can still produce one when a filename matches several files. ## Common causes - Apache `MultiViews` found several files matching one request path - A server implementing transparent content negotiation offered the options - A resource genuinely available in several formats with no server-side preference ## If you're just trying to view the page 1. Pick one of the offered links if the page lists them 2. Nothing else to do — this is a server configuration choice, not an error on your end ## If it's your site 1. Prefer `Accept`-header negotiation with a `Vary` response header over returning 300 2. If you must return 300, include a `Location` header with the server's preferred choice so simple clients can follow it 3. Turn off `MultiViews` in Apache if you did not mean to enable extension-less negotiation ## Reference - **Status code:** 300 - **Reason phrase:** Multiple Choices - **Category:** 3xx — Redirection - **Cacheable by default:** Yes - **Defined in:** RFC 9110 §15.4.1 ## Common questions ### What does HTTP 300 mean? The requested URL has several representations and the server is not choosing between them. The resource exists in more than one form — different languages, different formats, different qualities — and the server is handing back a list rather than picking one. There is no standard machine-readable format for that list, which is why almost nobody uses it: content negotiation via `Accept` headers solves the same problem without a round trip. ### How do I fix a 300 error? Pick one of the offered links if the page lists them ### Is 300 a client error or a server error? 300 is in the 3xx range, which means redirection. It is not an error at all. ## Related pages - [301 Moved Permanently](https://atoneplace.net/error/301/) - [302 Found](https://atoneplace.net/error/302/) - [304 Not Modified](https://atoneplace.net/error/304/) - [307 Temporary Redirect](https://atoneplace.net/error/307/) - [308 Permanent Redirect](https://atoneplace.net/error/308/) - [303 See Other](https://atoneplace.net/error/303/) - [305 Use Proxy](https://atoneplace.net/error/305/) - [306 (Unused)](https://atoneplace.net/error/306/) ## Sources - Hypertext Transfer Protocol (HTTP) Status Code Registry — IANA (https://www.iana.org/assignments/http-status-codes/) - RFC 9110: HTTP Semantics — IETF (https://www.rfc-editor.org/rfc/rfc9110.html)