jaq
github.com
What it is
jaq is a free jq clone for querying and transforming data, available as both a command-line replacement and a Rust library for compiling and running jq programs. Alongside JSON, it handles YAML, CBOR, TOML, XML, CSV, and TSV, and can convert between those formats while applying a jq filter. Its jaq-core library supports multithreaded use and data types beyond JSON. jaq also accepts arbitrary values as object keys and can process strings containing arbitrary bytes, including invalid UTF-8. The project publishes benchmarks comparing jaq with jq and gojq, and reports faster results on many benchmarks. It states that jaq is memory-safe and prevents input data or filters from initiating I/O, although filters may read files before execution. The project also warns that it does not guard against resource exhaustion, so processing may use unlimited time, memory, or stack space. Binary downloads and installation instructions are provided for Linux, macOS, and Windows, and an online playground is available. jaq is MIT-licensed.
Spec sheet
- What it does
- jaq is a Rust implementation of jq for querying and transforming structured data from the command line.Read 15 Oct 2026 · github.com
- Purpose
- jaq is a jq clone focused on correctness, speed, and simplicity.Read 4 Oct 2026 · github.com
- Security
- The project says jaq is memory-safe and does not let input data or filters initiate I/O, except that filters may read files before execution.Read 4 Oct 2026 · github.com
- License
- The project repository identifies jaq as MIT-licensed.Read 4 Oct 2026 · github.com
- Maker
- The GitHub account identifies the maintainer as Michael Färber, a computer-science PhD focused on logic and automated reasoning.Read 15 Oct 2026 · github.com
- API halt handling
- Version 3.1 lets callers handle halt from filters through the jaq API instead of forcibly terminating the process.Read 15 Oct 2026 · github.com
- Arch distribution
- Arch Linux packages jaq 3.1.1-1 for x86_64 in its Extra repository.Read 15 Oct 2026 · archlinux.org
- CLI and library
- jaq is both a command-line jq replacement and a Rust library for compiling and running jq programs.Read 4 Oct 2026 · github.com
- Conversions
- It can convert data between supported formats while transforming it with a jq filter.Read 4 Oct 2026 · github.com
- CSV and TSV
- Version 3.0 added CSV and TSV format support.Read 15 Oct 2026 · github.com
- Custom data types
- jaq-core can process data types beyond JSON and supports embedding application-defined values through its ValT trait.Read 15 Oct 2026 · docs.rs
- Distribution conflict
- Homebrew warns that jaq conflicts with json2tsv because both install binaries named jaq.Read 15 Oct 2026 · formulae.brew.sh
- Downloads
- The project provides binary downloads for Linux, Mac, and Windows, and documents installation via Homebrew and Cargo.Read 4 Oct 2026 · github.com
- Extra value support
- jaq supports arbitrary values as object keys and can process strings containing arbitrary bytes, including invalid UTF-8.Read 4 Oct 2026 · github.com
- Filters
- The project adds filters including path-related operations, format conversion functions, tobytes, toboolean, @htmld and halt/1.Read 15 Oct 2026 · github.com
- Formats
- It supports JSON, YAML, CBOR, TOML, XML, CSV, and TSV data formats.Read 4 Oct 2026 · github.com
- Funding
- The project acknowledges NLnet grants funded through NGI0 Entrust and NGI0 Commons, with additional support from the Swiss State Secretariat for Education, Research and Innovation.Read 15 Oct 2026 · github.com
- Homebrew distribution
- Homebrew provides jaq 3.1.1 bottles for Apple Silicon and Intel macOS plus ARM64 and x86_64 Linux.Read 15 Oct 2026 · formulae.brew.sh
- Independent ecosystem scale
- Market.dev lists jaq as an active MIT-licensed Rust project with about 2.6 million downloads and 3.7 thousand stars.Read 15 Oct 2026 · explore.market.dev
- Independent performance research
- A peer-reviewed research paper reports jaq faster than jq on ten of thirteen benchmarks.Read 15 Oct 2026 · arxiv.org
- Installation
- Prebuilt binaries are offered for Linux, macOS and Windows, and source installation uses Cargo with a Rust toolchain.Read 15 Oct 2026 · github.com
- JSON compatibility
- The project is intended as a drop-in jq replacement and aims to preserve jq compatibility in most cases.Read 15 Oct 2026 · docs.rs
- Latest documented release
- Docs.rs lists jaq 3.1.1 as released on 5 August 2026.Read 15 Oct 2026 · docs.rs
- Library safety
- The jaq-core library can be used in multithreaded environments and supports data types beyond JSON.Read 4 Oct 2026 · github.com
- Licence
- The GitHub repository and package distributors identify jaq as MIT-licensed.Read 15 Oct 2026 · github.com
- Maker location
- Michael Färber's GitHub profile lists Innsbruck as his location.Read 15 Oct 2026 · github.com
- Manual
- jaq provides its own reference manual with nearly 500 automatically tested examples and a man page.Read 15 Oct 2026 · github.com
- Native filters
- The API allows arbitrary Rust data to be passed to native filters at runtime.Read 15 Oct 2026 · github.com
- Performance
- The project publishes benchmarks comparing jaq with jq and gojq, and reports jaq as faster on many benchmarks.Read 4 Oct 2026 · github.com
- Performance benchmark
- In the project's benchmark table, jaq 3.0 was fastest in 20 tested cases, compared with five for jq and six for gojq.Read 15 Oct 2026 · github.com
- Playground
- A browser playground is available for trying jaq interactively.Read 15 Oct 2026 · gedenkt.at
- Praise: embedding
- A Rust-community release discussion highlights that jaq can be embedded as a scripting language and adapted to custom data types.Read 15 Oct 2026 · reddit.com
- Praise: jq compatibility
- A Rust-community discussion praises jaq's close jq syntax and compatibility while contrasting it with yq's different query language.Read 15 Oct 2026 · reddit.com
- Project creation
- Market.dev records the project as created in December 2020.Read 15 Oct 2026 · explore.market.dev
- Rust API
- The jaq-core crate compiles and runs jq programs inside Rust applications.Read 15 Oct 2026 · docs.rs
- Security audits
- The core was audited twice by Radically Open Security through NLnet grants; reported moderate- and low-severity issues were addressed and fuzzing targets were added.Read 15 Oct 2026 · docs.rs
- Security design
- jaq states that it aims to avoid panics, memory corruption and I/O initiated by input data or filters, apart from permitted file reads before execution.Read 15 Oct 2026 · docs.rs
- Security limitation
- jaq does not impose defenses against resource exhaustion, so inputs or recursive filters can consume unlimited time, memory or stack space.Read 15 Oct 2026 · docs.rs
- Security limits
- jaq does not guard against resource exhaustion, so processing may consume unlimited time, memory, or stack space.Read 4 Oct 2026 · github.com
- Supported formats
- Besides JSON, jaq supports YAML, CBOR, TOML and XML input and output.Read 15 Oct 2026 · github.com
- System requirement
- The project says jaq should work on any platform supported by Rust.Read 15 Oct 2026 · github.com
- Testing
- The project reports a test suite containing more than 500 tests.Read 15 Oct 2026 · docs.rs
- Thread safety
- Compared with jq's API, jaq-core is designed for multithreaded use, and jaq-json can provide Send and Sync values with its sync feature.Read 15 Oct 2026 · github.com
- Try it
- The project links to an online playground where users can try jaq.Read 4 Oct 2026 · github.com
- XJON values
- jaq's extended JSON representation supports arbitrary-size integers, byte strings, invalid UTF-8, non-string object keys, comments, Infinity and NaN.Read 15 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Supports JSON, YAML, CBOR, TOML, XML, CSV, and TSV.
- Can convert formats while applying jq filters.
- Rust library supports multithreaded environments.
- Free and MIT-licensed.
Limits
- Does not guard against resource exhaustion.
- Filters may read files before execution.
Who it suits
jaq suits developers who want a jq-compatible command-line tool or a Rust library for data processing. Its format support may be useful when working with data beyond JSON.
Verdict
jaq extends jq-style querying to several data formats and is available as both a CLI tool and a Rust library. Its unrestricted resource use is an important consideration when processing untrusted or costly inputs.
Where Specifiction places it
- JSON Tools#1 of 298.9