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 EvaluatorWildcard 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.
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
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.
// Data
{"store":{"book":[
{"title":"A","price":8},
{"title":"B","price":12},
{"title":"C","price":6}
]}}
// Query: $.store.book[?(@.price<10)]
[
{"title":"A","price":8},
{"title":"C","price":6}
]
// 2 matches found
Get the most out of this tool
- Use $..[fieldName] for recursive descent — it finds all instances of a field name regardless of nesting depth.
- Array slicing [start:end] follows Python convention: [0:3] returns the first three elements (indices 0, 1, 2).
- Filter expressions like [?(@.active == true)] let you select array elements matching a condition without writing code.
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
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.