Free · Pro $99 · Craft 5
Ask your content a question
Craft's element indexes are good at showing you a section. They are not good at answering a question — which entries have no hero image, were last touched before March, and aren't linked from anywhere? That's fifteen minutes of throwaway template. Clean Air asks it in fifteen seconds, saves the question, and sends the answer out as a spreadsheet.
Features
A filter builder that understands what a field's value actually is, and a results table you can hand to somebody else.
Filter anything
Entries, assets, categories, tags and users. Addresses, Commerce orders, products and variants, and any other element type on the site, on Pro.
- Sources follow the type: sections and entry types, volumes, groups, product types
- Nested (Matrix) entry types are sources in their own right
- Addresses have no Craft index at all — this is the only way to search them
Operators that fit the value
Clean Air doesn't ask what class a field is. It asks what shape its value is, and the operators follow from that.
- A text field, a URL, an email, a CKEditor body, a variant SKU and an address line all get the same operators
- Dates get “is in the last N days”; relations get “has at least N”
- An unrecognised field type gets the text operators rather than disappearing
Match all, or match any
Conditions AND together by default, or OR. CP Filters could only ever AND.
- OR runs one query per condition and unions the IDs, because Craft has no OR syntax across fields
- It works with every field type, including relations
- There is a configurable ceiling, and it says so when it truncates rather than pretending
Statuses that don't lie
Filters run with no status constraint by default. Craft's indexes default to “live”, which is exactly wrong for a tool you reach for when something has gone missing.
- Drafts, revisions and trashed elements are each an explicit toggle
- So the same question gives the same number wherever you ask it
A result set is a URL
Choose the columns, sort by any of them, then paste the address into a ticket and somebody else sees the same rows.
- Relations render as links and dates as dates — and the export writes the same values
- Save a filter, pin it, or share it with everyone who can use Clean Air
- Seeing a shared filter and rewriting it are separate permissions
Export without the memory bill
CSV in both editions; TSV, JSON and XML on Pro. Streamed in batches, so a 250,000-row export costs about what a fifty-row one does.
- Anything large goes to the queue and waits for you on the Exports screen
- Files are pruned after a set number of days — an export is a snapshot of real content
- On Pro, a saved filter plus cron is a scheduled report
Clean Air in the control panel
Real screens from a Craft 5 install — the builder with its results, the saved filter list, and the CP Filters import preview.
Screenshots from a live install, not mockups.
A saved filter, from a template
Save a question in the control panel and ask it anywhere. The Twig variable hands back an element query, so everything you already know about element queries still applies. Pro only.
{% set featured = craft.cleanair.filter('featured-in-stock') %}
{% for product in featured.limit(8).all() %}
{{ product.title }}
{% endfor %}
{# Or put a Clean Air Filter field on an entry and let an editor pick #}
{% for entry in entry.productList.all(8) %}
{{ entry.title }}
{% endfor %}
Frequently Asked Questions
The questions worth answering before you install it.
Lite is, and it is not a trial — entries, assets, categories, tags and users, every operator, match all, ten saved filters per person, CSV export, and the CP Filters importer. Pro is $99 with a $79/year renewal, and adds addresses, Commerce and custom element types, match any, unlimited and shared filters, the column chooser, TSV/JSON/XML export, queued exports, console commands, craft.cleanair in templates, and the Clean Air Filter field.
Because a migration path should not be behind a paywall. If CP Filters left you with a shelf of saved filters you can't read any more, getting them back shouldn't cost anything.
No — and you couldn't if you wanted to, because CP Filters can't be installed on Craft 5. Clean Air reads its cpfilters_savedfilters table directly, and never writes to it. Import, compare the two, and uninstall the old plugin when you're happy.
They're named on the import preview, against the filter they came from, before anything is written. A filter that quietly loses a condition returns more rows than it should, which is the dangerous direction — so nothing is dropped silently. A source that no longer exists is reported too, and the filter runs across every source instead.
No. Every query goes through Craft, so a user who can't see a section can't see its entries here either, whatever Clean Air's own permissions say. Sources the user has no permission for are removed from the menus, and a source hand-edited into a URL is dropped rather than honoured. Clean Air's permissions can only narrow access, never widen it.
Probably, without being told anything. Clean Air infers the shape of a field's value rather than matching on class, so most fields land in the right place. One that doesn't falls back to the text operators, and can be placed properly with additionalFieldTypes in the config or the EVENT_DEFINE_FIELD_DEFINITION event.
Two parameters on one element query always AND — that's how Craft works, and there's no parameter syntax for OR across different fields. So match any runs each condition as its own query and unions the IDs: correct, works with every field type including relations, and costs one query per condition. It has a configurable ceiling, past which it truncates and says so. It's a real cost, so it's a deliberate choice rather than something you get by accident.
No. It's a read tool. It finds elements and hands you the list, a URL, or a file — the editing happens in Craft, through the Edit links in the results table.
Start free, upgrade when you need to
Lite is free and covers entries, assets, categories, tags and users with every operator and CSV export. Pro is $99 with a $79/year renewal, and adds Commerce, addresses, match any, shared filters, the other export formats, the console commands and the Twig variable. The CP Filters importer is in both.