300 Multiple Choices

The request has more than one possible representation and the server is asking the client to pick one.

Status

HTTP/1.1 300 Multiple Choices

Details

300 exists for agent-driven content negotiation. Instead of choosing a variant itself, the server lists the alternatives (different languages, formats, or encodings) and lets the client or the user decide. The list normally arrives as links in the body, and the server may still hint at a preferred option with a Location header.

It is almost never used. Server-driven negotiation with Accept headers and the Vary response header handles the same job without an extra round trip, so most sites simply serve their best guess with 200.

Headers

Common causes

How to fix it

As the client

As the server

Examples

GET /manual HTTP/1.1
Host: docs.example.com

HTTP/1.1 300 Multiple Choices
Content-Type: text/html; charset=utf-8
Location: /manual.en.html

<ul>
  <li><a href="/manual.en.html">English</a></li>
  <li><a href="/manual.de.html">Deutsch</a></li>
</ul>

Specifications

RFC 9110 §15.4.1

See also