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
- 1Check the response body for a list of available alternatives and select one
- 2Set explicit Accept and Accept-Language headers in your request
- 3If building an API, prefer 303 See Other or specific content negotiation over 300
- 4Configure server-driven negotiation to auto-select based on client headers
- 5Use the Location header value as the preferred redirect target
Tags
http300multiple-choicescontent-negotiationredirect
More in 3xx Redirection
http-300-multiple-choicesHTTP 300 Multiple Choices — What It Means & How to Fix It
Warninghttp-301-moved-permanentlyHTTP 301 Moved Permanently — What It Means & How to Fix It
Warninghttp-302-foundHTTP 302 Found — What It Means & How to Fix It
Warninghttp-303-see-otherHTTP 303 See Other — What It Means & How to Fix It
Warninghttp-304-not-modifiedHTTP 304 Not Modified — What It Means & How to Fix It
Warninghttp-305-use-proxyHTTP 305 Use Proxy — What It Means & How to Fix It
WarningFrequently Asked Questions
Most servers use server-driven negotiation or specific redirects (301, 302) instead of presenting multiple choices to the client.