Allin1Tool
Text ToolsRuns in your browser

Case Converter

Switch text between ten casing styles, from UPPERCASE and Title Case to camelCase and snake_case, with locale-aware mappings.

Share:

Case Converter workspace

Turkish and Azerbaijani map i to İ and I to ı, which the generic uppercase rules get wrong.

Case-insensitive.

Text Statistics

Characterswhat you can see — grapheme clusters0
Characters without spaces0
UTF-16 code unitswhat String.length reports0
Words0
Sentences0
Paragraphs0
Lines0
Average word length0 chars
Reading timeat 225 words per minute
Speaking timeat 130 words per minute

Everything on this page is computed in your browser. Nothing is uploaded, and nothing is saved between visits — closing the tab is enough to clear it.

Using Case Converter

  1. Paste your text into the editor — every style acts on whatever is currently in the box.

  2. Set the casing language if you need Turkish or Azerbaijani dotted-i rules; leave it on browser default otherwise.

  3. Click one of the ten style buttons, from UPPERCASE and Title Case through to snake_case and dot.case.

  4. Press Undo to step back if the result is not what you wanted, then copy or download the text.

Ten casing styles run against the text in the editor, using locale-aware upper and lower mappings so Turkish and Azerbaijani dotted-i behave correctly. Title Case follows a style rule rather than capitalising every word, and the identifier styles break names such as readHTMLFile into their component words before rejoining them.

Ten casing styles applied to whatever is in the box, with an Undo button for when the result is not what you pictured. Find and replace works on the same text, and nothing here is written to storage.

Ten styles, and what each is for

Four are prose styles — UPPERCASE, lowercase, Sentence case and Title Case. Six are identifier styles — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE and dot.case. The identifier styles run line by line, so a pasted column of names comes back as a column rather than welded into one token.

They also take identifiers apart properly on the way in. readHTMLFile is read as three words — read, HTML, File — because the splitter looks for the boundary between a run of capitals and a capital followed by a lowercase letter, not just for existing separators. So snake_case returns read_html_file, CONSTANT_CASE returns READ_HTML_FILE, and camelCase returns readHtmlFile. A converter that only split on spaces and hyphens would hand you readhtmlfile.

Title Case follows a rule, not a loop

Capitalising every word is not title case in any published style guide. Articles, coordinating conjunctions and short prepositions stay lowercase in the middle of a line here, and are capitalised when they open or close it.

Run read the HTML and XML spec through Title Case and you get Read the HTML and XML Spec. Both acronyms survive intact, the and and stay down, Read is raised because it opens the line and Spec because it closes it. THE STATE OF THE ART comes back as The State of the Art.

Those two results come from the same guard. All-caps tokens are preserved as acronyms only while fewer than half the words on the line are all-caps; past that threshold the tool decides it is looking at shouting and normalises everything. The threshold costs you accuracy on short lines: HTML and CSS is two-thirds acronym, so it returns as Html and Css. There is no way to have both behaviours at once, and short headings are the case you will have to repair by hand.

Casing is a language question

Turkish and Azerbaijani have two letter i's, dotted and dotless, and they are separate letters rather than variants. Uppercase istanbul under the browser default and you get ISTANBUL; pick Turkish from the language selector and you get İSTANBUL, which is the spelling a Turkish reader expects. Lowercasing I is the mirror image: ı under Turkish, i under everything else.

German is the other one worth knowing about. Uppercasing straße yields STRASSE — the sharp s expands into two letters, so the string comes out one character longer than it went in. If you are casing text that has to fit a fixed-width field, measure it afterwards in the word counter.

Where this gets it wrong

Sentence case is the weakest of the four, and it is worth seeing the failure before you trust it. Feed it we need approx. five KG of flour by march and it returns We need approx. Five KG of flour by march. The full stop in approx. looks exactly like the end of a sentence, so five gets raised; march is a proper noun the tool has no way to recognise; and KG was left alone because all-caps tokens are treated as acronyms.

Nothing here knows your product names, either. Run marketing copy through Sentence case and macOS, iPhone and eBay all come back wrong. Proofread the output, or use find and replace to put the handful of known names back.

Other text tools on this site

Frequently asked

Why does Title Case leave words like "the" and "and" in lowercase?

Articles, coordinating conjunctions and short prepositions stay lowercase in the middle of a title and are raised only when they open or close it. So `read the HTML and XML spec` becomes `Read the HTML and XML Spec`.

Does it split camelCase identifiers correctly?

Yes. `readHTMLFile` is read as read, HTML and File, so snake_case returns `read_html_file` and CONSTANT_CASE returns `READ_HTML_FILE` instead of one run-on token.

What does the casing language selector change?

It chooses the locale used for the upper and lower mappings. Under Turkish, `istanbul` uppercases to `İSTANBUL` with the dot kept, and `I` lowercases to the dotless `ı`.

Will Sentence case capitalise proper nouns for me?

No. It lowercases everything, then raises the first letter after each sentence break, so names, months and spellings such as macOS have to be repaired by hand afterwards.