NV ToolkitFormat · Validate · Convert

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.

Input · yaml
base: &base
  timeout: 30
  retries: 3
services:
  billing: *base
  notifications: *base
Output · json
{
  "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.

Standard YAML parsers by language and the spec version each implements
LanguageLibraryYAML versionNotes
PythonPyYAML · ruamel.yaml1.1 · 1.2PyYAML is what most projects ship; ruamel.yaml adds 1.2 semantics and round-trips comments and key order.
JavaScript / TypeScriptyaml · js-yaml1.2 (1.1 selectable) · 1.2yaml is the engine behind this page; js-yaml is the older, equally common choice.
JavaSnakeYAML · SnakeYAML Engine1.1 · 1.2Spring Boot bundles SnakeYAML; Engine (JVM 11+) never instantiates JavaBeans from a document.
Gogo.yaml.in/yaml · goccy/go-yamlmostly 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.
Rustyaml-rust2 / saphyr · serde-saphyr1.2serde_yaml is archived; yaml-rust2 is in maintenance mode with saphyr as its successor, and serde-saphyr is the typed serde layer.
RubyPsych (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-cpp1.1 · 1.2libyaml is the C engine under PyYAML and Psych; yaml-cpp is the usual C++ choice.
.NETYamlDotNet1.1 and 1.2 (parsing)The de-facto C# library; emitter conformance is documented for 1.1.
PHPsymfony/yamllarge subsetConfiguration-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

Learn the format

Related guides

All guides →