Invert text case

Invert case swaps every uppercase letter for lowercase and every lowercase letter for uppercase, character by character. Paste Hello World and get hELLO wORLD. Run the tool a second time on the output and you get the original text back, since invert is its own inverse. Need a one-direction transform? Try uppercase or lowercase.

Input
Line 1:1 LF cloud_done Saved locally
Result Invert Case
0 lines 0 chars

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

  1. 1Paste or type your text into the input panel on the left.
  2. 2The inverted result appears in the output panel on the right as you type.
  3. 3Run the tool again on the output to round-trip back to the original.
  4. 4Click Copy in the output header to copy the result.
  5. 5Click Download to save the result as a plain-text file.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun 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.

Input
Hello World
The Quick Brown Fox
Café résumé NAÏVE
Output
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?
Run invert again on the output. It is its own inverse, so a second pass returns the original text (with the one caveat that German ß -> SS -> ss does not round-trip).
Does it work on accented characters?
Yes. É swaps to é and vice versa, with the accent intact. Greek and Cyrillic letters with case follow the same rule.
Why is my text losing the German sharp-s?
Lowercase ß uppercases to two letters SS per the Unicode default mapping. Inverting again gives ss, not ß. For German text, prefer uppercase with the Keep ß toggle, or lowercase.
Is the output sent anywhere?
No. The transform runs entirely in your browser via JavaScript. Nothing is uploaded, nothing is logged.
How is this different from alternating case?
Alternating case ignores the source case and applies a fixed lower/upper/lower/upper pattern. Invert case looks at each character and flips its existing case, so words you typed in MixedCase keep their structure (just inverted).