Per-character case swap
Invert case walks the input one character at a time. For each character, the engine compares the character to its uppercase form: if they match, the character is already uppercase and gets lowercased; otherwise the character is lowercased or non-cased, so the engine uppercases it. Letters with no case (digits, punctuation, CJK, emoji) round-trip unchanged because their uppercase and lowercase forms are identical.
The transform is self-inverse: running invert twice on the same text returns the original. Hello -> hELLO -> Hello. That property is why this tool has no separate "reverse" sibling; it already is its own reverse.
Diacritics behave the same way as in uppercase and lowercase: É swaps to é and back, accents stay attached. The German sharp-s ß uppercases to SS on the first pass; running invert a second time gives back ss, which does not round-trip to ß (note this if you work with German text).
How to use invert text case
- 1Paste or type your text into the input panel on the left.
- 2The inverted result appears in the output panel on the right as you type.
- 3Run the tool again on the output to round-trip back to the original.
- 4Click Copy in the output header to copy the result.
- 5Click Download to save the result as a plain-text file.
Keyboard shortcuts
Drive TextResult without touching the mouse.
| Shortcut | Action |
|---|---|
| Ctrl F | Open the find & replace panel inside the input Plus |
| Ctrl Z | Undo the last input change |
| Ctrl Shift Z | Redo |
| Ctrl Shift Enter | Toggle fullscreen focus on the editor Plus |
| Esc | Close find & replace, or exit fullscreen |
| Ctrl K | Open the command palette to jump to any tool Plus |
| Ctrl S | Save current workflow draft Plus |
| Ctrl P | Run a saved workflow Plus |
What this tool actually does
Per-character case detection
The engine compares each character with c.toUpperCase(). If equal, the character is uppercase and gets folded to lowercase; otherwise it is lowercased or non-cased, so the engine folds it to uppercase.
Self-inverse
Invert(invert(x)) === x for any input that does not contain the German ß. There is no separate "uninvert" tool because none is needed; paste the output back in and you are home.
Non-cased characters pass through
Digits, punctuation, whitespace, CJK, Arabic, Hebrew, emoji all have c.toUpperCase() === c, so the engine sees them as "uppercase" and lowercases them, which is a no-op because the lowercase form is also identical. Net effect: they pass through.
Diacritics preserved
Accented Latin letters swap correctly: É -> é, Ñ -> ñ, Ü -> ü. Greek and Cyrillic letters with case follow the same rule.
German sharp-s caveat
The lowercase ß uppercases to two letters SS on the way out, so a round-trip through invert twice loses the original ß. If you need to preserve ß, do not use invert on German text; combine uppercase with the Keep ß toggle instead.
Worked example
Each letter has flipped case independently of the others. Diacritics stay attached. Run the output through invert again to get the original text back.
Hello World The Quick Brown Fox Café résumé NAÏVE
hELLO wORLD tHE qUICK bROWN fOX cAFÉ RÉSUMÉ naïve
Settings reference
| Behaviour | Effect on output |
|---|---|
| Uppercase letter | A -> a, É -> é, Ñ -> ñ. |
| Lowercase letter | a -> A, é -> É, ñ -> Ñ. |
German ß |
Uppercases to SS. Round-tripping through invert twice does not restore ß. |
| Digits and punctuation | Pass through unchanged. |
| Whitespace and line endings | Unchanged. LF stays LF, CRLF stays CRLF. |
| Scripts without case | CJK, Arabic, Hebrew, emoji pass through unchanged. |
FAQ
How do I undo invert case?
ß -> SS -> ss does not round-trip).Does it work on accented characters?
É swaps to é and vice versa, with the accent intact. Greek and Cyrillic letters with case follow the same rule.