finds.dev← search

// the find

jqlang/jq

★ 35,286 · C · NOASSERTION · updated Jul 2026

Command-line JSON processor

jq is the standard tool for slicing and querying JSON from the command line — a single static binary with its own small functional language. It's been around since 2012 and is effectively infrastructure at this point, showing up in CI pipelines, shell scripts, and anywhere you need to extract fields from API responses without reaching for Python.

Zero runtime dependencies and a fully static build option means it goes anywhere — embedded systems, minimal containers, air-gapped servers. The filter language is genuinely expressive: recursive descent, reduce, label-break, try-catch, and SQL-style operators cover most real transformation needs without awkward workarounds. The fuzz test suite (seven separate fuzz targets covering parse, compile, execute, and streaming paths) is unusually thorough for a C project of this age. Release cadence has picked up meaningfully — v1.8.x shipped in 2025 after years of stagnation, including the new `modulemeta` improvements and number formatting fixes.

The filter language has a steep learning curve that never really flattens — operators like `?//` (alternative operator) and the difference between `,` and `|` trip up everyone at least once, and the error messages don't help. Number handling is IEEE 754 doubles under the hood, so large integers silently lose precision; jq will give you wrong answers on 64-bit IDs without any warning. There's no streaming output for large arrays — if you're processing a 2GB JSON file, the whole thing lands in memory. libjq as an embeddable library is technically exposed but essentially undocumented, so using it from C means reading the source.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →