A jq clone written in Rust focused on correctness, speed, and simplicity, with support for YAML, CBOR, TOML, and XML.
jaq is a Rust-based clone of the jq command-line JSON processor that also supports YAML, CBOR, TOML, and XML. It provides a faster, more correct, and thread-safe implementation for filtering and transforming structured data. The project includes both a standalone CLI tool and a library for embedding jq functionality into Rust applications.
Developers and data engineers who work with JSON and other structured data formats in shell pipelines or within Rust programs. It's particularly useful for those needing performance improvements, multi-threading safety, or extended format support beyond jq.
jaq offers superior performance in many scenarios, especially for processing many small files, along with a memory-safe, thread-safe library API. Its focus on correctness and support for additional data formats makes it a robust alternative to jq.
A jq clone focussed on correctness, speed, and simplicity
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Handles JSON, YAML, CBOR, TOML, and XML natively, extending jq's utility to diverse data formats without external converters, as highlighted in the README.
Benchmarks show faster startup and execution than jq in many cases, particularly for processing many small files, with detailed performance tables in the README.
The jaq-core library is designed for safe use in multi-threaded Rust environments, enabling embedded jq functionality without concurrency issues, unlike jq's API.
Built with Rust's memory safety, audited by Radically Open Security, and emphasizes a more predictable implementation of jq semantics, with fuzzing and extensive tests.
While aiming for correctness, jaq may not replicate all jq idiosyncrasies, potentially breaking scripts that depend on specific, non-standard behaviors admitted in the README's goals.
jaq explicitly does not guard against unlimited time, memory, or stack usage, making it vulnerable to crashes from malicious or malformed inputs, as noted in the security section.
Compared to jq, jaq has a smaller community and fewer third-party resources, which can hinder support and integration for niche use cases.
jaq is an open-source alternative to the following products: