YAML Type Coercion Auditor

Paste YAML. See every scalar that resolves to a different type, or a different value, depending on which parser reads the file.

The upgrade that rewrote your file modes

The famous YAML gotcha is NO becoming false. The expensive one is quieter. js-yaml changed integer resolution between major version 3 and major version 4, and neither version tells you.

Bumping that one dependency silently changed mode: 0644 from 420 to 644, changed 012 from 10 to 12, and flipped 0o644 from the string "0o644" to the number 420. Every other scalar in the file resolved identically, so nothing else in the diff hinted at it. Neither version raised an error.

The inverse direction hurts just as much: a file written for the newer rules, read by the older ones, turns 0o644 back into a plain string, and a chmod call gets a string where it expected an int.

Also worth knowing before you read the table below: "we moved to YAML 1.2" is not a safe summary. Measured, no widely used parser sits cleanly on either side of the 1.1 / 1.2 line. js-yaml 4 still resolves binary literals and still returns Date objects for bare dates, neither of which is YAML 1.2 core. PyYAML resolves on and yes as booleans but leaves y and n as strings, so it is not YAML 1.1 either. That is why this tool shows five named columns and not two.

Audit a document

Nothing is uploaded. All five resolvers run in this tab.
Samples

Reference: 35 scalars, measured

Every cell below was produced by running the real parsers on 2026-08-21: PyYAML 6.0.3, js-yaml 3.15.1, js-yaml 4.3.1, and eemeli/yaml 2.9.0 at version: '1.1' and version: '1.2'. Rows where all five agree are dimmed; in the rest, only the cells that disagree with the majority are marked. The table scrolls sideways.

Five findings worth the read

How this tool works

There is no YAML library on this page. Two layers do the work.

Reading the result