Error Codes Wiki

HTTP 300 Multiple Choices — Content Negotiation Guide

Informational3xx redirection

About HTTP 300 Multiple Choices

HTTP 300 Multiple Choices indicates multiple representations are available for the requested resource, and the user or user agent can select a preferred one. This guide covers everything you need to know about this topic, including common causes, step-by-step solutions, and answers to frequently asked questions.

Here are the key things to understand: 300 is rarely used in practice compared to other 3xx redirects. Server provides a list of alternative representations (different formats, languages, encodings). The preferred choice should be indicated via the Location header. Response body typically contains a list of links for the user to choose from. Part of HTTP content negotiation alongside Accept, Accept-Language headers. Understanding these fundamentals will help you diagnose and resolve this issue more effectively.

The most common reasons this occurs include: Server offers the same resource in multiple formats (HTML, JSON, XML). Content available in multiple languages without a clear default. Resource exists at multiple URIs and server cannot auto-select. API versioning where multiple versions are available at same endpoint. Identifying the root cause is the first step toward finding the right solution.

To resolve this, follow these recommended steps: Check the response body for a list of available alternatives and select one. Set explicit Accept and Accept-Language headers in your request. If building an API, prefer 303 See Other or specific content negotiation over 300. Configure server-driven negotiation to auto-select based on client headers. Use the Location header value as the preferred redirect target. If these steps do not resolve the issue, consider consulting additional resources or a qualified professional.

This article is part of our HTTP Status Codes collection on Error Codes Wiki. We provide comprehensive, up-to-date information to help you find solutions quickly.

Quick Answer

Why is 300 rarely seen in the wild?

Most servers use server-driven negotiation or specific redirects (301, 302) instead of presenting multiple choices to the client.

Overview

HTTP 300 Multiple Choices indicates multiple representations are available for the requested resource, and the user or user agent can select a preferred one.

Key Details

  • 300 is rarely used in practice compared to other 3xx redirects
  • Server provides a list of alternative representations (different formats, languages, encodings)
  • The preferred choice should be indicated via the Location header
  • Response body typically contains a list of links for the user to choose from
  • Part of HTTP content negotiation alongside Accept, Accept-Language headers

Common Causes

  • Server offers the same resource in multiple formats (HTML, JSON, XML)
  • Content available in multiple languages without a clear default
  • Resource exists at multiple URIs and server cannot auto-select
  • API versioning where multiple versions are available at same endpoint

Steps

  1. 1Check the response body for a list of available alternatives and select one
  2. 2Set explicit Accept and Accept-Language headers in your request
  3. 3If building an API, prefer 303 See Other or specific content negotiation over 300
  4. 4Configure server-driven negotiation to auto-select based on client headers
  5. 5Use the Location header value as the preferred redirect target

Tags

http300multiple-choicescontent-negotiationredirect

More in 3xx Redirection

Frequently Asked Questions

Most servers use server-driven negotiation or specific redirects (301, 302) instead of presenting multiple choices to the client.