The honest comparison
None of the three is universally better. Pick based on team shape and constraints, not on Twitter discourse. Here's the working table.
| Airflow | Dagster | Prefect | |
|---|---|---|---|
| Mental model | Tasks → DAG (assets too, since 3.0) | Assets → graph emerges | Functions → flows |
| Deployment cost | High (DB + scheduler + DAG processor + API server + workers) | Low (single process to start) | Lowest (a flow is a Python file you run) |
| Ecosystem of operators | Largest (80+ provider packages) | Medium | Medium |
| Best for teams that… | Already have ops; need many integrations | Think in data assets and want lineage front-and-center | Want orchestration that feels like a Python library |
| Async / concurrency story | Fine | Good | Best (native async) |
| UI maturity | Mature, dense | Modern, lineage-first | Modern, flow-first |
| Learning curve | Steep | Medium | Gentle |
The defaults I actually recommend
- Small/new team, starting from zero: Dagster. The asset model maps to how data teams already think, and
dagster devis one command to a working lineage-aware UI. Prefect is genuinely lighter to stand up — a flow is a Python file you run, with no server at all — but what you get is a flow view, not a lineage view. That is the trade, and for a data team the lineage is usually worth the one extra process. - Big team with existing infrastructure and many vendor integrations: Airflow. The ecosystem advantage is real.
- Engineering team that wants orchestration to feel like a library, not a platform: Prefect. The hybrid execution model is a real advantage for regulated/security-sensitive shops.
One caveat about the first row
The mental-model row used to be the cleanest line in this table: Airflow does tasks, Dagster does assets, pick the noun that matches your team. Airflow 3 blurred it. Datasets became Assets, scheduling became event-driven, and a DAG can now wake because data changed rather than because the clock moved. The distinction has not vanished — Dagster still starts from the asset and derives the graph, while Airflow bolts assets onto a task graph that remains the primary object — but it is now a difference of emphasis rather than of kind. If you last compared these three before 2025, that is the row to re-read.
And one important non-answer: don't agonize over the choice. All three are good enough that you'll get most of the value from any of them. The discipline of writing pipelines as DAGs/assets/flows is what makes the work better — the specific tool is the smaller decision.