gojq vs jaq
gojq
github.comjaq
github.comSide by side
| Figure | gojq | jaq |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | Yes |
| Web | — | Yes |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| API | — | Yes |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 2 |
| Spec score · JSON Tools | 8.5 (#5) | 8.9 (#1) |
| License | The project is released under the MIT License. | The project repository identifies jaq as MIT-licensed. |
| Purpose | gojq is a pure Go implementation of the jq command-line JSON processor and can also be embedded as a library in Go products. | jaq is a jq clone focused on correctness, speed, and simplicity. |
Plans
In their own words
gojq
gojq is a free, MIT-licensed Go implementation of the jq command, with a library for embedding queries in Go products. The command-line tool applies jq-style queries to JSON, including filtering, field selection, updates, and multiple input values. It reads YAML and can produce YAML output. Integer arithmetic uses arbitrary precision for addition, subtraction, multiplication, modulo, and divisible division. The project describes gojq as portable and supports Linux, macOS, Windows, and self-hosted use. Documented installation routes include Homebrew, mise, Zero Install, source builds, and Docker images. Go applications can parse and run queries, compile them for reuse, and configure custom functions and iterators. Environment-variable access and module loading are disabled by default for library queries and require configured loaders. gojq does not preserve object key order and lacks some jq extensions, flags, functions, and regular-expression behavior.
jaq
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.