Filter & Query JSON Data
Online
Extract exactly the data you need from any JSON document. Use JSONPath expressions to filter arrays, select fields, and query nested structures — all in your browser.
Open JSON Filter ToolFiltered results in four steps
$.items[?(@.price < 10)] to filter the data.
No account. No upload. No nonsense.
No Server
Your JSON never leaves your device. All filtering runs locally in your browser.
JSONPath Support
Full JSONPath support including wildcards, slices, recursive descent, and filter expressions.
Works Offline
Load once and use forever — even on a plane or without internet access.
Related JSON tools
Common questions answered
How do I filter a JSON array?
Use a JSONPath filter expression like $.items[?(@.price < 10)] to extract array elements matching a condition. The Path tab supports equality, comparison, and existence filters.
What filter operators are supported?
Supported operators: == (equal), != (not equal), > (greater than), < (less than), >= (greater or equal), <= (less or equal), and key existence checks like ?(@.key).
Does my data leave my browser?
No. All filtering runs in your browser.
Can I extract nested fields from an array?
Yes. Use $.items[*].address.city to extract a specific nested field from every array element.
What is the difference between JSONPath and jq?
JSONPath uses $. prefix syntax and ?(@.key) filter notation. jq uses a pipe-based syntax (.[] | select(.age > 30)). Both query JSON but with different syntax conventions.
What is JSON filtering?
JSON filtering extracts a subset of fields from a JSON object, keeping only the data you need. This is useful when API responses contain dozens of fields but you only need a few. Filtering reduces noise, makes data easier to read, and produces smaller payloads when forwarding data to another service.
This tool supports two operations: pick (include only specified fields) and omit (exclude specified fields, keep everything else). You can specify fields using dot notation for nested paths — for example, "user.email" picks just the email from a nested user object. Filtering works on arrays of objects as well as single objects.
// Pick: name, email
{
"id": 1,
"name": "Alice",
"email": "alice@test.com",
"password": "hashed...",
"internal_id": "x7f3"
}
{
"name": "Alice",
"email": "alice@test.com"
}
Get the most out of this tool
- Use pick when you need a few specific fields from a large response — it is clearer than listing dozens of fields to omit.
- Use omit to remove sensitive fields like passwords, tokens, or internal IDs before logging or forwarding data.
- Filter API responses before caching to reduce memory usage and simplify downstream processing.
JSON filtering techniques
JSON filtering extracts a subset of data from a JSON document based on conditions. The two main filtering operations are array filtering (selecting elements from a JSON array that match a condition) and field projection (selecting only specific fields from an object or each element of an array). Both operations are fundamental to data processing pipelines, API response shaping, and data analysis workflows.
Array filtering is the JSON equivalent of SQL's WHERE clause or Python's filter() function. You specify a condition — "status equals active", "price less than 100", "name starts with A" — and the filter returns only the array elements that satisfy it. JSONPath filter expressions use the syntax $[?(@.field operator value)] where @ refers to the current element. This is the most expressive and portable way to write JSON filters.
Field projection — also called "pick" or "select" — returns only the specified fields from each object, discarding all others. If you have a list of user objects with 20 fields but only need name and email for a display list, projection produces [{name: "...", email: "..."}, ...] with a smaller payload. This is the JSON equivalent of SELECT name, email FROM users — specifying exactly which columns to include. Projection reduces response payload size and simplifies client-side processing.
Combining filtering with projection is the most powerful use case. "Give me the name and email of all users whose status is active and whose created_at is after 2024-01-01" applies both a condition filter and a field projection in one operation. jq, the command-line JSON processor, excels at this: .users[] | select(.status == "active") | {name, email}. The JSONPath evaluator in this tool handles the selection part; jq handles complex combinations.
The "omit" operation is the complement of "pick" — instead of specifying which fields to include, you specify which fields to exclude. This is useful when you want most fields but need to remove one or two: user data minus the password hash, order data minus internal pricing fields. Omit is more convenient than pick when the number of excluded fields is small relative to the total field count.
JSON filtering is heavily used in data privacy and security contexts. Before logging API responses, filter out personally identifiable information (PII) like email addresses, phone numbers, and payment details. Before caching responses, filter out user-specific fields so the cached version is shareable across users. The "redact" operation (masking sensitive values with asterisks) is a variant of filtering used in audit logs.
When developers use this tool
Additional frequently asked questions
What is the difference between filter, pick, and omit?
Filter selects elements from an array based on a condition (like WHERE). Pick selects specific fields from each object (like SELECT field1, field2). Omit removes specific fields from each object (like SELECT * EXCEPT field1). All three reduce the data, but along different dimensions — filter reduces rows, pick and omit reduce columns.
How do I filter a nested array inside a JSON object?
Use JSONPath to navigate to the nested array and apply a filter expression: $.parent.nested_array[?(@.field == "value")]. The filter expression is evaluated against each element of the nested array, returning only matching elements. The JSONPath evaluator tab in the main tool handles this type of nested filtering.
Can I filter by multiple conditions simultaneously?
Yes. JSONPath supports combining conditions with && (AND) and || (OR) in filter expressions: $[?(@.status == "active" && @.age > 18)]. For complex multi-condition filters, jq on the command line provides more powerful boolean expression syntax and function support than JSONPath filter expressions.
Is JSON filtering destructive? Does it modify the original?
No. JSON filtering always produces a new document from the input — the original is never modified. The tool reads the input, applies the filter, and outputs the matching subset as a new JSON document. This is true for all filtering operations: filter, pick, omit, and redact all produce new output without affecting the input.