Reference guide · http-status · Published 2026-08-15 · 3 min read

HTTP 300 Multiple Choices explained

Understand HTTP 300 Multiple Choices, its Location header role, and why modern servers prefer explicit redirects like 301 or 302.

Flat editorial illustration showing a lantern-style status readout with a neat row of stacked directory rails, each rail marked with an abstract tally.
Illustration: this article at a glance.

What 300 Multiple Choices means

300 Multiple Choices is an HTTP status that tells the client a resource is available in more than one representation, so the client should choose. The server may offer a list of options in the response body or point to a preferred one with a Location header.

Editorial close-up illustration showing a lantern-style status readout with a neat row of stacked directory rails, each rail marked with an abstract tally.
Illustration: a closer look at the technique described above.

In practice this historically served one of two niche uses: letting a user-agent pick which language or format of a resource it wanted, and machine-readable content negotiation, where a server that cannot decide for the client lists the alternatives. Both are almost always solved better with an explicit redirect now.

Why it is rare

Few servers ever return 300. Real content negotiation on the web is handled by the Vary header (as covered in the caching guide) or by a library on the client, not by asking the client to choose a 300 option manually. Browsers historically displayed a selection list, but for a normal website you want a URL that leads directly to the right content, not a menu mid-request.

Any search engine or user that hits a 300 has to interpret an ambiguity that a modern 301, 302, or 303 would resolve in one step. Because the meaning depends on the client, it is unpredictable and therefore rarely the right call for SEO or user experience.

Where it does appear

You may still see 300 Multiple Choices from older HTTP libraries or specialised link-negotiation services, and some servers return it when several document representations exist and none is an obvious default. It is not wrong to implement; it is just uncommon because every mainstream case now has a sharper tool.

Choosing a real redirect

When you want the browser or a search engine to land on one specific URL:

NeedStatus
Resource moved permanently301
Temporary move302 or 307
Keep the result for a "see also" style resource303

Use a single explicit redirect for each case instead of a 300 list, which the 301 guide and 302 guide cover in detail. The status-family reference in the full status list sets 300 alongside its redirect neighbours, so you can compare them at a glance.

If you ever inherit a system that responds 300, the robust fix is to choose a default variant and send a 301 (permanent) or 302/307 (temporary) to it, giving clients an unambiguous target instead of a choice screen.

Need a website built, fixed, optimised, migrated or replaced?

This technical resource is written by CSMBAC, a small design and development studio. If you would rather hand the problem to a professional, the website service page explains how we build enquiry-ready websites.

Explore website services