Result
This page has no server side at all. The table you paste is parsed by JavaScript inside your own browser, the chart is drawn on a canvas element on your machine, and the export file is assembled locally. Nothing is uploaded, stored or written to any log. You can disconnect from the network after the page has loaded and everything will still work — which is the simplest way to verify the claim yourself.
Facts and limits of this method
| UPPERCASE | text.toUpperCase() — every letter becomes a capital |
|---|---|
| lowercase | text.toLowerCase() — every letter becomes lowercase |
| Title Case | The first letter of every word is capitalized, the rest of the word is lowercased |
| Sentence case | The whole text is lowercased first, then the first letter of the text and the letter after every ". ", "! ", "? " is capitalized |
| iNVERT cAsE | Every uppercase letter becomes lowercase and vice versa, character by character |
| Change counter | The number of positions where the result character differs from the original character |
When it misleads you
- toUpperCase() and toLowerCase() occasionally change the text length: the German letter "ß" turns into "SS" when the browser uppercases it — two characters instead of one. The change counter treats that extra character as a change too.
- Title Case is a simplified version: a "word" is any run of letters, so a hyphen in "well-known" produces "Well-Known" with a capital after the hyphen too, and an apostrophe or underscore inside a word also splits it into two capitalized pieces.
- Sentence case can't tell a sentence end from an abbreviation or a decimal number — after "e.g. next" or "3.14 apples" the following letter also gets capitalized, even though no sentence actually ended there.
- Case inversion only applies to characters that have an upper/lower distinction at all — digits, punctuation, emoji and CJK characters are left unchanged and don't count as "changed" characters.
How it is calculated
UPPERCASE and lowercase are a direct call to JavaScript's built-in toUpperCase() and toLowerCase() on the whole string — both work fine on Cyrillic as well as Latin text.
Title Case finds every run of letters (a "word" in the broad sense) in the text and replaces each one with a capitalized-first, lowercase-rest version: word.charAt(0).toUpperCase() + word.slice(1).toLowerCase().
Sentence case first lowercases the entire text, then capitalizes the very first letter, then capitalizes the letter that follows a period, exclamation or question mark plus one or more spaces.
Case inversion walks the text character by character: if a character's uppercase form differs from itself, it's a capital and gets lowercased; if its lowercase form differs from itself, it's lowercase and gets capitalized; anything else is left as-is. The change counter compares the original and result strings position by position and counts mismatches.
Questions and answers
How is Title Case different from just capitalizing every word?
Title Case doesn't only capitalize the first letter of each word — it also lowercases the rest of the word. If a word was originally ALL CAPS, Title Case turns it into "Ordinary Capitalized Word".
Why does a capital letter appear right after a hyphen in Title Case?
The tool treats any continuous run of letters as a word. A hyphen breaks that run, so "well-known" becomes "Well-Known" — both halves of the hyphenated word get a capital.
What does the "characters changed" counter measure?
It compares the original and result text character by character and counts positions that don't match. If your text is already all uppercase and you pick UPPERCASE mode, the counter shows 0 — there's nothing to change.
Can I undo iNVERT cAsE and get the original text back?
Yes — running case inversion again on the result restores the original letters, because inversion is its own inverse operation.
Is the text sent anywhere while it's processed?
No, the whole conversion happens directly in your browser on every keystroke, the text is never transmitted anywhere.