Independent writing tools and guides, edited by a human

Case Converter

Convert text to UPPER, lower, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case, and more, in one click.

Your workbench
0 characters
Read-only
Ready when you are.
On this page (07)
  1. 01One paste, ten outputs, and a decision to make
  2. 02Two families that do not mix
  3. 03The four prose cases, and their collateral damage
  4. 04The five identifier cases rebuild your words
  5. 05Handle acronyms by hand, always
  6. 06Frequently Asked Questions
  7. 07Convert, then read the first line out loud

One paste, ten outputs, and a decision to make

Take the sentence "A better way to work with words" and imagine you need every version of it at once: a headline, a CSS class, a JavaScript property, a Python variable, a database column, a constant, and something for a URL. The converter above produces all ten from a single paste. Producing them is the easy part. The interesting part is knowing which of the ten versions is a sentence and which is an identifier, because that distinction decides where each one belongs.

Mix the two families up and the failure is quiet but real. A camelCase variable in an editorial headline looks like a typo. A Title Case string used as a CSS class is a handshake with a bug, because class names travel through HTML and JavaScript where capitalization can be handled differently.

Two families that do not mix

The ten options split cleanly. Four of them work on prose, where words are meant to be read. Five build identifiers, where words are meant to be addressed by a machine. The tenth is a repair tool.

Case"a better way to work" becomesBelongs in
lowercasea better way to workBody copy, URLs, data normalisation
UPPERCASEA BETTER WAY TO WORKWarnings, short labels, legacy protocols
Title CaseA Better Way To WorkHeadlines and headings, after review
Sentence caseA better way to workBody copy, captions, UI labels
camelCaseaBetterWayToWorkJavaScript variables and object keys
PascalCaseABetterWayToWorkClass names, React components
snake_casea_better_way_to_workPython, Ruby, SQL column names
kebab-casea-better-way-to-workURLs, CSS class names, HTML attributes
CONSTANT_CASEA_BETTER_WAY_TO_WORKConstants and environment variables
tOGGLE cASEA BETTER WAY TO WORKUndoing a caps lock accident

That table is why "convert my text to Title Case" is an ambiguous request. Two people asking for it may want the headline version or the identifier version, and the tool cannot know which.

The four prose cases, and their collateral damage

Lowercase and UPPERCASE are pure character mappings. Every character is swapped individually, which is what you want and also the source of one surprise: in some languages a single character maps to two. German ß uppercases to SS, so the character count changes along with the case.

Title Case here capitalizes every word without exception, including "Of", "And", "The", and "A". It is honest, predictable, and not what any major style guide does. The debate over which small words stay lowercase is genuinely unsettled, which is why the title case versus sentence case comparison exists: a converter can apply a rule, but only you know which guide your publisher follows.

Sentence case is the one that needs a sentence splitter, and that is where it earns its keep or causes trouble. It lowercases the entire string first, then capitalizes the first letter of the text and the first letter after a period, question mark, or exclamation mark followed by whitespace.

One further limit: the capitalizer fires after terminal punctuation, not after a line break. Paste a list where each item starts on a new line with no closing period and only the first letter of the whole block is capitalized.

The five identifier cases rebuild your words

The identifier modes take a different route. Before any case is applied, the text is split into words: a space is inserted at every lowercase-to-uppercase boundary, hyphens are treated as word breaks, and punctuation and emoji are dropped. Then the words are rejoined according to the convention you picked.

This recovers what you expect from messy input. my_variable and myVariable becomes myVariableAndMyVariable, because the underscore, the space, and the internal capital are all recognised as boundaries. Accented letters survive, so café résumé becomes CaféRésumé in PascalCase.

It also guesses wrong in ways worth seeing before you ship the output.

Input tokensnake_case givesWhy
XMLHttpRequestxmlhttp_requestOnly the lowercase-to-uppercase boundary splits
iPhonei_phone"i" then a capital "P" reads as two words
don'tdon'tApostrophes hold a word together, so the quote stays

That second row is the acronym problem in its purest form, and it is not a bug the tool can fix, because iPhone genuinely looks like two words by the only rule available. The same rule wrecks camelCase if you send it through a prose mode: Title Case on myVariableName here returns Myvariablename Here.

Handle acronyms by hand, always

Every convention has a different answer for acronyms, and none of it can be inferred from the source text. Generate the identifier, then fix the two or three acronym tokens yourself.

ConventionResult for "HTTP response code"Convention for acronyms
camelCasehttpResponseCodeUsually lowercase the whole acronym
PascalCaseHttpResponseCodeTreat as a normal word, capital first letter
snake_casehttp_response_codeLowercase everything, no exceptions
kebab-casehttp-response-codeSame as snake_case with hyphens
CONSTANT_CASEHTTP_RESPONSE_CODEUppercase, indistinguishable from normal use

Note how CONSTANT_CASE hides the problem entirely: every letter is capital, so an acronym and a regular word look identical afterwards.

Consistency matters more than the choice itself. A codebase where one file writes MAX_RETRY_COUNT and another writes MaxRetryCount costs every reader a small decoding step, and the style sheet habit that settles editorial decisions works just as well for naming rules. Decide the convention once, write it down, and let the converter enforce it.

Frequently Asked Questions

Why does Title Case capitalize "of" and "the"?

Because the rule capitalizes every word without checking its part of speech. A converter can apply a mechanical rule reliably; deciding that "with" deserves a capital but "of" does not needs a dictionary and a style guide, and style guides disagree.

Why did Sentence case lowercase my surname?

Sentence case lowercases the entire string before capitalizing anything, so it cannot know that "Marie" was a proper noun. Add the capitals back by hand, or keep the original text beside the output and compare.

Why is there an apostrophe inside my camelCase output?

Apostrophes are treated as part of a word, so don't survives as one token and is capitalized as a unit, giving something like wellKnownDon'tStop. Rewrite the contraction out before converting, or fix the token manually.

Which case should I use for a web address?

kebab-case, all lowercase. URL paths are conventionally case-sensitive on the server even when a browser is forgiving, so My-Page and my-page can resolve differently. For the accent stripping and separator collapsing a URL also needs, use the slug generator.

Why did UPPERCASE change my character count?

Because a few characters map to two when uppercased. The German ß becomes SS, and ligatures such as fi become FI. Run any downstream length or column-width check against the converted text, never the original.

Convert, then read the first line out loud

The conversion is instant and the review is not, so build the habit around the output. After converting a headline or a name-bearing sentence, read the first and last lines aloud. Those positions are where proper nouns and sentence-initial words cluster, and where a case change is most visible. If a name has been flattened, fix it now rather than after publication.