Command-line JSON processor
35.1k
Stars
1.8k
Forks
457
Open issues
30
Contributors
AI Analysis
jq is a lightweight, portable command-line JSON processor written in C with zero runtime dependencies, designed for slicing, filtering, mapping, and transforming structured data — similar to sed/awk/grep but for JSON. It serves developers, data engineers, and DevOps practitioners who need to query and manipulate JSON from the command line or scripts. While broadly useful, it is most indispensable for those working heavily with JSON in shell environments; end-user GUI application developers ha...
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
jq: the de facto standard for command-line JSON processing, still actively maintained after 13 years
jq is a lightweight, zero-dependency C utility for filtering, transforming, and querying JSON data from the command line. It targets developers, DevOps engineers, sysadmins, and data engineers who work with APIs, logs, config files, or any JSON-heavy pipeline. With 34,939 stars, a mature ecosystem of tutorials, a dedicated Stack Overflow tag, an official playground, and deep integration into shell scripting culture, jq has effectively become infrastructure-level tooling. Its DSL is compact but expressive enough for complex reshaping operations. The project transferred to the jqlang GitHub org in 2023, signaling renewed community stewardship after an earlier period of slower maintenance.
Created by Stephen Dolan in 2012, jq predates most JSON tooling. It became a de facto standard over a decade of organic adoption in shell scripts, CI pipelines, and documentation. A governance transition moved it to the jqlang org in 2023 to ensure continuity.
Growth was primarily organic — driven by the explosion of JSON-based REST APIs and cloud infrastructure tooling from 2013 onward. No marketing campaign; adoption spread through blog posts, Stack Overflow answers, and its inclusion in package managers (Homebrew, apt, yum, etc.). The tool's zero-dependency, single-binary model made it trivially deployable in CI/CD containers and ephemeral environments, which accelerated adoption among DevOps audiences. Stars still accumulate steadily (37/week as of mid-2026), consistent with a mature tool continually discovered by new developers rather than a viral spike.
jq is bundled or recommended in official documentation for AWS CLI, GitHub Actions, Kubernetes tooling, and numerous DevOps platforms. It ships by default or via first-party package managers on most major Linux distributions and macOS (Homebrew). Stack Overflow's jq tag has tens of thousands of questions, confirming widespread real-world use. Adoption is extensively documented and production use at scale is well-established.
Written in portable C with zero runtime dependencies. Likely uses a parser/interpreter model for its DSL — the README mentions oniguruma as a regex submodule, suggesting the core is self-contained. Static linking support is explicitly documented, confirming the single-binary portability story. Likely compiled with autoconf/automake build system, which is conventional for C projects targeting broad Unix portability.
The README documents a `make check` step, indicating an automated test suite exists. Coverage level and test methodology are not detailed in the README excerpt.
Last push was 2026-06-17, two days before this analysis — the project is actively maintained. The jqlang org transition in 2023 resolved a prior governance gap. Presence of a CI workflow file (.github/workflows/ci.yml), Docker image publishing, and cross-compilation documentation all indicate a healthy, organized maintenance posture for a C project of this age.
ADOPT IF: you work with JSON in shell scripts, CI/CD pipelines, or CLI workflows and need a fast, portable, zero-dependency tool with a mature ecosystem and extensive documentation. AVOID IF: you need to process very large JSON streams at maximum throughput (jq loads full structures in memory; streaming is limited), or if your team finds its DSL syntax too dense for maintainable scripts — consider fx with JavaScript syntax instead. MONITOR IF: you are building tooling that embeds or wraps jq and want to track whether the jqlang org evolves the language spec or ABI in breaking ways.
Independent dimensions
Mainstream potential
9/10
Technical importance
8/10
Adoption evidence
10/10
- jq's DSL can become difficult to read and maintain for complex transformations, leading teams to abandon it in favor of Python or JavaScript for non-trivial data processing.
- Memory model is not streaming by default; very large JSON files (multi-GB) may cause high memory usage or require workaround flags.
- The project depends on continued volunteer stewardship within the jqlang org; while currently healthy, it remains a small maintainer group for infrastructure-critical tooling.
- The C codebase and autoconf build system may create friction for contributors unfamiliar with that toolchain, potentially limiting the contributor pool over time.
- License metadata shows 'NOASSERTION' in the repository scan — while the README clearly states MIT, packaging toolchains that rely on automated SPDX detection may flag this ambiguity.
jq will remain the default JSON CLI tool for at least another decade. The language spec is stable enough that incremental improvements (performance, error messages, streaming) are more likely than breaking changes. Slow but sustained star growth and active maintenance confirm long-term relevance.
Explore similar
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- https://jqlang.org
- Language
- C
- License
- NOASSERTION
- Last updated
- 1w ago
- Created
- 170mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Top contributors
Similar repos
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
35.1k | +73 | C | 8/10 | 1w ago |
|
|
3.7k | — | Rust | 8/10 | 4d ago |
|
|
3.8k | — | Go | 8/10 | 3d ago |
|
|
6.1k | — | Rust | 7/10 | 3mo ago |
|
|
3k | — | Python | 7/10 | 7d ago |
|
|
15.7k | — | Go | 8/10 | 1d ago |
yq extends the jq-like DSL to YAML, TOML, and XML. It is the natural complement, not a replacement. Users working in multi-format pipelines often use both. yq's Go binary is also single-file portable.
fx offers an interactive, terminal-based JSON viewer and processor with a JavaScript-based query syntax. Better for exploratory, interactive use; less suited for scripting pipelines where jq's compact DSL and stdio model is more composable.
fq applies jq-like query syntax to binary formats (pcap, mp4, etc.), explicitly positioning itself as a jq sibling for non-text data. Complementary rather than competitive for most use cases.
q enables SQL queries against CSV/TSV files. Serves an overlapping audience (data wrangling from the CLI) but with a different query paradigm and input format. Not a JSON processor.
jansson is a C library for JSON parsing in application code, not a CLI tool. It shares the C language and JSON domain but addresses a fundamentally different use case — embedded programmatic use vs. interactive/scripted filtering.