JSONPath Finder
Pick the paths a JSONPath expression matches, each value exactly as written in the source.
Supported subset: $, .key, ['key'], ["key"], [0]. Leave empty to inspect the whole document.
Input
This tool processes JSON in a browser worker. Read the data-handling notes below.
Result
Result tree
Details
Run statistics and the enforced limits appear here after a run. No numbers are shown before that.
How this JSONPath Finder works
The tool parses your JSON once, then walks the parsed tree to resolve the expression. Parsing uses lossless-json, so every number is kept as the exact text it had in the source: 9007199254740993is reported as 9007199254740993, not rounded through a 64-bit float.
Expression subset
| Segment | Meaning | Example |
|---|---|---|
$ | the root value | $ |
.key | object member by bare identifier | $.store.staff |
['key'] | object member, single-quoted, escapes allowed | $['odd key'] |
["key"] | object member, double-quoted | $["order/id"] |
[0] | array index, non-negative, no leading zero | $.store.staff[0] |
Anything else is rejected with UNSUPPORTED_PATH rather than guessed: recursive descent (..), wildcards (*), array slices, filter expressions, script expressions and negative indexes are all unsupported in this tool. A valid expression that matches nothing returns an empty match table — that is a result, not an error.
For worked examples of the supported subset — object keys, quoted names and array indexes — seeJSONPath examples for keys, arrays, and quoted names.
Enforced limits
- Up to 200,000 characters of JSON source per run.
- Nesting deeper than 64 levels is refused before parsing.
- Every duplicate object key is an error, including keys that hold equal values.
- Expressions are limited to 512 characters.
- A run is stopped after 20 seconds; the worker is terminated and the result discarded.
What happens to your input
The page runs the parser in a Web Worker in this browser tab. Each run gets an internal job id generated by the page; cancelling terminates the worker and any late answer from it is discarded. The page's own code has no upload: it sends no request carrying your text anywhere, and exports leave the tab only through the browser-local download and the clipboard you invoke. That statement describes this page's code and nothing more — it is not an audited or absolute privacy guarantee.
Reading the result
Matches lists one row per hit with its canonical path, its JSON type and the value as text. Object members whose names are not bare identifiers are shown in bracket notation with the key JSON-quoted.Result tree draws the whole document with the same convention; documents above 3,000 nodes show the match table only, and the page says so instead of silently drawing less. Copy matches andDownload JSON export exactly the rows in the table. If the browser refuses clipboard access, the page says so and selects the text for a manual copy.