Two kinds of case conversion
The modes on this page fall into two groups that behave very differently, and knowing which is which saves surprises.
Text modes change letters and leave everything else alone: UPPER CASE, lower case, Title Case, Sentence case, aLtErNaTiNg and iNVERSE. Spaces, punctuation, line breaks and numbers stay exactly where they were, so you can safely run a whole document through them.
Identifier modes rebuild the text as a single name for use in code: camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE. They first split the input into words, then join the words with the convention's separator. Punctuation and spaces are dropped in the process, so these modes are meant for short names and labels, not paragraphs.
How words are detected
For the identifier modes the converter treats anything that is not a letter or digit as a separator, and also splits where the case changes inside a word. That is why mixed input converges on the same result:
user_id,user-id,User IDanduserIdall becomeuserIdin camelCase.XMLHttpRequestis split as XML, Http, Request, givingxml_http_requestin snake_case andxmlHttpRequestin camelCase.getHTTPResponsebecomesget-http-responsein kebab-case.
Digits stick to the letters before them, so version2Beta splits into version2 and Beta. Letters are matched using Unicode categories, which means Cyrillic, Greek, Polish, Vietnamese and other alphabets with upper and lower case split and convert just like Latin.
Picking the right convention
Each programming community has settled on its own style, and mixing them is one of the most common code review nitpicks:
- camelCase for variables and functions in JavaScript, TypeScript, Java and Swift, and for JSON keys in many web APIs.
- PascalCase for classes, types and React components in most languages, and for public members in C#.
- snake_case for variables, functions and database columns in Python, Ruby and SQL.
- CONSTANT_CASE for constants and environment variables, such as
MAX_RETRIESorDATABASE_URL. - kebab-case for CSS classes, HTML attributes, file names and URL paths. For full URL slugs with accents removed, the slug generator is the better fit.
The Use as input button copies the result back into the input box, so you can chain conversions or keep refining one text without copying and pasting. Note that identifier modes join everything into one name, including text on separate lines, so convert a list of names one at a time.
Quirks worth knowing
The converter applies simple, predictable rules rather than a style guide, so a few results need a manual touch:
- Title Case capitalises every word, including short ones like a, of and the. Publications that follow AP or Chicago style lowercase those, so fix them by hand for headlines.
- Title and Sentence case lowercase everything first. Acronyms and brand names lose their capitals: NASA becomes Nasa, iPhone becomes Iphone, and in Sentence case the pronoun I and proper names become lowercase too.
- Sentence case starts a new sentence only after a full stop, question mark or exclamation mark followed by a space. Text after a line break without punctuation, like list items, keeps its lowercase first letter.
- Language rules are not locale-specific. German ß becomes SS in upper case, which is standard, but Turkish dotted and dotless i follow the generic rule, so check Turkish text manually.
- aLtErNaTiNg counts every character, including spaces, so the pattern can look uneven across words.
Fixing text pasted with Caps Lock on
The most common non-programming use is repairing text: an email typed with Caps Lock stuck, a spreadsheet export in all capitals, or headings copied from a PDF. Sentence case alone gets most of the way there, because it lowercases the text before capitalising sentence starts; iNVERSE is the one-click fix for text typed with Caps Lock and Shift at the same time, since it swaps every letter's case.
Conversion happens instantly in the page as you type, and nothing is sent to a server, so it is safe for confidential documents and source code. To check the length of the result against a character limit, paste it into the word counter.