YAML Tools
YAML Parser Online
See exactly what your tooling sees — full YAML 1.2 parsing with typed scalars, resolved anchors, and precise errors, shown as the JSON value it becomes.
In short
Parse YAML online with full 1.2 semantics and see the actual JSON value your application will load — resolved types, expanded anchors, or the exact error.
By NaveenKumar T · Updated
Learn: YAML Anchors, Aliases and Merge Keys Explained (With Real Config Examples)
- Full YAML 1.2 semantics
- Typed scalar resolution
- Anchors & aliases expanded
Runs entirely in your browser — nothing you paste or open here is uploaded, logged, or stored.How we handle data →
Example
YAML Parser: input and output
Two services sharing one anchored defaults block — the pattern YAML anchors exist for, and worth seeing resolved before it surprises you in a Helm values file.
base: &base
timeout: 30
retries: 3
services:
billing: *base
notifications: *base{
"base": {
"timeout": 30,
"retries": 3
},
"services": {
"billing": {
"timeout": 30,
"retries": 3
},
"notifications": {
"timeout": 30,
"retries": 3
}
}
}Both billing and notifications resolve to their own full copy of {"timeout": 30, "retries": 3} — the anchor and alias are gone entirely in the JSON output, because JSON has no concept of a shared reference; each alias becomes an independent, self-contained value.
Learn more
What a YAML parse involves
YAML parsing is layered: indentation defines structure, scalars resolve to types by pattern, anchors are registered and aliases expanded, and multiple documents may share one stream. That richness is why 'it looks right' isn't enough — this parser shows the post-resolution result as plain JSON, the structure and types your application will actually receive, rather than another YAML document that still hides the resolution behind its own syntax.
The tree view exposes resolution visually: an alias appears as its full expanded content, a block scalar as its final string, a bare 'yes' as the boolean it became. Surprises surface here instead of in production. Need the JSON as a downloadable file with more indentation options and a mapping-rules reference, rather than a quick inspection? The YAML to JSON converter is the production-conversion version of the same parse.
Parse errors and their real causes
'Tab characters must not be used in indentation' is self-explanatory once you can SEE the tab — the column number points at it. 'Implicit map keys need to be on a single line' usually means a missing colon-space. 'Unexpected scalar at node end' often means an indent level shifted mid-block. Each error's position turns whitespace archaeology into a direct fix.
YAML parser libraries by language
Half the people searching for a YAML parser want a library rather than a web page, so here is the standard choice per language. The column that matters is the specification version. Loaders from the YAML 1.1 era — PyYAML, SnakeYAML, libyaml and therefore Ruby's Psych — resolve bare yes, no, on, off and NO to booleans and read 010 as octal 8; loaders built on the YAML 1.2.2 specification and its Core schema treat those as strings and decimal. This page runs the yaml package for JavaScript with the 1.2 Core schema, so if production loads the same file with PyYAML or SnakeYAML, a value shown here as the string "NO" may still arrive there as false — quote it either way.
Two of the entries changed recently and are still widely mis-cited: gopkg.in/yaml.v3 was archived as unmaintained in April 2025 and continues as the YAML organisation's go.yaml.in/yaml fork, and Rust's serde_yaml was archived in March 2024 in favour of the saphyr family. For anything that parses untrusted input, prefer the safe entry points — yaml.safe_load in PyYAML, SnakeYAML Engine rather than classic SnakeYAML, YAML.safe_load in Ruby — because 1.1-era loaders can be told to instantiate arbitrary classes.
| Language | Library | YAML version | Notes |
|---|---|---|---|
| Python | PyYAML · ruamel.yaml | 1.1 · 1.2 | PyYAML is what most projects ship; ruamel.yaml adds 1.2 semantics and round-trips comments and key order. |
| JavaScript / TypeScript | yaml · js-yaml | 1.2 (1.1 selectable) · 1.2 | yaml is the engine behind this page; js-yaml is the older, equally common choice. |
| Java | SnakeYAML · SnakeYAML Engine | 1.1 · 1.2 | Spring Boot bundles SnakeYAML; Engine (JVM 11+) never instantiates JavaBeans from a document. |
| Go | go.yaml.in/yaml · goccy/go-yaml | mostly 1.2, some 1.1 behaviour · — | gopkg.in/yaml.v3 is archived; the YAML-org fork keeps v3 frozen for security fixes and develops v4. goccy/go-yaml is an independent rewrite. |
| Rust | yaml-rust2 / saphyr · serde-saphyr | 1.2 | serde_yaml is archived; yaml-rust2 is in maintenance mode with saphyr as its successor, and serde-saphyr is the typed serde layer. |
| Ruby | Psych (the built-in YAML module) | 1.1 (libyaml) | Use YAML.safe_load for anything untrusted; an experimental libfyaml backend targets 1.2. |
| C / C++ | libyaml · yaml-cpp | 1.1 · 1.2 | libyaml is the C engine under PyYAML and Psych; yaml-cpp is the usual C++ choice. |
| .NET | YamlDotNet | 1.1 and 1.2 (parsing) | The de-facto C# library; emitter conformance is documented for 1.1. |
| PHP | symfony/yaml | large subset | Configuration-oriented; no document directives or multi-document streams. |
Help
Frequently asked questions
Everything you need to know about the YAML Parser.
01How do I use the YAML Parser?
Paste your YAML and press Parse. The document parses with complete 1.2 semantics; the output pane shows the parsed value as JSON — not re-serialized YAML — the Tree view shows the same loaded structure, and any error reports its precise position.
02Why did my unquoted value parse as a different type?
YAML resolves bare scalars by pattern: true/false become booleans, 3.14 a float, 2026-06-03 may become a date in some loaders, and ~ becomes null. If a value must stay a string — version numbers, country code NO, leading-zero ids — quote it. The parser here shows you the resolved type before production does.
03Why does a parse error here point at a specific line, instead of just failing?
Because a parser has to build a complete structure before it can hand anything back, so the first ambiguity — a tab in the indentation, a colon-value with no space, an implicit map key spanning two lines — stops the whole document, not just the offending part. Reporting the exact line and column turns that all-or-nothing failure into a fix you can make in seconds, the same position information your own YAML library would need you to hunt for in a stack trace.
Keep working
Related tools
YAML Validator
YAML Tools
YAML Viewer
YAML Tools
YAML to JSON
Full YAML 1.2 parsing — anchors resolved, types preserved, errors pinpointed — straight into clean JSON.
JSON Parser
Run a real JSON parse in your browser — see exactly what your application will see, or exactly where it will fail.
YAML Formatter
YAML Tools
Docker Compose Validator
YAML Tools
Learn the format
Related guides
YAML Anchors, Aliases and Merge Keys Explained (With Real Config Examples)
How &anchor, *alias and the <<: merge key work in YAML, where docker-compose, GitLab CI and Helm use them, the override order, and the errors they cause.
7 min readTutorial · Data FormatsYAML Tutorial: Read and Write It Without Fear
Learn YAML properly: mappings, lists, multi-line strings, anchors — and the indentation and typing pitfalls that break Kubernetes and CI configs.
2 min readGuide · Data FormatsYAML Multi-line Strings: | vs > vs Quoted (Indentation Rules)
How YAML literal | and folded > block scalars differ, what -, + and a digit change, when to quote instead, and why a run: block loses its line breaks.
9 min read