An extremely fast, header-only C++23 library for JSON and binary serialization with compile-time reflection.
Glaze is an extremely fast, header-only serialization library for modern C++ that supports JSON, BEVE, CBOR, CSV, MessagePack, TOML, YAML, and other formats. It solves the problem of high-performance data interchange by reading and writing directly from object memory using compile-time reflection, eliminating the need for manual metadata or macros.
C++ developers building high-performance applications that require efficient serialization/deserialization, such as game engines, financial systems, embedded software, and network services.
Developers choose Glaze for its exceptional speed (often outperforming simdjson and yyjson), support for multiple formats from a single codebase, and seamless integration via pure compile-time reflection that requires no boilerplate.
Extremely fast, in memory, serialization, reflection, and RPC library for C++. JSON, BEVE, CBOR, CSV, JSONB, MessagePack, TOML, YAML, EETF
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show Glaze outperforms simdjson and yyjson in roundtrip times, with direct memory serialization and SIMD optimizations enabling write speeds up to 1396 MB/s.
Handles JSON, BEVE, CBOR, CSV, MessagePack, TOML, YAML, and more from a single codebase, reducing dependency management overhead for diverse data interchange needs.
Automatically serializes aggregate structs without macros or runtime metadata, and with P2996 reflection, supports non-aggregate types and automatic enum serialization.
Pure standard C++ library that works with -fno-exceptions and -fno-rtti, ideal for embedded systems and minimizing project complexity.
Includes JSON Schema generation, JMESPath querying, streaming I/O for large files, and detailed error formatting, extending beyond basic serialization.
Requires C++23, which excludes older codebases, and P2996 reflection needs experimental compilers like GCC 16+ or Bloomberg clang, limiting immediate adoption.
Defaults to error codes and std::expected instead of exceptions, forcing developers to write more boilerplate for error management compared to throw-based libraries.
Advanced features like custom wrappers, reflection API, and compile-time options are powerful but documented across scattered pages, increasing initial setup time.
Requires the /Zc:preprocessor flag for conformant preprocessing, adding an extra step in build configuration that can trip up new users.