Case Converter
Convert to UPPER, Title, Sentence, camelCase & 13 more
Case Converter tool
0 words · 0 characters · 0 lines · looks like empty · already Title Case
Convert to
For prose
For identifiers
Title and sentence case
In Turkish, i uppercases to İ rather than I — a different letter.
NASA, iPhone and macOS are left exactly as written instead of becoming Nasa, Iphone and Macos.
Off, only the first letter of each sentence is touched and everything else is left alone.
Comma or space separated. The first and last word of a line is always capitalised, as is the word after a colon.
One per line or comma separated. These win over every other rule, which is how you fix a proper noun no tool could guess.
Where one word ends and the next begins
XMLHttpRequest becomes xml_http_request rather than xmlhttp_request.
utf8Encode becomes utf_8_encode. Off, it becomes utf8_encode.
Needed to read a dot.case identifier. Off by default so example.com survives. A dot between two digits is never split either way.
Needed to read a path/case identifier. Off by default so src/components survives.
Spaces, underscores and hyphens are always word boundaries, and a capital letter always begins a new word.
Case Converter: key facts
- What it does
- Convert to UPPER, Title, Sentence, camelCase & 13 more
- Category
- Text Tools
- Cost
- Free, with no account, sign-up, or install.
- Your data
- Runs entirely in your browser — the files and text you enter are never uploaded to a server.
- Last reviewed
- . Report an incorrect result.
About the Case Converter
Fixing a heading that arrived in all caps, or a title someone typed entirely in lowercase, is a small job that most converters make slightly worse. They give you a row of unlabelled buttons that rewrite the box you are working in, so the only way to find out what a case does is to press it and lose what you had. Here each case previews itself against your own text before you choose, and the conversion lands in a separate box, so the original is still there when the result is not the one you wanted.
Seventeen cases sit in two groups. For prose: UPPERCASE, lowercase, Title Case, Sentence case, Capitalise Each Word, iNVERT cASE, aLtErNaTiNg cAsE and a random case you can reproduce from its seed. For identifiers: camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, Train-Case, dot.case, path/case and plain space case. The identifier cases work a line at a time, so a list of fifty entries comes back as fifty identifiers rather than one long joined string.
Title Case follows the convention writers actually use rather than capitalising indiscriminately: short words like of, the and by stay lowercase in the middle of a title, while the first word, the last word and the word after a colon always get a capital. The list of short words is yours to edit. Sentence case is similarly careful — it keeps the pronoun I, capitalises through an opening quote, and knows that e.g. and etc. do not end a sentence, so it will not capitalise the word that follows them.
The most useful thing either of them does is leave alone what is already deliberate. NASA, HTML, iPhone and macOS all carry meaning in their capitals, and a converter that flattens them to Nasa, Html, Iphone and Macos has destroyed information you cannot get back. Words that are all capitals, or that carry a capital after their first letter, are preserved by default — and for the proper nouns no rule could guess, an exceptions list forces an exact spelling that wins over everything else.
Why the original text is never overwritten
Case conversion is unusual among text operations in being mostly one-way. Sorting a list can be re-sorted, and a replacement can be replaced back, but casing throws information away: once a heading has been uppercased, nothing in the text records that it used to read "the iPhone by NASA" rather than "The Iphone By Nasa". A tool that transforms the box you are working in therefore destroys something on every click, and two clicks in a row destroy it beyond recovery.
So the input is left exactly as you typed it and the result appears separately, updating as you edit or change any option. When you do want to build on a result — convert to space case to break apart an identifier, then to Title Case to make a heading of it — "Use as input" moves it up deliberately, and undo covers that as it covers loading a file or clearing the box.
Sentence case is where this matters most, because it is the conversion that reaches furthest into the text. Its lowercasing pass can also be turned off entirely, in which case only the first letter of each sentence is touched and every other character is left as you wrote it. That is the right setting for prose that is nearly correct already and only needs its sentence starts fixed.
How to use it
- Type or paste your text into the top box, or drop a .txt or .md file onto it.
- Pick a case from the gallery — every card shows what that case would do to your actual text.
- For a title, choose whether short words stay lowercase, and add anything with a fixed spelling to the exceptions list.
- For an identifier, set where one word ends and the next begins: runs of capitals, numbers, dots and slashes.
- Copy or download the result, or press "Use as input" to run another conversion over it.
Finding the words before recasing them
Turning a phrase into an identifier means deciding where each word begins, and that decision is where most converters go wrong. Spaces, underscores and hyphens are always boundaries, and a capital letter always starts a new word — but three cases need a judgement call, so each is a switch you can see.
A run of capitals is the first. In XMLHttpRequest the boundary sits between the L and the H, not before the whole run, so splitting runs of capitals yields xml_http_request rather than xmlhttp_request. Numbers are the second: utf8Encode can reasonably become utf_8_encode or utf8_encode depending on whether you consider the 8 part of the word, so you choose. Note that a capital after a digit always starts a word either way, so Encode is never absorbed into what precedes it.
Dots and slashes are the third and the most consequential, because they are separators in a dot.case identifier and ordinary characters in a domain name or a file path. They are off by default, which keeps example.com and src/components intact, and a note appears when your text contains one so the choice is never silent. A dot between two digits is never treated as a boundary at all, so 3.14 stays a single number whatever you pick.
- XMLHttpRequest becomes xml_http_request with capital runs split, xmlhttp_request without.
- A three-line list converted to snake_case comes back as three snake_case lines.
- example.com stays one word unless you explicitly ask for dots to be boundaries.
Why use this version
- Every case previews itself against your own text, so you choose by seeing the result rather than by pressing a button and hoping.
- The conversion goes into a separate box and the input is never overwritten, which matters because casing is the one text operation you cannot reliably undo by repeating it.
- Title Case keeps short words lowercase in the middle of a title, and the word list is yours to edit to match whichever style guide you answer to.
- NASA, HTML, iPhone and macOS survive both Title and Sentence case instead of being flattened, and an exceptions list handles the proper nouns no rule could guess.
- Identifier cases run a line at a time, so a fifty-line list becomes fifty identifiers rather than one joined string.
- Case changes follow the language you pick, which matters for Turkish and Azerbaijani where i and İ are a genuinely different mapping.
- Everything runs locally in your browser, so a confidential draft or internal copy is never sent anywhere.
Title case is not one rule, and neither tool can read minds
Every major style guide defines title case differently, and none of them capitalises every word. The common thread is that short function words — articles, coordinating conjunctions and short prepositions — stay lowercase unless they open or close the title. Where guides disagree is the threshold for prepositions: some lowercase everything under four letters, others under five, and their treatment of subordinating conjunctions varies. Rather than claim an authority it cannot honour, this tool gives you the word list and lets you match whichever guide you answer to.
Proper nouns are the harder limit. Deciding that Paris is a city and not a word needs a dictionary, so no rule-based converter can be trusted to lowercase a body of text without damage. Two things narrow the gap. Capitals that already look deliberate are kept, which covers acronyms and names styled like iPhone. And the exceptions list handles the rest: put GitHub or PostgreSQL in it once and every conversion spells them that way, overriding every other rule.
Two notes on languages. Turkish and Azerbaijani have a genuinely different mapping for the letter i — the capital is İ, with the dot retained, and a dotless ı exists as a separate letter — so a converter that is not told the language corrupts Turkish text. Pick the language and the conversion follows it. German ß has no traditional single-character capital and historically expands to SS, which means an uppercase round trip does not always return what you started with; that is a property of the alphabet, not a bug in the tool, but it is worth knowing before you convert and paste back.
Frequently Asked Questions
What is the difference between Title Case and Sentence case?
Title Case capitalises the significant words of a heading, leaving short words such as of, the and by lowercase when they fall in the middle. Sentence case capitalises only the first letter of each sentence and reads more naturally in body text. There is also a third option, Capitalise Each Word, which capitalises the first letter of every word without exception and leaves the rest of each word untouched.
Why did NASA not become Nasa?
Because that would throw away information. A word that is all capitals, or that carries a capital after its first letter — NASA, HTML, iPhone, macOS, McDonald — is left exactly as written, on the assumption that its capitals are deliberate. Turn off "Keep capitals that look deliberate" if you genuinely want them flattened.
Can it capitalise proper nouns in Sentence case?
It keeps the ones it can identify — anything whose capitals already look deliberate, plus the pronoun I and its contractions. It cannot recognise an ordinary proper noun such as Paris, because telling a city from a word needs a dictionary. Add such words to the exceptions list and they will be spelled that way every time. If your text is nearly right already, switching off the lowercasing pass fixes only the sentence starts and leaves everything else alone.
Why did my list turn into one long snake_case string?
It should not — the identifier cases work a line at a time by default, so each line becomes its own identifier. If you are seeing one joined string, the scope is set to "The whole text as one"; switch it back to "Each line on its own". A note appears whenever whole-text scope is about to collapse more than one line.
When should I use snake_case, kebab-case, camelCase or CONSTANT_CASE?
snake_case suits Python variables and database columns. kebab-case suits URLs, CSS classes and file names. camelCase and PascalCase join words without a separator and are typical for JavaScript variables and class names respectively. CONSTANT_CASE — also called SCREAMING_SNAKE_CASE — is the near-universal convention for constants and environment variables.
Is the random case actually random, and can I repeat one?
It flips a coin per letter, but from a seed rather than from an unrepeatable source, so the same text with the same seed always produces the same result. That is what lets the output update as you type instead of rerolling itself under the cursor, and it means a result can be reproduced later. "Roll again" moves to the next seed.
Is my text uploaded to a server?
No. Every conversion runs in your browser and nothing is sent over the network. If you leave "Keep my text in this browser" ticked, the text and your settings are saved to this device's local storage so they survive a reload — untick it to clear that, and texts over 200,000 characters are never stored at all.