Error Codes Wiki

HTTP 300 Multiple Choices — Content Negotiation Guide

Informational3xx redirection

Overview

HTTP 300 Multiple Choices indicates multiple representations are available for the requested resource, and the user or user agent can select a preferred one.

Key Details

  • 300 is rarely used in practice compared to other 3xx redirects
  • Server provides a list of alternative representations (different formats, languages, encodings)
  • The preferred choice should be indicated via the Location header
  • Response body typically contains a list of links for the user to choose from
  • Part of HTTP content negotiation alongside Accept, Accept-Language headers

Common Causes

  • Server offers the same resource in multiple formats (HTML, JSON, XML)
  • Content available in multiple languages without a clear default
  • Resource exists at multiple URIs and server cannot auto-select
  • API versioning where multiple versions are available at same endpoint

Steps

  1. 1Check the response body for a list of available alternatives and select one
  2. 2Set explicit Accept and Accept-Language headers in your request
  3. 3If building an API, prefer 303 See Other or specific content negotiation over 300
  4. 4Configure server-driven negotiation to auto-select based on client headers
  5. 5Use the Location header value as the preferred redirect target

Tags

http300multiple-choicescontent-negotiationredirect

More in 3xx Redirection

Frequently Asked Questions

Most servers use server-driven negotiation or specific redirects (301, 302) instead of presenting multiple choices to the client.