Skip to main content
A filter is a WHERE clause, and it runs at the database. That is the difference between filtering and the find bar: matches come from every row in the table, not from the page you are looking at. Open the filter bar with Cmd+Option+F, type a condition into the row that appears, and press Enter.
Filter panel above the data grid

Filter panel with column and raw SQL conditions

Each row has a drag grip, a checkbox, a column picker, an operator, a value field, and +/ buttons. Right-clicking a column header in the grid and choosing Filter with column pre-fills a row for that column. Filters are saved per connection, database, schema, and table, and survive a relaunch, unchecked rows included. A table with an active filter opens in a new tab rather than replacing the current one.
Redis shows a key-pattern search bar (user:* and the like) with a key-type picker instead of the filter bar.

Operators

Eighteen of them, and the menu shows the SQL each one produces.

Case sensitivity

Contains, not contains, starts with, and ends with ignore case. Equals, not equals, IN, NOT IN, and regex respect it. Open the operator menu and use Match Case to flip either one for that row; an Aa badge marks a row that is not on its usual setting.
On MySQL, MariaDB, SQL Server, SQLite, libSQL, and Cloudflare D1 the column’s collation decides, and no query can override it, so Match Case is dimmed. Their default collations already ignore case. Cassandra and Redis have no case-insensitive matching at all, so it is dimmed there too.

Combining conditions

Match all and Match any in the header join every row with AND or OR. There is no per-row choice and no grouping, so a mixed expression cannot be built out of rows. Put the parentheses in a raw SQL row instead, which enters the WHERE clause as a single parenthesized condition:
⋯ > Preview Query shows the WHERE clause the rows produce, with a copy button. An applied filter reaches an export only through the grid. File > Export > Export Results… writes the rows the grid holds; the toolbar export reads the table itself and ignores the filter bar. See Import & Export.

Nested fields

On a document store such as MongoDB, a field holding an object or an array of objects is one column showing its JSON. The column picker also lists the paths inside it, so customer.country and items.sku filter directly.
Filter column picker with nested paths grouped under their top-level field

Column picker listing nested field paths under their parent

The paths come from a sample of the collection and only the first two levels reach the picker. The button beside it opens a searchable list of every path found, and a path typed there that no sampled document carried is used anyway, which is how to reach a field only some documents have. See MongoDB for the fields this leaves out.

Fields inside an array

A row on a field inside an array gets one more control: Filtering items.price greater than 500 and items.name equal to Laptop with any element returns an order holding an expensive item and, separately, an item called Laptop. With same element on both rows it returns only orders holding one item that is both. any element is the default.
Filter rows on an array field showing the any element and same element control

Two rows on items set to same element, so one array entry must satisfy both

Rows sharing an array and set to same element group together, and Match all / Match any applies inside the group too.

Raw SQL

A new row starts in raw SQL, unless Default Column in the settings says otherwise, and picking a column from its picker switches it to column mode. Type any WHERE condition:
Autocomplete offers the table’s columns and SQL keywords at every position, after AND and OR included. Arrow keys pick a suggestion, Tab or Return inserts it, Escape dismisses the list without closing the filter bar. On a database that does not speak SQL the row is labeled Raw Filter and takes that database’s own syntax: on MongoDB, a filter document such as {"customer.country": "US"}.
The text goes into the WHERE clause as written. A condition whose syntax does not match the database fails the query.

Presets and settings

Both live in the ⋯ menu. Save as Preset… stores the current rows, clicking a preset name loads it, and Delete Preset removes one. Filter Settings sets what a new row starts as (Default Column: Raw SQL, Primary Key, or Any Column; Default Operator: Equal or Contains) and what happens when you reopen a table. Restore Last Filter, the default, brings back the filter you last applied; Always Hide reopens the table unfiltered with the bar closed; Always Show keeps the bar visible with no filter set.