Run jq queries right in your browser
Filter, transform, and extract from JSON with a jq-compatible expression. No install, no server — paste, query, copy.
"Alice" "Carol"
How to query JSON with jq, the right way
jq is a powerful command-line filter for JSON. This in-browser playground supports the most useful subset of jq syntax — paths, pipes, comma streams, select, map, keys, values, length, type, has, comparisons, and literal arguments — so you can iterate on queries without leaving the page or installing anything.
- 01
Paste a JSON document
Drop a JSON object or array into the input panel. Anything that parses cleanly works — REST/GraphQL responses, log lines, NoSQL records, OpenAPI specs, Kubernetes manifests, or local
package.json/composer.json/Cargo.toml-style files.Errors at parse time show before the filter even runs, with the exact character position so you can fix typos quickly.
API responselog lineconfiginput · json.json{ "users": [ {"name":"Ada","active":true} ] }loadedready to query - 02
Write a jq filter
Start with
.to echo the document. Drill into a field with.users, expand an array with.users[], then chain with|. Filter withselect(.active), transform withmap(.name), count withlength, list keys withkeys.Compare with
==/!=/>/<against literals or other path expressions. Use,at the top level to emit multiple streams.selectmappipe |comma ,filterpipeline.users[] | select(.active) | .name
3 stagesexplode → filter → project - 03
Inspect each result
Every matching value emits on its own line in the output panel — the same way the jq CLI prints results. Syntax errors in the filter (unclosed brackets, missing arguments, unknown functions) surface with a descriptive message.
Use the Reset filter button to clear back to
.and start over, or just edit inline and the output updates immediately.live previewper-line resultserror pinpointoutput · filtered2 results"Alice" "Carol"
2 active usersmatched - 04
Copy or download the result
Copy the filtered output to your clipboard for pasting into a CSV, dashboard, or test fixture. Or save it as a
.jsonfile ready to commit, post to an API, or hand off downstream.Everything runs locally — open DevTools → Network to confirm no traffic leaves the page.
clipboard.jsonclient-sideexport2 outputs✓ Copied to clipboard ✓ Saved: jq-output.json ✓ 0 outbound requests ✓ 100% client-side
ready to shipsuccess
Production-grade jq playgrounds, the right way
Iterate small
Build filters one stage at a time. . → .users → .users[] → .users[] | .name. Each pipe should be obvious.
Prefer map over [ ]
Use map(f) when you want to keep the array shape; use .[] | f when you want a stream of values.
Quote string literals
Comparisons use JSON literals: .role == "admin", not .role == admin.
Subset of full jq
This playground covers ~80% of common queries. For recurse, group_by, reduce, or modules, use the official jq CLI.
Numbers parse as JSON
Compare with .age > 30 (number) not .age > "30" (string). JS coercion can surprise you.
Clipboard-safe output
Output is JSON-encoded so quotes and Unicode survive a copy/paste round-trip into another tool.
When to reach for jq
jq earns its keep whenever you need to extract a slice from a large JSON blob without writing a one-off script.
Probing API responses
Curl a JSON endpoint, paste here, and pull out just the field you need — .data.items | length or .errors[].message.
Filtering structured logs
JSON-formatted logs from Cloud Run, Vercel, or Datadog become greppable. select(.level=="error") | .msg in one line.
Reshaping for CSV / spreadsheets
Use map({ name, role }) to flatten before exporting. Pipe the output into the JSON-to-CSV tool for a finished spreadsheet.
Diffing API contracts
Project just the schema-relevant keys with keys or a sorted map(.name) and compare across two API versions to spot breaking changes.
Sanity-checking config drift
Paste two Helm/Kustomize outputs side by side. A quick .spec.replicas or .metadata.labels verifies the field you care about.
Teaching JSON shape
Demonstrating how a JSON tree maps to dot paths in a workshop or code review — much clearer with a live filter than abstract slides.
production-readyFrequently asked questions
Quick answers about the in-browser jq playground.
select, map, keys, values, length, type, has, not. Modules, recurse, reduce, group_by, regex, and stdin/stdout idioms aren't supported — use the CLI for those.Something missing?
Tell us what you need. We ship the top requests every two weeks.