Clean Air for Craft CMS

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.

Clean Air

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.

The Clean Air filter builder in the Craft control panel with three conditions — featured image is empty, post date is before 9/1/2026, byline is empty — and a results table of twelve matching news entries
The Clean Air saved filters list showing five filters across entries, assets and users, with their handles, owners, visibility and last run time
The Clean Air import screen previewing seven CP Filters saved filters, with one row warning that a field no longer exists and one marked as an unrecognised element type

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.

twig
{% 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.

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.