jaq is a jq clone focused on correctness, speed, and simplicity.
It aims to support a large subset of jq’s syntax and operations.
This is free and open source software.
Key Features
- Basics:
- Identity (.)
- Recursion (..)
- Basic data types (null, boolean, number, string, array, object)
- if-then-else (if .a < .b then .a else .b end)
- Folding (reduce .[] as $x (0; . + $x), foreach .[] as $x (0; . + $x; . + .))
- Error handling (try … catch …)
- String interpolation (“The successor of \(.) is \(.+1).”)
- Format strings (@json, @text, @csv, @tsv, @html, @sh, @base64, @base64d)
- Paths:
- Indexing of arrays/objects (.[0], .a, .[“a”])
- Iterating over arrays/objects (.[])
- Optional indexing/iteration (.a?, .[]?)
- Array slices (.[3:7], .[0:-1])
- String slices
- Operators:
- Composition (|)
- Binding (. as $x | $x)
- Concatenation (,)
- Plain assignment (=)
- Update assignment (|=, +=, -=)
- Alternation (//)
- Logic (or, and)
- Equality and comparison (.a == .b, .a < .b)
- Arithmetic (+, -, *, /, %)
- Negation (-)
- Error suppression (?)
- Definitions:
- Basic definitions (def map(f): [.[] | f];)
- Recursive definitions (def r: r; r)
- Core filters:
- Empty (empty)
- Errors (error)
- Input (inputs)
- Length (length, utf8bytelength)
- Rounding (floor, round, ceil)
- String <-> JSON (fromjson, tojson)
- String <-> integers (explode, implode)
- String normalisation (ascii_downcase, ascii_upcase)
- String prefix/postfix (startswith, endswith, ltrimstr, rtrimstr)
- String splitting (split(“foo”))
- Array filters (reverse, sort, sort_by(-.), group_by, min_by, max_by)
- Stream consumers (first, last, range, fold)
- Stream generators (range, recurse)
- Time (now, fromdateiso8601, todateiso8601)
- More numeric filters (sqrt, sin, log, pow, …) (list of numeric filters)
- Standard filters:
- These filters are defined via more basic filters. Their definitions are at std.jq.
- Undefined (null)
- Booleans (true, false, not)
- Special numbers (nan, infinite, isnan, isinfinite, isfinite, isnormal)
- Type (type)
- Filtering (select(. >= 0))
- Selection (values, nulls, booleans, numbers, strings, arrays, objects, iterables, scalars)
- Conversion (tostring, tonumber)
- Iterable filters (map(.+1), map_values(.+1), add, join(“a”))
- Array filters (transpose, first, last, nth(10), flatten, min, max)
- Object-array conversion (to_entries, from_entries, with_entries)
- Universal/existential (all, any)
- Recursion (walk)
- I/O (input)
- Regular expressions (test, scan, match, capture, splits, sub, gsub)
- Time (fromdate, todate)
- Numeric filters – imports many filters from libm and follows their type signature.
Website: github.com/01mf02/jaq
Support:
Developer: Michael Färber
License: MIT License

jaq is written in Rust. Learn Rust with our recommended free books and free tutorials
Related Software
| JSON Tools | |
|---|---|
| jq | Lightweight and flexible JSON processor. It's like sed for JSON |
| fx | JSON viewer with streaming and mouse support |
| jaq | jq clone focused on correctness, speed, and simplicity. |
| gron | Transforms JSON into discrete assignments to make it easier to grep |
| gojq | Pure Go implementation of jq |
| jless | Command-line JSON viewer written in Rust |
| jnv | Navigates JSON offering a viewer and filter editor |
| JSON Editor | View, edit, format, and validate JSON |
| jid | JSON incremental digger by using filtering queries |
| jo | Small utility to create JSON objects |
| faq | Billed as a more flexible jq supporting additional formats |
| jello | Filter JSON and JSON Lines data with Python syntax |
| jq but an interoperable configuration format transcoder | |
| json-tui | JSON terminal UI |
| jiq | Interactive JSON query tool |
| emuto | Small language for manipulating and restructuring JSON and other data |
| svelte-jsoneditor | View, edit, format, transform, and validate JSON |
| qo | Query JSON, CSV, and TSV files using SQL |
| Janice | Desktop app for viewing large JSON files |
| unqery | Query and transform JSON data |
| Twig | Terminal JSON viewer and YAML viewer |
| jtc | Extract, manipulate and transform source JSON |
| pyfx | Python-native TUI JSON viewer |
| kirill | JSON validator |
| jshon | Parses, reads and creates JSON. It's designed to be as usable as possible |
| jsawk | Like awk, but for JSON |
| jqp | TUI playground to experiment with jq |
Read our verdict in the software roundup.
| Alternatives to jq | |
|---|---|
| fx | JavaScript Object Notation (JSON) viewer with streaming and mouse support |
| gojq | Pure Go implementation of jq |
| jello | Filter JSON and JSON Lines data with Python syntax |
| jless | Command-line JSON viewer written in Rust |
| emuto | Small language for manipulating and restructuring JSON and other data files |
| unqery | Query and transform JSON data |
| htmlq | Like jq but for HTML |
| faq | Billed as a more flexible jq supporting additional formats |
| jaq | jq clone focused on correctness, speed, and simplicity |
| Interoperable configuration format transcoder with jq query syntax | |
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |

