Case Conversion: The Rules Behind Each Transform
The case converter offers 5 transforms, and each one is a rule rather than a judgement. That makes the output predictable; it is also why the output sometimes carries a capital a human editor would not add, or drops one they would keep. This guide states each rule as the converter applies it, runs short original sentences through every transform, and shows where rule and editor part ways. Every converted string on this page was produced at build time by the module the tool runs in your browser.
The 5 transforms on one headline
Take the draft heading "the 2nd edition of our field guide: it's a well-thumbed copy" — chosen because it contains a digit-led word, an apostrophe, a hyphen, and the small words an editorial style would lowercase. Each row below is the tool's own label and one-line description, followed by what the engine returns for that input.
| Transform | Rule, in the tool's words | Result |
|---|---|---|
| UPPERCASE | Every letter capitalized | THE 2ND EDITION OF OUR FIELD GUIDE: IT'S A WELL-THUMBED COPY |
| lowercase | Every letter lowercased | the 2nd edition of our field guide: it's a well-thumbed copy |
| Title Case | First letter of every word capitalized | The 2nd Edition Of Our Field Guide: It's A Well-thumbed Copy |
| Sentence case | First letter of every sentence capitalized | The 2nd edition of our field guide: it's a well-thumbed copy |
| aLtErNaTiNg | Letters alternate lower/UPPER | tHe 2Nd EdItIoN oF oUr FiElD gUiDe: It'S a WeLl-ThUmBeD cOpY |
UPPERCASE and lowercase are the plain Unicode mappings applied to every letter. Title Case and Sentence case both start by lowercasing everything and then put capitals back according to a rule — a different rule each — and aLtErNaTiNg ignores the original case entirely and rebuilds it letter by letter.
Title Case: one capital per word, and what a word is
Title Case is the simple convention: the first letter of every word is capitalized and the rest of the word lowercased. Everything interesting about it follows from the definition of a word, which the converter borrows from the word counter. A word is an unbroken run of letters, digits, apostrophes (straight or curly), and hyphens — the token described in what counts as a word. Because an apostrophe and a hyphen stay inside the token, "it's" and "well-thumbed" each get one capital, on the first letter only: the heading above comes back as "The 2nd Edition Of Our Field Guide: It's A Well-thumbed Copy", with no capital T on "thumbed".
Digit-led words stay lowercase
The capital lands only when no digit precedes the first letter of the word. The engine looks at the run of non-letters at the front of each token; if that run contains a digit, the token is left exactly as it was lowercased. "2nd" therefore comes back as "2nd", with no capital on the n. A leading apostrophe or hyphen is not a digit, so it does not block the capital: "'twas" becomes "'Twas". A token with no letter at all — a bare hyphen used as a list bullet, which the word counter registers as a token — has nothing to capitalize and passes through. All three cases appear in one input: "- buy milk↵- call home↵- 'twas a long list" becomes "- Buy Milk↵- Call Home↵- 'Twas A Long List".
No minor-word list
Editorial styles such as AP and Chicago lowercase words like "of" and "the" mid-title, and this tool deliberately applies no such rules: every word is treated alike. That is why "Of", "Our", and "A" are capitalized in the heading above. The trade is a predictable rule for a partially applied one: the tool cannot know which style you follow, so it applies none. If you write to a house style, treat the output as a first pass and lowercase the minor words yourself.
Sentence case: lowercase everything, then find the boundaries
Sentence case runs in two stages. First the whole text is lowercased. Then a capital is put on the first letter of the text, on the first letter after a sentence-ending run (. ! ? …) followed by whitespace, and on a letter that begins a new line, after any leading whitespace — a line that opens with a bullet, a quotation mark, or a digit gets no capital from this rule. Nothing else is touched. On the heading used above, the only capital that survives is the first: "The 2nd edition of our field guide: it's a well-thumbed copy".
The first stage discards every capital you typed before the rule runs, so the transform cannot tell a proper noun or an acronym from a shouted word. The second stage inherits the sentence counter's abbreviation limitation, because a period after an abbreviation followed by a space looks identical to a full stop. Both show up when a shouted line is rescued: "THE PKG. ARRIVED AT NOON. SIGN THE U.S. FORMS!" lowercases to "the pkg. arrived at noon. sign the u.s. forms!", and Sentence case then returns "The pkg. Arrived at noon. Sign the u.s. Forms!" — the acronym stays lowercase, and the words after "pkg." and "u.s." receive capitals an editor would not add. The methodology page's example is "dr. smith" becoming "Dr. Smith"; the same boundary is described in the sentences, paragraphs, and lines guide.
Three narrower behaviours follow from the same rule. A period with no whitespace after it is not a boundary, so a decimal stays whole: "pi is 3.14 exactly. round it later." becomes "Pi is 3.14 exactly. Round it later.". A line break is a boundary even without punctuation: "first line has no full stop↵second line starts fresh" becomes "First line has no full stop↵Second line starts fresh". And the "first letter of the text" is found wherever it is, skipping anything that is not a letter, so a text opening with a figure gets its capital on the first word after it: "2026 was a busy year. so was the one before." becomes "2026 Was a busy year. So was the one before.". The line-break boundary has no such skip: it wants a letter right after the break, whitespace aside, so a bulleted list keeps its later lines lowercase — "- buy milk↵- call home↵- 'twas a long list" becomes "- Buy milk↵- call home↵- 'twas a long list", where only the text-start rule found a letter to capitalize. None of these is an error in the engine's terms; each is the stated rule doing what it says.
aLtErNaTiNg: letters advance the state, nothing else does
aLtErNaTiNg case alternates per letter, starting lowercase. The converter walks the text one character at a time, keeping a single counter. When it meets a letter, it lowercases the letter if the counter is even and uppercases it if the counter is odd, then advances the counter. When it meets anything else — a space, a digit, punctuation, an emoji — it copies the character through unchanged and leaves the counter alone. The stated example is "a b!c" becoming "a B!c": the space and the exclamation mark do not consume a turn, so "b" and "c" are consecutive letters and get opposite cases.
A longer input makes the counting visible. "ok, 2 cats & 1 dog!" contains 9 letters by the letter counter's definition, so the counter advances 9 times and the result is "oK, 2 cAtS & 1 dOg!"; the digits, comma, and ampersand are copied verbatim. The walk is by code point rather than by UTF-16 unit, so an emoji is passed through whole instead of being split in two: "go team 🎉 go" becomes "gO tEaM 🎉 gO". Why an emoji is one character here and two units to some other program is the subject of the characters, code points, and emoji guide.
UPPERCASE, lowercase, and the Unicode mappings underneath
All 5 transforms rest on the same two operations: the default Unicode uppercase and lowercase mappings, applied with the English locale. Accented letters have mappings of their own, so "café near the river" uppercases to "CAFÉ NEAR THE RIVER" and title-cases to "Café Near The River"; the é is a letter to the word tokenizer just as it is to the case mapping.
One locale caveat, stated honestly. Turkish distinguishes dotless ı / I from dotted i / İ, and under Turkish rules a lowercase "i" uppercases to "İ". The converter does not apply that mapping: "i" always uppercases to "I", so "istanbul in winter" becomes "ISTANBUL IN WINTER", which is wrong for Turkish text under Turkish rules. The limitation is the same on every transform, because every transform reaches the same mapping.
A second, quieter point concerns spelling rather than language. The converter does not normalize its input, so an é that arrives as a plain e plus a combining accent is handled letter by letter: the e is uppercased and the accent mark copied through. Uppercasing the decomposed "café" gives "CAFÉ", which looks identical to the composed form but is 5 code points against 4; the letter counter, which normalizes first, still sees 4 letters in it. The letters and normalization guide covers why the two spellings agree once normalized.
Limits and failure behaviour
Empty text converts to empty text. That is the engine-wide convention — empty input is a valid zero case, not an error — and the converter returns a string of length 0 for it. At the other end, the converter accepts up to two million characters per conversion and reports an explicit message beyond that, never a silently shortened result; the exact text is "Text longer than 2 million characters is not supported.". There is no sampling or approximation between those bounds: the selected transform is applied to the full text on every keystroke.
These transforms live in a small module local to WordCntr.com rather than in the counting engine shared with the sister sites, pinned by the same automated test suite: the digit-led token, the leading apostrophe, the abbreviation boundary, the alternation across non-letters, and the empty case each have a test. Conversion is local JavaScript on a static page: your browser's network tab shows zero requests while you type, and a loaded page keeps working offline.
Choosing a transform
- Rescuing a paragraph typed in caps: use Sentence case, then restore the proper nouns and acronyms it lowercased and remove any capital that follows an abbreviation.
- Setting a heading: use Title Case, then lowercase minor words by hand if your house style calls for it. Digit-led words and hyphenated compounds are already handled.
- Flattening names, codes, or addresses so duplicates match: use lowercase or UPPERCASE, which apply the same mapping to every letter with no per-word logic.
- Turkish text: no transform here applies Turkish casing; check every "i" and "I" by hand.
The tool itself is at /case-converter/. For the word token Title Case relies on, see what counts as a word; for the rest of the site's counting rules, see the full list of guides.
Frequently asked questions
Why did Title Case capitalize "of" and "a" in my heading?
Because the converter applies the simple Title Case convention: the first letter of every word is capitalized and the rest lowercased, with every word treated alike. "the 2nd edition of our field guide: it's a well-thumbed copy" becomes "The 2nd Edition Of Our Field Guide: It's A Well-thumbed Copy". Editorial styles such as AP and Chicago lowercase minor words like "of" and "the" mid-title; this tool deliberately applies no such list, so if you write to a house style, treat the output as a starting point and lowercase the minor words yourself.
Why does "2nd" stay lowercase while "'twas" gets a capital?
Title Case capitalizes a word's first letter only when no digit precedes it in the word. In "2nd" the digit comes first, so the token is left as lowercased and returns as "2nd"; in "'twas" the apostrophe comes first, and an apostrophe or hyphen does not block the capital, so it becomes "'Twas". Run "- buy milk↵- call home↵- 'twas a long list" through Title Case and the engine returns "- Buy Milk↵- Call Home↵- 'Twas A Long List" — the bare list hyphens, which contain no letter at all, pass through untouched.
Why did Sentence case lowercase my acronym and capitalize after an abbreviation?
Sentence case lowercases the whole text first, so every capital you typed is gone before the rule runs — the acronym in "THE PKG. ARRIVED AT NOON. SIGN THE U.S. FORMS!" is not recognized as one. It then capitalizes the first letter of the text, the first letter after a sentence-ending mark followed by whitespace, and a letter that begins a new line. A period after an abbreviation looks identical to a full stop, so the result is "The pkg. Arrived at noon. Sign the u.s. Forms!", with capitals after "pkg." and "u.s." that a human editor would not add. This is the same documented abbreviation limitation as the sentence counter's.
Does aLtErNaTiNg case count spaces, digits, and punctuation?
No. The alternation advances only on letters, starting lowercase, and every other character passes through unchanged without moving it along. "ok, 2 cats & 1 dog!" contains 9 letters and becomes "oK, 2 cAtS & 1 dOg!"; the comma, spaces, digits, and ampersand are copied as they are. The converter also steps through the text by code point, so an emoji is passed through whole: "go team 🎉 go" becomes "gO tEaM 🎉 gO".
Does the converter handle accented and non-English letters?
It uses the default Unicode (English) case mappings, so "café near the river" uppercases to "CAFÉ NEAR THE RIVER". The stated limitation is locale-specific mappings: Turkish distinguishes dotless ı / I from dotted i / İ, and under Turkish rules "i" would uppercase to "İ", but here "istanbul in winter" becomes "ISTANBUL IN WINTER" — wrong for Turkish text under Turkish rules, and the same on every transform.
Is there a size limit, and is my text uploaded?
The converter accepts up to two million characters per conversion and reports "Text longer than 2 million characters is not supported." beyond that, never a silently truncated result. Empty text converts to empty text — a valid zero case that returns a string of length 0, not an error. Nothing is uploaded: the conversion is plain JavaScript on a static page, so 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. Every converted string in this guide was computed at build time by the same module the case converter runs; the conventions are stated in full on the methodology page.