300 Multiple Choices HTTP Status Code

Description

The HTTP status code 300 is known as "Multiple Choices." This status code indicates that the request has more than one possible response, and the server is providing the client with a list of options. The user or user agent (web browser) can then choose which address to follow. Essentially, the 300 status code is used in situations where a single request could result in multiple resources being applicable, and the server wants to guide the client towards making a choice among them.

For instance, if a URL could lead to different versions of a document (perhaps differing in language, format, or content), the server might return a 300 status code along with a list of the available options. The client could then select the most appropriate option based on its capabilities, user preferences, or other criteria.

The response from the server typically includes a list of resource characteristics and locations from which the client or user can choose the most appropriate. The list is presented in the form of a web page or a document containing links to the different resources. However, not all web browsers handle the 300 status code by presenting choices to the user; some might simply pick the first option or handle it in another predefined manner.

Status

HTTP
300 Multiple Choices

Common Causes

The causes or scenarios leading to this response include:

  1. Content Negotiation: The server has multiple representations of the requested resource, and it's leaving it up to the client to choose one. This might be based on criteria like language preferences, document formats, or encoding types. For example, if a client requests a document and the server has both a PDF and a Word document available, it might return a 300 status code to let the client choose.

  2. Manual Selection Required: The server could use the 300 status code when it requires manual selection from the user. This might be for cases where automatic negotiation (like what happens with the Accept header for language or format preferences) isn't feasible or desired. The server response might include a list of possible choices in the form of links or buttons in a web interface.

  3. Deprecated or Moved Resources: Although not the primary use case (since there are more specific status codes like 301 for permanent redirection and 302 for temporary redirection), a server might use the 300 status code if a resource has been moved or if there are better or more current versions of the resource available. It then leaves the choice to the client to follow one of the suggested redirects.

  4. Versioning: In scenarios where different versions of a resource are available and the server wants the client to decide which version is most appropriate for their needs. This could be applicable for APIs, where multiple versions might exist for backward compatibility.

The HTTP/1.1 specification requires that the server includes enough information for the user or user agent (browser) to make a selection from the list of options. This can be in the form of a list in the response body or headers indicating the available options.

Browser Support

The following table will show you the current browser support for the 300 Multiple Choices HTTP status code.

Desktop
Edge Chrome Firefox Opera Safari
YesYesYesYesYes
Tablets / Mobile
Chrome Firefox Opera Safari Samsung Webview
YesYesYesYesYesYes

Last updated by CSSPortal on: 31st March 2024