Parsing gigabytes of JSON per second
JSON is everywhere on the Internet. Servers spend a lot of time parsing it. We need a fresh approach.
#include "simdjson.h"
using namespace simdjson;
int main() {
ondemand::parser parser;
padded_string json = padded_string::load("twitter.json");
ondemand::document tweets = parser.iterate(json);
std::cout << uint64_t(tweets["search_metadata"]["count"])
<< " results." << std::endl;
}
Highlights
Fast
Over 4× faster than RapidJSON and 25× faster than JSON for Modern C++.
Easy
First-class, easy-to-use, and carefully documented APIs.
Strict
Full JSON and UTF-8 validation, lossless parsing. Performance with no compromises.
Automatic
Selects a CPU-tailored parser at runtime. No configuration needed.
Reliable
From memory allocation to error handling, simdjson's design avoids surprises.
Peer Reviewed
Research published in VLDB Journal and Software: Practice and Experience.
Three lines from install to parse
simdjson ships as a header-only library and is packaged everywhere — Ubuntu, Debian, Fedora, Arch, Alpine, FreeBSD, Homebrew, vcpkg, conan, MSYS2. Drop it in, point it at JSON, get blazing fast results.
Quick start guide API reference
Prefer a dependency-free drop-in? Grab the amalgamated release, then add
simdjson.h and simdjson.cpp straight to your C++ project —
no package manager, no build system required.
Download singleheader.zip
# macOS
$ brew install simdjson
# Ubuntu / Debian
$ apt install libsimdjson-dev
# vcpkg
$ vcpkg install simdjson
Features
On-Demand API
A radically new approach to parsing JSON documents at memory speed.
UTF-8 Validation
Standalone validation that's faster than memcpy on some workloads. Read more →
Multithreaded NDJSON
Crunch gigantic newline-delimited JSON streams at multi-GB/s. Read more →
JSON Pointer & JSONPath
Drill into a document by path without unboxing the whole thing. Read more →
Errors, your way
Pick exceptions or error codes. Compile with or without exceptions. Read more →
Runtime dispatch
Detects AVX-512, AVX2, NEON, RISC-V, Loongarch, POWER — ships one binary. Read more →
Reflection & custom types
Plug in your own data types via tag_invoke or C++26 static reflection.
Trusted by infrastructure that ships
simdjson powers JSON parsing inside engineering teams at the scale where every cycle counts.
And a dozen ports & bindings — Python, R, Ruby, PHP, C#, Rust, Swift, Go, Erlang, Lua, Haskell. See them all →