JSONPath Evaluator Online

JSONPath Evaluator
Query JSON Instantly

Query and extract values from JSON using JSONPath expressions. Supports dot notation, wildcards, recursive descent, filter expressions, and array slices. Free, private, no signup.

Try JSONPath Evaluator
$[*]

Wildcard Queries

Extract all items in arrays or all values in objects in one expression using $.store.book[*].

$..

Recursive Descent

Search every level of nesting with $..price to find all matching keys anywhere in the document.

?()

Filter Expressions

Filter arrays by conditions using ?(@.price > 10) — equality, comparison, and existence checks.

Full JSONPath syntax support

$.key — Dot Notation Access object keys with simple dot syntax.
$['key'] — Bracket Notation Use bracket syntax for keys with special characters or spaces.
[*] — Wildcard Match all array items or all object values at once.
[0], [-1] — Array Index Access elements by position, including negative indices from the end.
[0:3] — Array Slice Extract a range of array elements with start:end syntax.
$..key — Recursive Descent Find all values with a given key at any depth in the document.
?(@.key == val) — Filter Filter arrays by any condition — equality, comparison, or key existence.
Sample Data Click "Sample" to load a bookstore dataset and try queries instantly.

Your data never leaves your device

No backend server — JSONPath evaluation is pure JavaScript in your browser

  • Your JSON never leaves your device
  • No WebSocket, no fetch, no XHR for your JSON content
  • No account, no login, no cookies tied to you
  • Works fully offline after the initial page load

Related JSON tools

JSON Formatter Pretty-print JSON with syntax highlighting and a collapsible tree view.
JSON Validator Validate JSON against RFC 8259 with precise error locations.
JSON Schema Validator Validate JSON data against a schema definition.
JSON Repair Fix broken JSON: trailing commas, unquoted keys, and more.

Common questions answered

What is JSONPath?

JSONPath is a query language for JSON, similar to XPath for XML. It lets you extract values from JSON using expressions like $.store.book[*].author.

Is this JSONPath evaluator free?

Yes, completely free with no account required.

Does JSONPath evaluation send my data to a server?

No. All evaluation runs locally in your browser — your JSON never leaves your device.

What JSONPath features are supported?

Supported: dot notation ($.a.b), bracket notation ($['a']), wildcards ([*]), recursive descent ($..), array slices ([0:2]), negative indices ([-1]), and filter expressions (?(@.price > 10)).

What is the difference between $.a.b and $..b?

$.a.b accesses the key 'b' directly under 'a'. $..b recursively searches all descendants for any key named 'b'.

What is JSONPath?

JSONPath is a query language for extracting values from JSON documents, similar to XPath for XML. Using expressions like $.store.book[*].author, you can navigate nested structures, filter arrays, and select specific fields without writing code. JSONPath is supported by many languages and tools, making it a portable skill for working with JSON data.

This evaluator lets you type a JSONPath expression and see matching results in real time. It supports recursive descent (..), array slicing ([0:3]), filter expressions ([?(@.price < 10)]), and wildcard matching (*). Results are highlighted in the original document so you can see exactly which nodes match.

Query JSON with JSONPath
Input
// Data
{"store":{"book":[
  {"title":"A","price":8},
  {"title":"B","price":12},
  {"title":"C","price":6}
]}}

// Query: $.store.book[?(@.price<10)]
Output
[
  {"title":"A","price":8},
  {"title":"C","price":6}
]

// 2 matches found

Get the most out of this tool

Ready to query your JSON?

Free forever. No signup. Works offline.

Open JSONPath Evaluator

JSONPath: querying JSON like XPath for XML

JSONPath is a query language for JSON, analogous to XPath for XML. Created by Stefan Goessner in 2007 and formalized in RFC 9535 (2024), JSONPath lets you select specific values from a JSON document using path expressions. Instead of navigating a parsed object programmatically in code, you write a compact expression that describes the location of the values you want. This is powerful for filtering arrays, extracting nested values, and selecting values matching conditions.

A JSONPath expression starts with $ representing the root of the document. From there, you use dot notation to navigate object keys ($.store.book) or bracket notation ($['store']['book']). The wildcard * matches any key or array element — $.store.book[*] selects all books. The recursive descent operator .. searches at any depth — $..author finds all "author" values anywhere in the document, no matter how deeply nested.

Array subscripts enable precise element selection. $[0] selects the first element. $[-1] selects the last. $[0:3] is a slice selecting the first three elements (Python-style slice notation). $[0,2,4] selects elements at indices 0, 2, and 4. These subscript forms can be combined with recursive descent and wildcards for powerful multi-level queries like $.store.book[*].author which selects all author fields from all books.

Filter expressions are the most powerful JSONPath feature. The syntax $[?(@.price < 10)] selects array elements where the price field is less than 10. @ refers to the current element being tested. You can use comparison operators (<, >, <=, >=, ==, !=), and the in operator for membership tests. Filter expressions enable query-like data extraction directly from JSON without writing code: $..book[?(@.isbn)] selects only books that have an ISBN field.

JSONPath implementations exist in every major programming language: Python (jsonpath-ng, jsonpath-rw), JavaScript (@jsonquerylang/jsonpath, jsonpath-plus), Java (Jayway JsonPath), PHP (Flow\JSONPath), Ruby (jsonpath), Go (gjson, jsonpath). The expressions are portable across implementations with minor syntax variations. RFC 9535 standardizes the syntax to reduce ambiguity between implementations — this tool follows the RFC 9535 standard.

Practical applications of JSONPath span many domains. Kubernetes controllers use JSONPath expressions to extract specific fields from resource status objects. AWS CloudFormation and Step Functions use JSON-based query expressions derived from JSONPath. Postman test scripts use JSONPath to extract values from API responses for assertions. GitHub Actions uses path expressions to extract data from API responses in workflow files. Learning JSONPath pays dividends across all these platforms.

When developers use this tool

API response data extraction Use JSONPath to extract specific fields from large API responses without manually parsing the structure. Evaluate expressions against the actual response to find the exact path before writing application code.
Kubernetes resource inspection kubectl supports -o jsonpath to extract specific fields from resource definitions. Test your JSONPath expressions against kubectl output here before embedding them in scripts or automation pipelines.
Postman test assertions Postman's test scripts use JSONPath via pm.response.json() and path evaluation. Test your expressions here against the real response body before writing the test script to ensure they match the expected values.
Data transformation pipelines ETL pipelines that extract fields from JSON events use JSONPath-like expressions for field selection. Test and validate your extraction expressions here against sample events before deploying to production.

Additional frequently asked questions

What is the difference between JSONPath and jq?

JSONPath is a path-selection language — it locates and extracts values from JSON. jq is a full transformation language — it can filter, transform, combine, and reshape JSON data. JSONPath expressions are simpler and more portable across platforms; jq is more powerful but requires installing the jq binary. Use JSONPath for selection, jq for complex transformations.

Can JSONPath modify JSON values?

JSONPath is a read-only query language — it selects values but cannot modify the document. For modifications, use JSON Patch (RFC 6902) which defines add, remove, replace, move, copy, and test operations. The JSON Patch Generator on this site creates RFC 6902 patch documents from the difference between two JSON documents.

What does the $.. recursive descent operator do?

$.. searches the entire JSON tree at any depth for the next path segment. $..name finds all "name" fields regardless of how deeply nested they are — in the root object, in nested objects, or in objects inside arrays. This is the JSONPath equivalent of XPath's // descendant-or-self axis and is useful for finding values with unknown depth.

Are there differences between JSONPath implementations?

Yes. Before RFC 9535, JSONPath was defined only by the original Goessner article, which left many edge cases ambiguous. Different libraries handled filter expressions, recursive descent, and array slices differently. RFC 9535 (2024) standardizes the behavior. This tool follows the RFC 9535 standard, which may differ from older library implementations you might use in production code.