Case Converter
Quickly convert your text to UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case and more. Runs entirely in your browser.
Updated July 11, 2026
100% Private & Secure
This tool runs in your browser.
Your data is never uploaded or stored.
—
—
—
—
—
—
—
—
—
—
How to use
- 1
Paste or type your text into the input area.
- 2
Click a conversion button to transform the text.
- 3
Copy the converted result to your clipboard.
When to use it
Naming constants, variables, and files consistently
Codebases mix conventions: SCREAMING_SNAKE_CASE for constants, camelCase for variables, kebab-case for URLs and filenames. Paste a list of names and convert them all in one pass instead of retyping each.
Fixing ALL CAPS text pasted from spreadsheets
Data exported from legacy systems or forms often arrives in uppercase. Sentence case or Title Case turns it back into readable prose for emails, reports, and documentation.
Generating slugs and URL-safe identifiers
Headings and product names need to become URL-friendly slugs: lowercase, words separated by hyphens, punctuation stripped. Kebab case plus an accent-stripping pass produces clean slugs.
Normalizing JSON keys or database column names
When merging data from APIs with different conventions — one returns firstName, another first_name, another First_Name — a batch case conversion lines them up before you write the mapping code.
How it works
The common cases and how each is built
Every case style is a transformation on a sequence of words. The hard part is splitting the input into words — once you have tokens, rejoining is mechanical.
Word boundaries are detected at transitions between lowercase and uppercase (camelCase), at _, -, spaces, and at the start of each token after punctuation. JavaScript's String.prototype.split() with a regex like /[\s_\-]+|(?=[A-Z])/ handles most cases. From the token array, the styles fall out: join with underscores (snake), hyphens (kebab), or nothing (camel, with the first token lowercased).
-
UPPERCASE/lowercase— whole string, no word logic needed -
Title Case/Sentence case— capitalize first letter of each word or each sentence -
camelCase— first word lowercase, rest capitalized, no separator -
PascalCase— every word capitalized, no separator (a.k.a. UpperCamelCase) -
snake_case/CONSTANT_CASE/kebab-case— separator-joined
Why naive toUpperCase breaks on German and Turkish
ASCII case conversion is trivial — flip bit 5 and you are done. Real Unicode is not. The German sharp s ß (U+00DF) uppercases to the two-character sequence SS, not a single character (the uppercase ẞ, U+1E9E, was added to Unicode 5.1 in 2008 but the traditional mapping is still SS). Round-tripping "STRASSE" back to lowercase cannot recover the original — was it "Straße" or "Strasse"?
Turkish is even sharper: it has four distinct characters — i (U+0069), I (U+0049), ı dotless i, U+0131, and İ dotted I, U+0130. Naive "i".toUpperCase() returns "I", but in Turkish it should return "İ". These locale-specific mappings live in Unicode's SpecialCasing.txt, and JavaScript exposes them through str.toLocaleUpperCase("tr").
"ß".toUpperCase() // "SS" (2 chars)
"i".toLocaleUpperCase("tr") // "İ" (U+0130)
"İ".toLocaleLowerCase("tr") // "i" (U+0069) — NOT "ı" Title Case and the small-words rule
Journalistic and APA title case capitalize every significant word but leave articles, conjunctions, and short prepositions lowercase (and, the, of, in). A naive "capitalize first letter of every word" produces "The Lord Of The Rings", which reads wrong.
A proper Title Case implementation keeps a stop list of small words and skips them — except when they are the first or last word of the title. Different style guides (Chicago, APA, AP) disagree on which words count as "short" and on the exact length cutoff, so the right output depends on which guide you target.
Common mistakes & edge cases
German "ß" uppercases to "SS" and round-trips wrong
Unicode maps ß to the two-letter sequence SS. There is no way to recover the original from "STRASSE" alone — accept the loss, or use the uppercase ẞ (U+1E9E) if your audience expects it.
Turkish text shows "I" where "İ" belongs (or vice versa)
Use toLocaleUpperCase("tr") and toLocaleLowerCase("tr") instead of the plain methods. Plain toUpperCase ignores locale and produces the wrong character for Turkish i/İ/ı.
"XMLParser" becomes "Xmlparser" in Title Case
A simple first-letter capitalization destroys consecutive capitals. Detect acronym runs (two or more capitals in a row) and preserve them, or rebuild tokens before re-casing.
camelCase detection fails on "getHTTPResponse"
The boundary between an acronym and the next word is ambiguous. A regex split on uppercase-to-lowercase transitions (e.g. /(?=[A-Z][a-z])/) gives cleaner word boundaries for mixed-case identifiers.