How to Query JSON with This Tool
Load a JSON document, build a JSONPath expression, and run it to list matching values. For example, $.store.book[*].title returns each matching title with its concrete path, JSON type, and value preview.
- Load JSON: paste it into JSON document, drop a
.jsonfile, or browse for a file. - Parse it: as soon as you paste or type valid JSON, the expandable document tree appears. Invalid JSON shows the relevant line and column.
- Build a path: expand the tree and click a rendered key or value to insert its exact path, or type an expression in JSONPath query.
- Run it: as soon as you type a valid expression, the results list shows each concrete path, type, and value preview.
- Copy or export: use a row action for one path or value, or use the bulk controls for the current result set.
The query panel also provides quick-insert chips for $, .*, .., [*], [0], slices, unions, and a filter example.
Supported JSONPath Syntax
- Dot notation:
$.store.book- walk down named object properties. - Bracket notation:
$['store']['book']- equivalent to dot notation and the reliable, clearer form for keys containing spaces, separators, or other special characters. - Wildcards:
$.store.book[*]or$.store.*- every element of an array, or every property of an object. - Recursive descent:
$..author- everyauthorproperty at any depth in the document. - Array indices:
$.store.book[0], including negative indices such as[-1]for the last element. - Array slices:
$.store.book[0:2]or[::2]- Python-stylestart:end:step, including negative values and a reverse step. - Unions:
$.store.book[0,2]or$.store['book','bicycle']- select several indices or names at once. - Filter expressions:
$.store.book[?(@.price < 20)]- keep only array or object entries where the expression is true.
Filter Expressions
Inside [?( ... )], @ refers to the item currently being tested and $ refers to the document root; both accept the same dot/bracket accessors as a plain path (for example @.price or @['in stock']). Supported operators:
- Comparison:
== != > >= < <=against numbers, strings, booleans, ornullliterals. - Boolean logic:
&&,||,!, and parentheses for grouping - e.g.[?(@.price < 20 && @.in_stock == true)]. - Existence: a bare path with no operator, e.g.
[?(@.discount)], keeps entries where that property exists and is notnullorfalse.
Nested filter expressions, function calls, and regular-expression match operators are not supported - keep filters to comparisons and boolean logic over simple property paths.
Read Results and Tree Limits
Each result row includes a concrete JSONPath, JSON type, and value preview. Rendered matched nodes are highlighted in the source tree, and hovering a result row highlights its corresponding rendered node. Each object or array renders only its first 500 entries in the tree. Additional entries appear as more not rendered in tree (still queryable by JSONPath); they cannot be clicked, but a typed path can still select them.
Limit defaults to 500 results and accepts up to 5000. When more matches exist, the results summary reports the shown and total counts.
Copy and Export Matches
- Copy paths and Copy values (JSON) operate on the current result set.
- Each result row can copy one path or one value.
- Export JSON: an array of
{ path, type, value }objects. - Export JSONL: one match object per line.
- Export CSV: object-key columns when every match is an object; otherwise
index, path, type, valuecolumns. - Export TXT: tab-separated paths and values. Object and array values may contain pretty-printed line breaks.
Troubleshooting and Query Limits
If the JSONPath expression is invalid, the error appears below the query field and the current results are cleared. An expression that produces more than 300,000 intermediate nodes fails with a message asking you to narrow the path. The result limit can be increased only to 5000.
What the Tool Does Not Do
The tool selects and exports query matches only. It does not mutate, flatten, reformat, validate, or compare the source JSON.
Privacy and Local Processing
Parsing, tree rendering, and every JSONPath evaluation happen entirely in your browser. Nothing you paste, upload, or query is sent to a server.
Frequently Asked Questions
What JSONPath syntax does this tool support?
Dot notation, bracket notation, wildcards, recursive descent, array indices (including negative), slices, unions of names or indices, and filter expressions with comparisons, boolean operators, and grouping parentheses.
Does this tool change or validate my JSON?
No. It only reads the document to run your query - it never mutates, flattens, or reformats the source, and it isn't a syntax validator or diff tool.
How do I build a path without typing it by hand?
Click a rendered key or value in the expandable tree view and its exact JSONPath is inserted into the query box, ready to run or generalize with a wildcard or filter. Each object or array shows only its first 500 entries; omitted entries remain queryable by typing a path.
What happens with a very large result set?
Results are capped at an explicit limit you control (default 500, up to 5000). If a query matches more, the results panel tells you and you can raise the limit.
What export formats are available?
JSON, JSONL, CSV (object-keyed columns when every match is an object, otherwise path/type/value), and TXT. TXT uses tab-separated paths and values, and object or array values may span pretty-printed lines. Any single path or value can also be copied individually.