Skip to content

Benchmarks

Speed, memory, spec-conformance, and bundle size for Lightning YAML against the other parsers this repo benchmarks itself against: js-yaml, yaml (eemeli), and the JSON baseline where a workload is JSON-shaped enough for it to compete. Use the “On this page” panel to jump between sections; each metric shows the latest run, the trend over time, and a full breakdown by workload. Every section below states its own measurement’s date, source commit, and (where the suite records one) environment — sections come from different published runs, so this page never shows one line for all of them.

Every figure on this page — and everywhere else on this site (the homepage, any “N× faster” figure) — is a single real measurement in the environment it’s labelled with. Nothing here is ever averaged or blended across environments: a browser’s engine and Node are different machines with different results, and combining them into one number would hide that. Where more than one environment has published results, use the picker below to see each engine’s own numbers; a ratio’s popover elsewhere on the site lists each engine’s own measured value the same way.

Right now, results come from node 24.21.0 (x64-linux), chromium 141.0.7390.37 (x64-linux), webkit 26.0 (x64-linux). As a new environment — a browser engine, a different Node version — starts publishing benchmark runs, it adds its own rows and its own picker option; it never changes the numbers already shown for an environment that was already publishing.

A few notes on the charts themselves:

  • Bar charts (latest run) scale each workload row to its own slowest parser, so compare bars within a row, not across rows. Speed bars are labelled with time relative to the fastest parser in that row (×); memory bars are labelled with the absolute peak RSS.
  • Trend charts (over time) render one document per published run, oldest to newest. Absolute nanoseconds drift with CI-runner noise, so the speed trends plot a machine-invariant ratio-to-fastest on a log axis; memory, conformance, and bundle size are stable, so they trend as absolute values. Hover any point for its date, value, and — where the run recorded one — the library version; a ringed point marks a version change.
  • Every chart is a static image — inline SVG rendered at build time, no client JavaScript.

These numbers track real runs, not a hand-captured snapshot: CI publishes each run to the orphan benchmark-data branch, and the deploy workflow overlays that history at build time — the bar charts render the newest published document per suite, the trend charts the full history. To reproduce them yourself, see running the benchmarks & tests.

The speed charts below (Parse speed, Stringify speed) were measured in more than one runtime — pick one; it applies to both sections:

Turning YAML text into JavaScript values — the hot path for most consumers.

Measured on AMD EPYC 9V45 96-Core Processor (~3.76 GHz) · node 24.21.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Measured in chromium 141.0.7390.37 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Measured in webkit 26.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Parse time by workload

Lower is better. Each workload is scaled to its own slowest parser; labels show time relative to the fastest parser in that row (×). Exact avg ns per parse() call is in the breakdown below.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Parse time by workload (relative to fastest, per row)Parse time by workload (relative to fastest, per row) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to time within a row; rows are not comparable to each other, and every bar is labelled with its time relative to the fastest parser in that row (×). Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, yaml (eemeli) 2.9.0. 5 workloads: small-records, medium-records, large-records, xlarge-records, yaml-rich-medium.1.0×2.3×8.7×103×small-records1.0×1.8×7.4×108×medium-records1.0×1.9×9.4×120×large-records1.0×2.1×10.0×107×xlarge-records1.0×3.0×35×yaml-rich-medium

Parse time by workload

Lower is better. Each workload is scaled to its own slowest parser; labels show time relative to the fastest parser in that row (×). Exact avg ns per parse() call is in the breakdown below.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Parse time by workload (relative to fastest, per row)Parse time by workload (relative to fastest, per row) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to time within a row; rows are not comparable to each other, and every bar is labelled with its time relative to the fastest parser in that row (×). Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, yaml (eemeli) 2.9.0. 4 workloads: small-records, medium-records, large-records, yaml-rich-medium.1.0×3.2×11×121×small-records1.0×2.9×10×104×medium-records1.0×2.6×9.7×100×large-records1.0×2.3×22×yaml-rich-medium

Parse time by workload

Lower is better. Each workload is scaled to its own slowest parser; labels show time relative to the fastest parser in that row (×). Exact avg ns per parse() call is in the breakdown below.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Parse time by workload (relative to fastest, per row)Parse time by workload (relative to fastest, per row) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to time within a row; rows are not comparable to each other, and every bar is labelled with its time relative to the fastest parser in that row (×). Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, yaml (eemeli) 2.9.0. 4 workloads: small-records, medium-records, large-records, yaml-rich-medium.1.0×2.9×11×115×small-records1.0×1.8×8.6×102×medium-records1.0×1.7×9.4×132×large-records1.0×3.6×35×yaml-rich-medium

Parse time vs fastest, run over run — large-records

Lower is better, log scale. Each parser's time as a multiple of the fastest in the same run (×) — machine-invariant. The fastest sits at 1× by construction; a rising Lightning YAML line would mean a regression.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Parse time vs fastest over time — large-recordsParse time vs fastest over time — large-records — lower is better. Trend across 68 benchmark runs, oldest to newest; latest values: JSON 1.0×, Lightning YAML 0.1.1 1.9×, js-yaml 5.4.3 9.4×, yaml (eemeli) 2.9.0 120×.1.0×3.0×10×30×100×2026-07-132026-07-212026-07-252026-10-162026-07-13 · 1.0×2026-07-15 · 1.0×2026-07-15 · 1.0×2026-07-16 · 1.0×2026-07-16 · 1.0×2026-07-16 · 1.0×2026-07-16 · 1.0×2026-07-18 · 1.0×2026-07-18 · 1.0×2026-07-18 · 1.0×2026-07-19 · 1.0×2026-07-19 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-24 · 1.0×2026-07-24 · 1.0×2026-07-25 · 1.0×2026-07-25 · 1.0×2026-07-28 · 1.0×2026-08-01 · 1.0×2026-08-10 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-09 · 1.0×2026-10-09 · 1.0×2026-10-11 · 1.0×2026-10-11 · 1.0×2026-10-12 · 1.0×2026-10-12 · 1.0×2026-10-13 · 1.0×2026-10-13 · 1.0×2026-10-14 · 1.0×2026-10-15 · 1.0×2026-10-15 · 1.0×2026-10-16 · 1.0×2026-07-13 · 2.2×2026-07-15 · 2.0×2026-07-15 · 1.9×2026-07-16 · 2.0×2026-07-16 · 1.8×2026-07-16 · 2.0×2026-07-16 · 1.7×2026-07-18 · 1.8×2026-07-18 · 2.0×2026-07-18 · 1.8×2026-07-19 · 1.8×2026-07-19 · 2.0×2026-07-20 · 2.1×2026-07-20 · 1.8×2026-07-20 · 2.1×2026-07-20 · 1.8×2026-07-20 · 2.1×2026-07-20 · 1.9×2026-07-20 · 1.8×2026-07-20 · 1.9×2026-07-20 · 1.8× · v0.1.12026-07-20 · 1.9× · v0.1.12026-07-21 · 1.7× · v0.1.12026-07-21 · 1.9× · v0.1.12026-07-21 · 1.9× · v0.1.12026-07-21 · 1.7× · v0.1.12026-07-21 · 1.7× · v0.1.12026-07-21 · 1.9× · v0.1.12026-07-22 · 1.7× · v0.1.12026-07-22 · 1.7× · v0.1.12026-07-22 · 1.9× · v0.1.12026-07-22 · 1.9× · v0.1.12026-07-22 · 1.9× · v0.1.12026-07-22 · 1.9× · v0.1.12026-07-22 · 1.6× · v0.1.12026-07-22 · 2.0× · v0.1.12026-07-22 · 1.7× · v0.1.12026-07-23 · 2.0× · v0.1.12026-07-23 · 1.6× · v0.1.12026-07-23 · 1.6× · v0.1.12026-07-23 · 1.9× · v0.1.12026-07-23 · 1.9× · v0.1.12026-07-23 · 1.9× · v0.1.12026-07-24 · 1.9× · v0.1.12026-07-24 · 1.7× · v0.1.12026-07-25 · 1.9× · v0.1.12026-07-25 · 1.8× · v0.1.12026-07-28 · 1.9× · v0.1.12026-08-01 · 1.7× · v0.1.12026-08-10 · 1.9× · v0.1.12026-10-08 · 1.9× · v0.1.12026-10-08 · 1.8× · v0.1.12026-10-08 · 1.8× · v0.1.12026-10-08 · 1.9× · v0.1.12026-10-08 · 1.9× · v0.1.12026-10-08 · 1.9× · v0.1.12026-10-09 · 1.6× · v0.1.12026-10-09 · 1.9× · v0.1.12026-10-11 · 1.8× · v0.1.12026-10-11 · 1.9× · v0.1.12026-10-12 · 1.9× · v0.1.12026-10-12 · 1.9× · v0.1.12026-10-13 · 1.9× · v0.1.12026-10-13 · 1.9× · v0.1.12026-10-14 · 1.9× · v0.1.12026-10-15 · 1.9× · v0.1.12026-10-15 · 1.9× · v0.1.12026-10-16 · 1.9× · v0.1.12026-07-13 · 12×2026-07-15 · 20×2026-07-15 · 20×2026-07-16 · 21×2026-07-16 · 19×2026-07-16 · 26×2026-07-16 · 19×2026-07-18 · 20×2026-07-18 · 21×2026-07-18 · 20×2026-07-19 · 21×2026-07-19 · 21×2026-07-20 · 20×2026-07-20 · 21×2026-07-20 · 21×2026-07-20 · 20×2026-07-20 · 22×2026-07-20 · 23×2026-07-20 · 19×2026-07-20 · 20×2026-07-20 · 21× · v5.2.12026-07-20 · 21× · v5.2.12026-07-21 · 19× · v5.2.12026-07-21 · 21× · v5.2.12026-07-21 · 20× · v5.2.12026-07-21 · 19× · v5.2.12026-07-21 · 19× · v5.2.12026-07-21 · 20× · v5.2.12026-07-22 · 19× · v5.2.12026-07-22 · 20× · v5.2.12026-07-22 · 8.8× · v5.2.12026-07-22 · 8.7× · v5.2.12026-07-22 · 8.8× · v5.2.12026-07-22 · 9.0× · v5.2.12026-07-22 · 8.0× · v5.2.12026-07-22 · 9.0× · v5.2.12026-07-22 · 8.0× · v5.2.12026-07-23 · 8.9× · v5.2.12026-07-23 · 7.9× · v5.2.12026-07-23 · 8.5× · v5.2.12026-07-23 · 9.4× · v5.2.12026-07-23 · 9.1× · v5.2.12026-07-23 · 9.4× · v5.2.12026-07-24 · 9.0× · v5.2.12026-07-24 · 8.1× · v5.2.12026-07-25 · 8.7× · v5.2.12026-07-25 · 8.8× · v5.2.12026-07-28 · 9.1× · v5.2.12026-08-01 · 8.3× · v5.2.12026-08-10 · 8.6× · v5.2.12026-10-08 · 8.7× · v5.2.12026-10-08 · 8.7× · v5.2.12026-10-08 · 8.4× · v5.2.12026-10-08 · 8.6× · v5.2.12026-10-08 · 9.0× · v5.2.12026-10-08 · 8.6× · v5.2.12026-10-09 · 7.8× · v5.2.12026-10-09 · 8.5× · v5.2.12026-10-11 · 8.5× · v5.2.12026-10-11 · 8.9× · 5.2.1 → 5.4.32026-10-12 · 8.8× · v5.4.32026-10-12 · 8.9× · v5.4.32026-10-13 · 10× · v5.4.32026-10-13 · 8.9× · v5.4.32026-10-14 · 8.8× · v5.4.32026-10-15 · 8.7× · v5.4.32026-10-15 · 8.8× · v5.4.32026-10-16 · 9.4× · v5.4.32026-07-13 · 113×2026-07-15 · 98×2026-07-15 · 100×2026-07-16 · 105×2026-07-16 · 100×2026-07-16 · 97×2026-07-16 · 91×2026-07-18 · 107×2026-07-18 · 107×2026-07-18 · 104×2026-07-19 · 96×2026-07-19 · 101×2026-07-20 · 107×2026-07-20 · 107×2026-07-20 · 106×2026-07-20 · 100×2026-07-20 · 106×2026-07-20 · 93×2026-07-20 · 94×2026-07-20 · 91×2026-07-20 · 92× · v2.9.02026-07-20 · 92× · v2.9.02026-07-21 · 85× · v2.9.02026-07-21 · 91× · v2.9.02026-07-21 · 92× · v2.9.02026-07-21 · 92× · v2.9.02026-07-21 · 86× · v2.9.02026-07-21 · 92× · v2.9.02026-07-22 · 90× · v2.9.02026-07-22 · 85× · v2.9.02026-07-22 · 106× · v2.9.02026-07-22 · 107× · v2.9.02026-07-22 · 107× · v2.9.02026-07-22 · 105× · v2.9.02026-07-22 · 103× · v2.9.02026-07-22 · 110× · v2.9.02026-07-22 · 105× · v2.9.02026-07-23 · 108× · v2.9.02026-07-23 · 101× · v2.9.02026-07-23 · 112× · v2.9.02026-07-23 · 105× · v2.9.02026-07-23 · 104× · v2.9.02026-07-23 · 96× · v2.9.02026-07-24 · 104× · v2.9.02026-07-24 · 103× · v2.9.02026-07-25 · 105× · v2.9.02026-07-25 · 103× · v2.9.02026-07-28 · 109× · v2.9.02026-08-01 · 105× · v2.9.02026-08-10 · 106× · v2.9.02026-10-08 · 107× · v2.9.02026-10-08 · 115× · v2.9.02026-10-08 · 102× · v2.9.02026-10-08 · 102× · v2.9.02026-10-08 · 107× · v2.9.02026-10-08 · 107× · v2.9.02026-10-09 · 99× · v2.9.02026-10-09 · 106× · v2.9.02026-10-11 · 102× · v2.9.02026-10-11 · 103× · v2.9.02026-10-12 · 106× · v2.9.02026-10-12 · 105× · v2.9.02026-10-13 · 95× · v2.9.02026-10-13 · 109× · v2.9.02026-10-14 · 106× · v2.9.02026-10-15 · 103× · v2.9.02026-10-15 · 106× · v2.9.02026-10-16 · 120× · v2.9.0

Parse time vs fastest, run over run — large-records

Lower is better, log scale. Each parser's time as a multiple of the fastest in the same run (×) — machine-invariant. The fastest sits at 1× by construction; a rising Lightning YAML line would mean a regression.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Parse time vs fastest over time — large-recordsParse time vs fastest over time — large-records — lower is better. Trend across 31 benchmark runs, oldest to newest; latest values: JSON 1.0×, Lightning YAML 0.1.1 2.6×, js-yaml 5.4.3 9.7×, yaml (eemeli) 2.9.0 100×.1.0×3.0×10×30×100×2026-07-232026-07-282026-10-092026-10-162026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-24 · 1.0×2026-07-24 · 1.0×2026-07-25 · 1.0×2026-07-25 · 1.0×2026-07-28 · 1.0×2026-08-01 · 1.0×2026-08-10 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-09 · 1.0×2026-10-09 · 1.0×2026-10-11 · 1.0×2026-10-11 · 1.0×2026-10-12 · 1.0×2026-10-12 · 1.0×2026-10-13 · 1.0×2026-10-13 · 1.0×2026-10-14 · 1.0×2026-10-15 · 1.0×2026-10-15 · 1.0×2026-10-16 · 1.0×2026-07-23 · 2.9× · v0.1.12026-07-23 · 2.6× · v0.1.12026-07-23 · 2.8× · v0.1.12026-07-23 · 2.9× · v0.1.12026-07-23 · 2.9× · v0.1.12026-07-23 · 2.6× · v0.1.12026-07-24 · 2.8× · v0.1.12026-07-24 · 2.8× · v0.1.12026-07-25 · 2.8× · v0.1.12026-07-25 · 3.0× · v0.1.12026-07-28 · 2.9× · v0.1.12026-08-01 · 2.7× · v0.1.12026-08-10 · 2.9× · v0.1.12026-10-08 · 2.9× · v0.1.12026-10-08 · 2.8× · v0.1.12026-10-08 · 2.9× · v0.1.12026-10-08 · 2.9× · v0.1.12026-10-08 · 2.9× · v0.1.12026-10-08 · 3.0× · v0.1.12026-10-09 · 2.8× · v0.1.12026-10-09 · 3.0× · v0.1.12026-10-11 · 2.9× · v0.1.12026-10-11 · 2.7× · v0.1.12026-10-12 · 3.0× · v0.1.12026-10-12 · 3.0× · v0.1.12026-10-13 · 2.8× · v0.1.12026-10-13 · 2.9× · v0.1.12026-10-14 · 3.0× · v0.1.12026-10-15 · 2.9× · v0.1.12026-10-15 · 2.8× · v0.1.12026-10-16 · 2.6× · v0.1.12026-07-23 · 10× · v5.2.12026-07-23 · 11× · v5.2.12026-07-23 · 10× · v5.2.12026-07-23 · 11× · v5.2.12026-07-23 · 10.0× · v5.2.12026-07-23 · 10× · v5.2.12026-07-24 · 9.5× · v5.2.12026-07-24 · 10× · v5.2.12026-07-25 · 11× · v5.2.12026-07-25 · 11× · v5.2.12026-07-28 · 11× · v5.2.12026-08-01 · 11× · v5.2.12026-08-10 · 10× · v5.2.12026-10-08 · 10× · v5.2.12026-10-08 · 10× · v5.2.12026-10-08 · 10× · v5.2.12026-10-08 · 11× · v5.2.12026-10-08 · 11× · v5.2.12026-10-08 · 11× · v5.2.12026-10-09 · 10× · v5.2.12026-10-09 · 10× · v5.2.12026-10-11 · 10× · v5.2.12026-10-11 · 10× · 5.2.1 → 5.4.32026-10-12 · 10× · v5.4.32026-10-12 · 11× · v5.4.32026-10-13 · 12× · v5.4.32026-10-13 · 10× · v5.4.32026-10-14 · 10× · v5.4.32026-10-15 · 10.0× · v5.4.32026-10-15 · 11× · v5.4.32026-10-16 · 9.7× · v5.4.32026-07-23 · 93× · v2.9.02026-07-23 · 94× · v2.9.02026-07-23 · 98× · v2.9.02026-07-23 · 88× · v2.9.02026-07-23 · 88× · v2.9.02026-07-23 · 69× · v2.9.02026-07-24 · 91× · v2.9.02026-07-24 · 93× · v2.9.02026-07-25 · 91× · v2.9.02026-07-25 · 93× · v2.9.02026-07-28 · 94× · v2.9.02026-08-01 · 99× · v2.9.02026-08-10 · 92× · v2.9.02026-10-08 · 94× · v2.9.02026-10-08 · 104× · v2.9.02026-10-08 · 89× · v2.9.02026-10-08 · 89× · v2.9.02026-10-08 · 93× · v2.9.02026-10-08 · 95× · v2.9.02026-10-09 · 99× · v2.9.02026-10-09 · 96× · v2.9.02026-10-11 · 91× · v2.9.02026-10-11 · 87× · v2.9.02026-10-12 · 93× · v2.9.02026-10-12 · 93× · v2.9.02026-10-13 · 84× · v2.9.02026-10-13 · 94× · v2.9.02026-10-14 · 95× · v2.9.02026-10-15 · 96× · v2.9.02026-10-15 · 91× · v2.9.02026-10-16 · 100× · v2.9.0

Parse time vs fastest, run over run — large-records

Lower is better, log scale. Each parser's time as a multiple of the fastest in the same run (×) — machine-invariant. The fastest sits at 1× by construction; a rising Lightning YAML line would mean a regression.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Parse time vs fastest over time — large-recordsParse time vs fastest over time — large-records — lower is better. Trend across 31 benchmark runs, oldest to newest; latest values: JSON 1.0×, Lightning YAML 0.1.1 1.7×, js-yaml 5.4.3 9.4×, yaml (eemeli) 2.9.0 132×.1.0×3.0×10×30×100×2026-07-232026-07-282026-10-092026-10-162026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-24 · 1.0×2026-07-24 · 1.0×2026-07-25 · 1.0×2026-07-25 · 1.0×2026-07-28 · 1.0×2026-08-01 · 1.0×2026-08-10 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-09 · 1.0×2026-10-09 · 1.0×2026-10-11 · 1.0×2026-10-11 · 1.0×2026-10-12 · 1.0×2026-10-12 · 1.0×2026-10-13 · 1.0×2026-10-13 · 1.0×2026-10-14 · 1.0×2026-10-15 · 1.0×2026-10-15 · 1.0×2026-10-16 · 1.0×2026-07-23 · 2.2× · v0.1.12026-07-23 · 2.0× · v0.1.12026-07-23 · 2.2× · v0.1.12026-07-23 · 2.0× · v0.1.12026-07-23 · 2.2× · v0.1.12026-07-23 · 2.1× · v0.1.12026-07-24 · 2.2× · v0.1.12026-07-24 · 2.0× · v0.1.12026-07-25 · 2.2× · v0.1.12026-07-25 · 1.9× · v0.1.12026-07-28 · 2.2× · v0.1.12026-08-01 · 2.1× · v0.1.12026-08-10 · 2.2× · v0.1.12026-10-08 · 1.8× · v0.1.12026-10-08 · 1.9× · v0.1.12026-10-08 · 2.2× · v0.1.12026-10-08 · 2.3× · v0.1.12026-10-08 · 2.1× · v0.1.12026-10-08 · 2.2× · v0.1.12026-10-09 · 2.2× · v0.1.12026-10-09 · 1.8× · v0.1.12026-10-11 · 2.2× · v0.1.12026-10-11 · 2.1× · v0.1.12026-10-12 · 2.1× · v0.1.12026-10-12 · 2.1× · v0.1.12026-10-13 · 2.1× · v0.1.12026-10-13 · 2.2× · v0.1.12026-10-14 · 2.2× · v0.1.12026-10-15 · 2.2× · v0.1.12026-10-15 · 2.1× · v0.1.12026-10-16 · 1.7× · v0.1.12026-07-23 · 9.9× · v5.2.12026-07-23 · 9.7× · v5.2.12026-07-23 · 10.0× · v5.2.12026-07-23 · 9.0× · v5.2.12026-07-23 · 9.3× · v5.2.12026-07-23 · 8.9× · v5.2.12026-07-24 · 10× · v5.2.12026-07-24 · 9.7× · v5.2.12026-07-25 · 9.8× · v5.2.12026-07-25 · 8.9× · v5.2.12026-07-28 · 9.7× · v5.2.12026-08-01 · 9.8× · v5.2.12026-08-10 · 9.3× · v5.2.12026-10-08 · 9.7× · v5.2.12026-10-08 · 8.8× · v5.2.12026-10-08 · 9.3× · v5.2.12026-10-08 · 9.9× · v5.2.12026-10-08 · 9.9× · v5.2.12026-10-08 · 10× · v5.2.12026-10-09 · 9.7× · v5.2.12026-10-09 · 9.9× · v5.2.12026-10-11 · 9.7× · v5.2.12026-10-11 · 9.6× · 5.2.1 → 5.4.32026-10-12 · 10× · v5.4.32026-10-12 · 10× · v5.4.32026-10-13 · 8.9× · v5.4.32026-10-13 · 10× · v5.4.32026-10-14 · 10× · v5.4.32026-10-15 · 10× · v5.4.32026-10-15 · 10× · v5.4.32026-10-16 · 9.4× · v5.4.32026-07-23 · 119× · v2.9.02026-07-23 · 120× · v2.9.02026-07-23 · 140× · v2.9.02026-07-23 · 106× · v2.9.02026-07-23 · 108× · v2.9.02026-07-23 · 107× · v2.9.02026-07-24 · 113× · v2.9.02026-07-24 · 123× · v2.9.02026-07-25 · 116× · v2.9.02026-07-25 · 107× · v2.9.02026-07-28 · 115× · v2.9.02026-08-01 · 130× · v2.9.02026-08-10 · 107× · v2.9.02026-10-08 · 118× · v2.9.02026-10-08 · 131× · v2.9.02026-10-08 · 106× · v2.9.02026-10-08 · 112× · v2.9.02026-10-08 · 115× · v2.9.02026-10-08 · 120× · v2.9.02026-10-09 · 133× · v2.9.02026-10-09 · 118× · v2.9.02026-10-11 · 112× · v2.9.02026-10-11 · 112× · v2.9.02026-10-12 · 115× · v2.9.02026-10-12 · 114× · v2.9.02026-10-13 · 102× · v2.9.02026-10-13 · 114× · v2.9.02026-10-14 · 109× · v2.9.02026-10-15 · 117× · v2.9.02026-10-15 · 112× · v2.9.02026-10-16 · 132× · v2.9.0

Full breakdown — every workload, avg ns per parse() call (— where a library can’t read that workload):

WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records2.76 µs6.34 µs24.0 µs285 µs
medium-records321 µs584 µs2.38 ms34.7 ms
large-records3.62 ms6.74 ms34.2 ms434 ms
xlarge-records37.1 ms79.1 ms370 ms3.98 s
medium-nested637 µs1.07 ms4.26 ms60.5 ms
large-nested4.68 ms7.74 ms35.2 ms438 ms
Plain block YAML
yaml-plain-small-records—7.69 µs25.3 µs328 µs
yaml-plain-medium-records—886 µs2.88 ms45.8 ms
yaml-plain-large-records—8.96 ms35.9 ms481 ms
yaml-plain-medium-nested—470 µs1.39 ms17.7 ms
Rich YAML (anchors + !!binary)
yaml-rich-small—12.8 µs38.5 µs438 µs
yaml-rich-medium—954 µs2.83 ms33.4 ms
yaml-rich-large—9.16 ms29.8 ms471 ms
WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records2.00 µs6.43 µs22.3 µs242 µs
medium-records215 µs625 µs2.16 ms22.4 ms
large-records2.71 ms7.07 ms26.3 ms271 ms
medium-nested441 µs1.06 ms3.57 ms39.4 ms
large-nested3.49 ms7.99 ms29.6 ms273 ms
Plain block YAML
yaml-plain-small-records—9.06 µs24.4 µs215 µs
yaml-plain-medium-records—1.05 ms2.61 ms33.5 ms
yaml-plain-large-records—10.6 ms31.9 ms324 ms
yaml-plain-medium-nested—550 µs1.16 ms12.7 ms
Rich YAML (anchors + !!binary)
yaml-rich-small—15.6 µs33.3 µs300 µs
yaml-rich-medium—1.18 ms2.66 ms26.3 ms
yaml-rich-large—10.6 ms29.5 ms351 ms
WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records1.91 µs5.53 µs21.9 µs219 µs
medium-records250 µs459 µs2.14 ms25.6 ms
large-records2.86 ms4.87 ms27.0 ms376 ms
medium-nested344 µs916 µs3.77 ms39.2 ms
large-nested2.56 ms6.04 ms27.4 ms378 ms
Plain block YAML
yaml-plain-small-records—6.58 µs24.5 µs237 µs
yaml-plain-medium-records—734 µs3.06 ms32.4 ms
yaml-plain-large-records—7.31 ms33.1 ms428 ms
yaml-plain-medium-nested—387 µs1.25 ms12.4 ms
Rich YAML (anchors + !!binary)
yaml-rich-small—11.0 µs36.7 µs351 µs
yaml-rich-medium—818 µs2.97 ms28.9 ms
yaml-rich-large—7.95 ms30.4 ms368 ms

Measured on AMD EPYC 9V45 96-Core Processor (unknown) · node 24.21.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Peak memory by workload (parse)

Lower is better. Whole-process peak resident set (process.resourceUsage().maxRSS) in isolated child processes, fixed at 25 iterations. Each workload is scaled to its own heaviest parser.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Peak memory by workload (parse, resident set size)Peak memory by workload (parse, resident set size) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to memory within a row; rows are not comparable to each other, and every bar is labelled with its exact value. Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, yaml (eemeli) 2.9.0. 5 workloads: small-records, medium-records, large-records, xlarge-records, yaml-rich-medium.97.1 MB79.5 MB77.9 MB83.4 MBsmall-records79.2 MB83.6 MB99.2 MB290 MBmedium-records101 MB145 MB384 MB654 MBlarge-records390 MB568 MB1149 MB2706 MBxlarge-records85.8 MB96.9 MB258 MByaml-rich-medium

Peak memory, run over run — xlarge-records

Lower is better. Absolute peak resident set size (MB) — peak RSS is the stable memory figure, so unlike speed it is shown absolute. One document per published run, oldest to newest.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Peak memory over time — xlarge-recordsPeak memory over time — xlarge-records — lower is better. Trend across 68 benchmark runs, oldest to newest; latest values: JSON 390 MB, Lightning YAML 0.1.1 568 MB, js-yaml 5.4.3 1149 MB, yaml (eemeli) 2.9.0 2706 MB.0.00 MB1250 MB2500 MB3750 MB5000 MB2026-07-132026-07-212026-07-252026-10-162026-07-13 · 284 MB2026-07-15 · 272 MB2026-07-15 · 279 MB2026-07-16 · 270 MB2026-07-16 · 268 MB2026-07-16 · 271 MB2026-07-16 · 277 MB2026-07-18 · 272 MB2026-07-18 · 274 MB2026-07-18 · 271 MB2026-07-19 · 275 MB2026-07-19 · 271 MB2026-07-20 · 267 MB2026-07-20 · 270 MB2026-07-20 · 272 MB2026-07-20 · 275 MB2026-07-20 · 270 MB2026-07-20 · 271 MB2026-07-20 · 275 MB2026-07-20 · 273 MB2026-07-20 · 271 MB2026-07-20 · 269 MB2026-07-21 · 265 MB2026-07-21 · 274 MB2026-07-21 · 270 MB2026-07-21 · 270 MB2026-07-21 · 270 MB2026-07-21 · 271 MB2026-07-22 · 268 MB2026-07-22 · 273 MB2026-07-22 · 388 MB2026-07-22 · 389 MB2026-07-22 · 388 MB2026-07-22 · 390 MB2026-07-22 · 389 MB2026-07-22 · 388 MB2026-07-22 · 388 MB2026-07-23 · 389 MB2026-07-23 · 390 MB2026-07-23 · 388 MB2026-07-23 · 389 MB2026-07-23 · 389 MB2026-07-23 · 389 MB2026-07-24 · 390 MB2026-07-24 · 389 MB2026-07-25 · 389 MB2026-07-25 · 389 MB2026-07-28 · 390 MB2026-08-01 · 389 MB2026-08-10 · 389 MB2026-10-08 · 390 MB2026-10-08 · 391 MB2026-10-08 · 390 MB2026-10-08 · 390 MB2026-10-08 · 390 MB2026-10-08 · 389 MB2026-10-09 · 390 MB2026-10-09 · 390 MB2026-10-11 · 389 MB2026-10-11 · 390 MB2026-10-12 · 390 MB2026-10-12 · 390 MB2026-10-13 · 390 MB2026-10-13 · 391 MB2026-10-14 · 390 MB2026-10-15 · 391 MB2026-10-15 · 390 MB2026-10-16 · 390 MB2026-07-13 · 369 MB2026-07-15 · 389 MB2026-07-15 · 394 MB2026-07-16 · 389 MB2026-07-16 · 388 MB2026-07-16 · 415 MB2026-07-16 · 385 MB2026-07-18 · 387 MB2026-07-18 · 386 MB2026-07-18 · 383 MB2026-07-19 · 387 MB2026-07-19 · 412 MB2026-07-20 · 419 MB2026-07-20 · 418 MB2026-07-20 · 384 MB2026-07-20 · 387 MB2026-07-20 · 351 MB2026-07-20 · 412 MB2026-07-20 · 385 MB2026-07-20 · 389 MB2026-07-20 · 381 MB · v0.1.12026-07-20 · 384 MB · v0.1.12026-07-21 · 384 MB · v0.1.12026-07-21 · 386 MB · v0.1.12026-07-21 · 389 MB · v0.1.12026-07-21 · 383 MB · v0.1.12026-07-21 · 383 MB · v0.1.12026-07-21 · 386 MB · v0.1.12026-07-22 · 388 MB · v0.1.12026-07-22 · 387 MB · v0.1.12026-07-22 · 535 MB · v0.1.12026-07-22 · 535 MB · v0.1.12026-07-22 · 531 MB · v0.1.12026-07-22 · 531 MB · v0.1.12026-07-22 · 534 MB · v0.1.12026-07-22 · 532 MB · v0.1.12026-07-22 · 537 MB · v0.1.12026-07-23 · 536 MB · v0.1.12026-07-23 · 566 MB · v0.1.12026-07-23 · 529 MB · v0.1.12026-07-23 · 535 MB · v0.1.12026-07-23 · 536 MB · v0.1.12026-07-23 · 536 MB · v0.1.12026-07-24 · 535 MB · v0.1.12026-07-24 · 531 MB · v0.1.12026-07-25 · 568 MB · v0.1.12026-07-25 · 532 MB · v0.1.12026-07-28 · 533 MB · v0.1.12026-08-01 · 531 MB · v0.1.12026-08-10 · 535 MB · v0.1.12026-10-08 · 566 MB · v0.1.12026-10-08 · 566 MB · v0.1.12026-10-08 · 567 MB · v0.1.12026-10-08 · 533 MB · v0.1.12026-10-08 · 567 MB · v0.1.12026-10-08 · 532 MB · v0.1.12026-10-09 · 527 MB · v0.1.12026-10-09 · 566 MB · v0.1.12026-10-11 · 532 MB · v0.1.12026-10-11 · 568 MB · v0.1.12026-10-12 · 567 MB · v0.1.12026-10-12 · 500 MB · v0.1.12026-10-13 · 568 MB · v0.1.12026-10-13 · 567 MB · v0.1.12026-10-14 · 533 MB · v0.1.12026-10-15 · 568 MB · v0.1.12026-10-15 · 567 MB · v0.1.12026-10-16 · 568 MB · v0.1.12026-07-13 · 975 MB2026-07-15 · 970 MB2026-07-15 · 974 MB2026-07-16 · 976 MB2026-07-16 · 973 MB2026-07-16 · 934 MB2026-07-16 · 964 MB2026-07-18 · 835 MB2026-07-18 · 976 MB2026-07-18 · 977 MB2026-07-19 · 958 MB2026-07-19 · 1030 MB2026-07-20 · 977 MB2026-07-20 · 838 MB2026-07-20 · 990 MB2026-07-20 · 1036 MB2026-07-20 · 1019 MB2026-07-20 · 1008 MB2026-07-20 · 881 MB2026-07-20 · 976 MB2026-07-20 · 960 MB · v5.2.12026-07-20 · 971 MB · v5.2.12026-07-21 · 1036 MB · v5.2.12026-07-21 · 970 MB · v5.2.12026-07-21 · 938 MB · v5.2.12026-07-21 · 1017 MB · v5.2.12026-07-21 · 1017 MB · v5.2.12026-07-21 · 988 MB · v5.2.12026-07-22 · 1032 MB · v5.2.12026-07-22 · 1043 MB · v5.2.12026-07-22 · 949 MB · v5.2.12026-07-22 · 1106 MB · v5.2.12026-07-22 · 1168 MB · v5.2.12026-07-22 · 1161 MB · v5.2.12026-07-22 · 1120 MB · v5.2.12026-07-22 · 1167 MB · v5.2.12026-07-22 · 1150 MB · v5.2.12026-07-23 · 1138 MB · v5.2.12026-07-23 · 1125 MB · v5.2.12026-07-23 · 1165 MB · v5.2.12026-07-23 · 1124 MB · v5.2.12026-07-23 · 1119 MB · v5.2.12026-07-23 · 1136 MB · v5.2.12026-07-24 · 1115 MB · v5.2.12026-07-24 · 1121 MB · v5.2.12026-07-25 · 1084 MB · v5.2.12026-07-25 · 1137 MB · v5.2.12026-07-28 · 1131 MB · v5.2.12026-08-01 · 1095 MB · v5.2.12026-08-10 · 1106 MB · v5.2.12026-10-08 · 1116 MB · v5.2.12026-10-08 · 1090 MB · v5.2.12026-10-08 · 1126 MB · v5.2.12026-10-08 · 1110 MB · v5.2.12026-10-08 · 1108 MB · v5.2.12026-10-08 · 1090 MB · v5.2.12026-10-09 · 1144 MB · v5.2.12026-10-09 · 1085 MB · v5.2.12026-10-11 · 1083 MB · v5.2.12026-10-11 · 1114 MB · 5.2.1 → 5.4.32026-10-12 · 986 MB · v5.4.32026-10-12 · 1148 MB · v5.4.32026-10-13 · 1118 MB · v5.4.32026-10-13 · 1124 MB · v5.4.32026-10-14 · 1197 MB · v5.4.32026-10-15 · 1115 MB · v5.4.32026-10-15 · 1212 MB · v5.4.32026-10-16 · 1149 MB · v5.4.32026-07-13 · 2744 MB2026-07-15 · 1410 MB2026-07-15 · 1415 MB2026-07-16 · 1415 MB2026-07-16 · 1411 MB2026-07-16 · 1406 MB2026-07-16 · 1409 MB2026-07-18 · 1414 MB2026-07-18 · 1411 MB2026-07-18 · 1410 MB2026-07-19 · 1411 MB2026-07-19 · 1407 MB2026-07-20 · 1411 MB2026-07-20 · 1412 MB2026-07-20 · 1414 MB2026-07-20 · 1410 MB2026-07-20 · 1409 MB2026-07-20 · 1409 MB2026-07-20 · 2603 MB2026-07-20 · 2596 MB2026-07-20 · 2601 MB · v2.9.02026-07-20 · 2600 MB · v2.9.02026-07-21 · 2602 MB · v2.9.02026-07-21 · 2604 MB · v2.9.02026-07-21 · 2548 MB · v2.9.02026-07-21 · 2591 MB · v2.9.02026-07-21 · 2549 MB · v2.9.02026-07-21 · 2603 MB · v2.9.02026-07-22 · 2572 MB · v2.9.02026-07-22 · 2547 MB · v2.9.02026-07-22 · 2703 MB · v2.9.02026-07-22 · 2644 MB · v2.9.02026-07-22 · 2646 MB · v2.9.02026-07-22 · 2703 MB · v2.9.02026-07-22 · 2647 MB · v2.9.02026-07-22 · 2665 MB · v2.9.02026-07-22 · 2700 MB · v2.9.02026-07-23 · 2640 MB · v2.9.02026-07-23 · 2658 MB · v2.9.02026-07-23 · 2675 MB · v2.9.02026-07-23 · 2699 MB · v2.9.02026-07-23 · 2645 MB · v2.9.02026-07-23 · 2697 MB · v2.9.02026-07-24 · 2647 MB · v2.9.02026-07-24 · 2703 MB · v2.9.02026-07-25 · 2708 MB · v2.9.02026-07-25 · 2707 MB · v2.9.02026-07-28 · 2703 MB · v2.9.02026-08-01 · 2704 MB · v2.9.02026-08-10 · 2676 MB · v2.9.02026-10-08 · 2641 MB · v2.9.02026-10-08 · 2686 MB · v2.9.02026-10-08 · 2647 MB · v2.9.02026-10-08 · 2699 MB · v2.9.02026-10-08 · 2698 MB · v2.9.02026-10-08 · 2645 MB · v2.9.02026-10-09 · 2700 MB · v2.9.02026-10-09 · 2665 MB · v2.9.02026-10-11 · 2646 MB · v2.9.02026-10-11 · 2697 MB · v2.9.02026-10-12 · 2645 MB · v2.9.02026-10-12 · 2640 MB · v2.9.02026-10-13 · 2711 MB · v2.9.02026-10-13 · 2711 MB · v2.9.02026-10-14 · 2706 MB · v2.9.02026-10-15 · 2702 MB · v2.9.02026-10-15 · 2702 MB · v2.9.02026-10-16 · 2706 MB · v2.9.0

Full breakdown — every workload, peak RSS (MB):

WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records97.1 MB79.5 MB77.9 MB83.4 MB
medium-records79.2 MB83.6 MB99.2 MB290 MB
large-records101 MB145 MB384 MB654 MB
xlarge-records390 MB568 MB1149 MB2706 MB
medium-nested80.1 MB82.4 MB134 MB318 MB
large-nested102 MB115 MB362 MB646 MB
Plain block YAML
yaml-plain-small-records—79.2 MB79.6 MB81.6 MB
yaml-plain-medium-records—83.4 MB91.5 MB291 MB
yaml-plain-large-records—126 MB356 MB542 MB
yaml-plain-medium-nested—83.1 MB91.2 MB162 MB
Rich YAML (anchors + !!binary)
yaml-rich-small—80.0 MB79.7 MB82.8 MB
yaml-rich-medium—85.8 MB96.9 MB258 MB
yaml-rich-large—115 MB312 MB513 MB

The chart above measures Node; a browser page can’t read its own process’s memory the same way, so this is a separate, ratio-only measurement taken inside real browser engines — always relative to Lightning YAML (1.0×), never absolute megabytes. Two methods that ask different questions, so they are not comparable to each other or to the Node figures above:

  • Chrome’s engine (Chromium) — how much of the page’s own JS heap the parsed results still hold, measured in-page and garbage-collected before each reading. This is the narrower question: it counts what the result retains, and is blind to memory the parse allocated and handed straight back.
  • Safari’s engine (WebKit) — the operating system’s peak memory reading for the browser’s page process across the same parse-and-keep step. Broader, and noisier: it does catch memory spent during the parse, but also engine overhead that has nothing to do with the parser.

Read the Chromium table below expecting a tie on the bigger files, because that is what the narrower question is bound to answer: past a certain size the bytes still held are the parsed values themselves, and all three parsers build the same values from the same document. Where these libraries genuinely differ is the memory spent during the parse — the Node chart above.

Chrome's engine · memory retained by the parsed result

Measured in chromium 141.0.7390.37 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

WorkloadLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
Plain block YAML
yaml-plain-small-records1.0×1.2×1.6×
yaml-plain-medium-records1.0×1.0×1.0×
yaml-plain-large-records1.0×1.0×1.0×
Rich YAML (anchors + !!binary)
yaml-rich-small1.0×0.9×1.7×
yaml-rich-medium1.0×1.0×1.0×
yaml-rich-large1.0×1.0×1.0×

Safari's engine (WebKit) · peak memory of the page process

Measured in webkit 26.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

WorkloadLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
Plain block YAML
yaml-plain-small-records1.0×1.3×10×
yaml-plain-medium-records1.0×2.2×3.1×
yaml-plain-large-records1.0×2.9×3.7×
Rich YAML (anchors + !!binary)
yaml-rich-small1.0×0.9×3.8×
yaml-rich-medium1.0×1.4×2.6×
yaml-rich-large1.0×2.0×3.2×

Serializing JavaScript values back to YAML text.

Measured on AMD EPYC 9V45 96-Core Processor (~3.76 GHz) · node 24.21.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Measured in chromium 141.0.7390.37 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Measured in webkit 26.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Stringify time by workload

Lower is better. Each workload is scaled to its own slowest dumper; labels show time relative to the fastest in that row (×). Exact avg ns per stringify() call is in the breakdown below.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • js-yaml (tuned) 5.4.3
  • yaml (eemeli) 2.9.0
Stringify time by workload (relative to fastest, per row)Stringify time by workload (relative to fastest, per row) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to time within a row; rows are not comparable to each other, and every bar is labelled with its time relative to the fastest parser in that row (×). Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, js-yaml (tuned) 5.4.3, yaml (eemeli) 2.9.0. 5 workloads: small-records, medium-records, large-records, xlarge-records, yaml-rich-medium.1.0×3.1×34×26×82×small-records1.0×2.9×30×25×73×medium-records1.0×3.6×33×28×70×large-records1.0×6.1×36×30×76×xlarge-records1.0×5.6×22×yaml-rich-medium

Stringify time by workload

Lower is better. Each workload is scaled to its own slowest dumper; labels show time relative to the fastest in that row (×). Exact avg ns per stringify() call is in the breakdown below.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • js-yaml (tuned) 5.4.3
  • yaml (eemeli) 2.9.0
Stringify time by workload (relative to fastest, per row)Stringify time by workload (relative to fastest, per row) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to time within a row; rows are not comparable to each other, and every bar is labelled with its time relative to the fastest parser in that row (×). Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, js-yaml (tuned) 5.4.3, yaml (eemeli) 2.9.0. 4 workloads: small-records, medium-records, large-records, yaml-rich-medium.1.0×6.1×61×45×140×small-records1.0×5.8×57×43×129×medium-records1.0×4.3×36×30×80×large-records1.0×6.1×24×yaml-rich-medium

Stringify time by workload

Lower is better. Each workload is scaled to its own slowest dumper; labels show time relative to the fastest in that row (×). Exact avg ns per stringify() call is in the breakdown below.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • js-yaml (tuned) 5.4.3
  • yaml (eemeli) 2.9.0
Stringify time by workload (relative to fastest, per row)Stringify time by workload (relative to fastest, per row) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to time within a row; rows are not comparable to each other, and every bar is labelled with its time relative to the fastest parser in that row (×). Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, js-yaml (tuned) 5.4.3, yaml (eemeli) 2.9.0. 4 workloads: small-records, medium-records, large-records, yaml-rich-medium.1.0×8.6×477×460×228×small-records1.0×7.5×414×408×202×medium-records1.0×9.3×355×336×177×large-records1.0×58×31×yaml-rich-medium

The js-yaml (tuned) series is the same library dumping with the lean CORE schema instead of its heavyweight default (YAML 1.1 plus timestamp/binary/omap/set). On JSON-shaped data that runs faster and round-trips identically — so it, not the default, is the fair yardstick for how fast js-yaml can stringify this data. It appears only where the data is JSON-shaped; the rich workloads genuinely need the full schema, where the “tuned” config would be identical to the default.

Stringify time vs fastest, run over run — large-records

Lower is better, log scale. Each dumper's time as a multiple of the fastest in the same run (×) — machine-invariant. The fastest sits at 1× by construction; a rising Lightning YAML line would mean a regression.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • js-yaml (tuned) 5.4.3
  • yaml (eemeli) 2.9.0
Stringify time vs fastest over time — large-recordsStringify time vs fastest over time — large-records — lower is better. Trend across 68 benchmark runs, oldest to newest; latest values: JSON 1.0×, Lightning YAML 0.1.1 3.6×, js-yaml 5.4.3 33×, js-yaml (tuned) 5.4.3 28×, yaml (eemeli) 2.9.0 70×.1.0×3.0×10×30×2026-07-132026-07-212026-07-252026-10-162026-07-13 · 1.0×2026-07-15 · 1.0×2026-07-15 · 1.0×2026-07-16 · 1.0×2026-07-16 · 1.0×2026-07-16 · 1.0×2026-07-16 · 1.0×2026-07-18 · 1.0×2026-07-18 · 1.0×2026-07-18 · 1.0×2026-07-19 · 1.0×2026-07-19 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-20 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-21 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-22 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-24 · 1.0×2026-07-24 · 1.0×2026-07-25 · 1.0×2026-07-25 · 1.0×2026-07-28 · 1.0×2026-08-01 · 1.0×2026-08-10 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-09 · 1.0×2026-10-09 · 1.0×2026-10-11 · 1.0×2026-10-11 · 1.0×2026-10-12 · 1.0×2026-10-12 · 1.0×2026-10-13 · 1.0×2026-10-13 · 1.0×2026-10-14 · 1.0×2026-10-15 · 1.0×2026-10-15 · 1.0×2026-10-16 · 1.0×2026-07-13 · 4.8×2026-07-15 · 3.5×2026-07-15 · 3.3×2026-07-16 · 3.8×2026-07-16 · 3.2×2026-07-16 · 3.5×2026-07-16 · 3.1×2026-07-18 · 3.3×2026-07-18 · 3.4×2026-07-18 · 3.2×2026-07-19 · 3.2×2026-07-19 · 3.1×2026-07-20 · 3.6×2026-07-20 · 3.5×2026-07-20 · 3.3×2026-07-20 · 3.2×2026-07-20 · 3.3×2026-07-20 · 3.5×2026-07-20 · 3.5×2026-07-20 · 3.1×2026-07-20 · 3.3× · v0.1.12026-07-20 · 3.1× · v0.1.12026-07-21 · 3.2× · v0.1.12026-07-21 · 3.1× · v0.1.12026-07-21 · 3.2× · v0.1.12026-07-21 · 3.1× · v0.1.12026-07-21 · 3.1× · v0.1.12026-07-21 · 3.3× · v0.1.12026-07-22 · 3.2× · v0.1.12026-07-22 · 3.0× · v0.1.12026-07-22 · 3.3× · v0.1.12026-07-22 · 3.3× · v0.1.12026-07-22 · 3.3× · v0.1.12026-07-22 · 3.9× · v0.1.12026-07-22 · 3.8× · v0.1.12026-07-22 · 3.6× · v0.1.12026-07-22 · 3.7× · v0.1.12026-07-23 · 3.1× · v0.1.12026-07-23 · 3.7× · v0.1.12026-07-23 · 4.0× · v0.1.12026-07-23 · 4.0× · v0.1.12026-07-23 · 3.3× · v0.1.12026-07-23 · 4.2× · v0.1.12026-07-24 · 3.4× · v0.1.12026-07-24 · 3.8× · v0.1.12026-07-25 · 3.4× · v0.1.12026-07-25 · 4.3× · v0.1.12026-07-28 · 3.4× · v0.1.12026-08-01 · 3.7× · v0.1.12026-08-10 · 3.4× · v0.1.12026-10-08 · 3.6× · v0.1.12026-10-08 · 3.7× · v0.1.12026-10-08 · 3.5× · v0.1.12026-10-08 · 3.4× · v0.1.12026-10-08 · 3.4× · v0.1.12026-10-08 · 3.6× · v0.1.12026-10-09 · 3.6× · v0.1.12026-10-09 · 3.7× · v0.1.12026-10-11 · 3.4× · v0.1.12026-10-11 · 3.4× · v0.1.12026-10-12 · 3.5× · v0.1.12026-10-12 · 3.3× · v0.1.12026-10-13 · 4.3× · v0.1.12026-10-13 · 3.5× · v0.1.12026-10-14 · 3.4× · v0.1.12026-10-15 · 3.3× · v0.1.12026-10-15 · 3.4× · v0.1.12026-10-16 · 3.6× · v0.1.12026-07-13 · 27×2026-07-15 · 28×2026-07-15 · 28×2026-07-16 · 29×2026-07-16 · 27×2026-07-16 · 32×2026-07-16 · 27×2026-07-18 · 32×2026-07-18 · 29×2026-07-18 · 28×2026-07-19 · 27×2026-07-19 · 31×2026-07-20 · 30×2026-07-20 · 34×2026-07-20 · 33×2026-07-20 · 28×2026-07-20 · 27×2026-07-20 · 27×2026-07-20 · 26×2026-07-20 · 26×2026-07-20 · 29× · v5.2.12026-07-20 · 28× · v5.2.12026-07-21 · 27× · v5.2.12026-07-21 · 27× · v5.2.12026-07-21 · 29× · v5.2.12026-07-21 · 26× · v5.2.12026-07-21 · 26× · v5.2.12026-07-21 · 28× · v5.2.12026-07-22 · 27× · v5.2.12026-07-22 · 26× · v5.2.12026-07-22 · 28× · v5.2.12026-07-22 · 28× · v5.2.12026-07-22 · 27× · v5.2.12026-07-22 · 26× · v5.2.12026-07-22 · 29× · v5.2.12026-07-22 · 28× · v5.2.12026-07-22 · 30× · v5.2.12026-07-23 · 25× · v5.2.12026-07-23 · 30× · v5.2.12026-07-23 · 30× · v5.2.12026-07-23 · 26× · v5.2.12026-07-23 · 27× · v5.2.12026-07-23 · 22× · v5.2.12026-07-24 · 28× · v5.2.12026-07-24 · 30× · v5.2.12026-07-25 · 28× · v5.2.12026-07-25 · 28× · v5.2.12026-07-28 · 28× · v5.2.12026-08-01 · 31× · v5.2.12026-08-10 · 29× · v5.2.12026-10-08 · 29× · v5.2.12026-10-08 · 33× · v5.2.12026-10-08 · 28× · v5.2.12026-10-08 · 29× · v5.2.12026-10-08 · 28× · v5.2.12026-10-08 · 30× · v5.2.12026-10-09 · 30× · v5.2.12026-10-09 · 29× · v5.2.12026-10-11 · 28× · v5.2.12026-10-11 · 28× · 5.2.1 → 5.4.32026-10-12 · 29× · v5.4.32026-10-12 · 26× · v5.4.32026-10-13 · 25× · v5.4.32026-10-13 · 28× · v5.4.32026-10-14 · 29× · v5.4.32026-10-15 · 27× · v5.4.32026-10-15 · 28× · v5.4.32026-10-16 · 33× · v5.4.32026-07-16 · 22×2026-07-16 · 20×2026-07-16 · 25×2026-07-16 · 20×2026-07-18 · 26×2026-07-18 · 22×2026-07-18 · 22×2026-07-19 · 21×2026-07-19 · 25×2026-07-20 · 23×2026-07-20 · 27×2026-07-20 · 26×2026-07-20 · 21×2026-07-20 · 21×2026-07-20 · 22×2026-07-20 · 20×2026-07-20 · 20×2026-07-20 · 22× · v5.2.12026-07-20 · 22× · v5.2.12026-07-21 · 20× · v5.2.12026-07-21 · 20× · v5.2.12026-07-21 · 23× · v5.2.12026-07-21 · 20× · v5.2.12026-07-21 · 20× · v5.2.12026-07-21 · 22× · v5.2.12026-07-22 · 20× · v5.2.12026-07-22 · 19× · v5.2.12026-07-22 · 20× · v5.2.12026-07-22 · 19× · v5.2.12026-07-22 · 19× · v5.2.12026-07-22 · 19× · v5.2.12026-07-22 · 22× · v5.2.12026-07-22 · 20× · v5.2.12026-07-22 · 21× · v5.2.12026-07-23 · 19× · v5.2.12026-07-23 · 22× · v5.2.12026-07-23 · 22× · v5.2.12026-07-23 · 19× · v5.2.12026-07-23 · 20× · v5.2.12026-07-23 · 17× · v5.2.12026-07-24 · 21× · v5.2.12026-07-24 · 22× · v5.2.12026-07-25 · 20× · v5.2.12026-07-25 · 21× · v5.2.12026-07-28 · 20× · v5.2.12026-08-01 · 23× · v5.2.12026-08-10 · 20× · v5.2.12026-10-08 · 21× · v5.2.12026-10-08 · 25× · v5.2.12026-10-08 · 20× · v5.2.12026-10-08 · 20× · v5.2.12026-10-08 · 20× · v5.2.12026-10-08 · 21× · v5.2.12026-10-09 · 22× · v5.2.12026-10-09 · 21× · v5.2.12026-10-11 · 20× · v5.2.12026-10-11 · 23× · 5.2.1 → 5.4.32026-10-12 · 24× · v5.4.32026-10-12 · 22× · v5.4.32026-10-13 · 21× · v5.4.32026-10-13 · 24× · v5.4.32026-10-14 · 25× · v5.4.32026-10-15 · 22× · v5.4.32026-10-15 · 23× · v5.4.32026-10-16 · 28× · v5.4.32026-07-13 · 60×2026-07-15 · 66×2026-07-15 · 64×2026-07-16 · 66×2026-07-16 · 60×2026-07-16 · 62×2026-07-16 · 61×2026-07-18 · 65×2026-07-18 · 66×2026-07-18 · 65×2026-07-19 · 63×2026-07-19 · 64×2026-07-20 · 67×2026-07-20 · 65×2026-07-20 · 64×2026-07-20 · 64×2026-07-20 · 64×2026-07-20 · 59×2026-07-20 · 59×2026-07-20 · 58×2026-07-20 · 61× · v2.9.02026-07-20 · 59× · v2.9.02026-07-21 · 59× · v2.9.02026-07-21 · 59× · v2.9.02026-07-21 · 61× · v2.9.02026-07-21 · 59× · v2.9.02026-07-21 · 57× · v2.9.02026-07-21 · 59× · v2.9.02026-07-22 · 61× · v2.9.02026-07-22 · 57× · v2.9.02026-07-22 · 64× · v2.9.02026-07-22 · 63× · v2.9.02026-07-22 · 62× · v2.9.02026-07-22 · 56× · v2.9.02026-07-22 · 68× · v2.9.02026-07-22 · 64× · v2.9.02026-07-22 · 66× · v2.9.02026-07-23 · 58× · v2.9.02026-07-23 · 69× · v2.9.02026-07-23 · 69× · v2.9.02026-07-23 · 58× · v2.9.02026-07-23 · 64× · v2.9.02026-07-23 · 56× · v2.9.02026-07-24 · 65× · v2.9.02026-07-24 · 68× · v2.9.02026-07-25 · 63× · v2.9.02026-07-25 · 65× · v2.9.02026-07-28 · 65× · v2.9.02026-08-01 · 69× · v2.9.02026-08-10 · 65× · v2.9.02026-10-08 · 66× · v2.9.02026-10-08 · 71× · v2.9.02026-10-08 · 65× · v2.9.02026-10-08 · 64× · v2.9.02026-10-08 · 62× · v2.9.02026-10-08 · 67× · v2.9.02026-10-09 · 67× · v2.9.02026-10-09 · 65× · v2.9.02026-10-11 · 63× · v2.9.02026-10-11 · 66× · v2.9.02026-10-12 · 65× · v2.9.02026-10-12 · 62× · v2.9.02026-10-13 · 54× · v2.9.02026-10-13 · 64× · v2.9.02026-10-14 · 65× · v2.9.02026-10-15 · 63× · v2.9.02026-10-15 · 64× · v2.9.02026-10-16 · 70× · v2.9.0

Stringify time vs fastest, run over run — large-records

Lower is better, log scale. Each dumper's time as a multiple of the fastest in the same run (×) — machine-invariant. The fastest sits at 1× by construction; a rising Lightning YAML line would mean a regression.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • js-yaml (tuned) 5.4.3
  • yaml (eemeli) 2.9.0
Stringify time vs fastest over time — large-recordsStringify time vs fastest over time — large-records — lower is better. Trend across 31 benchmark runs, oldest to newest; latest values: JSON 1.0×, Lightning YAML 0.1.1 4.3×, js-yaml 5.4.3 36×, js-yaml (tuned) 5.4.3 30×, yaml (eemeli) 2.9.0 80×.1.0×3.0×10×30×2026-07-232026-07-282026-10-092026-10-162026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-24 · 1.0×2026-07-24 · 1.0×2026-07-25 · 1.0×2026-07-25 · 1.0×2026-07-28 · 1.0×2026-08-01 · 1.0×2026-08-10 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-09 · 1.0×2026-10-09 · 1.0×2026-10-11 · 1.0×2026-10-11 · 1.0×2026-10-12 · 1.0×2026-10-12 · 1.0×2026-10-13 · 1.0×2026-10-13 · 1.0×2026-10-14 · 1.0×2026-10-15 · 1.0×2026-10-15 · 1.0×2026-10-16 · 1.0×2026-07-23 · 4.5× · v0.1.12026-07-23 · 4.4× · v0.1.12026-07-23 · 4.5× · v0.1.12026-07-23 · 5.0× · v0.1.12026-07-23 · 4.2× · v0.1.12026-07-23 · 5.1× · v0.1.12026-07-24 · 4.5× · v0.1.12026-07-24 · 4.4× · v0.1.12026-07-25 · 4.4× · v0.1.12026-07-25 · 5.2× · v0.1.12026-07-28 · 4.6× · v0.1.12026-08-01 · 4.5× · v0.1.12026-08-10 · 4.5× · v0.1.12026-10-08 · 4.7× · v0.1.12026-10-08 · 4.1× · v0.1.12026-10-08 · 4.6× · v0.1.12026-10-08 · 4.5× · v0.1.12026-10-08 · 4.7× · v0.1.12026-10-08 · 4.6× · v0.1.12026-10-09 · 4.4× · v0.1.12026-10-09 · 4.7× · v0.1.12026-10-11 · 4.3× · v0.1.12026-10-11 · 4.5× · v0.1.12026-10-12 · 4.4× · v0.1.12026-10-12 · 4.4× · v0.1.12026-10-13 · 5.6× · v0.1.12026-10-13 · 4.3× · v0.1.12026-10-14 · 4.5× · v0.1.12026-10-15 · 4.6× · v0.1.12026-10-15 · 4.6× · v0.1.12026-10-16 · 4.3× · v0.1.12026-07-23 · 35× · v5.2.12026-07-23 · 33× · v5.2.12026-07-23 · 31× · v5.2.12026-07-23 · 32× · v5.2.12026-07-23 · 33× · v5.2.12026-07-23 · 32× · v5.2.12026-07-24 · 32× · v5.2.12026-07-24 · 31× · v5.2.12026-07-25 · 35× · v5.2.12026-07-25 · 35× · v5.2.12026-07-28 · 35× · v5.2.12026-08-01 · 31× · v5.2.12026-08-10 · 33× · v5.2.12026-10-08 · 34× · v5.2.12026-10-08 · 30× · v5.2.12026-10-08 · 33× · v5.2.12026-10-08 · 35× · v5.2.12026-10-08 · 35× · v5.2.12026-10-08 · 34× · v5.2.12026-10-09 · 32× · v5.2.12026-10-09 · 35× · v5.2.12026-10-11 · 33× · v5.2.12026-10-11 · 36× · 5.2.1 → 5.4.32026-10-12 · 36× · v5.4.32026-10-12 · 35× · v5.4.32026-10-13 · 33× · v5.4.32026-10-13 · 36× · v5.4.32026-10-14 · 37× · v5.4.32026-10-15 · 36× · v5.4.32026-10-15 · 38× · v5.4.32026-10-16 · 36× · v5.4.32026-07-23 · 26× · v5.2.12026-07-23 · 24× · v5.2.12026-07-23 · 22× · v5.2.12026-07-23 · 23× · v5.2.12026-07-23 · 23× · v5.2.12026-07-23 · 23× · v5.2.12026-07-24 · 24× · v5.2.12026-07-24 · 22× · v5.2.12026-07-25 · 26× · v5.2.12026-07-25 · 25× · v5.2.12026-07-28 · 26× · v5.2.12026-08-01 · 22× · v5.2.12026-08-10 · 24× · v5.2.12026-10-08 · 24× · v5.2.12026-10-08 · 20× · v5.2.12026-10-08 · 24× · v5.2.12026-10-08 · 25× · v5.2.12026-10-08 · 26× · v5.2.12026-10-08 · 24× · v5.2.12026-10-09 · 21× · v5.2.12026-10-09 · 26× · v5.2.12026-10-11 · 24× · v5.2.12026-10-11 · 30× · 5.2.1 → 5.4.32026-10-12 · 31× · v5.4.32026-10-12 · 30× · v5.4.32026-10-13 · 28× · v5.4.32026-10-13 · 31× · v5.4.32026-10-14 · 31× · v5.4.32026-10-15 · 31× · v5.4.32026-10-15 · 32× · v5.4.32026-10-16 · 30× · v5.4.32026-07-23 · 83× · v2.9.02026-07-23 · 80× · v2.9.02026-07-23 · 81× · v2.9.02026-07-23 · 78× · v2.9.02026-07-23 · 82× · v2.9.02026-07-23 · 78× · v2.9.02026-07-24 · 81× · v2.9.02026-07-24 · 79× · v2.9.02026-07-25 · 84× · v2.9.02026-07-25 · 79× · v2.9.02026-07-28 · 85× · v2.9.02026-08-01 · 81× · v2.9.02026-08-10 · 83× · v2.9.02026-10-08 · 84× · v2.9.02026-10-08 · 76× · v2.9.02026-10-08 · 82× · v2.9.02026-10-08 · 81× · v2.9.02026-10-08 · 85× · v2.9.02026-10-08 · 87× · v2.9.02026-10-09 · 79× · v2.9.02026-10-09 · 85× · v2.9.02026-10-11 · 83× · v2.9.02026-10-11 · 84× · v2.9.02026-10-12 · 83× · v2.9.02026-10-12 · 83× · v2.9.02026-10-13 · 80× · v2.9.02026-10-13 · 85× · v2.9.02026-10-14 · 83× · v2.9.02026-10-15 · 85× · v2.9.02026-10-15 · 84× · v2.9.02026-10-16 · 80× · v2.9.0

Stringify time vs fastest, run over run — large-records

Lower is better, log scale. Each dumper's time as a multiple of the fastest in the same run (×) — machine-invariant. The fastest sits at 1× by construction; a rising Lightning YAML line would mean a regression.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • js-yaml (tuned) 5.4.3
  • yaml (eemeli) 2.9.0
Stringify time vs fastest over time — large-recordsStringify time vs fastest over time — large-records — lower is better. Trend across 31 benchmark runs, oldest to newest; latest values: JSON 1.0×, Lightning YAML 0.1.1 9.3×, js-yaml 5.4.3 355×, js-yaml (tuned) 5.4.3 336×, yaml (eemeli) 2.9.0 177×.1.0×3.0×10×30×100×300×2026-07-232026-07-282026-10-092026-10-162026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-23 · 1.0×2026-07-24 · 1.0×2026-07-24 · 1.0×2026-07-25 · 1.0×2026-07-25 · 1.0×2026-07-28 · 1.0×2026-08-01 · 1.0×2026-08-10 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-08 · 1.0×2026-10-09 · 1.0×2026-10-09 · 1.0×2026-10-11 · 1.0×2026-10-11 · 1.0×2026-10-12 · 1.0×2026-10-12 · 1.0×2026-10-13 · 1.0×2026-10-13 · 1.0×2026-10-14 · 1.0×2026-10-15 · 1.0×2026-10-15 · 1.0×2026-10-16 · 1.0×2026-07-23 · 9.6× · v0.1.12026-07-23 · 10× · v0.1.12026-07-23 · 9.7× · v0.1.12026-07-23 · 8.2× · v0.1.12026-07-23 · 9.8× · v0.1.12026-07-23 · 7.7× · v0.1.12026-07-24 · 8.8× · v0.1.12026-07-24 · 8.9× · v0.1.12026-07-25 · 9.2× · v0.1.12026-07-25 · 8.4× · v0.1.12026-07-28 · 9.7× · v0.1.12026-08-01 · 9.6× · v0.1.12026-08-10 · 9.6× · v0.1.12026-10-08 · 9.0× · v0.1.12026-10-08 · 8.2× · v0.1.12026-10-08 · 8.8× · v0.1.12026-10-08 · 8.7× · v0.1.12026-10-08 · 9.5× · v0.1.12026-10-08 · 9.2× · v0.1.12026-10-09 · 10× · v0.1.12026-10-09 · 9.7× · v0.1.12026-10-11 · 8.4× · v0.1.12026-10-11 · 8.9× · v0.1.12026-10-12 · 9.4× · v0.1.12026-10-12 · 9.9× · v0.1.12026-10-13 · 8.2× · v0.1.12026-10-13 · 9.1× · v0.1.12026-10-14 · 8.7× · v0.1.12026-10-15 · 9.6× · v0.1.12026-10-15 · 9.7× · v0.1.12026-10-16 · 9.3× · v0.1.12026-07-23 · 76× · v5.2.12026-07-23 · 72× · v5.2.12026-07-23 · 77× · v5.2.12026-07-23 · 62× · v5.2.12026-07-23 · 71× · v5.2.12026-07-23 · 59× · v5.2.12026-07-24 · 72× · v5.2.12026-07-24 · 70× · v5.2.12026-07-25 · 73× · v5.2.12026-07-25 · 66× · v5.2.12026-07-28 · 72× · v5.2.12026-08-01 · 74× · v5.2.12026-08-10 · 70× · v5.2.12026-10-08 · 73× · v5.2.12026-10-08 · 74× · v5.2.12026-10-08 · 68× · v5.2.12026-10-08 · 71× · v5.2.12026-10-08 · 74× · v5.2.12026-10-08 · 72× · v5.2.12026-10-09 · 74× · v5.2.12026-10-09 · 73× · v5.2.12026-10-11 · 74× · v5.2.12026-10-11 · 350× · 5.2.1 → 5.4.32026-10-12 · 337× · v5.4.32026-10-12 · 349× · v5.4.32026-10-13 · 247× · v5.4.32026-10-13 · 343× · v5.4.32026-10-14 · 334× · v5.4.32026-10-15 · 351× · v5.4.32026-10-15 · 338× · v5.4.32026-10-16 · 355× · v5.4.32026-07-23 · 53× · v5.2.12026-07-23 · 48× · v5.2.12026-07-23 · 55× · v5.2.12026-07-23 · 46× · v5.2.12026-07-23 · 49× · v5.2.12026-07-23 · 43× · v5.2.12026-07-24 · 50× · v5.2.12026-07-24 · 50× · v5.2.12026-07-25 · 52× · v5.2.12026-07-25 · 48× · v5.2.12026-07-28 · 49× · v5.2.12026-08-01 · 53× · v5.2.12026-08-10 · 47× · v5.2.12026-10-08 · 50× · v5.2.12026-10-08 · 53× · v5.2.12026-10-08 · 47× · v5.2.12026-10-08 · 48× · v5.2.12026-10-08 · 51× · v5.2.12026-10-08 · 49× · v5.2.12026-10-09 · 53× · v5.2.12026-10-09 · 49× · v5.2.12026-10-11 · 50× · v5.2.12026-10-11 · 363× · 5.2.1 → 5.4.32026-10-12 · 320× · v5.4.32026-10-12 · 318× · v5.4.32026-10-13 · 237× · v5.4.32026-10-13 · 320× · v5.4.32026-10-14 · 312× · v5.4.32026-10-15 · 319× · v5.4.32026-10-15 · 315× · v5.4.32026-10-16 · 336× · v5.4.32026-07-23 · 178× · v2.9.02026-07-23 · 167× · v2.9.02026-07-23 · 173× · v2.9.02026-07-23 · 156× · v2.9.02026-07-23 · 198× · v2.9.02026-07-23 · 142× · v2.9.02026-07-24 · 171× · v2.9.02026-07-24 · 168× · v2.9.02026-07-25 · 170× · v2.9.02026-07-25 · 159× · v2.9.02026-07-28 · 170× · v2.9.02026-08-01 · 172× · v2.9.02026-08-10 · 166× · v2.9.02026-10-08 · 171× · v2.9.02026-10-08 · 179× · v2.9.02026-10-08 · 160× · v2.9.02026-10-08 · 167× · v2.9.02026-10-08 · 181× · v2.9.02026-10-08 · 181× · v2.9.02026-10-09 · 171× · v2.9.02026-10-09 · 175× · v2.9.02026-10-11 · 169× · v2.9.02026-10-11 · 171× · v2.9.02026-10-12 · 186× · v2.9.02026-10-12 · 185× · v2.9.02026-10-13 · 171× · v2.9.02026-10-13 · 189× · v2.9.02026-10-14 · 173× · v2.9.02026-10-15 · 180× · v2.9.02026-10-15 · 172× · v2.9.02026-10-16 · 177× · v2.9.0

Full breakdown — every workload, avg ns per stringify() call (— marks a workload a library can’t represent):

WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3js-yaml (tuned) 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records1.80 µs5.59 µs60.9 µs47.3 µs148 µs
medium-records217 µs628 µs6.46 ms5.34 ms15.8 ms
large-records2.91 ms10.4 ms95.5 ms80.1 ms204 ms
xlarge-records24.8 ms150 ms886 ms742 ms1.88 s
medium-nested471 µs1.23 ms9.98 ms8.37 ms24.3 ms
large-nested3.49 ms11.0 ms89.1 ms79.5 ms201 ms
Plain block YAML
yaml-plain-small-records1.41 µs4.78 µs45.4 µs37.3 µs117 µs
yaml-plain-medium-records196 µs615 µs6.46 ms4.88 ms14.5 ms
yaml-plain-large-records2.28 ms8.27 ms72.1 ms62.3 ms161 ms
yaml-plain-medium-nested93.7 µs268 µs2.44 ms2.13 ms6.16 ms
Rich YAML (anchors + !!binary)
yaml-rich-small—8.32 µs56.4 µs—193 µs
yaml-rich-medium—735 µs4.11 ms—16.5 ms
yaml-rich-large—8.37 ms45.6 ms—186 ms
WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3js-yaml (tuned) 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records936 ns5.69 µs56.9 µs42.4 µs131 µs
medium-records105 µs606 µs5.98 ms4.54 ms13.5 ms
large-records2.20 ms9.45 ms79.6 ms65.7 ms177 ms
medium-nested261 µs1.16 ms9.61 ms8.22 ms23.3 ms
large-nested2.84 ms12.1 ms82.7 ms70.1 ms173 ms
Plain block YAML
yaml-plain-small-records1.22 µs4.94 µs41.4 µs32.5 µs105 µs
yaml-plain-medium-records157 µs576 µs5.67 ms4.29 ms13.0 ms
yaml-plain-large-records2.51 ms8.64 ms67.9 ms56.4 ms147 ms
yaml-plain-medium-nested57.8 µs232 µs2.25 ms1.89 ms5.60 ms
Rich YAML (anchors + !!binary)
yaml-rich-small—8.02 µs51.0 µs—171 µs
yaml-rich-medium—666 µs4.05 ms—15.7 ms
yaml-rich-large—8.25 ms45.4 ms—155 ms
WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3js-yaml (tuned) 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records802 ns6.89 µs382 µs369 µs183 µs
medium-records104 µs778 µs43.0 ms42.3 ms20.9 ms
large-records1.39 ms12.9 ms492 ms466 ms245 ms
medium-nested184 µs1.60 ms70.9 ms69.6 ms52.6 ms
large-nested1.65 ms16.2 ms515 ms507 ms392 ms
Plain block YAML
yaml-plain-small-records656 ns5.93 µs300 µs298 µs140 µs
yaml-plain-medium-records101 µs740 µs40.2 ms38.8 ms19.3 ms
yaml-plain-large-records1.38 ms16.6 ms400 ms389 ms205 ms
yaml-plain-medium-nested43.8 µs347 µs17.5 ms16.9 ms12.4 ms
Rich YAML (anchors + !!binary)
yaml-rich-small—9.34 µs477 µs—268 µs
yaml-rich-medium—753 µs44.0 ms—23.1 ms
yaml-rich-large—13.8 ms417 ms—236 ms

Measured on AMD EPYC 9V45 96-Core Processor (unknown) · node 24.21.0 (x64-linux) · generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Peak memory by workload (stringify)

Lower is better. Whole-process peak resident set while dumping, in isolated child processes, fixed at 25 iterations. Each workload is scaled to its own heaviest dumper.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Peak memory by workload (stringify, resident set size)Peak memory by workload (stringify, resident set size) — lower is better. Each workload is scaled to its own slowest parser, so bar length is proportional to memory within a row; rows are not comparable to each other, and every bar is labelled with its exact value. Series: JSON, Lightning YAML 0.1.1, js-yaml 5.4.3, yaml (eemeli) 2.9.0. 5 workloads: small-records, medium-records, large-records, xlarge-records, yaml-rich-medium.80.2 MB80.4 MB79.2 MB80.2 MBsmall-records79.8 MB90.8 MB110 MB149 MBmedium-records93.0 MB214 MB383 MB401 MBlarge-records252 MB770 MB986 MB906 MBxlarge-records112 MB113 MB250 MByaml-rich-medium

Peak memory, run over run — xlarge-records

Lower is better. Absolute peak resident set size (MB), one document per published run, oldest to newest.

  • JSON
  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Peak memory over time — xlarge-recordsPeak memory over time — xlarge-records — lower is better. Trend across 68 benchmark runs, oldest to newest; latest values: JSON 252 MB, Lightning YAML 0.1.1 770 MB, js-yaml 5.4.3 986 MB, yaml (eemeli) 2.9.0 906 MB.0.00 MB500 MB1000 MB1500 MB2000 MB2026-07-132026-07-212026-07-252026-10-162026-07-13 · 301 MB2026-07-15 · 282 MB2026-07-15 · 289 MB2026-07-16 · 287 MB2026-07-16 · 287 MB2026-07-16 · 282 MB2026-07-16 · 285 MB2026-07-18 · 287 MB2026-07-18 · 289 MB2026-07-18 · 288 MB2026-07-19 · 281 MB2026-07-19 · 289 MB2026-07-20 · 292 MB2026-07-20 · 281 MB2026-07-20 · 289 MB2026-07-20 · 284 MB2026-07-20 · 284 MB2026-07-20 · 295 MB2026-07-20 · 279 MB2026-07-20 · 281 MB2026-07-20 · 278 MB2026-07-20 · 282 MB2026-07-21 · 282 MB2026-07-21 · 284 MB2026-07-21 · 286 MB2026-07-21 · 284 MB2026-07-21 · 280 MB2026-07-21 · 285 MB2026-07-22 · 284 MB2026-07-22 · 286 MB2026-07-22 · 249 MB2026-07-22 · 249 MB2026-07-22 · 249 MB2026-07-22 · 249 MB2026-07-22 · 249 MB2026-07-22 · 250 MB2026-07-22 · 249 MB2026-07-23 · 249 MB2026-07-23 · 250 MB2026-07-23 · 251 MB2026-07-23 · 250 MB2026-07-23 · 251 MB2026-07-23 · 251 MB2026-07-24 · 250 MB2026-07-24 · 251 MB2026-07-25 · 250 MB2026-07-25 · 251 MB2026-07-28 · 250 MB2026-08-01 · 250 MB2026-08-10 · 249 MB2026-10-08 · 250 MB2026-10-08 · 251 MB2026-10-08 · 253 MB2026-10-08 · 252 MB2026-10-08 · 251 MB2026-10-08 · 251 MB2026-10-09 · 252 MB2026-10-09 · 251 MB2026-10-11 · 252 MB2026-10-11 · 254 MB2026-10-12 · 254 MB2026-10-12 · 251 MB2026-10-13 · 252 MB2026-10-13 · 254 MB2026-10-14 · 254 MB2026-10-15 · 251 MB2026-10-15 · 253 MB2026-10-16 · 252 MB2026-07-13 · 567 MB2026-07-15 · 530 MB2026-07-15 · 550 MB2026-07-16 · 559 MB2026-07-16 · 558 MB2026-07-16 · 563 MB2026-07-16 · 548 MB2026-07-18 · 556 MB2026-07-18 · 566 MB2026-07-18 · 580 MB2026-07-19 · 611 MB2026-07-19 · 540 MB2026-07-20 · 563 MB2026-07-20 · 581 MB2026-07-20 · 572 MB2026-07-20 · 615 MB2026-07-20 · 617 MB2026-07-20 · 533 MB2026-07-20 · 566 MB2026-07-20 · 582 MB2026-07-20 · 546 MB · v0.1.12026-07-20 · 573 MB · v0.1.12026-07-21 · 612 MB · v0.1.12026-07-21 · 611 MB · v0.1.12026-07-21 · 573 MB · v0.1.12026-07-21 · 579 MB · v0.1.12026-07-21 · 564 MB · v0.1.12026-07-21 · 609 MB · v0.1.12026-07-22 · 572 MB · v0.1.12026-07-22 · 577 MB · v0.1.12026-07-22 · 738 MB · v0.1.12026-07-22 · 774 MB · v0.1.12026-07-22 · 756 MB · v0.1.12026-07-22 · 776 MB · v0.1.12026-07-22 · 776 MB · v0.1.12026-07-22 · 763 MB · v0.1.12026-07-22 · 769 MB · v0.1.12026-07-23 · 747 MB · v0.1.12026-07-23 · 769 MB · v0.1.12026-07-23 · 770 MB · v0.1.12026-07-23 · 775 MB · v0.1.12026-07-23 · 748 MB · v0.1.12026-07-23 · 776 MB · v0.1.12026-07-24 · 769 MB · v0.1.12026-07-24 · 770 MB · v0.1.12026-07-25 · 769 MB · v0.1.12026-07-25 · 777 MB · v0.1.12026-07-28 · 769 MB · v0.1.12026-08-01 · 770 MB · v0.1.12026-08-10 · 750 MB · v0.1.12026-10-08 · 770 MB · v0.1.12026-10-08 · 777 MB · v0.1.12026-10-08 · 769 MB · v0.1.12026-10-08 · 759 MB · v0.1.12026-10-08 · 769 MB · v0.1.12026-10-08 · 751 MB · v0.1.12026-10-09 · 743 MB · v0.1.12026-10-09 · 770 MB · v0.1.12026-10-11 · 770 MB · v0.1.12026-10-11 · 741 MB · v0.1.12026-10-12 · 770 MB · v0.1.12026-10-12 · 749 MB · v0.1.12026-10-13 · 777 MB · v0.1.12026-10-13 · 770 MB · v0.1.12026-10-14 · 776 MB · v0.1.12026-10-15 · 775 MB · v0.1.12026-10-15 · 769 MB · v0.1.12026-10-16 · 770 MB · v0.1.12026-07-13 · 1167 MB2026-07-15 · 1158 MB2026-07-15 · 1073 MB2026-07-16 · 1145 MB2026-07-16 · 1147 MB2026-07-16 · 1208 MB2026-07-16 · 1156 MB2026-07-18 · 1174 MB2026-07-18 · 1136 MB2026-07-18 · 1158 MB2026-07-19 · 1134 MB2026-07-19 · 1177 MB2026-07-20 · 1070 MB2026-07-20 · 1217 MB2026-07-20 · 1166 MB2026-07-20 · 1204 MB2026-07-20 · 1154 MB2026-07-20 · 1183 MB2026-07-20 · 1126 MB2026-07-20 · 998 MB2026-07-20 · 1147 MB · v5.2.12026-07-20 · 1139 MB · v5.2.12026-07-21 · 1161 MB · v5.2.12026-07-21 · 1145 MB · v5.2.12026-07-21 · 1160 MB · v5.2.12026-07-21 · 1141 MB · v5.2.12026-07-21 · 1146 MB · v5.2.12026-07-21 · 1141 MB · v5.2.12026-07-22 · 1127 MB · v5.2.12026-07-22 · 1158 MB · v5.2.12026-07-22 · 1311 MB · v5.2.12026-07-22 · 1310 MB · v5.2.12026-07-22 · 1313 MB · v5.2.12026-07-22 · 1334 MB · v5.2.12026-07-22 · 1353 MB · v5.2.12026-07-22 · 1285 MB · v5.2.12026-07-22 · 1314 MB · v5.2.12026-07-23 · 1285 MB · v5.2.12026-07-23 · 1302 MB · v5.2.12026-07-23 · 1302 MB · v5.2.12026-07-23 · 1302 MB · v5.2.12026-07-23 · 1311 MB · v5.2.12026-07-23 · 1315 MB · v5.2.12026-07-24 · 1317 MB · v5.2.12026-07-24 · 1285 MB · v5.2.12026-07-25 · 1308 MB · v5.2.12026-07-25 · 1310 MB · v5.2.12026-07-28 · 1316 MB · v5.2.12026-08-01 · 1312 MB · v5.2.12026-08-10 · 1224 MB · v5.2.12026-10-08 · 1325 MB · v5.2.12026-10-08 · 1312 MB · v5.2.12026-10-08 · 1346 MB · v5.2.12026-10-08 · 1343 MB · v5.2.12026-10-08 · 1339 MB · v5.2.12026-10-08 · 1341 MB · v5.2.12026-10-09 · 1311 MB · v5.2.12026-10-09 · 1338 MB · v5.2.12026-10-11 · 1273 MB · v5.2.12026-10-11 · 969 MB · 5.2.1 → 5.4.32026-10-12 · 981 MB · v5.4.32026-10-12 · 1010 MB · v5.4.32026-10-13 · 983 MB · v5.4.32026-10-13 · 995 MB · v5.4.32026-10-14 · 995 MB · v5.4.32026-10-15 · 922 MB · v5.4.32026-10-15 · 937 MB · v5.4.32026-10-16 · 986 MB · v5.4.32026-07-13 · 985 MB2026-07-15 · 945 MB2026-07-15 · 943 MB2026-07-16 · 971 MB2026-07-16 · 944 MB2026-07-16 · 968 MB2026-07-16 · 940 MB2026-07-18 · 967 MB2026-07-18 · 978 MB2026-07-18 · 941 MB2026-07-19 · 954 MB2026-07-19 · 972 MB2026-07-20 · 967 MB2026-07-20 · 940 MB2026-07-20 · 942 MB2026-07-20 · 986 MB2026-07-20 · 936 MB2026-07-20 · 986 MB2026-07-20 · 705 MB2026-07-20 · 626 MB2026-07-20 · 679 MB · v2.9.02026-07-20 · 699 MB · v2.9.02026-07-21 · 703 MB · v2.9.02026-07-21 · 696 MB · v2.9.02026-07-21 · 717 MB · v2.9.02026-07-21 · 694 MB · v2.9.02026-07-21 · 693 MB · v2.9.02026-07-21 · 709 MB · v2.9.02026-07-22 · 714 MB · v2.9.02026-07-22 · 694 MB · v2.9.02026-07-22 · 985 MB · v2.9.02026-07-22 · 856 MB · v2.9.02026-07-22 · 858 MB · v2.9.02026-07-22 · 1180 MB · v2.9.02026-07-22 · 933 MB · v2.9.02026-07-22 · 937 MB · v2.9.02026-07-22 · 863 MB · v2.9.02026-07-23 · 843 MB · v2.9.02026-07-23 · 891 MB · v2.9.02026-07-23 · 865 MB · v2.9.02026-07-23 · 1139 MB · v2.9.02026-07-23 · 865 MB · v2.9.02026-07-23 · 1179 MB · v2.9.02026-07-24 · 863 MB · v2.9.02026-07-24 · 943 MB · v2.9.02026-07-25 · 938 MB · v2.9.02026-07-25 · 1141 MB · v2.9.02026-07-28 · 902 MB · v2.9.02026-08-01 · 964 MB · v2.9.02026-08-10 · 933 MB · v2.9.02026-10-08 · 858 MB · v2.9.02026-10-08 · 952 MB · v2.9.02026-10-08 · 891 MB · v2.9.02026-10-08 · 948 MB · v2.9.02026-10-08 · 900 MB · v2.9.02026-10-08 · 859 MB · v2.9.02026-10-09 · 938 MB · v2.9.02026-10-09 · 939 MB · v2.9.02026-10-11 · 905 MB · v2.9.02026-10-11 · 864 MB · v2.9.02026-10-12 · 853 MB · v2.9.02026-10-12 · 862 MB · v2.9.02026-10-13 · 1206 MB · v2.9.02026-10-13 · 898 MB · v2.9.02026-10-14 · 932 MB · v2.9.02026-10-15 · 902 MB · v2.9.02026-10-15 · 892 MB · v2.9.02026-10-16 · 906 MB · v2.9.0

Full breakdown — every workload, peak RSS (MB):

WorkloadJSONLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
JSON-shaped (records & nested)
small-records80.2 MB80.4 MB79.2 MB80.2 MB
medium-records79.8 MB90.8 MB110 MB149 MB
large-records93.0 MB214 MB383 MB401 MB
xlarge-records252 MB770 MB986 MB906 MB
medium-nested82.0 MB92.3 MB148 MB226 MB
large-nested92.9 MB209 MB358 MB387 MB
Plain block YAML
yaml-plain-small-records79.8 MB79.8 MB79.5 MB80.2 MB
yaml-plain-medium-records102 MB113 MB114 MB145 MB
yaml-plain-large-records295 MB286 MB367 MB395 MB
yaml-plain-medium-nested92.5 MB92.6 MB109 MB108 MB
Rich YAML (anchors + !!binary)
yaml-rich-small—80.0 MB81.7 MB81.9 MB
yaml-rich-medium—112 MB113 MB250 MB
yaml-rich-large—261 MB336 MB436 MB

Pass rate across the official yaml-test-suite — the YAML 1.2 spec operationalized as executable cases — a property of the parser, not a per-workload measurement. Higher is better.

Generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

YAML test-suite conformance

Higher is better. Pass rate across 373 cases from the official yaml-test-suite.

YAML test-suite conformance (pass rate)YAML test-suite conformance (pass rate) — higher is better. Lightning YAML 98.4%, yaml (eemeli) 2.9.0 97.1%, js-yaml 5.4.3 94.9%.0%25%50%75%100%Lightning YAML98.4% (367/373)yaml (eemeli) 2.9.097.1% (362/373)js-yaml 5.4.394.9% (354/373)

Lightning YAML passes 98.4% of the suite — including all 91 negative (should-fail) cases; the per-library standing is in the chart above and the table below. Merge keys (<<) are absent from the test corpus and are currently read as ordinary keys; the suite also reports other remaining YAML 1.2 edge cases.

Conformance pass rate, run over run

Higher is better. Pass rate (%) per library, one document per published run, oldest to newest. The y-axis is zoomed to the labelled range where the parsers sit so run-to-run movement is visible.

  • Lightning YAML
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Conformance pass rate over timeConformance pass rate over time — higher is better. Trend across 68 benchmark runs, oldest to newest; latest values: Lightning YAML 98.4%, js-yaml 5.4.3 94.9%, yaml (eemeli) 2.9.0 97.1%.90.0%92.5%95.0%97.5%100.0%2026-07-132026-07-212026-07-252026-10-162026-07-13 · 97.6%2026-07-15 · 97.6%2026-07-15 · 97.6%2026-07-16 · 97.6%2026-07-16 · 97.6%2026-07-16 · 97.6%2026-07-16 · 97.6%2026-07-18 · 97.6%2026-07-18 · 97.6%2026-07-18 · 97.6%2026-07-19 · 97.6%2026-07-19 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-20 · 97.6%2026-07-21 · 97.6%2026-07-21 · 97.6%2026-07-21 · 97.6%2026-07-21 · 97.6%2026-07-21 · 97.6%2026-07-21 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-22 · 97.6%2026-07-23 · 97.6%2026-07-23 · 97.6%2026-07-23 · 97.6%2026-07-23 · 97.6%2026-07-23 · 97.6%2026-07-23 · 97.6%2026-07-24 · 97.6%2026-07-24 · 97.6%2026-07-25 · 97.6%2026-07-25 · 97.6%2026-07-28 · 97.6%2026-08-01 · 97.6%2026-08-10 · 97.6%2026-10-08 · 97.6%2026-10-08 · 97.6%2026-10-08 · 97.6%2026-10-08 · 97.6%2026-10-08 · 97.6%2026-10-08 · 97.6%2026-10-09 · 97.6%2026-10-09 · 97.6%2026-10-11 · 97.6%2026-10-11 · 97.6%2026-10-12 · 97.6%2026-10-12 · 97.6%2026-10-13 · 98.4%2026-10-13 · 98.4%2026-10-14 · 98.4%2026-10-15 · 98.4%2026-10-15 · 98.4%2026-10-16 · 98.4%2026-07-13 · 94.9% · v5.2.12026-07-15 · 94.9% · v5.2.12026-07-15 · 94.9% · v5.2.12026-07-16 · 94.9% · v5.2.12026-07-16 · 94.9% · v5.2.12026-07-16 · 94.9% · v5.2.12026-07-16 · 94.9% · v5.2.12026-07-18 · 94.9% · v5.2.12026-07-18 · 94.9% · v5.2.12026-07-18 · 94.9% · v5.2.12026-07-19 · 94.9% · v5.2.12026-07-19 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-20 · 94.9% · v5.2.12026-07-21 · 94.9% · v5.2.12026-07-21 · 94.9% · v5.2.12026-07-21 · 94.9% · v5.2.12026-07-21 · 94.9% · v5.2.12026-07-21 · 94.9% · v5.2.12026-07-21 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-22 · 94.9% · v5.2.12026-07-23 · 94.9% · v5.2.12026-07-23 · 94.9% · v5.2.12026-07-23 · 94.9% · v5.2.12026-07-23 · 94.9% · v5.2.12026-07-23 · 94.9% · v5.2.12026-07-23 · 94.9% · v5.2.12026-07-24 · 94.9% · v5.2.12026-07-24 · 94.9% · v5.2.12026-07-25 · 94.9% · v5.2.12026-07-25 · 94.9% · v5.2.12026-07-28 · 94.9% · v5.2.12026-08-01 · 94.9% · v5.2.12026-08-10 · 94.9% · v5.2.12026-10-08 · 94.9% · v5.2.12026-10-08 · 94.9% · v5.2.12026-10-08 · 94.9% · v5.2.12026-10-08 · 94.9% · v5.2.12026-10-08 · 94.9% · v5.2.12026-10-08 · 94.9% · v5.2.12026-10-09 · 94.9% · v5.2.12026-10-09 · 94.9% · v5.2.12026-10-11 · 94.9% · v5.2.12026-10-11 · 94.9% · 5.2.1 → 5.4.32026-10-12 · 94.9% · v5.4.32026-10-12 · 94.9% · v5.4.32026-10-13 · 94.9% · v5.4.32026-10-13 · 94.9% · v5.4.32026-10-14 · 94.9% · v5.4.32026-10-15 · 94.9% · v5.4.32026-10-15 · 94.9% · v5.4.32026-10-16 · 94.9% · v5.4.32026-07-13 · 97.1%2026-07-15 · 97.1%2026-07-15 · 97.1%2026-07-16 · 97.1%2026-07-16 · 97.1%2026-07-16 · 97.1%2026-07-16 · 97.1%2026-07-18 · 97.1%2026-07-18 · 97.1%2026-07-18 · 97.1%2026-07-19 · 97.1%2026-07-19 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1%2026-07-20 · 97.1% · v2.9.02026-07-20 · 97.1% · v2.9.02026-07-21 · 97.1% · v2.9.02026-07-21 · 97.1% · v2.9.02026-07-21 · 97.1% · v2.9.02026-07-21 · 97.1% · v2.9.02026-07-21 · 97.1% · v2.9.02026-07-21 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-22 · 97.1% · v2.9.02026-07-23 · 97.1% · v2.9.02026-07-23 · 97.1% · v2.9.02026-07-23 · 97.1% · v2.9.02026-07-23 · 97.1% · v2.9.02026-07-23 · 97.1% · v2.9.02026-07-23 · 97.1% · v2.9.02026-07-24 · 97.1% · v2.9.02026-07-24 · 97.1% · v2.9.02026-07-25 · 97.1% · v2.9.02026-07-25 · 97.1% · v2.9.02026-07-28 · 97.1% · v2.9.02026-08-01 · 97.1% · v2.9.02026-08-10 · 97.1% · v2.9.02026-10-08 · 97.1% · v2.9.02026-10-08 · 97.1% · v2.9.02026-10-08 · 97.1% · v2.9.02026-10-08 · 97.1% · v2.9.02026-10-08 · 97.1% · v2.9.02026-10-08 · 97.1% · v2.9.02026-10-09 · 97.1% · v2.9.02026-10-09 · 97.1% · v2.9.02026-10-11 · 97.1% · v2.9.02026-10-11 · 97.1% · v2.9.02026-10-12 · 97.1% · v2.9.02026-10-12 · 97.1% · v2.9.02026-10-13 · 97.1% · v2.9.02026-10-13 · 97.1% · v2.9.02026-10-14 · 97.1% · v2.9.02026-10-15 · 97.1% · v2.9.02026-10-15 · 97.1% · v2.9.02026-10-16 · 97.1% · v2.9.0

Full breakdown — 373 cases, per library:

LibraryPassedTotalScore
Lightning YAML36737398.4%
yaml (eemeli) 2.9.036237397.1%
js-yaml 5.4.335437394.9%

How many kilobytes each library adds to a browser bundle when an app imports only parse + stringify and ships it minified — a whole-library figure, not split by operation. Measured with js-yaml, yaml (eemeli), and lightning-yaml, tree-shaken and gzipped the same way a real app would ship them. Sizes are deterministic (not machine-dependent). Lower is better.

Generated 2026-10-16 · source 353832bfc94feada26c8e5c0fcc431b9e9b701b1

Bundle size (browser)

Lower is better. Minified + gzipped, the smallest result across 3 bundlers (vite, webpack, rolldown) for each library — parse + stringify only, tree-shaken.

Bundle size (browser, minified + gzip, smallest across bundlers)Bundle size (browser, minified + gzip, smallest across bundlers) — lower is better. Lightning YAML 0.1.1 12.1 KB, js-yaml 5.4.3 16.0 KB, yaml (eemeli) 2.9.0 29.1 KB.0.0 KB7.5 KB15.0 KB22.5 KB30.0 KBLightning YAML 0.1.112.1 KBjs-yaml 5.4.316.0 KByaml (eemeli) 2.9.029.1 KB

Full breakdown — every bundler, gzip with the raw minified size alongside:

BundlerLightning YAML 0.1.1js-yaml 5.4.3yaml (eemeli) 2.9.0
vite12.6 KB (41.8 KB min)16.1 KB (55.0 KB min)29.4 KB (96.5 KB min)
webpack12.5 KB (41.6 KB min)16.0 KB (54.4 KB min)29.3 KB (96.3 KB min)
rolldown (rust)12.1 KB (41.2 KB min)16.4 KB (54.9 KB min)29.1 KB (95.1 KB min)

Bundle size, run over run

Lower is better. Smallest gzip across bundlers (KB) per library, one document per published run, oldest to newest.

  • Lightning YAML 0.1.1
  • js-yaml 5.4.3
  • yaml (eemeli) 2.9.0
Bundle size over time (smallest gzip across bundlers)Bundle size over time (smallest gzip across bundlers) — lower is better. Trend across 67 benchmark runs, oldest to newest; latest values: Lightning YAML 0.1.1 12.1 KB, js-yaml 5.4.3 16.0 KB, yaml (eemeli) 2.9.0 29.1 KB.0.0 KB7.5 KB15.0 KB22.5 KB30.0 KB2026-07-152026-07-212026-07-252026-10-162026-07-15 · 11.5 KB · v0.1.02026-07-15 · 11.5 KB · v0.1.02026-07-16 · 11.5 KB · v0.1.02026-07-16 · 11.5 KB · v0.1.02026-07-16 · 11.7 KB · v0.1.02026-07-16 · 11.7 KB · v0.1.02026-07-18 · 11.7 KB · v0.1.02026-07-18 · 11.7 KB · v0.1.02026-07-18 · 11.7 KB · v0.1.02026-07-19 · 11.7 KB · v0.1.02026-07-19 · 11.7 KB · v0.1.02026-07-20 · 11.7 KB · v0.1.02026-07-20 · 11.7 KB · v0.1.02026-07-20 · 11.7 KB · v0.1.02026-07-20 · 11.7 KB · v0.1.02026-07-20 · 11.7 KB · v0.1.02026-07-20 · 11.7 KB · 0.1.0 → 0.1.12026-07-20 · 11.7 KB · v0.1.12026-07-20 · 11.7 KB · v0.1.12026-07-20 · 11.7 KB · v0.1.12026-07-20 · 11.7 KB · v0.1.12026-07-21 · 11.7 KB · v0.1.12026-07-21 · 11.7 KB · v0.1.12026-07-21 · 11.7 KB · v0.1.12026-07-21 · 11.7 KB · v0.1.12026-07-21 · 11.7 KB · v0.1.12026-07-21 · 11.7 KB · v0.1.12026-07-22 · 11.7 KB · v0.1.12026-07-22 · 11.7 KB · v0.1.12026-07-22 · 11.7 KB · v0.1.12026-07-22 · 11.7 KB · v0.1.12026-07-22 · 11.7 KB · v0.1.12026-07-22 · 11.9 KB · v0.1.12026-07-22 · 11.9 KB · v0.1.12026-07-22 · 11.9 KB · v0.1.12026-07-22 · 11.9 KB · v0.1.12026-07-23 · 11.9 KB · v0.1.12026-07-23 · 11.9 KB · v0.1.12026-07-23 · 11.9 KB · v0.1.12026-07-23 · 11.9 KB · v0.1.12026-07-23 · 11.9 KB · v0.1.12026-07-23 · 11.9 KB · v0.1.12026-07-24 · 11.9 KB · v0.1.12026-07-24 · 12.0 KB · v0.1.12026-07-25 · 12.0 KB · v0.1.12026-07-25 · 12.0 KB · v0.1.12026-07-28 · 12.0 KB · v0.1.12026-08-01 · 12.0 KB · v0.1.12026-08-10 · 12.0 KB · v0.1.12026-10-08 · 12.0 KB · v0.1.12026-10-08 · 12.0 KB · v0.1.12026-10-08 · 12.0 KB · v0.1.12026-10-08 · 12.1 KB · v0.1.12026-10-08 · 12.1 KB · v0.1.12026-10-08 · 12.1 KB · v0.1.12026-10-09 · 12.1 KB · v0.1.12026-10-09 · 12.1 KB · v0.1.12026-10-11 · 12.1 KB · v0.1.12026-10-11 · 12.1 KB · v0.1.12026-10-12 · 12.1 KB · v0.1.12026-10-12 · 12.1 KB · v0.1.12026-10-13 · 12.1 KB · v0.1.12026-10-13 · 12.1 KB · v0.1.12026-10-14 · 12.1 KB · v0.1.12026-10-15 · 12.1 KB · v0.1.12026-10-15 · 12.1 KB · v0.1.12026-10-16 · 12.1 KB · v0.1.12026-07-15 · 15.5 KB · v5.2.12026-07-15 · 15.5 KB · v5.2.12026-07-16 · 15.5 KB · v5.2.12026-07-16 · 15.5 KB · v5.2.12026-07-16 · 15.5 KB · v5.2.12026-07-16 · 15.5 KB · v5.2.12026-07-18 · 15.5 KB · v5.2.12026-07-18 · 15.5 KB · v5.2.12026-07-18 · 15.5 KB · v5.2.12026-07-19 · 15.5 KB · v5.2.12026-07-19 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-20 · 15.5 KB · v5.2.12026-07-21 · 15.5 KB · v5.2.12026-07-21 · 15.5 KB · v5.2.12026-07-21 · 15.5 KB · v5.2.12026-07-21 · 15.5 KB · v5.2.12026-07-21 · 15.5 KB · v5.2.12026-07-21 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-22 · 15.5 KB · v5.2.12026-07-23 · 15.5 KB · v5.2.12026-07-23 · 15.5 KB · v5.2.12026-07-23 · 15.5 KB · v5.2.12026-07-23 · 15.5 KB · v5.2.12026-07-23 · 15.5 KB · v5.2.12026-07-23 · 15.5 KB · v5.2.12026-07-24 · 15.5 KB · v5.2.12026-07-24 · 15.5 KB · v5.2.12026-07-25 · 15.5 KB · v5.2.12026-07-25 · 15.5 KB · v5.2.12026-07-28 · 15.5 KB · v5.2.12026-08-01 · 15.5 KB · v5.2.12026-08-10 · 15.5 KB · v5.2.12026-10-08 · 15.5 KB · v5.2.12026-10-08 · 15.5 KB · v5.2.12026-10-08 · 15.5 KB · v5.2.12026-10-08 · 15.5 KB · v5.2.12026-10-08 · 15.5 KB · v5.2.12026-10-08 · 15.5 KB · v5.2.12026-10-09 · 15.5 KB · v5.2.12026-10-09 · 15.5 KB · v5.2.12026-10-11 · 15.5 KB · v5.2.12026-10-11 · 16.0 KB · 5.2.1 → 5.4.32026-10-12 · 16.0 KB · v5.4.32026-10-12 · 16.0 KB · v5.4.32026-10-13 · 16.0 KB · v5.4.32026-10-13 · 16.0 KB · v5.4.32026-10-14 · 16.0 KB · v5.4.32026-10-15 · 16.0 KB · v5.4.32026-10-15 · 16.0 KB · v5.4.32026-10-16 · 16.0 KB · v5.4.32026-07-15 · 29.1 KB · v2.9.02026-07-15 · 29.1 KB · v2.9.02026-07-16 · 29.1 KB · v2.9.02026-07-16 · 29.1 KB · v2.9.02026-07-16 · 29.1 KB · v2.9.02026-07-16 · 29.1 KB · v2.9.02026-07-18 · 29.1 KB · v2.9.02026-07-18 · 29.1 KB · v2.9.02026-07-18 · 29.1 KB · v2.9.02026-07-19 · 29.1 KB · v2.9.02026-07-19 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-20 · 29.1 KB · v2.9.02026-07-21 · 29.1 KB · v2.9.02026-07-21 · 29.1 KB · v2.9.02026-07-21 · 29.1 KB · v2.9.02026-07-21 · 29.1 KB · v2.9.02026-07-21 · 29.1 KB · v2.9.02026-07-21 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-22 · 29.1 KB · v2.9.02026-07-23 · 29.1 KB · v2.9.02026-07-23 · 29.1 KB · v2.9.02026-07-23 · 29.1 KB · v2.9.02026-07-23 · 29.1 KB · v2.9.02026-07-23 · 29.1 KB · v2.9.02026-07-23 · 29.1 KB · v2.9.02026-07-24 · 29.1 KB · v2.9.02026-07-24 · 29.1 KB · v2.9.02026-07-25 · 29.1 KB · v2.9.02026-07-25 · 29.1 KB · v2.9.02026-07-28 · 29.1 KB · v2.9.02026-08-01 · 29.1 KB · v2.9.02026-08-10 · 29.1 KB · v2.9.02026-10-08 · 29.1 KB · v2.9.02026-10-08 · 29.1 KB · v2.9.02026-10-08 · 29.1 KB · v2.9.02026-10-08 · 29.1 KB · v2.9.02026-10-08 · 29.1 KB · v2.9.02026-10-08 · 29.1 KB · v2.9.02026-10-09 · 29.1 KB · v2.9.02026-10-09 · 29.1 KB · v2.9.02026-10-11 · 29.1 KB · v2.9.02026-10-11 · 29.1 KB · v2.9.02026-10-12 · 29.1 KB · v2.9.02026-10-12 · 29.1 KB · v2.9.02026-10-13 · 29.1 KB · v2.9.02026-10-13 · 29.1 KB · v2.9.02026-10-14 · 29.1 KB · v2.9.02026-10-15 · 29.1 KB · v2.9.02026-10-15 · 29.1 KB · v2.9.02026-10-16 · 29.1 KB · v2.9.0