Toolshed

A growing library of browser tools and deep technical guides for IT professionals.

← All guides

jq Playground

Write a jq-style filter and see it run against real JSON, live. This is a hand-written interpreter implementing a genuinely useful subset of jq's language (see "What's supported" below) — it is not the real jq binary and doesn't cover everything jq does (no reduce/foreach, string interpolation, variables, or def). Nothing here shells out or executes anything outside this page's own JS. Runs entirely in your browser; your file is not uploaded.

JSON input
Filter





What's supported

Field/index access (.foo, .foo.bar, .foo?, .[0], .[1:3], .[]), pipes (|), commas (,), array construction ([...]), object construction ({a: .foo, b}, with correct cartesian-product semantics when a value produces multiple outputs), arithmetic (+ - * / %, including string/array concatenation), comparisons, and/or/not, and these functions: length, keys, has, add, min, max, unique, reverse, sort, sort_by, group_by, map, select, empty, type, first, last, to_entries, from_entries, flatten, range, tostring, tonumber, startswith, endswith, contains, join, split, ascii_downcase, ascii_upcase, recurse. Function arguments use jq's own ; separator, e.g. range(1; 5). Not supported: string interpolation, reduce/foreach, variables (as $x), def, try/catch, path assignment (|=, +=), regex functions, and @base64/@csv-style formatters.