Smart quotes, broken builds
Word processors, chat apps and CMS editors convert your straight quotes into curly ones as you type. Parsers only accept the straight kind. A config that will not load or a command that fails for no visible reason is, a remarkable share of the time, a quotation mark wearing makeup.
Two characters pretending to be four
Your keyboard has two quote keys. Typography has at least six relatives: opening and closing double quotes, opening and closing single quotes, and a family of primes. Software converts between them automatically, a feature called smart quotes, because curly quotes look better in prose.
They do look better in prose. The problem is that parsers do not read prose.
- JSON requires straight double quotes as delimiters. Feed it curly ones and it fails, and here is the cruel part: many validators report a generic parse error at a position without saying "your quotes are curly", because visually they cannot show you the difference either. Some projects added a dedicated "did you paste curly quotes?" error message purely to stop the support tickets.
- YAML, TOML, .conf and .env files all expect ASCII quotes. A curly quote in a config either errors or, worse, silently becomes part of the value.
- Shell commands are the classic. A command copied from a styled web page arrives with curly quotes, and the shell treats them not as quoting characters but as literal text inside an argument. The command runs and does the wrong thing.
- Every programming language wants straight quotes for string delimiters. A curly quote in source code is at best a syntax error and at worst a string containing a character you did not intend.
The same conversion produces the curly apostrophe, so a contraction in pasted text is not the one your grep is looking for. Unicode goes further with lookalike apostrophes that are technically letters, such as U+02BC, which pass some validators and then break search, diffs and deduplication downstream.
Where they sneak in
You rarely type a curly quote deliberately. They arrive when text round-trips through something with smart punctuation enabled: Word, Google Docs, Pages, Slack, note apps, CMS editors, iOS keyboards. AI assistants too, whose output is curly-quoted by default because their training data was published prose. The quotes usually travel with their friends, the em dash and a real ellipsis character.
You can turn smart punctuation off app by app. macOS has a checkbox in Keyboard settings, iOS has one under Smart Punctuation. That only fixes what you type, though. It does nothing about what you copy, and copying is how the quotes actually get into your configs.
The clipboard is the checkpoint
Everything you paste passes through the clipboard, which makes it the one place a fix covers every source: the styled blog post, the Slack message, the AI answer, the internal wiki.
The nuance that matters is context. Prose should be allowed to keep its typography, and code copied from a repository should stay byte for byte what its author wrote, because a curly quote inside a string literal might be exactly what they meant. A cleaner worth using knows which one it is holding.
Text cleaning is coming next to tdy.
tdy is a Mac menu-bar app that already tidies every link you copy. Straightening smart quotes and stripping invisible characters on copy is the next upgrade. One email when it ships, nothing else.
Join the launch list