The workshop · Edition No. 56 · 20 Oct 2026

jqlang/jq

A command-line program that filters and reshapes JSON, in the way that sed and awk handle lines of text.

← The workshopRead the whole edition →
jq: reads and reshapes JSON. Pulls the part you want out of a JSON file.

35.9k stars · MIT | [jqlang.org](https://jqlang.org) · jq-1.8.2 (2026-06-20) · Track this in Scout

A command-line program that filters and reshapes JSON, in the way that sed and awk handle lines of text.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You pipe JSON in, give jq a short expression, and it prints the result. The expression language slices into nested objects and arrays, selects by condition, maps over lists, joins and groups, builds new objects, and formats the output as JSON or as plain text. It is written in portable C with no runtime dependencies, which is why it exists as a single standalone binary for macOS, Linux and Windows on its releases page, and as a container image at ghcr.io/jqlang/jq. The repository ships the decNumber library for precise decimal arithmetic, so large numbers survive a round trip instead of being quietly rounded. The documentation is under CC BY 3.0 and the project runs an online playground for trying an expression before committing it to a script. The limits are worth knowing: it reads JSON and nothing else, so YAML, XML and CSV need a different tool, and the expression language is a real language — the first few filters are easy and the day you need reduce or to_entries you will be reading the manual.

Why it matters

Who it suits. Anyone who works at a command line and touches an API, a log file, a configuration file or a cloud provider's output. That is close to everybody, which is why 35,743 stars understates it. It is also the right first tool for a non-programmer handed a JSON export and told to find something in it, because jq '.' alone prints it readably. Skip it only if you never see JSON.

Verdict. Install it. Five minutes, one binary, no dependencies, and it will still be useful in ten years. This is the gold entry today and the case is not close. The honest cautions are small. The expression language gets strange at the edges, and the usual mistake is reaching for a long jq program where ten lines of Python would be clearer — if your filter no longer fits on one line, that is the signal. Currency is proven: code pushed on 1 October 2026 against 1,966 commits, which is a project that changes slowly because it is finished rather than because it is abandoned. For YAML and the other formats, mikefarah/yq uses a deliberately similar expression style.

Stars35.9k
LicenceMIT | [jqlang.org](https://jqlang.org)
Latestjq-1.8.2 (2026-06-20)
Good
  • One standalone binary with no runtime dependencies, available for every common system and as a container image.
  • An expression language powerful enough that most one-off data questions become a single line.
  • Precise decimal arithmetic through the bundled decNumber library, so big numbers are not silently rounded.
Watch for
  • JSON only. YAML, XML, CSV and TOML all need something else.
  • The expression language is genuinely a language, and its error messages are terse.
  • Building from source needs libtool, make, automake and autoconf, so most people should take the binary instead.
Similar repositories
  • mikefarah/yq

    The same style of expression applied to YAML, JSON, XML, CSV, TOML, HCL and properties files; a different tool for a wider set of formats.

    Track this in Scout
  • tomnomnom/gron

    Turns JSON into one assignment per line so ordinary grep works on it, then turns the result back; a different answer with nothing to learn.

    Track this in Scout
  • jpmens/jo

    The opposite direction: it builds JSON from shell arguments rather than reading it. Its repository page links a licence file without naming the licence.

    Track this in Scout
Install
# macOS or Linux with Homebrew
brew install jq
# Debian or Ubuntu
sudo apt install jq
# Or a standalone binary from https://github.com/jqlang/jq/releases
# First try:
echo '{"items":[{"name":"a","n":1},{"name":"b","n":2}]}' | jq '.items[] | select(.n > 1) | .name'

On Stack Radar: Build & Ship › APIs & Developer Utilities › API Clients.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.