A junior developer on my team messaged me: "Your API works in Postman but not in my code."
I asked for the request payload. He sent me a screenshot. The JSON looked fine. Braces matched. Keys had quotes. Values looked normal.
I spent 45 minutes debugging this.
The Invisible Culprit
He had copied the JSON example from a Word document. Word, being Word, had helpfully converted every straight double-quote into a curly smart quote — the kind that angles inward toward the text.
// What he thought he was sending
{"message": "hello world"}
// What actually arrived at the parser
{‟message": ‟hello world"}
Smart quotes are Unicode characters U+201C and U+201D. To a JSON parser they are not quotes at all — they are just random Unicode that happens to look like quotes in a proportional font. The parser rejected the entire payload with a cryptic error about unexpected tokens, and I chased that error through auth middleware, CORS headers, and content-type negotiation before finally copy-pasting the raw payload into a hex viewer.
Why This Happens Constantly
Smart quotes are everywhere: Word, Google Docs, Notion, Slack messages, email clients. Every rich-text editor silently replaces straight quotes with curly ones. Developers copy text between these tools and their code dozens of times a day, and most of the time, the invisible substitution does not matter — until it ends up inside a JSON string.
This is not just a beginner mistake. I have been writing code for years and I still get burned by this. The bug is so sneaky because everything looks correct visually — your IDE, your terminal, your browser dev tools all render curly quotes identically to straight quotes at text sizes below 16px.
The Fix: Integrated Tooling
The real solution is not "be more careful" — that does not scale. The fix is tooling that catches these invisible characters before they reach your parser:
- A JSON formatter that highlights non-standard Unicode characters
- A validation step that rejects payloads with characters outside the expected ASCII range
- A workspace where you paste and format in one place without context-switching between editors
This is exactly the kind of invisible friction that Opennomos Json (https://www.opennomos.com/en/project/01KJ850Z7PNGXHXESBM68HE12Y) is designed to eliminate — a single-tab workspace for JSON, timestamp conversion, and Base64, with validation that catches these hidden gremlins before you waste an hour.
Lessons Learned
- Trust the hex dump, not your eyes. When a payload "looks fine," view the raw bytes.
- Copy-paste is the most dangerous operation in programming. Every transfer between tools risks invisible corruption.
- Smart quotes are not smart. They are an artifact of print typography that has no business in plaintext data formats.
Next time someone tells you their API works on Postman but not in code, check the quotes first. It might save you 45 minutes.
Part of the Nomos Build-in-Public series.
Top comments (0)