What a case converter actually changes
Case is the one thing about a piece of text that carries meaning without carrying words. HELP and help are the same four letters and two different tones of voice, and userName, user_name and User Name are the same two words wearing three different uniforms — a variable, a database column, and a label on a form.
ACCIDENTALLY LEFT THE CAPS LOCK ON → Accidentally left the caps lock on
Retyping a paragraph to fix that is minutes of work, and retyping a heading as snake_case is minutes plus a typo. This tool does both in a keystroke, entirely inside your browser: nothing you paste is sent anywhere, and the conversion runs on the text as you type it.
The fourteen cases
They fall into two families, and the difference is not cosmetic. The first seven rewrite letters where they already stand, so every space, comma and line break survives untouched. The last seven take the text apart into words and build something new out of them, so the punctuation is gone by construction.
| Case | Example | Reach for it when |
|---|---|---|
| Sentence case | Two of us | A paragraph arrived shouting, or a sentence needs its opening capital back. The most common reason anybody opens this page. |
| lower case | two of us | You want a flat, quiet baseline — often as a first step before another tool, or to compare two strings by eye. |
| UPPER CASE | TWO OF US | A heading, a warning, a column header, or anything that has to be read from across a room. |
| Capitalized Case | Two Of Us | Every word matters equally: a list of names, a menu, a set of labels down a form. |
| Title Case | Two of Us | A real headline. Small words such as a, an, and, as, at, but, by, en, for, if, in, of, on, or, the, to, v, via, vs stay small unless they open or close the line. |
| aLtErNaTiNg cAsE | tWo oF Us | The internet's tone of sarcasm. Also a quick way to see exactly which characters a font renders differently. |
| InVeRsE CaSe | tWO oF uS | The caps lock was on for the shift key rather than instead of it, so every capital is wrong in both directions at once. |
| camelCase | twoOfUs | A JavaScript, Java or C# variable, a JSON key, or anything else the language's own style guide spells this way. |
| PascalCase | TwoOfUs | A class, a type, a React component, or a GraphQL type name. |
| snake_case | two_of_us | A Python or Ruby name, a SQL column, or an environment file's lower half. |
| kebab-case | two-of-us | A URL path, a CSS class, an HTML attribute, or a file on disk. |
| CONSTANT_CASE | TWO_OF_US | An environment variable, a feature flag, or anything else that should look like a constant at a glance. |
| dot.case | two.of.us | A namespaced key — a config path, a translation id, a metrics name. |
| path/case | two/of/us | A route, a folder, or a storage key built out of a phrase. |
None of this is reversible. Case is information, and sending a heading to lower case throws away which words carried a capital — nothing on this page can put back a letter it was never shown. Keep the original if there is any chance you will want it.
The two switches
Neither of them changes which case you picked. They change what the case is applied to, and which words it is allowed to touch.
| Option | What it does | Reach for it when |
|---|---|---|
| One line at a time | Treats each line as its own passage. A sentence ends at the line break, a title's last word is the last word of that line, and an identifier is built per line rather than running the whole paste together. | You pasted a list. It is on by default, and for text that is one line long it makes no difference at all. |
| Keep acronyms | Leaves any run of two or more capitals exactly as typed, so parse the JSON body keeps its JSON instead of flattening to Json. | Your text carries real abbreviations. It is off by default, for the reason below. |
The trap is worth stating plainly: in a paragraph typed with the caps lock on, every single word is a run of capitals — so with this switch on, the tool would hand back exactly what you pasted. That is why it starts off. Turn it on for text that is mostly lower case already.
Only five cases can honour it — Sentence case, Capitalized Case, Title Case, camelCase and PascalCase — because they are the five that decide capitalisation one word at a time. The other nine set every letter the same way, or fix the case of the whole identifier by definition, so the switch greys out and says why.
One exception inside that five: camelCase always lowers its first word, whatever the switch says. HTTP response becomes httpResponse, because an identifier that opens with a capital is PascalCase and not camelCase at all.
Where the tool thinks a word ends
The prose cases only need to find whole words, and they treat an apostrophe as part of one — otherwise Title Case writes Don'T. Combining marks count as letters too, so Bangla and Devanagari words are not shredded into consonants.
The identifier cases have the harder job, because they have to find the words inside an existing name. Three rules do it: any character that is not a letter, a mark or a digit ends a word; a lower-case letter or digit followed by a capital ends one, so getUserById is four; and inside a run of capitals, a word begins at the last capital before a lower-case letter, so XMLHttpRequest is XML, Http, Request rather than one long shout.
Digits stay attached to the run they were typed in, so utf8Decoder becomes utf8_decoder and not utf_8_decoder. Apostrophes are dropped rather than split on, so don't stop becomes dontStop.
Title Case borrows its list of small words — a, an, and, as, at, but, by, en, for, if, in, of, on, or, the, to, v, via, vs — from the titlecase.pl script that most title-case implementations on the web descend from. That is deliberate: the output is read by other people, who are comparing it against what every other converter produced, and a list we thought was better would only make this tool the odd one out.
What people use it for
The two big ones are opposites. Somebody types half a message with the caps lock on and wants it back as prose; somebody else has a heading, a spreadsheet column or a label from a design file and wants it as a name a language will accept.
The line-at-a-time switch is what makes the second one bulk work. Paste a column of forty field labels, pick snake_case, and get forty database columns back in one press — with the blank rows still where they were, so it lines up against the original.
It also reads well as a checking tool. Convert a name to every shape you might need and you can see at a glance which one your codebase already uses, before you commit to it in thirty files.
Frequently asked questions
a, the, of and to stay lower case unless they open the line, close it, or follow a colon. So the art of the deal becomes The Art Of The Deal one way and The Art of the Deal the other.!!! ??? leaves nothing behind — and an empty box would look like a bug rather than an answer, so the tool says so instead.