Embed this tool on your site
About this tool
JSON Path Finder pulls a single value out of a JSON document using a simple dot-notation path. Paste JSON into the JSON input box and type a path such as $.user.posts[0].title into the Path field; the value at that location appears in the Result box, pretty-printed as JSON, and updates as you type. The leading $. is optional. Each dot-separated segment is a key name, optionally followed by one array index in brackets, for example items[2]. If a key or index is missing the result reads Path not found, and invalid JSON shows the parser's error message. The tool implements only this subset of JSONPath: there are no wildcards, filters, slices, unions, recursive descent (..) or bracket-quoted keys, a path cannot start with an array index, so arrays at the root cannot be addressed, and $ on its own does not return the whole document. Use it to check where a field lives in an API response before writing extraction code. Everything runs in your browser; the JSON is never sent to a server.
Why use it
Check a Path Before You Code: Confirm that $.data.items[0].id really exists in a sample response before writing it into JavaScript, a test assertion or a template.
Live Results: The Result box updates on every keystroke in the JSON or the Path field, so you can step down a document one segment at a time.
Clear Not-Found Feedback: A missing key or out-of-range index returns Path not found instead of an empty box, and invalid JSON shows the parser's error.
Full Sub-Trees: Point the path at an object or array and the whole sub-tree is shown as indented JSON, ready to read or copy.
No Library or Runtime Needed: No Node.js, Python or jq install is required — paste data and type a path in any browser.
Private by Design: Parsing and lookup run in your browser, so API responses containing tokens or customer data never leave your machine.
How to use
- Paste your JSON data into the JSON input box.
- Type a path into the Path field, for example $.user.name — the $. prefix is optional.
- Add one array index in brackets after a key to step into an array, as in $.user.posts[0].title.
- Read the value in the Result box; objects and arrays are shown as indented JSON.
- If the result says Path not found, shorten the path one segment at a time to find the key or index that does not exist.
When it helps
- When exploring a deep or unfamiliar API response and checking which keys exist at each level.
- When writing JavaScript like data.user.posts[0].title and wanting to confirm the path on a real sample first.
- When pulling one nested value, such as a token or an ID, out of a long JSON payload.
- When building test assertions that check a specific field and you want to confirm its expected value.
- When teaching how nested objects and arrays are addressed with dot notation and indexes.
Examples
01Read a nested value through an array
Input{"user":{"name":"A","posts":[{"title":"Hi"}]}}
Path: $.user.posts[0].title
02Return a whole array element
Input{
"store": {
"book": [
{"title": "Moby Dick", "price": 8.99},
{"title": "The Great Gatsby", "price": 12.99}
]
}
}
Path: $.store.book[1]
Expected result{
"title": "The Great Gatsby",
"price": 12.99
}
03Path without the $. prefix
Input{"config":{"database":{"host":"localhost","port":5432}}}
Path: config.database.port
Input{"config":{"database":{"host":"localhost","port":5432}}}
Path: $.config.cache.host
Expected resultPath not found
Tips
- Build the path one segment at a time — $.data, then $.data.items, then $.data.items[0] — so you see exactly where a lookup stops working.
- The $. prefix is optional: user.name and $.user.name return the same value.
- Keys containing dots, spaces or brackets cannot be addressed here; use your browser console with bracket notation for those.
- Keys are case-sensitive, so check capitalisation when a path returns Path not found.
Frequently Asked Questions
Which path syntax does the tool support?⌄
Dot-separated key names with an optional leading $., where each segment may end with one array index in brackets: $.user.posts[0].title or user.posts[0].title. Key names cannot contain dots or brackets.
Does it support JSONPath wildcards, filters or recursive descent?⌄
No. Expressions such as [*], [?(@.price < 10)], .., slices like [1:3] and unions like ['a','b'] are not supported and return Path not found. For those, use a full JSONPath library such as jsonpath-plus, or a command-line tool like jq.
Why does $ on its own say Path not found?⌄
The tool only strips a leading $. (with the dot). A bare $ is read as a key named $, which normally does not exist. The whole document is already visible in the input box.
Can I query a JSON array at the root level?⌄
Not currently. A path cannot start with an index, so $[0] and [0] return Path not found. Wrap the array in an object, for example {"items": [...]}, and use $.items[0].
How do I reach a nested array like matrix[0][1]?⌄
Only one index per segment is supported, so matrix[0][1] returns Path not found. Look up $.matrix[0] and read the inner array in the result.
What happens with invalid JSON?⌄
The Result box shows Invalid JSON followed by the browser's parser message, so you can fix the input before querying.
Is my JSON sent anywhere?⌄
No. Parsing and the path lookup both run in your browser; nothing is uploaded.
Glossary
- JSONPath
- A query language for selecting nodes from a JSON document, analogous to XPath for XML. Standardised by IETF RFC 9535 in 2024.
- Root Node ($)
- The $ symbol in a JSONPath expression represents the top-level value of the JSON document — the starting point for all path traversals.
- Recursive Descent (..)
- The .. operator traverses all levels of the JSON tree, not just immediate children. $..title finds every 'title' key regardless of nesting depth.
- Filter Expression
- A [?(...)] predicate inside a JSONPath expression that selects only array elements or object values matching a boolean condition, e.g. [?(@.age >= 18)].
- Wildcard (*)
- A JSONPath selector that matches all properties of an object or all elements of an array at the current level of the path.
- Slice Notation
- Array subscript syntax using start:end:step (e.g. [0:5:2]) to select a subset of array elements, following Python slice semantics.
A LITTLE HELP. A LOT DONE.
Good tools.
Great flow.
Your shortcut to the everyday. Create, convert, calculate,
and get back to what you love.
✳
✳
✓ Free to use✓ No sign-up✓ 500+ possibilities