JSONPath Tester

Evaluate JSONPath expressions against JSON data. Runs in your browser.

Expression
Input JSON
Matches
$

Enter a JSONPath expression

e.g. $.store.book[*].title

Enter JSON and a JSONPath expressionJSONPath · browser only · no data sent

What is JSONPath?

JSONPath is a query language for JSON, similar to XPath for XML. It lets you select values deep inside a JSON structure using a concise expression syntax. JSONPath is commonly used in API testing tools (Postman, REST-assured), data pipelines, and configuration files that reference nested JSON fields.

JSONPath Syntax Reference

$The root element
$.keySelect a named property
$.*All values at the current level (wildcard)
$.arr[0]First element of an array
$.arr[-1]Last element of an array
$.arr[*]All elements of an array
$.arr[0:2]Array slice (index 0 and 1)
$..keyRecursive descent — finds 'key' at any depth
$..arr[*].nameRecursive descent into array elements
$.arr[?(@.price < 30)]Filter: elements where price < 30

Example

Given this JSON:

{
  "store": {
    "book": [
      { "title": "Clean Code",  "price": 29.99 },
      { "title": "Refactoring", "price": 34.99 }
    ]
  }
}

$.store.book[*].title

["Clean Code", "Refactoring"]

$..price

[29.99, 34.99]

$.store.book[0]

{ "title": "Clean Code", "price": 29.99 }

$.store.book[?(@.price < 30)]

{ "title": "Clean Code", "price": 29.99 }

Features

Recursive descent (..)

Find a key at any nesting level without knowing the depth

Filter expressions

Select array elements matching a condition like price < 30

Array slices

Select a range of array elements with [start:end:step]

Negative indices

Access elements from the end of arrays with [-1]

Full path display

Every match shows its complete JSONPath for easy reference

Copy individual matches

Copy any single match value as formatted JSON

Related Tools

Frequently Asked Questions

The tester implements the most widely used JSONPath features: dot/bracket notation, wildcards, array indexing, slices, recursive descent and filter expressions. It follows the de-facto JSONPath spec used by tools like Postman and Jayway JsonPath.

Yes. All evaluation runs in your browser using JavaScript. Your data is never sent to our servers.

Filter expressions support ==, !=, <, <=, >, >= operators. Example: $.items[?(@.status == 'active')] selects all items with status equal to 'active'.

Yes. If your JSON contains an array of strings or numbers, use $.arr[*] to select all elements or $.arr[0] to select by index.