HTTPfy

300 Multiple Choices

The resource has several representations and the client or user should choose one.

300 at a glance

Code
300
Name
Multiple Choices
Class
3xx Redirection
Status
IANA-registered standard code
Defined in
RFC 9110, Section 15.4.1
Cacheable by default
Yes, heuristically cacheable (RFC 9110 section 15.1): without Cache-Control or Expires, caches may store it and pick a freshness lifetime themselves. Send explicit Cache-Control to stay in control.

What 300 means

300 Multiple Choices offers a list of alternatives, for example the same document in several languages or formats, without the server picking one. The server can suggest a preferred choice in Location. Browsers do not choose automatically, so 300 is rare on the public web. It is heuristically cacheable.

What typically causes a 300

  • Apache content negotiation (MultiViews or type maps) when it cannot pick a single variant.
  • Some package and artifact repositories listing alternative downloads.

Fix it on the server

  • If one variant is clearly best, redirect to it (302/307) or serve it directly with Vary.
  • Include a body that lists the choices as links so humans can pick.

Fix it as a client or visitor

  • Follow the Location header if present, otherwise parse the list in the body.

Headers that go with 300

HeaderRole
LocationOptional preferred choice.
VaryLists the request headers used in negotiation.

Example response

HTTP/1.1 300 Multiple Choices
Location: /docs/guide.en.html
Content-Type: text/html

<a href="/docs/guide.en.html">English</a> <a href="/docs/guide.de.html">Deutsch</a>

Opens the HTTP headers tool with your URL filled in; it shows the status line and headers of every redirect hop.

Checking a whole domain's redirects? The HTTP status checker follows http, https, www and non-www variants and shows every hop.