Skip to content

Corrupted Text Generator

Make text look like it came out of a damaged file: lost bytes (�), mojibake (é), flipped bits, escaped bytes and blacked-out words, each copyable. Paste garbled text such as “it’s” and it is repaired for you.

Fine-tune

Corrupted: 16 of 44 characters hit. The same pattern always gives the same damage; raising the slider only adds more.

  • Corrupted
    All of it at once

    R�od 04�7: Don't op�n ▒ ▒oor - it's ���l �n▒id�.

  • Broken bytes
    � where bytes were lost

    Recor� 0�17: �on't �pen th� door � ��'� �til� �n�ide.

  • Mojibake
    UTF-8 read as Windows-1252

    Record 0417: Don’t open the door – it’s still inside.

  • Bit flips
    One bit wrong per hit

    Record 0$17: Dmo'd OpEo tle t␡op - id's stil| insa$e.

  • Escaped bytes
    As Python prints them

    Rec\x98\xa8d 0417\xa7 Do\xfd't op\x8f\xea t\x91e door \xa7 it\x94s st\xb2ll in\xde\x9ade.

  • Redacted
    Whole words blacked out

    Record 0417: █████ ████ the door - ████ still inside.

Six kinds of damage and what causes each

Real corrupted text is not random noise. Each kind of damage has a cause, and the cause decides what the reader sees: a lost byte gives a �, a wrong encoding gives à and â€, a flipped bit swaps one letter for its neighbour in the ASCII table. The styles here copy those patterns, so a “recovered file” in a game or story looks like the real thing rather than a random mix of symbols.

Corrupted text styles, what each imitates and an example
StyleImitatesWhat “it’s inside” can become
CorruptedSeveral faults at once: lost bytes, flipped bits, dropped and doubled letters, a worn ▒it’s i▒sde
Broken bytesA decoder hitting bytes that are not valid UTF-8it’� ins�de
MojibakeCorrect UTF-8 opened as Windows-1252 or “Latin-1”it’s inside
Bit flipsFaulty memory, storage or a noisy line changing single bitsit’s inqide
Escaped bytesA program printing bytes it could not decode, Python styleit’s in\xd3ide
RedactedA censored document with words blacked out████ inside

Only the Corrupted style mixes faults. If you want the damage to tell a story, pick the one that fits it: mojibake for an old email archive or a badly exported spreadsheet, broken bytes for a half-downloaded file, bit flips for failing hardware or a transmission from deep space, escaped bytes for a programmer’s log.

Mojibake: é instead of é

Mojibake (Japanese for “character transformation”) is what happens when text saved in one encoding is read in another. The common case today is UTF-8 read as Windows-1252. In UTF-8, é is two bytes, C3 A9. Windows-1252 has one character per byte, so it shows C3 as à and A9 as ©, and café becomes café. The curly apostrophe ’ is three bytes, E2 80 99, which Windows-1252 reads as â, € and ™.

Plain ASCII letters are the same in both encodings, so mojibake only bites on accented letters, curly quotes, dashes, symbols and emoji. That is why the Mojibake row has no damage setting, and why the generator first turns straight quotes into curly ones as Word does when you type. Without that step an English sentence would usually come through untouched.

Worked example. “Record 0417: Don’t open the door – it’s still inside.” has three characters outside ASCII: two apostrophes and an en dash. Read as Windows-1252 it becomes “Record 0417: Don’t open the door – it’s still inside.” The other 41 non-space characters are unchanged, and the line grows from 53 to 59 characters because each of the three became three.

Common mojibake sequences and the character they should be
You seeShould beUTF-8 bytes
é è áé è áC3 A9 · C3 A8 · C3 A1
ñ ü ö çñ ü ö çC3 B1 · C3 BC · C3 B6 · C3 A7
ßßC3 9F
’ ‘’ ‘E2 80 99 · E2 80 98
“ – ”E2 80 9C · E2 80 9D
– —– —E2 80 93 · E2 80 94
……E2 80 A6
£  (before a space)£ non-breaking spaceC2 A3 · C2 A0
€€E2 82 AC
😀😀F0 9F 98 80
éé, garbled twiceC3 A9 → é → é

The right double quote ” leaves only “— on screen because its last byte, 9D, is not a printable character in Windows-1252; browsers decode it as an invisible control character, and it is often lost when the text is copied. The last row shows mojibake applied twice: each pass makes it longer, and à followed by Æ, ƒ or  is the sign that it happened more than once.

“Latin-1” and “ISO-8859-1” behave the same way in a browser. The WHATWG Encoding Standard, which all current browsers follow, treats those labels, and even “ascii”, as names for Windows-1252.

The replacement character �

� is U+FFFD REPLACEMENT CHARACTER, the symbol a decoder writes when it meets bytes that are not valid in the encoding it was told to use. Unlike mojibake, the original is gone: the program has already thrown the bad bytes away and kept only the marker. In UTF-8, � itself is stored as EF BF BD, so a � that is then garbled as mojibake shows up as �.

Unicode’s recommended practice, followed by browsers, is one � for each maximal subpart: the longest run of bytes that could have been the start of a valid character. So a file cut off in the middle of € (E2 82 AC) ends in a single �, not two, and a lone é saved in Windows-1252 (byte E9) and read as UTF-8 gives “caf�”.

Bytes that a UTF-8 decoder replaces, and the result
BytesWhy it failsShown as
63 61 66 E9E9 starts a three-byte character but nothing followscaf�
63 61 66 C3File cut off after the first half of écaf�
E2 80 21Two bytes of a curly quote, then a plain “!”�!
FFNever valid anywhere in UTF-8�

The Broken bytes row replaces each hit character with one �, whatever its length. That matches what you see when a single byte inside a character is damaged; real files with long damaged stretches can show many � in a row.

Bit flips: one wrong bit, one wrong letter

Every ASCII character is a 7-bit number, and flipping any one bit gives another character a fixed distance away in the table. That makes bit-flip damage look strangely regular: some letters swap case, some turn into digits or punctuation, and some become control codes that have no visible form. The Bit flips row shows control codes as the Unicode Control Pictures ␀ to ␟ and ␡, so they can be seen and copied.

Worked example. e is 0x65, binary 1100101. Flipping each of its seven bits in turn gives d, g, a, m, u, E and %. Bit 5 is worth 32, the exact gap between capitals and small letters, which is why a flipped e so often becomes E.

What flipping each bit does to e, A and r
Bit (value)eAr
0 (1)d@s
1 (2)gCp
2 (4)aEv
3 (8)mIz
4 (16)uQb
5 (32)EaR
6 (64)%␁2

Bit flips happen outside fiction too. In 2011 Artem Dinaburg registered domains one bit away from popular ones, such as mic2osoft.com (r is 0x72, 2 is 0x32, so bit 6 differs), and logged 52,317 requests from 12,949 IP addresses over about seven months from machines whose memory had flipped a bit in a domain name. He called it bitsquatting; most consumer computers and phones have no error-correcting memory to catch it.

Redacted text is a look, not redaction

The Redacted row replaces whole words with one █ per letter, so the length of each hidden word still shows, as it does on a real blacked-out page. Punctuation and spaces stay where they were. It is meant for case files, puzzle props and fictional dossiers.

Do not use it to hide anything real. You choose the damage level, not which words go, so a name can survive, and the letter count of a hidden word can be enough to guess it. To redact a real document, use the redaction feature of a PDF editor, which removes the text underneath; a black box drawn on top leaves the words in the file, where they can be copied out.

Fixing real corrupted text

Mojibake can usually be undone, because no information was lost: the bytes are still there, just shown with the wrong character set. Paste text like “it’s “fresh†and café costs £3” into the box and a Repaired text row appears with “it’s “fresh” and café costs £3”. It reverses UTF-8-as-Windows-1252 up to three times, so double mojibake (é) comes back too, and it restores a bare †as ”, the case where the invisible last byte was lost. Text that is already correct, such as café or naïve, is left alone.

Better still is to stop it at the source. A CSV that shows é in Excel was saved as UTF-8 and opened as Windows-1252: import it through Data, From Text/CSV and set File origin to 65001: Unicode (UTF-8), or save the file as “CSV UTF-8” in the first place. On a web page, declare <meta charset="utf-8"> in the first 1,024 bytes. For large amounts of text in Python, the ftfy library detects and fixes mojibake across many encodings, not just this one.

� and bit flips cannot be fixed from the text alone. The original bytes were replaced or changed, so the only real fix is an older copy of the file, or a format with a checksum or error correction that can rebuild it.

Choosing a damage level

Damage is the chance that each character is hit, so at 30% roughly three characters in ten change, though a short line can land above or below that. Spaces and line breaks are never touched, which keeps word shapes visible even when most letters have gone. Each position has its own fixed roll, so raising the slider only adds damage and typing more text does not reshuffle the start. New pattern picks a different set of rolls.

Worked example. The sample sentence “Record 0417: Don't open the door - it's still inside.” has 44 characters that can be hit. In the Corrupted row on the starting pattern, 10% hits 5 of them and leaves it easy to read; 30% hits 16 and gives “R�od 04�7: Don't op�n ▒ ▒oor - it's ���l �n▒id�.”; 60% hits 30 and only fragments remain. With “Keep the first and last letter of every word” ticked, only 26 characters can be hit, and 30% gives “R�od 04�7: Don't op�n te door - it's s��ll in▒ide.”, which most readers can still work out.

Rough guide to damage levels
DamageReads asGood for
5–15%Readable with a few scarsA message the reader must understand
20–40%A puzzle; key words may need guessingClues, ARGs, recovered logs
50–70%FragmentsLost records, atmosphere
80–100%NoiseBackgrounds and texture

For marks stacked above and below letters, the Zalgo look, use the glitch text generator or the cursed text generator. Those keep every letter and pile combining marks on top; this page removes and replaces the characters themselves.

Frequently asked questions

Can I paste corrupted text into Discord, Instagram or a game chat?

Usually, yes. Every style uses ordinary Unicode characters. Two things to watch: escaped bytes and mojibake make the text longer, and the control pictures (␀ ␛) from bit flips may show as boxes in fonts that lack them.

Why does the Mojibake row look the same as my text?

Your text is plain ASCII with no curly quotes, so there is nothing to garble. Turn on the curly-quotes option under Fine-tune, or add an accented letter, a £ or an emoji.

How do I get exactly the same result again?

Use the same text, damage and pattern. The pattern resets to the starting one when you reload the page; after pressing New pattern, copy the result you like rather than relying on getting it back.

Will this damage a real file?

No. It only changes the text in the box, in your browser. Nothing is uploaded, and there is no file involved.

Can it fix text full of � symbols?

No. A � means the original bytes were thrown away when the text was decoded. Go back to the source file and open it with the right encoding, usually UTF-8.

Sources