Neatbo.

Query local JSON with JSONPath

Filter nested JSON with a fixed RFC 9535 profile and export complete matched values with original locations.

Browser-local processingInputJSON document + JSONPath textOutputComplete matches + query report

The selected file is read only after you click Run. Reading, checks and processing share one 10-second task period.

Input, work and complete-output limits apply to the entire request. Exceeding one refuses the result; see this tool’s limits.

JSON document

Before you start

Filter nested JSON with a fixed RFC 9535 profile and export complete matched values with original locations.

How to use this tool

  1. Provide the local JSON and the query separately.
  2. Choose the active source mode for each role. File selection shows metadata only; click Run to read and process.
  3. For a nested identifiers array, filter the outer item using an existence test on its nested filter.
  4. Inspect all matched locations, then copy or download the complete value array and query report.

Supported inputs and limits

One JSON document up to 1 MiB, 50,000 value nodes and depth 64. Query up to 4,096 UTF-8 bytes, 128 root segments and 32 cumulative parser calls. Cumulative retained source JSON Pointer paths allow 8 MiB; object/array reads, membership and key/descriptor visits allow 100,000 operations, including eager nested-filter lists.

Supports members, indices, slices, wildcards, descendants, nested existence filters and basic logical/comparison operators. Function calls and JavaScript expressions are refused. All numeric document and query literals must have exact safe integral values.

At most 10,000 matches; duplicate selections stay duplicated and ordered. query-report.json and matches.json together allow 8 MiB. No-match produces an empty array.

Matched valueJSON retains its original JSON spelling and whitespace. Paths include RFC normalized locations and JSON Pointer. The user’s original query is retained without reformatting.

The document role uses either its pasted value or exactly one selected UTF-8 file; clear the selected file to paste. An empty or invalid active file never falls back to hidden pasted text. A filename label allows 512 UTF-8 bytes.

One leading BOM is removed and recorded, including pasted input. Invalid UTF-8, decoded duplicate JSON keys and unpaired Unicode surrogates are refused. Inputs stay in this browser.

A fixed 10-second whole-task deadline or cancellation returns no partial export. Rerun after correcting the input; a fresh Worker starts each job.

The query is a separate text control. Functions including count/length/match/search/value, JavaScript expressions and non-singular comparisons are refused; this is not full RFC 9535 conformance. The original query is not replaced by a normalized expression.

File contents are read only after Run, within the same fixed 10-second period as engine loading, checks and processing. Cancelling or exceeding any limit publishes no partial copy or download. Only the current tab holds the inputs in bounded memory.

The screen uses a bounded preview. Copy preserves the complete ordered value array; query-report.json preserves every matched location and the source identity. No content upload or remote reference fetch.

Worked example

Example input

[{"identifiers":[{"extension":"foo"}]},{"identifiers":[{"extension":"bar"},{"extension":"baz"}]}]
Example options
$[[email protected][[email protected] == "foo"]]

Example output

[{"identifiers":[{"extension":"foo"}]}]

When something does not work

Correct query grammar or reduce output/parse work. Do not substitute a non-singular wildcard query into a comparison; use an existence filter for the nested array. After cancellation, rerun the unchanged active sources in a fresh request. Refused inputs and timed-out requests do not yield partial artifacts.

Frequently asked questions

Does this support every JSONPath function?

No. This profile supports selectors and nested existence filters, but refuses all functions and executable expressions. Use an existence filter to preserve an outer record.

When is a selected file read?

The selected file is read only after you click Run. Reading, checks and processing share one 10-second task period. Each role uses its selected mode only. An invalid active file never falls back to hidden pasted text.

Is the copied result only a preview?

No. Copy is the complete matches.json array with original lexical values, ordered duplicates and whitespace. Download query-report.json for every matched location.

Documentation & further reading

Related tools