The Norway problem: when YAML says no
A country code that becomes false, versions that lose their zeros, and the YAML type-guessing that has broken real deployments.
4 min read · Reviewed July 2026
Somewhere out there is a config file listing country codes: DE, FR, NO. And somewhere out there is a parser that read NO and stored false, because classic YAML helpfully interprets no, yes, on, and off as booleans. Norway becomes false. This is famous enough to have a name — the Norway problem — and it's the perfect specimen of YAML's central flaw: it guesses types from the way text looks.
The whole family of gotchas
Version numbers: 1.10 parses as the float 1.1 — your patch release just vanished. Git commit hashes that happen to be all digits with an e in the middle (like 123e45) parse as scientific notation. Time-looking values like 12:30 become sexagesimal numbers in some parsers. Octal surprises: a zip code 010101 might come back as a different number entirely. Every one of these has broken a real pipeline somewhere.
The newer YAML 1.2 spec fixed most of this — only true and false are booleans — but the most-used parsers in the wild spent a decade on 1.1 behavior, and mixed environments still bite. You don't control which parser reads your file.
The defense
One habit fixes it: quote any string that could look like something else. 'NO', '1.10', '12:30'. Quotes tell every parser, of every vintage, that this is a string, full stop. Our JSON-to-YAML converter above does this automatically for the dangerous cases — convert something with a version field and watch the quotes appear. That's not decoration; that's the converter having read this guide.