You copied code from a tutorial. It looked perfect. You pasted it. The compiler screamed. You lost 3 hours of your life. The culprit? An invisible Unicode impostor hiding in plain sight.
The Backtick Tribunal has classified the following characters for your operational awareness. Study them. Your production server depends on it.
Used in JavaScript template literals, Markdown code fences, and shell command substitution. This one is your friend. Protect it.
Looks like a backtick. Is not a backtick. Your keyboard on mobile probably types this instead. Has ruined thousands of Markdown files.
The most dangerous characters in computing. Word processors silently inject these into your code. No compiler on Earth accepts them. Three bytes each. Pure chaos.
The correct, ASCII-safe, single-byte quotation marks. Every programming language understands these. The Security Council for Character Standards approves.
To the human eye, “ and " look almost identical. To a computer, they are completely different creatures.
| Rank | Platform | Crime | Danger Level |
|---|---|---|---|
| 1 | WORDPRESS | wptexturize() auto-converts quotes since 2004. Enabled by default. Has ruined more code snippets than any other platform in history. | 98% |
| 2 | MICROSOFT WORD | Smart quotes on by default since Word 97. Ctrl+Z does not undo the conversion. The original war criminal. | 95% |
| 3 | macOS | System-wide smart quote substitution. Found in System Settings > Keyboard > Text Replacements. Affects EVERY text field including Terminal.app in some contexts. | 88% |
| 4 | MEDIUM | Converts all quotes in published articles. No raw mode. Code blocks sometimes fail to protect contents. | 85% |
| 5 | GOOGLE DOCS | Smart quotes on by default. At least you can turn them off in Tools > Preferences. | 75% |
| 6 | CHATGPT / LLMs | Large language models sometimes output curly quotes in code blocks. The AI is literally trying to sabotage you. | 70% |
| 7 | CONFLUENCE | Atlassian's wiki converts quotes in code macros. Enterprise-grade quote corruption for enterprise-grade prices. | 65% |
The characters on the left look correct. They are not. The ICCS demands you study these carefully.
print(“Hello, World!”)
SyntaxError: invalid character
‘“’ (U+201C)print("Hello, World!")
Hello, World!var name = “John”;
console.log(name);
Uncaught SyntaxError:
Invalid or unexpected tokenvar name = "John";
console.log(name);
John{
“name”: “Alice”,
“age”: 30
}
SyntaxError: Unexpected token{
"name": "Alice",
"age": 30
}
Valid JSONecho “Hello from bash”
bash: $‘\xe2\x80\x9c’:
command not foundecho "Hello from bash"
Hello from bashbody {
font-family: “Helvetica Neue”,
sans-serif;
}
/* NO ERROR. RULE SILENTLY IGNORED.
FALLS BACK TO DEFAULT FONT.
YOU WILL NEVER KNOW. */body {
font-family: "Helvetica Neue",
sans-serif;
}
/* Works perfectly. */In 2024, a validation script deployed across Microsoft's Office division contained a smart quote character — a single curly quote instead of a straight one. The script was meant to validate commit messages before code could be pushed to the repository.
The result: THE ENTIRE OFFICE DIVISION WAS LOCKED OUT OF COMMITTING CODE.
Nobody could push. Nobody could fix the script because fixing the script required pushing a commit, which required passing the script. A perfect deadlock. A masterpiece of self-destruction.
Raymond Chen, Microsoft's legendary old-timer blogger, documented the aftermath. The incident became a textbook case in the dangers of Unicode normalization in tooling pipelines.
"I HAVE NO TOOLS BECAUSE I'VE DESTROYED MY TOOLS WITH MY TOOLS." — Raymond Chen, The Old New Thing (Microsoft)
The Backtick Tribunal has entered this into evidence as Exhibit A.
The UCO provides the following armaments to all character-safety operatives.
Type or paste a single character below. The ICCS will identify it immediately.
Paste text below. The cleaner will replace all curly quotes, acute accents, em/en dashes, and non-breaking spaces with their safe ASCII equivalents.
The Backtick Tribunal requires all operatives to pass this assessment. Can you identify which code snippet contains the dangerous characters?
A) print("hello")
B) print(“hello”)
A) ´ (keyboard shortcut on many EU keyboards) B) ` (top-left key on US keyboard)
A) {"name": "Bob"}
B) {“name”: “Bob”}
font-family: “Arial”, sans-serif;
The Security Council for Character Standards has approved the following countermeasures.
Gremlins Tracker — Highlights invisible and confusing Unicode characters in your code with red/yellow backgrounds. Essential for any developer.
Smart Quotes Normalizer — Automatically replaces curly quotes with straight quotes on paste. Set it and forget it.
ESLint — Will reject curly quotes in JavaScript strings by default.
Python 3 — Raises SyntaxError with the exact Unicode code point. One of the best error messages in any language.
yamllint — Catches non-ASCII characters in YAML files.
Add this to your theme's functions.php:
remove_filter('the_content',
'wptexturize');
remove_filter('the_title',
'wptexturize');
remove_filter('comment_text',
'wptexturize');
This disables WordPress's automatic smart quote conversion. The Backtick Tribunal considers this mandatory.
Navigate to:
System Settings
> Keyboard
> Text Replacements
> Uncheck
"Use smart quotes
and dashes"
Do this on every Mac you touch. Tell your colleagues. This is a public service announcement.
Run these substitutions on any text before using it as code:
“ → " (U+201C → U+0022) ” → " (U+201D → U+0022) ‘ → ' (U+2018 → U+0027) ’ → ' (U+2019 → U+0027) ´ → ` (U+00B4 → U+0060) — → -- (U+2014 → --) – → - (U+2013 → -) → (U+00A0 → U+0020)
PowerShell is the only programming language that treats smart quotes as equivalent to straight quotes. Microsoft made this decision because they knew their own products were the problem.
This is either the most pragmatic design decision in computing history, or an admission of guilt. The Backtick Tribunal has not yet reached a verdict.
| Character | Name | Unicode | Bytes (UTF-8) | Status |
|---|---|---|---|---|
| " | Quotation Mark | U+0022 | 1 (0x22) | SAFE |
| ' | Apostrophe | U+0027 | 1 (0x27) | SAFE |
| ` | Grave Accent (Backtick) | U+0060 | 1 (0x60) | SAFE |
| “ | Left Double Quotation Mark | U+201C | 3 (0xE2 0x80 0x9C) | DANGER |
| ” | Right Double Quotation Mark | U+201D | 3 (0xE2 0x80 0x9D) | DANGER |
| ‘ | Left Single Quotation Mark | U+2018 | 3 (0xE2 0x80 0x98) | DANGER |
| ’ | Right Single Quotation Mark | U+2019 | 3 (0xE2 0x80 0x99) | DANGER |
| ´ | Acute Accent | U+00B4 | 2 (0xC2 0xB4) | DANGER |
| Non-Breaking Space | U+00A0 | 2 (0xC2 0xA0) | DANGER |