Smart Quotes Remover 🫧

Curly “smart” quotes break code, JSON, CSVs and configs. Paste your text and convert every curly quote to a straight ASCII quote — with an x-ray showing each one first.

🔒 100% private — your text never leaves this browser tab

📝 Your text

🔍 Fingerprint report

paste text to scan
Findings will appear here. Invisible characters are shown in red, typography in amber, style tells in blue.

👁️ X-ray view — invisible characters made visible

Your text with every hidden character exposed will render here.

Where do smart quotes come from?

Word processors, chat apps and AI assistants automatically replace the straight quotes you type (" and ') with typographic curly ones (“ ” ‘ ’). That's correct for print — and fatal for code. JSON, YAML, shell commands, SQL and most programming languages only accept the straight ASCII characters, so a pasted curly quote produces parse errors that are maddening to spot because the characters look almost identical.

What this tool converts

All four curly quote characters, low and reversed quote variants, primes and double primes — every one becomes its plain ASCII equivalent. The x-ray view highlights each smart quote before you convert, and the diff view shows every replacement after. TextWash also removes the invisible characters (zero-width spaces, non-breaking spaces) that typically travel with pasted text and break code the same way.

Prefer to keep curly quotes?

Turn on Pretty mode and TextWash does the reverse: it keeps typographic quotes and upgrades any straight ones so the whole document is consistent — useful for publishing rather than programming.

FAQ

Why do smart quotes break JSON and code?

Parsers expect the ASCII quote characters (U+0022 and U+0027). Curly quotes are entirely different code points (U+201C–U+201F, U+2018–U+201B) that merely look similar, so the parser sees an invalid token.

Does this change anything besides quotes?

By default it also fixes em dashes, real ellipsis characters and hidden Unicode characters — each toggleable. Every change is shown character by character in the diff view.

Is my text uploaded?

No. The conversion is plain JavaScript running in your browser; nothing is sent anywhere.