Serialbench

Measurement console · run 2026-08-28

How fast can Ruby read and write your data?

Every XML, JSON, YAML and TOML serializer in the ecosystem, measured on the same workloads across20platform and Ruby combinations. Pick a format, pin a reference, and read the field.

Format
Operation
Input size

Field ranking — iterations per second, higher is better

macOS 14 · arm64 · Ruby 3.2 · Parse · large input

0.007.5315.122.630.1
vs ref

Consistency across input sizes — log scale

A library that wins at every size is a safe default; one that wins only at large fits that workload.

Memory — large input, lower is better

Solid: allocated during operation · outline: retained afterwards

  • ox249709.60 GB
  • nokogiri566073.33 GB
  • rexml1898582.15 GB
  • oga3260168.26 GB
Cite this
“nokogiri parses large XML 1.0× faster than ox on macOS 14 · arm64 · Ruby 3.2 — serialbench, 2026-08-28”

Will it run on my stack — coverage across measured environments

Derived from the runs themselves: a dot means the library loaded and completed the benchmark on that platform.

LibrarymacOS 14arm64 · 3.2macOS 14arm64 · 3.3macOS 14arm64 · 3.4macOS 14arm64 · 4.0macOS 15 Intelx64 · 3.2macOS 15 Intelx64 · 3.3macOS 15 Intelx64 · 3.4macOS 15 Intelx64 · 4.0macOS 15arm64 · 3.2macOS 15arm64 · 3.3macOS 15arm64 · 3.4macOS 15arm64 · 4.0macOS 26 Intelx64 · 3.2macOS 26 Intelx64 · 3.3macOS 26 Intelx64 · 3.4macOS 26 Intelx64 · 4.0macOS 26arm64 · 3.2macOS 26arm64 · 3.3macOS 26arm64 · 3.4macOS 26arm64 · 4.0
json
nokogiri
oga
oj
ox
psych
rapidjson
rexml
toml-rb
tomlib
tomlrb
yajl

Feature comparison — what each API offers, beyond speed

Capabilities declared by the adapters · all libraries benchmark DOM-style parsing; a StAX column appears when a binding exposes a pull API.

json

LibraryVersion
rexml3.4.4
ox2.14.29
nokogiri1.19.4
oga3.5
json2.21.2
oj3.17.6
rapidjson0.4.0
yajl1.4.3
psych5.2.2
toml-rb4.2.1
tomlib0.7.3
tomlrb2.0.4

Raw data

Full results per environment and the complete resultset are exported as YAML alongside this site —data/<environment>.yamlanddata/resultset.yaml. Re-run any leg withserialbench environment executeusing the configs in the repository.