Xepoca
Developer Tools · Tool #59

JSONPath Tester

Test RFC 9535 JSONPath expressions against JSON, inspect matched values and normalized paths, and export results without sending your data to a server.

🔒

Private browser processing

Your JSON and queries stay in this browser tab. Xepoca does not upload documents, fetch external data, or send query results to a backend.

JSON document

Paste JSON, drop a file, or browse up to 10 MB.

45 lines · 1004 BJSON parsed successfully

JSONPath query

RFC 9535 syntax beginning at the root identifier $.

4 matches

Quick examples

✓ Query executed successfully

Found 4 matching nodes in 3.23 ms.

Matches

4

Execution

3.23 ms

JSON nodes

44

Max depth

5

Matched results

Inspect the value type, normalized path, and complete matched value.

string#1
$['store']['book'][0]['title']

Sayings of the Century

string#2
$['store']['book'][1]['title']

Sword of Honour

string#3
$['store']['book'][2]['title']

Moby Dick

string#4
$['store']['book'][3]['title']

The Lord of the Rings

Output format

[
  {
    "path": "$['store']['book'][0]['title']",
    "value": "Sayings of the Century"
  },
  {
    "path": "$['store']['book'][1]['title']",
    "value": "Sword of Honour"
  },
  {
    "path": "$['store']['book'][2]['title']",
    "value": "Moby Dick"
  },
  {
    "path": "$['store']['book'][3]['title']",
    "value": "The Lord of the Rings"
  }
]

Query statistics

Selectors

4

Filters

0

Wildcards

1

Slices

0

Descendants

0

Functions

0

Matched value types

string4

Formatted JSON preview

{
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95,
        "tags": [
          "quotes",
          "reference"
        ]
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99,
        "tags": [
          "novel",
          "war"
        ]
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99,
        "tags": [
          "classic",
          "sea"
        ]
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99,
        "tags": [
          "fantasy",
          "classic"
        ]
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 399
    }
  },
  "expensive": 20,
  "metadata": {
    "generatedAt": "2026-08-07T18:46:00+03:00",
    "active": true
  }
}

Document statistics

Objects

8

Arrays

5

Strings

24

Numbers

6

Booleans

1

Nulls

0

Nodes

44

Max depth

5

How JSONPath works

JSONPath selects nodes from a JSON value using a path that starts at the root symbol $. Child selectors move into object properties or array elements, wildcards select multiple children, slices select array ranges, and filters keep nodes that satisfy a condition.

RFC 9535 standardizes JSONPath syntax and behavior. This tester uses an RFC-focused implementation and displays normalized paths such as$['store']['book'][0]['title'] so you can see exactly where each result originated.

Descendant segments such as $..price are convenient for discovery because they search below the current node. On large documents, a more specific path before a filter or descendant selector can reduce the amount of JSON that needs to be examined.

JSONPath syntax at a glance

Child selector

$.user.name

Select a named child property from an object.

Wildcard

$.items[*]

Select every child or array element at the current level.

Array index

$.items[0]

Select a specific zero-based array element.

Array slice

$.items[1:5:2]

Select a range using start, end, and optional step values.

Filter

$.items[?@.price < 10]

Keep child nodes that satisfy a logical comparison.

Descendants

$..id

Search descendant nodes for a matching child selector.

Useful testing workflows

API response inspection

Paste a large API response and isolate IDs, nested resources, errors, or records that satisfy a filter.

Configuration auditing

Find values distributed across nested configuration structures and confirm their normalized locations.

Query development

Build a JSONPath expression incrementally with live execution, then copy the final query into application code or test suites.

Data extraction

Export matched values or value/path pairs as JSON for a follow-up transformation or debugging workflow.

Related Xepoca tools

Frequently Asked Questions

Is the JSONPath Tester free?+

Yes. You can test JSONPath expressions, inspect matches, and download results without creating an account.

Which JSONPath syntax does Xepoca use?+

The query engine is based on RFC 9535, the standardized JSONPath specification. Core selectors, filters, slices, descendant segments, and RFC functions are supported by the underlying standards-aware package.

Are array indexes zero-based?+

Yes. JSONPath array indexes start at zero, matching JSON and JavaScript array indexing.

Can I see paths as well as values?+

Yes. Pair view shows each matched value beside its normalized JSONPath. You can also export only values or only normalized paths.

Does Xepoca upload my JSON?+

No. The document and JSONPath query are evaluated locally in your browser and are not uploaded by this tool.

Why does a valid query sometimes return no results?+

A JSONPath expression can be syntactically valid but select zero nodes because the requested property, index, slice, or filter condition does not match the current JSON document.