300

HTTP 300 Multiple Choices

3xx Redirection

3xx Redirection RFC 7231, Section 6.4.1

What is HTTP 300 Multiple Choices?

The 300 (Multiple Choices) status code indicates that the target resource has more than one representation and the user or user agent can choose a preferred one. The server may include a list of available representations in the response body. This is rarely used in practice — most servers choose one redirect target automatically.

Common Use Cases

  • Content negotiation for different file formats
  • Choosing between language variants

Usage Example

If your API serves a document in both JSON and XML formats and the client does not specify a preference via Accept headers, you could return 300 Multiple Choices with links to each variant. In practice, most APIs default to one format and use content negotiation transparently.

HTTP/1.1 300 Multiple Choices
Content-Type: text/html

<html><body><ul>
  <li><a href='report.json'>JSON</a></li>
  <li><a href='report.xml'>XML</a></li>
  <li><a href='report.csv'>CSV</a></li>
</ul></body></html>

Common Mistakes

⚠️

Mistake: Using 300 instead of transparent content negotiation

Fix: Modern APIs should use content negotiation via Accept headers to automatically select the best representation, returning 200 OK with the chosen format. 300 forces the client to make a manual choice, which degrades user experience.

Last updated: 21 Jun 2026