Case converter
Twelve cases, a word splitter that survives HTTPServerError, and an honest account of what happens to ß, σ and Turkish i.
0000Twelve cases, and what each one is actually for
The first four are for prose. UPPER and lower are literal conversions of every letter. Title Case capitalises the words a headline would, leaving short function words alone. Sentence case lowercases everything and then capitalises the start of each sentence — the fastest way to rescue text that came out of a database in block capitals.
The next six are for code and file names. camelCase and PascalCase remove the separators and mark each new word with a capital. snake_case, CONSTANT_CASE, kebab-case and dot.case keep the words apart with an underscore, hyphen or dot. All six run through the same word splitter, so you can convert freely between them: paste user_first_name, hit camelCase, get userFirstName.
The last two exist because people ask for them. aLtErNaTiNg is the internet's sarcasm mark. iNVERSE flips whatever case each letter currently has, which is genuinely useful exactly once — when Caps Lock was on and Shift was not.
Title case is not one rule
There is no single correct title case. AP style capitalises words of four or more letters and lowercases short prepositions and articles; Chicago lowercases all prepositions regardless of length; APA capitalises everything of four letters or more, including prepositions. The list used here — a, an, and, as, at, but, by, for, if, in, nor, of, on, or, per, the, to, v, vs, via — is the least controversial intersection, and the checkbox turns it off entirely if your style guide wants every word capitalised.
Two refinements are worth knowing about. The first and last word of a line are always capitalised even when they are on the small-word list, which is the rule every style guide agrees on. And a word following a colon is capitalised, because it starts a subtitle. Hyphenated compounds get each part capitalised: well-known becomes Well-Known.
What no tool can do is recognise proper nouns. “the french revolution” in sentence case comes back as “The french revolution”, because nothing in the text marks french as a name. Capitalising those is still your job.
How the word splitter handles acronyms
Converting HTTPServerError to snake_case is where most converters embarrass themselves, producing h_t_t_p_server_error or httpserver_error. The correct split is HTTP, Server, Error, and getting there needs two passes: break between a lowercase letter or digit and a following capital, then break inside a run of capitals just before the last one if a lowercase letter follows it.
That is what happens here, so parseXML2JSON becomes parse_xml2_json, userID becomes user_id, and iOSAppDelegate becomes i_os_app_delegate — the last one being a reminder that Apple's capitalisation defeats every general rule ever written. Digits stay attached to the word they follow, which matches the convention in almost every language's style guide.
The separate “leave ALL-CAPS words alone” option applies to the prose cases rather than the code ones. With it on, NASA released the JWST images in title case keeps NASA and JWST intact instead of flattening them to Nasa and Jwst.
The Unicode corners that bite
Case is not a simple letter-for-letter swap once you leave English. German ß uppercases to SS, two characters where there was one, and lowercasing SS does not bring it back. Greek final sigma ς uppercases to Σ, which lowercases to the non-final σ — a round trip that changes the text. Dutch ij should title-case both letters, and does not.
The famous one is Turkish. In Turkish, lowercase i uppercases to İ (dotted capital I), and I lowercases to ı (dotless i). This page deliberately uses the default, locale-independent rules rather than your system locale, because the alternative is that ID silently becomes ıd for some visitors and breaks their code. If you are working in Turkish prose, do the conversion in a Turkish-aware editor instead.
Everything else is left exactly as it was found. Line breaks are preserved, including whether the file uses Windows or Unix endings; leading and trailing spaces are untouched; emoji, accented characters and scripts without case pass through unchanged. The character count uses real Unicode code points, so an accented é counts as one whether it arrived as one code point or as e plus a combining accent — which is also why the number can differ from what a text editor tells you.
Common questions
Does it change my line breaks or spacing?
No. Blank lines, indentation, trailing spaces and the choice between Windows and Unix line endings all survive the prose conversions untouched. The code cases (camel, snake and the rest) work line by line and do replace the punctuation inside a line, because that is what separates the words.
Why did it ruin “iPhone”?
Because no set of rules can tell that iPhone is a brand rather than a typo. Title case sees a word starting with a lowercase letter and capitalises it. Leave the ALL-CAPS option on to protect genuine acronyms, and fix mixed-case brand names by hand afterwards.
How much text can I paste in?
Enough that the limit is your browser's memory rather than ours — hundreds of thousands of words is routine, and a megabyte of plain text converts in well under a second. You can also drop a .txt file straight onto the input box.
Is this the same as Excel's PROPER function?
Close to Title Case but not identical. PROPER capitalises every word without exception and lowercases the rest of each one, so it turns NASA into Nasa and “the end of the road” into “The End Of The Road”. Untick both checkboxes here to get PROPER's behaviour.
Does anything get sent to a server?
No. Every conversion is a JavaScript function running in this tab. There is no request to make, which is why it still works with the network off and why pasting confidential text here is no riskier than typing it into a local text editor.
Why is the character count different from my editor's?
This page counts Unicode code points. Editors variously count UTF-16 units, bytes or grapheme clusters, so an emoji can register as 1, 2 or 4 depending on who is counting. For plain English text they all agree.