Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Use lowercase when generating HTTP header field names. HTTP treats field names as case-insensitive, so Content-Type and content-type identify the same field. But HTTP/2 and HTTP/3 require lowercase field names on the wire; uppercase characters make a field name malformed in HTTP/3. Lowercase is the interoperable choice across HTTP versions. This advice applies to field names, not automatically to their values.

Are HTTP header names case-sensitive?

No. RFC 9110, Section 5.1, defines HTTP field names as case-insensitive. In other words, changing the capitalization of a name does not change which field it identifies. These spellings refer to the same field:

  • Content-Type
  • content-type
  • CONTENT-TYPE

That rule concerns the name to the left of the colon, not the value to its right. For example, an HTTP/1.1 message might contain content-type: text/html. The field name is lowercase; the value is separate and follows the rules defined for that particular field.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Pascal Case (often called title case in this context) is a capitalization style, not an HTTP requirement. An HTTP/1.1 implementation may encounter a name written as Content-Type, but there is no semantic benefit to choosing that casing in new code.

#1 Best Overall
Sale
HTTP: The Definitive Guide
  • Used Book in Good Condition

Why is lowercase the safest convention?

HTTP/2 and HTTP/3 make lowercase more than a style preference for messages sent over those protocols:

  • HTTP/2: RFC 9113, Section 8.2, says field names “MUST be converted to lowercase when constructing an HTTP/2 message.”
  • HTTP/3: RFC 9114, Section 4.2, requires names to be lowercase before encoding and says a request or response containing uppercase characters in field names must be treated as malformed.

So a name written in Pascal Case may be understood as the same field at the HTTP semantic level, yet uppercase field-name characters are not valid on the HTTP/2 or HTTP/3 wire. A library or intermediary can normalize names as it handles a message, but application code should not depend on that happening. Emit lowercase from the start.

Lowercase also makes logs and protocol inspection less surprising: HTTP/2 and HTTP/3 representations use lowercase field names, while some HTTP/1.1 examples or tools may display conventional capitalization. That visual difference does not imply different fields.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
5-Pack of Easy Tech Reference Books
  • This product is a set of 5 Easy Tech Reference Books that provide comprehensive guides on various technological topics. Each book in the pack is dedicated to a specific subject, making it a valuable resource for those seeking to enhance their tech knowledge.
  • The books cover a wide range of topics including Windows 10, iPhone, iPad, Android, and Facebook. This makes the set an ideal purchase for individuals who use these platforms and want to understand them better, or for those who are new to these technologies and need a user-friendly guide.
  • The books are designed to be easy to understand, with clear instructions and step-by-step guides. This makes them suitable for users of all ages and levels of tech proficiency, from beginners to more advanced users.
  • Each book in the set is compact and portable, making it easy to carry around and refer to whenever needed. This feature makes the books a handy tool for quick reference or for learning on the go.
  • The set of 5 Easy Tech Reference Books is not only educational but also practical. It can help users troubleshoot common issues, navigate new updates, and make the most of their devices and platforms. This makes the set a useful gift for friends and family who want to stay updated with the latest tech trends.

What should developers do in requests and responses?

Emit lowercase names

Use lowercase names such as content-type, authorization, and x-request-id. The convention applies in both requests and responses. If you are using an HTTP client or server library, provide the field name in lowercase where practical; the library remains responsible for producing a valid message for the negotiated HTTP version.

GET /status HTTP/1.1
Host: example.com
content-type: application/json
x-request-id: 7f2a

This is an HTTP/1.1-style illustration of valid lowercase names. It is not a recommendation to hand-build protocol messages when a maintained HTTP library is available.

Match names case-insensitively when reading

When application logic looks up a field, it should not assume that incoming spelling matches the casing used in source code or a configuration file. Use the HTTP library’s case-insensitive header collection when it provides one. If you need your own lookup representation, normalize field names consistently, such as to lowercase, while keeping the original values intact.

Do not confuse case-insensitive name matching with arbitrary rewriting. A program can normalize names for lookup without changing the field value or the message’s other semantics.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not lowercase values as a blanket rule

There is no general rule that every header value is case-insensitive. How a value is parsed and whether any part of it is case-sensitive depends on the definition of that specific field. Lowercasing a value just because you lowercased its name can therefore alter its meaning. Preserve values unless the relevant field specification explicitly permits or requires normalization.

What about HTTP/2 and HTTP/3 pseudo-headers?

Names beginning with a colon, such as :method or :path, are protocol pseudo-header fields, not ordinary HTTP field names. HTTP/3’s lowercase requirement applies to field names, and its pseudo-header mechanism has its own role in representing request or response information. Do not treat pseudo-headers as ordinary application headers or add them manually to a regular header map. Let the protocol implementation construct them.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How should you name a new custom field?

Choose a concise, descriptive field name and check the IANA HTTP Field Name Registry before introducing a standardized name. RFC 9110’s registration guidance says field names ought to be registered there. Registration and capitalization are different concerns: the registry is relevant to whether a name is already defined and how a new standardized field is handled; lowercase is the recommended emission form regardless.

Do not assume a custom field needs an X- prefix. The registry includes the standard reference point for field names, and the advice is to check it rather than invent a naming prefix rule. Whatever custom name you use, emit it in lowercase and ensure its value and behavior are documented for the systems that exchange it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Common casing mistakes and how to fix them

  • Sending Content-Type from low-level HTTP/2 or HTTP/3 code: convert the field name to lowercase before constructing the protocol message, or use a library that handles the protocol correctly.
  • Looking up only one capitalization: replace direct, case-sensitive name comparisons with the HTTP library’s header lookup or a consistent case-insensitive normalization.
  • Lowercasing an entire header line: lowercase only the field name if normalization is needed. Preserve the value unless that field’s specification defines a normalization.
  • Manually creating colon-prefixed fields: keep pseudo-header handling in the HTTP/2 or HTTP/3 implementation rather than treating pseudo-headers as ordinary fields.
  • Assuming a displayed spelling proves what went over the wire: account for the HTTP version and the behavior of the client, server, proxy, or inspection tool. A display may show conventional casing for an HTTP/1.1 exchange and lowercase for HTTP/2 or HTTP/3 without indicating a semantic difference.

A separate tool for screenshot-based API work

Header casing is independent of which screenshot service you use. If your developer workflow also needs website captures, ScreenshotNeo is a website screenshot API and MCP server; its API supports custom headers. For the header names you supply to any HTTP request, use lowercase as the interoperable convention.

Or skip the browser setup: make one GET request for a capture. See the ScreenshotNeo API documentation for setup and options.

Quick Recap

SaleBestseller No. 1
HTTP: The Definitive Guide
HTTP: The Definitive Guide
Used Book in Good Condition
$26.04
Bestseller No. 2
Bestseller No. 4
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

ScreenshotNeo removes cookie banners, popups, and chat widgets before capture; bot checks, blank pages, and failed loads are not billed; its MCP server lets AI agents take screenshots; and the free plan includes 1,000 screenshots a month with no card, with paid plans starting at $5 for 3,000. Sign up for the free plan.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.