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
| What changes | The case of individual letters — Latin and Cyrillic; every other character is left alone |
|---|---|
| Flip probability | Each letter gets its own coin flip — Math.random() compared against the chosen share |
| 25% intensity | On average roughly one letter in four flips to the opposite case |
| 50% intensity | On average roughly every other letter flips — the default value |
| 75% intensity | On average three letters out of four flip — the noisiest variant |
| Regenerate | The "generate again" button recomputes the result from the same text without retyping it |
When it misleads you
- The result is non-deterministic: the same input text and the same intensity produce a different set of flipped letters on every run — it's Math.random(), not a hash function, so an identical result can't be reproduced on purpose.
- Intensity is a per-letter probability, not an exact share. At 50% a short 10-letter text can randomly end up with anywhere from 3 to 8 letters flipped — on longer texts the actual share settles close to the target, on short ones it can differ noticeably.
- Only the case changes — letters remain the same letters. Digits, punctuation, emoji and spaces never participate in the flip, even at 75% intensity.
- If a character has no upper/lower distinction in Unicode (rare for some scripts), the flip simply has no visible effect on it even though the coin flip still happens.
How it is calculated
The text is walked character by character. For each character the tool checks whether it's a letter (Latin or Cyrillic) — if not, the character is copied to the result unchanged.
For every letter, a random number between 0 and 1 is drawn with Math.random(). If it's below the chosen intensity (0.25, 0.5 or 0.75), the letter's case is flipped: uppercase becomes lowercase and lowercase becomes uppercase.
The flip is done by comparing the letter to its own uppercase form: if the letter matches its toUpperCase() version, it's already a capital and gets lowercased, and vice versa.
The "generate again" button doesn't touch the text in the input field — it simply reruns the same computation, and because it relies on Math.random() internally, the result comes out different every time.
Questions and answers
Why does the same text produce a different result every time?
Each letter's flip is decided by a random draw — that's intentional, the tool doesn't remember or reproduce the previous result. Click "generate again" to get another random variant.
What does 25/50/75% intensity mean?
It's the probability that a given letter's case flips to the opposite one. At 75% roughly three letters out of four flip on average, at 25% roughly one in four. The exact count depends on chance, especially on short texts.
Can I get a specific, repeatable result?
No, the generator is deliberately non-deterministic. If you need a predictable pattern — like exactly every other letter, no randomness — use a regular case converter instead of this tool.
Do digits and punctuation get flipped too?
No, only letter case is flipped. Digits, spaces, emoji and punctuation always stay exactly as in the original text.
Is the text sent anywhere during generation?
No, the whole computation, random numbers included, runs directly in your browser.