RFC 9535 JSONPath evaluator

RFC 9535 grammar, normalized paths and values, filters, negative indexes, slices, unions and one recursive descent per expression.

  • Runs in your browser
  • No upload
  • Check before download

Inputs stay in this tab and are not uploaded or saved automatically. Optional aggregate usage counts and coarse processing diagnostics are sent only after consent, without input content or filenames. Clearing or closing loses inputs; save needed outputs first.

Formats and limits

RFC 9535 grammar, normalized paths and values, filters, negative indexes, slices, unions and one recursive descent per expression. Limits: 32 segments, a selector-union multiplier of 16, 2,048 AST nodes and 1,000 matches. match and search use I-Regexp in a worker that can be stopped. No JavaScript is evaluated and no custom function code runs.

UTF-8 only. Input up to 1 MiB; XML up to 100,000 UTF-16 units and depth 64; JSON up to 20,000 nodes. JSON Lines up to 16 MiB, 100,000 records and 1 MiB per value. Output up to 32 MiB. Queries run for up to 3 seconds and other jobs for up to 10 seconds in a worker you can cancel. XSD native memory is limited to 64 MiB; this is not the whole worker or DOM heap.

How to use it

  1. Choose the source and mode

    Paste JSON and enter a JSONPath that begins with $. With the loaded book example, use $.store.book[?@.price < 10].title; no JavaScript callback is needed.

  2. Configure the domain parameters

    Book A costs 8.5 and B costs 12. The filter returns value A at the normalized path $['store']['book'][0]['title']. If you change the threshold to 5, you get no matches, which doesn't mean the query is malformed.

  3. Inspect diagnostics and download

    Look at the paths together with the values, then save the JSON result. A path identifies a location in this input, and equal values at different paths count as separate matches. The original JSON is unchanged.

Formats and limits

Why is this input rejected or empty?

Before you treat an empty result as a failure, check the case-sensitive property names and the array positions. JavaScript filter expressions and custom functions are not accepted. If you get a numeric-precision error, correct how the input is written rather than loosening the query.

Which parser profile and limits apply?

The RFC 9535-based profile limits an expression to 32 segments and 1000 matches, with one recursive descent per expression. match/search use limited I-Regexp processing in the worker. This is not arbitrary script evaluation.

Are inputs or referenced files sent to a server?

Parsing runs locally in a browser worker. URLs inside the input are not used to fetch remote documents. Supply any schema dependencies the tool supports as local files, keep your source file separately, and download the results before you close the page.