A JSONPath query playground for exploring and extracting data from any JSON document. Paste a configuration file, an API response, or a large nested object, write a JSONPath expression, and watch the matched values — and their exact paths — update live as you type. It is built for developers debugging API payloads, data analysts pulling fields out of bulk exports, and anyone who needs to slice a specific value out of deeply nested JSON without writing a script.
Unlike a basic path tester that only walks simple dot-and-bracket paths, this
playground runs the complete JSONPath grammar through the jsonpath-plus
engine: recursive descent, wildcards, array slices, index and name unions, the
property-name operator, and full filter scripts that can compare each node
against literals or against other values in the same document. Every match is
reported with its canonical normalized path so you always know where a value
came from, not just what it is.
How it works
Your JSON is parsed in the browser the moment you stop typing; a clear validity
indicator and inline error message tell you immediately if the document is
malformed, and one click reformats or minifies it. Your expression is then
evaluated against the parsed tree using resultType: "all", which returns both
the matched value and its location. The tool converts each location into a
readable path such as $.store.book[0].title, renders scalars inline and objects
or arrays as pretty-printed JSON, and shows a running match count in the results
header.
Because nothing leaves your machine, you can safely query secrets, tokens, or production payloads. Saved queries, your last fifteen runs, and the current document all persist in local storage, so your workspace survives a page reload. When you have the data you want, export it as a JSON array, a CSV (object matches become columns, scalar matches become a path-and-value table), or a plain list of matched paths.
Example
Start with the built-in bookstore document and run $.store.book[?(@.price < 15)].
The filter is evaluated once per array element, where @ is the current book, so
it returns only the two titles priced under 15 — each shown with its path,
$.store.book[0] and $.store.book[1]. Switch to $..price and recursive
descent collects every price anywhere in the tree, including the bicycle’s. Use
$.store.book[0:2].title to slice the first two books and project just their
titles, or $.store.book[?(@.price < $.expensive)] to filter against a threshold
stored elsewhere in the same JSON. Each result row is exportable, so a query like
$..author becomes a one-click CSV of every author in the file.
Every figure and path is computed locally in your browser — no JSON is uploaded or stored on any server.