Case Converter
Convert text between UPPERCASE, lowercase, Title Case, camelCase, snake_case and more — every variant at once, entirely on this device.
Emits the capital ẞ (U+1E9E) instead of SS wherever ß uppercases.
Press ? for shortcuts
Do it offline:$ tr '[:lower:]' '[:upper:]' < file.txt
How to use it
- Paste or type text, or drop a .txt file — all twelve variants are computed in one pass, with no run button to press.
- Pick the case you need from the selector; the six identifier styles preview in monospace, and switching variants never touches your input.
- Adjust the locale, the title style (Chicago, AP or every word) or the ẞ checkbox when they matter — chips under the output name any mapping that deserves a second look.
- Copy the result, download it as .txt, or share the tool state as a link.
Paste text once and all twelve cases come back together: Sentence case, Title Case, UPPERCASE, lowercase, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, alternating and inverse. Every mapping is locale-aware — pick Turkish and the dotted i behaves the way Turkish spells it — conversion runs line by line, and nothing you paste leaves this device.
Examples
hello world examplehelloWorldExample · hello_world_example · hello-world-exampleThe trio shown is camelCase, snake_case and kebab-case; the same call also produced Sentence case, Title Case, UPPERCASE, CONSTANT_CASE and the rest, which is why the selector flips between variants with no re-run.
userID2Nameuser_id_2_nameDigits form their own token: ID2 splits into id and 2 instead of gluing the number to a word. Acronym runs stay whole the same way — HTTPServerURL comes out as http_server_url, not h_t_t_p_server.
the lord of the ringsThe Lord of the RingsAP style keeps of and the lowercase mid-title while first and last words always capitalize. The styles part ways on longer prepositions: the man with the golden gun prints With in AP but with in Chicago.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
Turkish treats İ and ı as their own letters
With the locale set to Turkish or Azerbaijani, istanbul uppercases to İSTANBUL — the mapping Unicode defines for those languages in SpecialCasing.txt. A chip appears whenever any form of i is involved, so the change is called out, never silent.
ß can uppercase two ways
By default ß uppercases to SS, matching what toLocaleUpperCase does: straße becomes STRASSE. Ticking the ẞ option emits the capital ẞ (U+1E9E) instead — STRAẞE — in CONSTANT_CASE tokens as well as plain UPPERCASE.
Acronym runs and digits split on real boundaries
The identifier tokenizer keeps an acronym run together until the next word starts, then splits numbers away from letters on both sides. That is how HTTPServerURL lands as http_server_url and userID2Name as user_id_2_name.
Every line converts on its own
Input splits on CRLF, CR or LF; each line converts independently, line endings are kept byte for byte, and lines are never joined. Alternating case restarts its lower–upper rhythm at each line, and sentence case starts every line as a new sentence.
Emoji stay in prose, fold in identifiers
The prose variants — sentence through inverse — pass emoji and punctuation through untouched. The six identifier styles drop them, since a 🚀 has no place in a variable name, and each affected variant says so in a chip rather than failing.
Accents survive; nothing is normalized
An é typed as one code point stays one code point, and an e followed by a combining accent stays decomposed, in every variant. Case mapping applies to exactly what you pasted, so normalization-sensitive text round-trips unchanged.
Common errors
Input is larger than the 1 MB limit for this tool. For bigger payloads use the CLI: tr '[:lower:]' '[:upper:]' < file.txt- A refusal, never a truncation — the page converts all of your input or none of it. In a terminal, tr rewrites ASCII letters at any file size; the locale-aware mappings on this page are the part the one-liner cannot do.
snake_case is meant for identifiers — punctuation was folded.- A hint, not an error: free text cannot fail here. Identifier styles keep letters, digits and the - _ . separators and fold everything else; the chip appears on exactly the variants that dropped something.
Turkish and Azerbaijani treat dotted and dotless i as separate letters: i uppercases to İ and I lowercases to ı — this mapping is the correct result, not a bug.- Shown when the locale is Turkish or Azerbaijani and the input contains i, I, İ or ı. If you wanted the English mapping, switch the locale back instead of editing the output.
ß uppercases to SS by default; enable the ẞ option to emit the capital ẞ (U+1E9E) instead.- Attached to the variants that upper-map ß — UPPERCASE, CONSTANT_CASE, alternating and inverse — while the option is off. German orthography accepts both spellings, so the choice stays yours.
FAQ
How do I convert camelCase to snake_case?
Paste the identifiers and pick snake_case: getUserName becomes get_user_name, and digits get their own segment, so userID2Name reads user_id_2_name. The other identifier styles are already computed — flipping to kebab-case or CONSTANT_CASE afterwards is one click.
Why did i become İ after I chose Turkish?
Because that is Turkish spelling: dotted and dotless i are separate letters, so i uppercases to İ and I lowercases to ı. The conversion applies the language-specific rules from Unicode's SpecialCasing.txt through the locale-aware case functions built into your browser.
What is the difference between AP and Chicago title case?
AP capitalizes every word of four or more letters, so with becomes With; Chicago keeps prepositions lowercase whatever their length. First and last words capitalize in both, and the small-word lists here are documented approximations of the two print style guides.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Convert again immediately, at any input size.
- ⌘/Ctrl + S
- Save the selected variant as a .txt file.
- ⌘/Ctrl + C
- Copy the visible variant while nothing is selected.
- ⌘/Ctrl + Shift + C
- Copy the visible variant, selection or not.
- t
- Switch to the next theme.
- ? or ⌘/Ctrl + /
- Show the shortcut overlay.
- Esc
- Dismiss the overlay on top.