Finding the word boundaries is the whole job
Changing case is trivial. Deciding where one word ends and the next begins is what makes an identifier converter useful, and it is done here before any case is applied. Spaces, hyphens, underscores, dots, slashes and punctuation are all treated as separators. On top of that, a lowercase letter or digit followed by a capital is a boundary, which is what splits getUserProfile into three words. A run of capitals followed by a capital-then-lowercase is also a boundary, so HTTPResponse splits into HTTP and Response rather than into H, T, T, P and Response.
That is why the conversion is symmetric. Anything the splitter understands can become anything else in the list, and you never have to convert to spaces as an intermediate step. Paste kebab-case and ask for PascalCase and it works; paste CONSTANT_CASE and ask for camelCase and it works.
Where the acronym rule bites
The rule that keeps HTTPResponse together also decides what happens to acronyms at the end of a name, and the two cases are not symmetric.
| Input | Words found | snake_case output |
|---|---|---|
| getURLPath | get, URL, Path | get_url_path |
| userID | user, ID | user_id |
| parseHTMLDocument | parse, HTML, Document | parse_html_document |
| IOError | IO, Error | io_error |
| UUIDv4 | UUI, Dv4 | uui_dv4 |
The last row is the failure mode. A capital run followed by a single capital and a lowercase letter always splits one character early, because from the outside there is no way to tell UUIDv4 from MyIDv4. If you hit that, put a space in the input where you want the boundary and the splitter will honour it.
Title Case here is not editorial title case
Title Case in this tool capitalises the first letter of every whitespace-separated token and lowercases the rest. That is not what AP, Chicago or any other style guide means by title case. Those keep articles, coordinating conjunctions and short prepositions lowercase unless they fall first or last, and the lists differ between guides — Chicago lowercases of and the, AP capitalises prepositions of four letters or more. Deciding correctly also needs to know whether a word is functioning as a preposition or a particle in that sentence, which is a parsing problem rather than a formatting one. Use the output as a starting point for a headline and fix the small words yourself.
Sentence case has a smaller version of the same problem: it lowercases everything and capitalises the first character, so proper nouns and the pronoun I lose their capitals. It suits UI labels and form field names, not prose.
Non-Latin text, digits and separators
Greek, Cyrillic, CJK, kana and Hangul characters are treated as word content rather than as punctuation, so they pass through instead of being stripped. Case operations do nothing to scripts without a case distinction, which means Hangul and CJK come back unchanged and are simply joined with your chosen separator. Greek and Cyrillic do have case and will be uppercased or lowercased by the browser's own rules. The internal-capital boundary rule only fires for ASCII A-Z, so a mixed Cyrillic identifier will not be split at its capitals.
Digits stay attached to whatever word they touch: item2Name gives item2 and Name, not item, 2 and Name. Accented Latin letters are preserved as letters, so café menu becomes caféMenu in camelCase rather than losing the accent. If you want the accents removed as well, that is what the slug tool does — this one leaves your characters alone.
Everything runs locally in the page. The text never leaves the browser, which matters when the thing you are re-casing is a column list out of a production schema.
Questions people ask
Can I convert a whole list at once?
Yes. Every line is converted independently and blank lines are left blank, so a column pasted straight out of a spreadsheet or a schema dump comes back in the same order with the same number of rows. The one exception is the "Show every form" option, which lists all nine conversions of the first line only — it is meant for checking a single name, not for bulk work.
Why does my acronym split in the wrong place?
The splitter sees a run of capitals followed by a capital and a lowercase letter as an acronym ending one character early — that is the rule that makes HTMLParser split into HTML and Parser, and it fires on UUIDv4 too, giving UUI and Dv4. There is no way to distinguish the two cases from the string alone. Insert a space at the boundary you want in the input and the splitter uses it.
Does it change accented characters or emoji?
Accented Latin letters are kept and are treated as ordinary letters, so they survive into camelCase and snake_case unchanged. Emoji and symbols are not word characters, so they act as separators and disappear from the joined output. If you need é to become e, use the slug tool, which strips diacritics deliberately.
Is there a length limit?
It stops at 200,000 characters and tells you rather than freezing the tab. Everything runs in the page on your own machine, so the real constraint is how long your browser is willing to spend in one synchronous pass. Well under that limit the conversion is instant.