Text & wordsFreeNo signup
Free text case converter. Switch between UPPER, lower, Title Case, Sentence case, camelCase, PascalCase, snake_case, and kebab-case.
Last updated 14 October 2026
The eight conversions do not share one definition of a word, and that is the single most useful thing to know here. UPPER and lower hand the whole string to the browser's own Unicode case mapping, so every script and accent is handled properly. The other six first chop the text into runs of A-Z, a-z and 0-9, and anything outside that range is treated as a separator and thrown away.
So the same input can come out intact from one button and quietly mutilated by the next. The measurements below show exactly where the line falls.
Measured on this page. The six affected conversions are camelCase, PascalCase, snake_case, kebab-case, and by extension anything built from them:
café au lait becomes cafAuLait in camelCase and caf_au_lait in snake_case. The é is gone, not transliterated.élan vital becomes lanVital. The word loses its first letter entirely.straße becomes straE in camelCase, because the ß splits the word in two and the remaining e is capitalised as though it began a new word.你好 world becomes world. The Chinese characters vanish without trace.hello 😀 world gives helloWorld, which is the sensible outcome by accident.UPPER and lower on the same inputs are faultless: café gives CAFÉ, 你好 world keeps its Chinese. Title Case is almost right, since it only touches the first character of each run, but it fails on a word that begins with an accent: élan vital gives éLan Vital, capitalising the second letter because the first is not one it recognises.
If your text is not plain English, use UPPER, lower or Title Case and check the others before you trust them. There is no warning when characters are dropped; the result simply looks like a shorter identifier.
Sentence case works by converting the whole text to lower case and then capitalising the first letter after each full stop, question mark or exclamation mark followed by a space. Two consequences, both measured:
Acronyms and proper nouns are destroyed. NASA sent Dr. Smith to the ISS. He returned. comes back as Nasa sent dr. Smith to the iss. He returned. NASA became Nasa, ISS became iss, and the honorific became dr.
An abbreviation looks like the end of a sentence. In that same example the full stop in “Dr.” triggered a capital on “Smith”, which happens to be right here and would be wrong in “approx. four metres”. The rule cannot tell an abbreviation from a sentence ending, and no simple rule can.
Sentence case is therefore safe on text that is already plain lower case and lossy on anything else. If you have acronyms to keep, fix them by hand afterwards.
Case conversion is not always one character in, one character out, because Unicode defines a few uppercase mappings that produce two letters. Measured, with the count the page reports underneath:
straße, 6 characters, becomes STRASSE, 7 characters.fish, 3 characters, becomes FISH, 4 characters.café stays at 4, and İstanbul stays at 8, so it is not every accented character.This is the Unicode standard behaving correctly rather than the tool misbehaving. The special casing data maps the sharp s to two S characters, and the fi ligature to F and I. It matters if you are converting text that has to fit a length limit, because UPPER is not a safe operation on a field that is already full.
Lowercasing can lengthen text too. The Turkish capital İ lowercases to an i followed by a separate combining dot, so İstanbul becomes a string that looks identical and is one character longer.
Because the splitter keeps only letters and digits, every apostrophe, hyphen and underscore inside a word is a break. Measured:
o'brien don't gives snake_case o_brien_don_t and camelCase oBrienDonT, with that stray capital T.hello-world foo_bar gives hello_world_foo_bar, so an existing hyphen and an existing underscore are both flattened into the new separator. That is usually what you want when converting between naming styles.version 2 beta gives version2Beta rather than version_2_beta in camelCase, while snake_case does give version_2_beta.Title Case has its own quirk worth knowing: it capitalises the first letter of every run and lowercases the rest, so o'brien becomes O'brien rather than O'Brien, and it does not know that short words like “to” and “the” are conventionally left lower case in headline style. Measured, NASA sent Dr. Smith to the ISS. gives Nasa Sent Dr. Smith To The Iss.
For counts of words and characters rather than a conversion, use Word Counter, which has its own definition of a word again and will not always agree with this page.
straße uppercases to seven characters: the Unicode special casing data maps U+00DF to 0053 0053, and the fi ligature U+FB01 to 0046 0049. unicode.orgString.prototype.toUpperCase. developer.mozilla.orgA-Z, a-z and 0-9: the word character class in JavaScript regular expressions is ASCII only. developer.mozilla.orgEvery behaviour and every value on this page was measured against this tool as it is published, in a browser, on 14 October 2026, by pressing each of the eight buttons on each example in turn.
Because four of the conversions split the text into runs of English letters and digits only, and treat everything else as a separator. Measured, café au lait becomes caf_au_lait and élan vital becomes lan_vital. UPPER, lower and Title Case keep accents properly; camelCase, PascalCase, snake_case and kebab-case do not.
UPPER and lower, which use full Unicode case mapping and handle any script. Title Case is safe except for a word that starts with an accented letter: élan comes back as éLan, because the capitalisation lands on the first character it recognises rather than the first character.
Because it lowercases the entire text first and then capitalises after sentence endings. Acronyms and proper nouns have no protection, so NASA becomes Nasa and ISS becomes iss. Restore them by hand, or use Title Case if every word being capitalised is acceptable.
No. Any full stop, question mark or exclamation mark followed by a space starts a new sentence as far as the rule is concerned, so “approx. four metres” gets a capital F. No simple pattern can do better, which is why the result is worth reading before you use it.
Because a few Unicode characters uppercase into two. Measured, straße is 6 characters and STRASSE is 7, and the ligature fish is 3 characters and FISH is 4. The character count under the result shows the new length. This matters if the text has to fit a limit.
Digits stay attached to the letters next to them but still count as their own run when separated by a space, so version 2 beta produces three runs and the third is capitalised. snake_case on the same input gives version_2_beta.
No. It capitalises every word, so sent to the ISS becomes Sent To The Iss. Headline conventions that leave short articles and prepositions in lower case are not implemented, and neither is any protection for words that should stay capitalised.
No. Every conversion runs in your browser, nothing is stored between visits, and the text never leaves your device. The original stays in the top box so you can try a different button without pasting again.