Skip to JSONPath finder

JSONPath Finder & Tester

Paste JSON, click a value to copy its JSONPath, then test expressions like $..email or $.users[?(@.active == true)] — locally in this browser. JSON is not uploaded or added to the URL.

JSONPath workbench

JSON stays in this tab. It is not uploaded, stored, or written into the URL.

Sample data is a store + users fixture, not a live API response.

30 nodes

Selected node

JSONPath
$
Normalized
$
JSON Pointer
/
Value
object(3)
object

Need pretty JSON first? Format JSON.

Advertisement

What Is a JSONPath Finder?

A JSONPath finder identifies the path to a value inside nested objects and arrays. Paste JSON, click a node, and copy a path such as $.users[0].email for code, Postman, or a query. The tester on this page then evaluates an expression against the same document and lists every match. JSONPath is the query language standardized in RFC 9535; this workbench implements a practical subset in the browser, without sending the payload to a server.

How to Find a JSON Path

  1. Paste JSON, load a local file, or use the sample.
  2. Explore the tree. Expand objects and arrays as needed.
  3. Select a value to see its JSONPath, normalized path, type, and value.
  4. Copy the shorthand path or the normalized path.
  5. Search by key, path, or value when the document is large.

How to Test a JSONPath Expression

  1. Switch to JSONPath Tester, or click “Use in tester” on a selected node.
  2. Edit the expression, or pick an example such as $..email.
  3. Read the match list: path, preview, and type.
  4. Copy the result JSON when you want the values only.

Finding a node returns one location. Querying can return many nodes. An empty match list is a valid result — it does not mean the JSON is invalid.

JSONPath Syntax Examples

Queries start at the root $. Child access uses dot notation when the name is an identifier, and bracket notation otherwise. This page does not claim full RFC 9535 compliance. Supported forms:

  • $ — Root of the document
  • .name / ['name'] — Child by name; brackets when the key is not an identifier
  • [0] / [-1] — Array index; negatives count from the end
  • [*] — All children of an object or array
  • ..name / ..* — Recursive descent, then a name or wildcard
  • [start:end:step] — Array slice
  • [0,2] / ['a','b'] — Union of indexes or names
  • [?(@.price < 10)] — Filter with @, comparisons, &&, ||, and !

Root and child paths

$.users[0].email is one node. $.users[*].email is every email in that array.

Bracket notation

Keys with spaces, dots, quotes, or Unicode must use brackets: $['meta']['api version']. Dot notation would split those names incorrectly.

Wildcards

[*] or .* selects every child of the current object or array.

Array indexes

Indexes are zero-based. [-1] is the last element.

Recursive descent

$..price walks the tree and returns every price field, no matter how deep.

Filters

$.users[?(@.active == true)] keeps children whose current node @ satisfies the comparison. &&, ||, and ! are supported. Function extensions such as length() are not.

Slices

$.store.book[0:1] takes a half-open range. A step can be added as [start:end:step].

Not supported:

  • RFC 9535 function extensions such as length(), count(), match(), search(), and value()
  • Regular-expression matching inside filters
  • Non-standard Goessner extensions that are not in RFC 9535

JSONPath Examples for Developers

The sample document includes a bookstore and a users array. These queries are fixtures for API testing, not live credentials.

$.users[0]                 → first user object
$.users[0].email           → "alice@example.com"
$.users[*].email           → both emails
$.users[?(@.active == true)] → Alice only
$..price                   → 8.95, 12.99, 19.95
$.store.book[?(@.price < 10)].title

JSONPath Finder vs JSONPath Tester

Finder answers “what is the path to this value?” Tester answers “which values match this expression?” People search for a JSON path finder online, a JSONPath tester, or a JSONPath evaluator; this page does both so you can discover a path and then widen it into a query. A JSONPath query tool is not a JSON formatter — use the JSON formatter when the paste is minified, or the JSON validator when it will not parse.

JSONPath vs JSON Pointer

JSONPath selects a nodelist and can match many locations. JSON Pointer (RFC 6901) names exactly one value with a slash path such as /users/0/email. RFC 9535 describes JSONPath as a more powerful companion to JSON Pointer, not a replacement. The selected-node panel shows a pointer for convenience; JSON Patch and some schema errors still use pointers.

Common JSONPath Mistakes

  • Confusing JSONPath with JSON Pointer. They look related and are not interchangeable.
  • Forgetting the root $. A bare users[0] is not a JSONPath query here.
  • Using 1-based indexes. Arrays start at 0.
  • Writing $.meta.api version instead of $['meta']['api version'].
  • Treating a copied path as a query that must return many nodes. A concrete path names one node.
  • Assuming every library implements the same filters. Goessner-era tools and RFC 9535 differ.
  • Reading “no matches” as invalid JSON. Check the expression first.
  • Expecting formatting to change paths. Pretty-printing does not add fields.

Frequently Asked Questions

What is a JSONPath finder?
It shows the path to a value in nested JSON. Click a node to copy $.users[0].email instead of writing the path by hand.
What is JSONPath?
JSONPath is a query syntax for selecting values from JSON, standardized in RFC 9535. Queries start at $ and can return many nodes.
How do I find a path in JSON?
Paste JSON, open the tree, and click the value. The panel shows a shorthand path, a normalized path, and a JSON Pointer.
How do I test a JSONPath expression?
Open JSONPath Tester, enter an expression starting with $, and read the match list. Example chips load queries such as $..price.
Is this JSONPath finder free?
Yes. There is no signup. Finding paths and evaluating queries run in your browser.
Does my JSON leave the browser?
No. Parsing and evaluation stay in this tab. JSON is not uploaded, logged, or written into the URL.
Which JSONPath syntax is supported?
Root $, child names, brackets, wildcards, recursive descent, indexes (including negatives), slices, unions, and filters with @, comparisons, &&, ||, and !. Function extensions are not supported.
What is a normalized JSONPath?
RFC 9535 defines a normalized path as the unique bracket form that identifies one node, such as $['users'][0]['email'].
What is the difference between JSONPath and JSON Pointer?
JSONPath can match many nodes. A JSON Pointer names exactly one location with slash segments. This page shows both for a selected node.
Why did my query return no matches?
Empty results are valid. Check the path, indexes, and whether the key needs brackets. Invalid JSON is a separate error above the tree.
Can I use this for API responses?
Yes. Paste a response, find a field, then widen the path into a query for tests. Do not paste secrets you cannot keep in a browser tab.
Do I need to format JSON first?
No. Paths depend on structure, not whitespace. Format is a convenience here; use the JSON formatter page for a dedicated beautify/minify workspace.

Last editorial review: 2026-10-03.

Advertisement