Is 2jq the real jq?
No. It is a clearly labeled subset written in JavaScript. Results match jq for the supported filters, shown as an array where jq would print a stream.
A labeled jq subset.
Try the jq filters you use most on real JSON and see the result instantly. 2jq covers paths, pipes, select, length, and keys, and says clearly when a filter needs real jq.
Loading the toolbox.
You do not have to take our word that your data stays here. Developer tools show every request a page makes, so you can watch this page work and confirm that nothing is sent. The check takes under a minute.
F12, or Cmd+Option+I on a Mac, and select the Network tab.Only two things can add a line to that log, and neither carries your data. Submitting the feedback form sends the vote and comment you typed. Typing characters in a script the page has not displayed yet, such as Cyrillic or Greek, can make the browser fetch the matching font file, and that request names only the font.
The production site also sends a Content-Security-Policy header that tells your browser to refuse connections to anywhere except this site and the anonymous analytics endpoint, so a coding mistake could not quietly send your data elsewhere.
jq is a command-line JSON processor, often described as sed for JSON. A filter reads JSON and produces JSON: .user.name picks a field, .items[] walks an array, and | pipes one filter into the next, so .items[] | select(.active==true) | .name lists the names of active items.
It is a full programming language, with functions, variables, reduce, path expressions, and string formatting.
., field paths such as .a.b, and array indexes including negative ones such as .[-1]..[] over arrays and objects.|.select(...) with == and != comparisons against numbers, strings, true, false, and null.length and keys.jq streams results one per line; 2jq gathers a stream into a JSON array so it can be copied as one value. Anything outside the subset, such as map, reduce, or arithmetic, gives an error that names the supported features instead of a wrong answer.
A complete jq engine is a large project, and a partial one that guesses is worse than none. The subset covers the filters people reach for while exploring an API response, and its boundaries are stated on the page. For deep JSON work, including formatting, validation, and schema checks, use 2json, the full JSON workbench in the same family, or install jq itself.
.items | length counts the items..items[0] and .items[-1] return the first and last items..items[].name lists one field from every item.keys lists the top-level keys..[] returns every value of an object or array.Elsewhere in the toolbox: 2uuid, 2gitignore, 2csp, 2htaccess, and more on the 2toolbox home page. Part of the 2suite.io privacy-first ecosystem.
No. It is a clearly labeled subset written in JavaScript. Results match jq for the supported filters, shown as an array where jq would print a stream.
map is outside the subset. Use .items[].field, which gives the same result here, or use real jq.
No. Parsing and filtering happen on this page.
2json, the sister JSON workbench, handles formatting, validation, and deeper analysis.