Text Case Converter

Convert text between UPPERCASE, lowercase, Title Case, Sentence case, camelCase, snake_case and kebab-case, with the naming conventions each one belongs to.

Uppercasing text can make it longer

The mental model is that upper and lower case are two labels for the same letter, and that switching is a lookup. Neither half holds once you leave the 26 letters of English. Sweeping every character in the Basic Multilingual Plane that has a distinct uppercase form — 1,273 of them:

Get longer when uppercased1028.0%
Get shorter0never
Do not survive upper-then-lower12910.1%
CharacterUppercasedLowercased again
ß German sharp s SS ss
the fi ligature FI fi
İ Turkish dotted capital I İ
ı Turkish dotless i I i
ǰ j with caron
ς Greek final sigma Σ σ

The German ß is the famous one: uppercase it and you get SS, two characters where there was one. Lowercase that and you get ss, which is not where you started. The ligature does the same, and so does a long tail of accented forms with no precomposed capital.

Nothing ever gets shorter, which is the one piece of good news — but it means a field holding twenty characters may not hold twenty after uppercasing, and that is a real source of truncation bugs in code that assumed the length was fixed.

And the answer depends on the language

Turkish has two letters where English has one — dotted i and dotless ı — and they are genuinely different letters rather than styling:

InputOperationEnglishTurkish
i uppercase I İ
I lowercase i ı

So a case-insensitive comparison that uses the reader's locale decides that TITLE folds to title for most people and tıtle for a Turkish user — the same comparison giving two answers. This has broken real login systems, file lookups and configuration parsing.

The rule that avoids all of it: fold with an invariant locale when comparing, and use the reader's locale only for text you are showing them. They are different jobs and they need different functions.

How to use

  1. Paste your text.
  2. Pick the case you want.
  3. Copy the result.
  4. Check acronyms and proper nouns, which no automatic rule handles well.

Frequently asked questions

What is the difference between Title Case and Sentence case?

Title Case capitalises the significant words, leaving short articles and prepositions lowercase. Sentence case capitalises only the first word and any proper nouns. Most modern style guides prefer sentence case for headings because it is easier to read and much easier to apply consistently.

Which words stay lowercase in Title Case?

Conventionally articles, short conjunctions and short prepositions — a, an, the, and, but, or, for, in, on, at — unless one begins or ends the title. Style guides disagree on the exact cutoff, usually setting it at three or four letters, so there is no single correct answer.

When do programmers use each convention?

camelCase for variables in JavaScript and Java, PascalCase for classes and types, snake_case for variables in Python and Ruby and for database columns, kebab-case for URLs and CSS class names, and SCREAMING_SNAKE_CASE for constants. The conventions are arbitrary but strongly held, and mixing them within a codebase reads as carelessness.

Why is it called kebab-case?

Because the words are skewered on hyphens. It is also called dash-case or lisp-case. It cannot be used for identifiers in most languages, since the hyphen would be read as subtraction, which is why it survives mainly in CSS and URLs.

How are acronyms handled in camelCase?

Inconsistently, and it is a genuine source of argument. Both parseHTTPResponse and parseHttpResponse are common; the second is easier to read and easier to convert back, and most modern style guides prefer it. Whichever you choose, apply it consistently.

Does case conversion work for all languages?

Not perfectly. Turkish has a dotless i that breaks naive uppercasing, German has a sharp s whose capital form was only standardised recently, and many scripts have no concept of case at all. Automatic conversion handles English well and other languages variably.

🔒 This tool runs entirely in your browser. Nothing you enter is uploaded, logged, or stored.