300 Multiple Choices
The resource is available in several representations; the server lists the options so the user or client can pick one.
The request has more than one possible response and the client may choose among them.
What HTTP 300 Multiple Choices Means
The request has more than one possible response and the client may choose among them.
The resource is available in several representations; the server lists the options so the user or client can pick one.
Common Causes
- Content negotiation with multiple variants
- A resource available in several formats or languages
- Agent-driven negotiation
How to Fix It (For Visitors)
- Choose one of the offered options
How to Fix It (For Developers/Admins)
- List the available variants in the response
- Add a Location header for a preferred default
- Consider server-driven negotiation instead
Returning a 300 Multiple Choices (Code Examples)
If you build APIs or web apps, here is how to send an HTTP 300 response and how to test for it:
Node.js (Express)
app.get('/resource', (req, res) => {
res.status(300).json({ error: 'Multiple Choices' });
});
Python (Flask)
@app.route('/resource')
def resource():
return jsonify(error='Multiple Choices'), 300
PHP
<?php
http_response_code(300);
header('Content-Type: application/json');
echo json_encode(['error' => 'Multiple Choices']);
Check the status with curl
curl -I https://example.com/resource
# Look for: HTTP/1.1 300 Multiple Choices
Frequently Asked Questions
What does HTTP 300 Multiple Choices mean?
The resource is available in several representations; the server lists the options so the user or client can pick one. In short: The request has more than one possible response and the client may choose among them.
How should I handle an HTTP 300 Multiple Choices response?
List the available variants in the response. Add a Location header for a preferred default. Consider server-driven negotiation instead.
Official Specification
The 300 Multiple Choices status code is defined in RFC 9110 Section 15.4.1.