HTTPError.net

The fastest way to diagnose, understand, and fix any HTTP status code

300 Multiple Choices

Fault: Neither
TL;DR

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

How to Fix It (For Visitors)

How to Fix It (For Developers/Admins)

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.

View the IANA HTTP Status Code Registry →