HomeGuides

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.

By Noble Erne, LLC · 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.

Published by Noble Erne, LLC. Enterprise systems consultant with a background in SAP implementation, software documentation, and instructional design. Builds the tools and writes the explainers on this site. Corrections to this guide go to the contact page and are reviewed before publication.

Related guides