3xx Redirects
Last updated Jun 09, 2026

What is HTTP Status Code 300? - Multiple Choices

Benjamin Bouchet
Benjamin Bouchet
Get your free
Abstract
 API key now
stars rating
4.8 from 1,863 votes
See why the best developers build on Abstract
START FOR FREE
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No credit card required

The HTTP Status Code 300 indicates that there exist multiple options for the resource at the server that the client may choose from.

As an example, a 300 code could present to the client multiple image or video formats that are available for the client to request, or show a list of files with different file names.

Frequently Asked Questions

What does HTTP status code 300 mean?

HTTP 300, known as "Multiple Choices," means the requested resource has more than one available representation and the client must choose which one to use. The server presents a list of options—such as different file formats, languages, or versions—and waits for the client or user to select one. It is classified as a 3xx redirection response.

When does a server return a 300 status code?

A server returns a 300 when a single URL maps to multiple representations of a resource, for example different media formats, file variants with different names, or content in multiple languages. The server uses it to signal that automatic resolution is not possible and the client must actively pick an option before the request can proceed.

What is the difference between HTTP 300, 301, and 302?

HTTP 301 and 302 are automatic redirects—the server has already decided where the client should go and sends it there without user input. HTTP 300 is different because there is no single determined destination; the server offers multiple choices and may require the user or user agent to make the selection. This is why 300 can require user intervention while 301 and 302 do not.

Does a 300 response include a redirect location?

A 300 response can optionally include a Location header if the server has a preferred choice it wants the client to follow. When a Location header is present, some user agents will automatically follow it, but this behavior is not guaranteed and varies across browsers and HTTP clients. The body of the response should also contain a list of the available options in a format the client can parse.

Why is HTTP 300 rarely seen in practice?

HTTP 300 is seldom used in modern web applications because content negotiation is typically handled automatically between the server and client using request headers such as Accept and Accept-Language. Servers generally resolve the best representation themselves and respond directly, removing the need to ask the client to choose. As a result, 300 remains one of the least commonly encountered HTTP status codes.

How should a developer handle a 300 response in their application?

When your application receives a 300 response, check the response body for the list of available resource representations and, if present, the Location header for the server's preferred option. Your code should either automatically follow the preferred location or present the choices to the user. Because browser and client behavior around 300 is inconsistent, explicit handling in your application code is more reliable than relying on automatic resolution.

Get your free
API
key now
stars rating
4.8 from 1,863 votes
See why the best developers build on Abstract
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
No credit card required