Case Converter
Paste text, pick a case, and the converted copy appears live — UPPERCASE, lowercase, Title Case, Sentence case, or aLtErNaTiNg. Everything runs in your browser; nothing is uploaded.
Three jobs: shouting fixes, titles, data cleanup
Three jobs cover what this tool is for. The first is the caps-lock accident — a paragraph typed IN FULL SHOUT that nobody wants to retype; Sentence case rebuilds it into ordinary prose in one click, capitalizing the start of each sentence and lowercasing the rest. The second is headline work: Title Case turns a draft heading into "Hello World. It's Fine." — first letter of every word up, rest down — ready for a heading, a slide, or a subject line. The third is data cleanup: names, emails, or product codes pasted from a spreadsheet in inconsistent case, flattened with lowercase or UPPERCASE so duplicates finally match. aLtErNaTiNg case rebuilds every letter from a counter, ignoring the input's own capitals; it is offered as a novelty transform and labeled as such.
Rule reference: the rule-by-rule treatment of all five transforms, with more edge cases than fit here, is the guide Case conversion: the rules behind each transform. The rest of this page explains what each button actually does to your text and where each rule stops; the other guides are listed under Guides.
One sample, five transforms
Every worked example on this page is computed at build time by the same engine that runs in your browser, so the outputs shown are the outputs you would get. Start with one short sample, "hello WORLD. it's fine.", and press each of the five buttons in turn. The rule column repeats the one-line description each button carries.
| Mode | Rule | Result |
|---|---|---|
| UPPERCASE | Every letter capitalized | HELLO WORLD. IT'S FINE. |
| lowercase | Every letter lowercased | hello world. it's fine. |
| Title Case | First letter of every word capitalized | Hello World. It's Fine. |
| Sentence case | First letter of every sentence capitalized | Hello world. It's fine. |
| aLtErNaTiNg | Letters alternate lower/UPPER | hElLo WoRlD. iT's FiNe. |
Two things are true of all five. Each transform leaves digits, spaces, punctuation, emoji, and line breaks exactly where it was, so the layout of your text survives the conversion — though the modes get there by different routes. UPPERCASE and lowercase rely purely on the Unicode case mapping, applied to the whole string, and the mapping has nothing to say about a digit or a comma. Title Case and Sentence case lowercase the whole string through that same mapping and then place capitals only on characters their own rules identify as letters — the first letter of a word token, the first letter of the text, the first letter after a boundary. And aLtErNaTiNg is the one mode that walks every code point individually, testing each for letter-hood before touching it. Each mode is also a pure function of the text and the chosen mode: the same input always produces the same output, nothing is remembered between runs, and empty input converts to empty output rather than an error. Text made only of digits and punctuation passes through every mode untouched — "1234 !?" uppercases to "1234 !?".
UPPERCASE and lowercase: mappings applied letter by letter
The two simplest modes replace every letter with its uppercase or lowercase form under the default Unicode (English) case mappings, and do nothing else. Because the mapping is defined per letter rather than per language, it reaches well beyond A–Z: "café menu — crème brûlée" becomes "CAFÉ MENU — CRÈME BRÛLÉE", with every accent preserved on its capital, and the Greek sample "αβγ δέλτα" becomes "ΑΒΓ ΔΈΛΤΑ". The em dash in the first example is punctuation carried across without any change.
One consequence is easy to miss: uppercasing is not always length-preserving. Under the default mappings the German sharp s uppercases to two letters, so "straße" becomes "STRASSE" — 6 characters in, 7 out — and lowercasing the result gives "strasse", not the original spelling. If a character count matters after conversion, count the converted text rather than the source; the character counter reports the same code-point total this page uses. A different kind of round-trip loss applies to any text whose capitals carried meaning: lowercase cannot know which of them marked a name, and UPPERCASE erases the difference between a name and a shouted word. Neither can be undone by converting back.
The Turkish caveat
All five transforms use the default Unicode (English) case mappings, and the documented limitation is locale-specific casing. Turkish distinguishes dotless ı / I from dotted i / İ, and under Turkish rules a lowercase i uppercases to İ; that distinction is not applied here, so i always uppercases to I and "istanbul" becomes "ISTANBUL", which is wrong for Turkish text under Turkish rules. The limitation is stated rather than patched, because locale-aware casing would need the tool to know which language it is looking at, and guessing wrongly would corrupt every English text containing the letter i. For Turkish text, use an editor set to the Turkish locale.
Title Case: the word token decides where capitals land
Title Case here is the simple convention: lowercase the whole text, then capitalize the first letter of every word. What counts as a word is the same token the word counter uses — an unbroken run of letters, digits, apostrophes (straight or curly), and hyphens — and that definition, not any list of exceptions, decides where every capital lands. Walk through "the 3rd edition of a state-of-the-art guide", which becomes "The 3rd Edition Of A State-of-the-art Guide". "State-of-the-art" is one token, so it receives exactly one capital, on the S. "3rd" is one token too, but a digit precedes its first letter, and the rule capitalizes a token's first letter only when no digit comes before it — so "3rd" stays "3rd" rather than becoming "3Rd". "Of" and "a" are capitalized like every other word, because there is no minor-word list. A leading apostrophe does not block the capital the way a leading digit does: "'twas the night before launch" becomes "'Twas The Night Before Launch".
That last point is the position to understand before pasting a heading into a house style. Editorial styles — AP and Chicago among them — lowercase minor words such as "of" and "the" mid-title. This tool deliberately applies no such rule: every word is treated alike, so the output is predictable and complete, and a writer working to a style guide lowercases the handful of words their guide requires. A rule applied to every word is predictable in a way a partial exception list is not; a minor-word list would look finished while being wrong in ways that are harder to spot.
Two more consequences follow from "lowercase everything, then capitalize the first letter of each token." Acronyms are flattened: "the FAQ page and the pdf export" becomes "The Faq Page And The Pdf Export", because the tool cannot tell an acronym from an ordinary word. And a period splits tokens, since it is not a word character, so a web address collects a capital on each side of its dot: "see example.com for details. thanks for reading" becomes "See Example.Com For Details. Thanks For Reading". Both are the rule working exactly as stated, and both are cases to fix by hand after converting.
Sentence case: boundaries, not grammar
Sentence case lowercases everything, then puts capitals back at three places. The whole text is lowercased first. Then a capital goes on the first letter of the text — the first letter, so any digits, quotation marks, or spaces ahead of it are skipped over — and on the first letter after each sentence boundary, where a boundary is a run of sentence-ending punctuation (. ! ? …) followed by whitespace, or a line break, since each new line starts a new sentence. That is enough for the caps-lock rescue: "ORDER CONFIRMED! YOUR PARCEL SHIPS TOMORROW. thanks again" becomes "Order confirmed! Your parcel ships tomorrow. Thanks again", with the exclamation point and the period each triggering a capital and the lowercase tail gaining one of its own.
The punctuation boundary is the same one the sentence counter uses — and it inherits the same documented limitation, that a period after an abbreviation looks identical to a full stop — with one addition: Sentence case also treats every line break as a boundary, which the sentence counter does not. The counter cuts only where an ending mark is followed by whitespace or the end of the text, so a bare line break gives it nothing to cut at; the converter's job is to put a capital on the letter that starts a new line, so it adds that boundary on top. The methodology page's worked paragraph, typed in lowercase — "dr. smith arrived at 9 a.m. she left early." — converts to "Dr. Smith arrived at 9 a.m. She left early.". The capital on "Smith" is not the tool recognizing a surname; it is the period after "dr" being read as a sentence end. The sentence counter reports 3 sentences for that text and Sentence case places 3 capitals, because on this text each sentence the counter finds begins with a letter that sits either at the start of the text or directly after a period and a space — exactly the places Sentence case puts a capital. That agreement is a property of this text, not a guarantee: the counter counts any segment containing a letter or digit, while the converter needs a letter directly after the whitespace, so a sentence that opens with a quotation mark or a figure is counted but gets no capital. Notice that "a.m." causes no trouble in the middle: the period after "a" is followed by a letter, not whitespace, so it is not a boundary — while the period after "m" is, and "She" takes its capital from that one.
The whitespace requirement cuts the other way for anything with a dot inside it. A web address keeps its lowercase — "see example.com for details. thanks for reading" becomes "See example.com for details. Thanks for reading" — because nothing follows the period in the address except another letter. An ellipsis behaves like a period when whitespace follows it: "wait… what? no way… ok" becomes "Wait… What? No way… Ok". And a line break is a boundary even without punctuation — "meeting notes: q3 budget review ↵ next steps: ship v2" becomes "Meeting notes: q3 budget review ↵ Next steps: ship v2", with ↵ marking the break — which is why pasted notes come out with a capital on every line that starts with a letter, while a colon mid-line changes nothing. The line-break boundary wants a letter directly after the break, whitespace aside, so a line that opens with a bullet, a quotation mark, or a digit gets no capital from this rule. A bulleted list shows it: "- print the agenda ↵ - book the room ↵ - send the invite" becomes "- Print the agenda ↵ - book the room ↵ - send the invite", where only the text-start rule — which skips past non-letters to find its capital — found a letter to work on, and the later lines stay lowercase. The guide walks the same bulleted-list case.
What Sentence case cannot do is recognize proper nouns, because its first step discards every capital you gave it. "The Report Is Due Friday" becomes "The report is due friday": the day of the week loses its capital along with everything else. For prose that contains names, places, or acronyms, the honest workflow is to convert and then restore those capitals by hand — the tool produces a consistent baseline, not a finished edit.
aLtErNaTiNg: a counter that only letters advance
The alternating transform walks the text one code point at a time with a counter that starts at zero. Each letter is lowercased when the counter is even and uppercased when it is odd, and the counter then advances by one — but only for letters. Everything else passes through and leaves the counter alone, which is why "a b!c" becomes "a B!c": the space and the exclamation point do not use up a turn, so "b" is the second letter and takes the capital while "c", the third, stays lowercase. On the page's main sample the apostrophe behaves the same way — "hello WORLD. it's fine." becomes "hElLo WoRlD. iT's FiNe." — and the input's own capitals are irrelevant, because each letter is set from the counter, not from what it was. Accented and non-Latin letters take their turn like any other: "café menu — crème brûlée" becomes "cAfÉ mEnU — cRèMe BrÛlÉe". Walking by code point rather than by UTF-16 unit is what keeps emoji and other two-unit characters intact instead of splitting them.
What the converter does not know, and where it stops
A short list of things no button on this page understands, so that none of them arrives as a surprise:
- Proper nouns and acronyms. Title Case and Sentence case start by lowercasing, and nothing tells them which capitals to put back.
- Abbreviations. A period followed by whitespace is a sentence boundary, whatever came before it.
- House styles. No minor-word list and no per-word exceptions of any kind; a hyphenated compound gets one capital.
- Locales. Default Unicode mappings only; Turkish's dotted and dotless i are the documented casualty.
Two limits are enforced by the engine rather than left to chance. Text longer than two million characters is refused with an explicit message instead of being converted partially — the engine's own wording is "Text longer than 2 million characters is not supported." — and empty or whitespace-only input converts to itself. Everything runs as local JavaScript on a static page: the converter makes zero network requests while you type, and a loaded page keeps converting offline, which your browser's network tab will confirm.
Frequently asked questions
What does Title Case capitalize?
The first letter of every word, with the rest of the word lowercased — the simple convention, applied to every word alike. Editorial styles like AP or Chicago additionally lowercase minor words ("of", "the", "and") mid-title; this tool deliberately does not, because a rule applied to every word is predictable in a way a partial exception list is not. Apostrophes and hyphens stay inside a word, so "it's" becomes "It's" and "state-of-the-art" gets exactly one capital. A word that starts with a digit is left lowercase — "3rd edition" becomes "3rd Edition", not "3Rd Edition".
Why did Title Case turn my acronym into an ordinary capitalized word?
Because Title Case lowercases the whole text before capitalizing each word's first letter, and nothing tells it that a word was an acronym: "the FAQ page and the pdf export" becomes "The Faq Page And The Pdf Export". Restore acronyms by hand after converting — the tool gives a consistent baseline, not a finished edit.
Why did Sentence case capitalize a word after an abbreviation?
Sentence case capitalizes after a period, exclamation point, question mark, or ellipsis followed by whitespace. A period after an abbreviation looks identical to a sentence end, so "dr. smith" becomes "Dr. Smith" with an extra capital on "Smith". This is the same documented abbreviation limitation as our sentence counter — stated plainly rather than hidden.
Does Sentence case keep names and other proper nouns?
No. Its first step lowercases everything, so "The Report Is Due Friday" becomes "The report is due friday". It then capitalizes only the first letter of the text, the first letter after sentence-ending punctuation plus whitespace, and the first letter of each new line — never a name, a place, or a day of the week. Put those capitals back by hand.
Why did Sentence case leave a web address lowercase?
A boundary needs whitespace after the punctuation. In "see example.com for details. thanks for reading" the period inside the address is followed by a letter, so it is not a boundary and the address survives: "See example.com for details. Thanks for reading". Title Case behaves differently, because its word rule splits at the dot — the same text becomes "See Example.Com For Details. Thanks For Reading".
Does UPPERCASE work on letters outside A–Z, such as Greek?
Yes. The mapping is defined per letter under the default Unicode rules, not per language, so "café menu — crème brûlée" uppercases to "CAFÉ MENU — CRÈME BRÛLÉE" with every accent kept, and the Greek sample "αβγ δέλτα" becomes "ΑΒΓ ΔΈΛΤΑ". What the default (English) mappings do not cover is locale-specific casing: Turkish's dotless ı / dotted İ distinction is not applied, so "i" always uppercases to "I".
Can converting change the character count?
Occasionally, yes. The default Unicode mappings uppercase a few letters to more than one letter: "straße" (6 characters) becomes "STRASSE" (7 characters), and lowercasing that gives "strasse" rather than the original spelling. When a length matters, count the converted text, not the source.
What is aLtErNaTiNg case for?
It is a novelty transform, offered and labeled as such, and its rule is all there is to it: every letter is rebuilt from a counter that ignores the input's own capitals. Letters alternate lowercase and UPPERCASE starting lowercase, and spaces or punctuation pass through without advancing the alternation, so "a b!c" becomes "a B!c".
What happens if I paste more than two million characters?
The conversion is refused with the message "Text longer than 2 million characters is not supported." rather than performed partially — the same cap, with the same message, that the counters on this site apply. At the other end of the range, empty or whitespace-only input converts to itself.
Is my text uploaded anywhere?
No. The conversion is plain JavaScript running locally on a static page — your browser makes zero network requests while you type, and a loaded page keeps converting offline.
Conversion happens locally in your browser — nothing you type is transmitted or stored. Counting the result instead? The word counter and letter counter handle lengths, and the sentence counter checks the rhythm of what you just recased. The rule-by-rule reference is the case conversion rules guide; the conventions every tool here shares are on the methodology page.