Quick verdict
For change data capture specifically, choose Estuary when you want continuous, low-latency capture from PostgreSQL, MySQL, SQL Server or Oracle, delivered to several destinations from one capture, with published per-GB pricing and no infrastructure to run. Choose Airbyte when scheduled CDC syncs (hourly to every five minutes on cloud plans) are fast enough, you want to self-host the pipeline for free with Airbyte Core, or your CDC sources include MongoDB, SAP HANA or Db2 next to a long list of SaaS connectors. Check the database version requirements on both before you commit.
Estuary was formerly named Estuary Flow; the Flow name survives in its GitHub repository and the flowctl CLI. A capture ingests data into collections, JSON documents stored in a cloud storage bucket and validated against a JSON schema, and a materialization keeps a destination updated as new documents arrive. Databases are captured with log-based CDC; SaaS sources and files with scheduled batch loads. Transformations, called derivations, run in SQL (SQLite) or TypeScript, and Python on private and BYOC data planes.
Airbyte is a data movement platform with a large connector catalogue. Its CDC documentation covers PostgreSQL, MySQL, SQL Server, MongoDB, Oracle, SAP HANA and IBM Db2. Airbyte Core is free to self-host on Kubernetes under the Elastic License 2.0; Airbyte Cloud (Standard, Plus, Pro) and Enterprise Flex are paid. For Airbyte as a general ELT tool, see Airbyte vs Fivetran; this page looks only at database CDC and replication behaviour.
Side by side
| Aspect | Estuary | Airbyte |
|---|---|---|
| CDC delivery model | Continuous capture into collections; materializations update destinations as documents arrive | Scheduled syncs that read the log up to the sync start; Airbyte says CDC sources are not treated as infinite streams |
| Fastest cadence | Real-time capture; destination cadence can be set on the materialization | Cloud: 1 hour (Standard), 15 minutes (Plus), 5 minutes (Pro and Enterprise Flex) |
| Documented CDC databases | PostgreSQL, MySQL, SQL Server, Oracle and MongoDB | PostgreSQL, MySQL, SQL Server, MongoDB, Oracle, SAP HANA, IBM Db2 |
| PostgreSQL requirements | PostgreSQL 10 or later; replication slot, publication and a small watermarks table for backfills | PostgreSQL 14 or later for CDC; pgoutput slot used only by Airbyte, plus a publication |
| Capture from a PostgreSQL replica | Supported from PostgreSQL 16 with hot_standby_feedback enabled | Supported from PostgreSQL 16.1 with connector 3.6.21 or later |
| Deletes | Delete events flagged with _meta/op = d; soft deletes by default, hard deletes on supported destinations | _ab_cdc_deleted_at set on delete records; final tables drop rows whose latest change is a delete |
| One source, many destinations | One capture can feed several materializations from the same collections | Each connection syncs one source to one destination |
| Schema changes in CDC | Every document validated against a JSON schema | TRUNCATE and ALTER not captured; new tables or columns need a snapshot and stream refresh |
| Self-hosting | No self-hosted edition; private or BYOC data plane on Enterprise | Airbyte Core, free on Kubernetes; Enterprise Flex hybrid |
| Licence | Managed service; core repository under the Business Source License with parts under Apache 2.0 | Platform and connectors ELv2 (source-available); Airbyte Protocol MIT |
| Pricing model | USD 0.50 per GB plus a monthly fee per connector instance | Credits by volume (Standard, Plus) or capacity in Data Workers (Pro, Enterprise Flex); Core free |
Key differences
Continuous capture versus scheduled CDC syncs
This is the main behavioural difference. Estuary holds a connection to the database log and writes changes into collections continuously. Destinations are kept up to date by materializations, and the PostgreSQL connector documentation lists real-time capture while noting that destination sync cadence can still be controlled on the materialization side. Because collections are stored once, the same capture can feed a warehouse, a search index and a Kafka-compatible consumer.
Airbyte runs CDC as a scheduled sync. Each run reads the change log from the saved position up to the time the sync started and then stops; Airbyte's CDC page says CDC sources are not treated as infinite streaming sources, so the schedule must be frequent enough to keep up with log growth. The fastest cloud schedule is every 5 minutes on Pro and Enterprise Flex, 15 minutes on Plus and 1 hour on Standard. In our view, if minutes of delay are acceptable, Airbyte's model is simpler to reason about; if downstream systems need changes within seconds, Estuary's model fits better.
PostgreSQL CDC in practice
Both use PostgreSQL logical replication with a replication slot and a publication, so the database setup looks similar. Airbyte's Postgres connector requires the pgoutput plugin and a slot used only by Airbyte, and now requires PostgreSQL 14 or later for CDC because the connector moved to Debezium 3.4. Estuary's connector supports PostgreSQL 10 and later, needs one slot per capture and uses a small watermarks table (public.flow_watermarks by default) to keep backfills accurate. A typical setup on the source looks like this:
-- PostgreSQL: objects a log-based CDC tool needs (names vary by tool)
CREATE PUBLICATION cdc_publication FOR TABLE public.orders, public.customers;
SELECT pg_create_logical_replication_slot('cdc_slot', 'pgoutput');
-- Watch slot lag so WAL does not pile up between reads
SELECT slot_name, active,
pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS retained_wal
FROM pg_replication_slots;The slot retains WAL until the tool reads it. With a continuous reader the slot advances all the time; with scheduled syncs it advances only when a sync runs. Airbyte warns that if max_slot_wal_keep_size is exceeded PostgreSQL can invalidate the slot, after which the connection needs a full re-sync. Both tools support capture from a read replica only on PostgreSQL 16 and later.
Deletes and table state in the destination
Estuary marks delete events with _meta/op set to d. By default destinations keep soft-deleted rows, which you can filter out on that field; hard deletes, which physically remove the row, are supported on destinations including Snowflake, BigQuery, Databricks, Redshift, PostgreSQL, MySQL, SQL Server and MongoDB, but not on bindings that use delta updates. Airbyte delivers inserts, updates and deletes in the same record format, sets _ab_cdc_deleted_at only on deletes, and notes that the final table will not show rows whose latest entry is a delete. Decide early whether analysts need deleted rows kept for history, and configure each tool to match.
Running it and paying for it
Airbyte can be run entirely on your own Kubernetes cluster as Airbyte Core, at no licence cost but with the operations work that implies; the cloud plans and Enterprise Flex remove that work. Estuary has no self-hosted edition: it is a managed service, with private data planes or BYOC (a data plane in your own AWS, GCP or Azure account) on the Enterprise plan. For licensing, Airbyte's platform is ELv2 and Estuary's core repository is under the Business Source License; neither is OSI open source.
Pricing works differently. Estuary charges per GB, counting data both when captured and when delivered, plus a monthly fee per connector instance, so one capture feeding two destinations adds GB and instance fees. Airbyte Cloud charges credits by volume on Standard and Plus, or capacity in Data Workers on Pro and Enterprise Flex, which does not rise with volume. Model both with your real change volume and the number of sources and destinations.
Pricing and licensing
Estuary. Listed on estuary.dev/pricing on 7 November 2026 (USD): Developer is free up to 10 GB a month and 2 connector instances, with no credit card. Cloud is pay-as-you-go at USD 0.50 per GB plus USD 100 a month per connector instance (USD 50 after the sixth), prorated hourly, with a 30-day trial when you exceed Developer limits. Data is counted each time it is captured and each time it is delivered; Estuary's own example is 100 GB a month from Postgres to Snowflake counted as 200 GB (USD 100) plus 2 connector instances (USD 200), USD 300 a month. Enterprise (private and BYOC deployment, SSO, SOC 2 report, HIPAA BAA) is custom-priced on annual contracts.
Airbyte. Listed on airbyte.com/pricing on 7 November 2026 (USD): Standard starts at USD 20 a month with 5 credits, billed by volume; Plus is sold as monthly credit packages from USD 189 (40 credits) to USD 4,999 (2,000 credits); Pro and Enterprise Flex are capacity based (Data Workers) and quote-only. Standard and Plus have a 14-day trial. Airbyte Core is free to self-host; you pay for the infrastructure.
Pricing checked on the vendors' official pages on 7 November 2026. Prices change; confirm before buying.
Where each one leads
Estuary strengths
- Continuous log-based capture rather than scheduled CDC runs
- One capture can feed several destinations through materializations
- PostgreSQL CDC from version 10, older than Airbyte's minimum of 14
- Soft or hard deletes per destination, with deletes flagged in every collection
- Published per-GB pricing and a free Developer plan
Airbyte strengths
- Free self-hosted Airbyte Core, so data and pipeline can stay in your own infrastructure
- CDC documented for MongoDB, SAP HANA and IBM Db2 as well as the main relational databases
- Large SaaS connector catalogue on the same platform as database CDC
- Capacity-based pricing on Pro and Enterprise Flex that does not follow data volume
- Postgres CDC built on Debezium, a widely used capture engine
Limitations
Estuary limitations
- No self-hosted edition; private and BYOC deployment require Enterprise
- Per-connector-instance fees add up with many sources or destinations
- Data is counted at both capture and delivery, so fan-out raises cost
- Core repository is under the Business Source License, not an OSI licence
Airbyte limitations
- CDC runs as scheduled syncs; the fastest cloud interval is 5 minutes, on Pro and above
- PostgreSQL CDC requires version 14 or later
- TRUNCATE and ALTER are not captured, and new tables or columns need a refresh
- Self-hosting Core means operating a Kubernetes-based platform
- Slots can be invalidated if WAL retention is exceeded between syncs, forcing a full re-sync
When to choose each
Choose Estuary if
- Downstream systems need database changes within seconds, not minutes
- You want to deliver one database's changes to several destinations
- Your PostgreSQL sources are older than version 14
- You prefer a managed service with published per-GB prices
Choose Airbyte if
- Scheduled CDC every 5 minutes to an hour is fast enough
- You want to self-host the pipeline for free, or need a hybrid data plane
- Your CDC sources include MongoDB, SAP HANA or Db2 alongside many SaaS sources
- You want capacity pricing that does not rise with change volume
When neither is right
- You want open source CDC into Kafka that you run yourself: see Debezium vs Oracle GoldenGate.
- You need enterprise sources such as Db2 for z/OS or SAP applications with self-hosted replication: see Fivetran HVR vs Qlik Replicate.
- You need CDC plus streaming SQL processing from a vendor: see Qlik Replicate vs Striim.
- You mainly load SaaS data on a schedule rather than database changes: see Airbyte vs Fivetran.
Final recommendation
For CDC, the deciding question is latency against control. Estuary fits teams that want continuous capture, fan-out to several destinations and a managed service with published per-GB prices. Airbyte fits teams for whom scheduled CDC is fast enough and who value self-hosting, a wider set of CDC sources (MongoDB, SAP HANA, Db2) and a large SaaS catalogue in the same tool. Check your PostgreSQL version first, since Airbyte now needs 14 or later for CDC, and price both on real change volumes.
Frequently asked questions
Is Estuary the same as Estuary Flow?
Yes. Estuary's documentation says Estuary was formerly Estuary Flow. The Flow name remains in the estuary/flow GitHub repository and the flowctl CLI.
Is Airbyte CDC real-time?
No. Airbyte runs CDC as scheduled syncs that read the change log up to the start of each sync. On Airbyte Cloud the shortest interval is 5 minutes on Pro and Enterprise Flex, 15 minutes on Plus and 1 hour on Standard.
Which PostgreSQL versions do they support for CDC?
Estuary's PostgreSQL connector supports version 10 and later. Airbyte's Postgres connector requires PostgreSQL 14 or later for CDC, because it now uses Debezium 3.4. Both support capture from a read replica only on PostgreSQL 16 and later.
How do Estuary and Airbyte handle deleted rows?
Estuary flags deletes with _meta/op = d and keeps them as soft deletes by default, with hard deletes available on supported destinations. Airbyte sets _ab_cdc_deleted_at on delete records, and its final tables do not show rows whose latest change is a delete.
Can I self-host Estuary like Airbyte Core?
Not as a published edition. Estuary is a managed service; on the Enterprise plan it offers private data planes run by Estuary or BYOC, where the data plane runs in your own cloud account.
Sources
- Estuary pricing
- Estuary concepts
- Estuary PostgreSQL capture connector
- Estuary deletions reference
- Airbyte pricing
- Airbyte change data capture
- Airbyte Postgres source connector
- Airbyte licences
Checked November 2026.
How we research comparisons: our editorial method.