HTTP Status Code 300 = “Multiple Choices”
The requested resource has multiple possible responses, and the client/browser should choose one.
Purpose
300 Multiple Choices is used when:
- multiple file formats are available,
- multiple languages exist,
- several redirect targets are possible,
- content negotiation is needed. Example
http id=”g7v2mx”
HTTP/1.1 300 Multiple Choices
Server may return options like:
json id=”t3n8qe”
{
“versions”: [
“/page-en”,
“/page-fr”,
“/page-es”
]
}
Real-world scenarios
- Language selection pages
- Different media formats
- API version choices
- Mirror download links
Example:
/manual.pdf/manual.docx/manual.htmlIs 300 commonly used?
No.
Most modern applications use:
301→ permanent redirect302→ temporary redirect303→ see other
instead of 300.
Developer example
Node.js Express
js id=”a8m3pd”
res.status(300).json({
choices: [
“/en/home”,
“/fr/home”
]
});
PHP
php id=”x9q1wc”
http_response_code(300);
echo “Multiple Choices Available”;
Difference from other redirects
| Code | Meaning |
| — | |
| 300 | Multiple Choices |
| 301 | Permanent Redirect |
| 302 | Temporary Redirect |
| 303 | See Other |
| 307 | Temporary Redirect |
| 308 | Permanent Redirect |
Browser behavior
Browsers rarely show a special UI for 300.
Usually applications handle the selection logic themselves.