A modern, faster alternative to Debezium
A modern, faster alternative to Debezium
Skip the JVM, endless config, and production log jams that come with Debezium. Rapidly build highly scalable, reliable CDC with Sequin.
Skip the JVM, endless config, and production log jams that come with Debezium. Rapidly build highly scalable, reliable CDC with Sequin.
Capture every insert, update, and delete
Capture every insert, update, and delete
Real-time, native sinks. Kafka not required:
Real-time, native sinks. Kafka not required:
Strict ordering with idempotency
Strict ordering with idempotency
Built-in backfills, filters, and transforms
Built-in backfills, filters, and transforms
Open source, MIT license
Open source, MIT license
YAML
CLI
API
databases:
- name: "sequin-playground"
username: "postgres"
password: "postgres"
hostname: "sequin_postgres"
database: "sequin_playground"
port: 5432
slot_name: "sequin_slot"
publication_name: "sequin_pub"
tables:
- table_name: "accounts"
table_schema: "public"
sort_column_name: "updated_at"
sinks:
- name: "kafka-sink"
database: "sequin-playground"
table: "public.accounts"
destination:
type: "kafka"
hosts: "kafka1.example.com:9092"
topic: "accounts-topic"
username: "kafka-user"
password: "kafka-password"
sasl_mechanism: "plain"
# 1. Install the CLI using Homebrew
$ brew install sequin
# 2. Apply the YAML config file
$ sequin config apply
Applying changes...
✓ Created database connection: sequin-playground
✓ Added table tracking for public.accounts
✓ Created Kafka sink: kafka-sink
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
# 3. Check the health of the kafka sink
$ sequin sink health kafka-sink
Sink: kafka-sink
Status: Healthy
Messages processed (24h): 5,127,394,342
Average latency: 41ms
curl -X POST
https://api.sequinstream.com/v1/sinks
-H "Content-Type: application/json"
-H "Authorization: Bearer YOUR_API_TOKEN"
-d '{
"name": "kafka-sink",
"database": "sequin-playground",
"table": "public.accounts",
"destination": {
"type": "kafka",
"hosts": "kafka1.example.com:9092",
"topic": "accounts-topic",
"username": "kafka-user",
"password": "kafka-password",
"sasl_mechanism": "plain"
}
}'

Jinyuan L.
Lead AI Engineer
"Sequin was incredibly easy to setup and allowed us to quickly establish our real-time knowledge base pipeline. It just works - letting our engineers focus on building features instead of maintaining complicated data infrastructure."

Jinyuan L.
Lead AI Engineer
"Sequin was incredibly easy to setup and allowed us to quickly establish our real-time knowledge base pipeline. It just works - letting our engineers focus on building features instead of maintaining complicated data infrastructure."

Jinyuan L.
Lead AI Engineer
"Sequin was incredibly easy to setup and allowed us to quickly establish our real-time knowledge base pipeline. It just works - letting our engineers focus on building features instead of maintaining complicated data infrastructure."
Performance
Performance
Performance
6.8X faster,
unmatched throughput
6.8X faster,
unmatched throughput
6.8X faster,
unmatched throughput
Sequin is tuned to Postgres to provide higher bandwidth and lower-latency than Debezium. If your database can handle the transaction, Sequin will deliver it with minimal overhead. Read more on our benchmarking page →
Sequin is tuned to Postgres to provide higher bandwidth and lower-latency than Debezium. If your database can handle the transaction, Sequin will deliver it with minimal overhead. Read more on our benchmarking page →
40,000+
messages per second
40+ MB/s
bandwidth throughput
55ms
average latency
Real-time CDC
Postgres to Kafka
Latency at 10,000 operations / second
6.8x
Sequin · 55 ms
AWS MSK Debezium · 253 ms
Fivetran · 5 min
AirByte · 1+ hours
Guarantees
Guarantees
Guarantees
Built for critical systems
Built for critical systems
Sequin is designed to power the kinds of critical CDC systems that typically required a Debezium or a custom build. Sequin never misses an insert, update, or delete and delivers every (100%) change to your stream or queue.
Sequin is designed to power the kinds of critical CDC systems that typically required a Debezium or a custom build. Sequin never misses an insert, update, or delete and delivers every (100%) change to your stream or queue.
Integrations
Integrations
Integrations
Kafka not required
Kafka not required
Sequin works with any Postgres database (version 14+) and supports a growing list of sinks to queues and streams. Sequin even supports native sinks (Webhooks and HTTP) so you can get started without any other infrastructure.
Sequin works with any Postgres database (version 14+) and supports a growing list of sinks to queues and streams. Sequin even supports native sinks (Webhooks and HTTP) so you can get started without any other infrastructure.

Compare
Compare
Compare
Upgrade your CDC
Upgrade your CDC
Sequin is building the best CDC platform for Postgres, while Debezium is a general solution for Kafka. If your source is a Postgres database, Sequin will provide better performance, better tooling, with less over head and at a lower cost.
Sequin is building the best CDC platform for Postgres, while Debezium is a general solution for Kafka. If your source is a Postgres database, Sequin will provide better performance, better tooling, with less over head and at a lower cost.
Performance
Performance
Performance
Latency
55 ms (@ 40k ops/sec)
Latency
55 ms (@ 40k ops/sec)
Latency
55 ms (@ 40k ops/sec)
Throughput
40,000 + Messages / Sec
Throughput
40,000 + Messages / Sec
Throughput
40,000 + Messages / Sec
Reliability
High
Reliability
High
Reliability
High
Scalability
High (GB/sec)
Scalability
High (GB/sec)
Scalability
High (GB/sec)
Core capabilities
Core capabilities
Core capabilities
Sources
Postgres
Sources
Postgres
Sources
Postgres
Destinations
Kafka Ecosystem + 8 Streams & Queues
Destinations
Kafka Ecosystem + 8 Streams & Queues
Destinations
Kafka Ecosystem + 8 Streams & Queues
Interfaces
Web Console, CLI, API
Interfaces
Web Console, CLI, API
Interfaces
Web Console, CLI, API
Observability
Prometheus endpoint
Observability
Prometheus endpoint
Observability
Prometheus endpoint
Batch & streming
Real-time streaming
Batch & streming
Real-time streaming
Batch & streming
Real-time streaming
Backfill (i.e. snapshots)
Full and incremental
Backfill (i.e. snapshots)
Full and incremental
Backfill (i.e. snapshots)
Full and incremental
Delivery guarantee
Exactly once processing
Delivery guarantee
Exactly once processing
Delivery guarantee
Exactly once processing
Ordering
Strict
Ordering
Strict
Ordering
Strict
Transforms
JS, Go, & Lua
Transforms
JS, Go, & Lua
Transforms
JS, Go, & Lua
Deployment
Self-host, Public Cloud, & Private Managed
Deployment
Self-host, Public Cloud, & Private Managed
Deployment
Self-host, Public Cloud, & Private Managed
Licensing
MIT
Licensing
MIT
Licensing
MIT
Active Development
Yes
Active Development
Yes
Active Development
Yes
Support
Community + Dedicated w/ SLA
Support
Community + Dedicated w/ SLA
Support
Community + Dedicated w/ SLA
Cost
Cost
Cost
Vendor costs
OSS, Pay-as-you-go, & Managed
Vendor costs
OSS, Pay-as-you-go, & Managed
Vendor costs
OSS, Pay-as-you-go, & Managed
Engineering costs
Low
Engineering costs
Low
Engineering costs
Low
Admin costs
Low
Admin costs
Low
Admin costs
Low

Yahya J.
Lead Developer
"Sequin solved our activity feed scaling challenges. Its use of logical replication means our application commits changes faster, as it no longer waits for synchronous audit log writes. With features like transaction annotations, we're able to capture rich context like exactly who made each change. I love what these guys are doing!"

Yahya J.
Lead Developer
"Sequin solved our activity feed scaling challenges. Its use of logical replication means our application commits changes faster, as it no longer waits for synchronous audit log writes. With features like transaction annotations, we're able to capture rich context like exactly who made each change. I love what these guys are doing!"

Yahya J.
Lead Developer
"Sequin solved our activity feed scaling challenges. Its use of logical replication means our application commits changes faster, as it no longer waits for synchronous audit log writes. With features like transaction annotations, we're able to capture rich context like exactly who made each change. I love what these guys are doing!"
Use cases
Streamline your use cases
Sequin is designed to power every change data capture use case you can achieve with Debezium, and more. No need to master a new piece of infrastructure.
Trigger
Workflows
Create
Audit logs
Replicate
Tables
Maintain
Caches
// Handle order events and trigger workflows
async function handleOrderWorkflow(change) {
// Log the change
await logDatabaseChange(change);
// Only process new orders
if (change.metadata.table_name === 'orders' && change.action === 'insert') {
const order = change.record;
// Update inventory for each item
for (const item of order.items) {
await updateInventory(item.product_id, -item.quantity);
}
}
}
// Update inventory levels and check thresholds
async function updateInventory(productId, quantityChange) {
const { rows } = await db.query(
'UPDATE inventory SET quantity = quantity + $1 WHERE product_id = $2 RETURNING quantity',
[quantityChange, productId]
);
// Trigger alert if inventory is low
if (rows[0].quantity <= 10) {
await db.query(
'INSERT INTO inventory_alerts (product_id, current_quantity) VALUES ($1, $2)',
[productId, rows[0].quantity]
);
}
}
Trigger code when Postgres rows change
Build automated workflows from database changes. Sequin captures and delivers every change in your database so you can break monolithic processes into automated, event-driven workflows.
// Automatically log all database changes with Sequin
async function logDatabaseChange(change) {
await db.query(`
INSERT INTO audit_logs (
event_id,
table_name,
record_id,
action,
old_values,
new_values
) VALUES ($1, $2, $3, $4, $5, $6)
`, [
change.id,
change.metadata.table_name,
change.record.id,
change.action,
JSON.stringify(change.changes), // Previous values
JSON.stringify(change.record) // New values
]);
}
// Example: Capture an order status change
await logDatabaseChange({
id: "evt_123",
action: "update",
metadata: { table_name: "orders" },
record: { id: "order_123", status: "shipped" },
changes: { status: "pending" }
});
Create an Audit Log
Sequin captures the full history of modifications to your data, letting you meet compliance requirements, debug issues, and build powerful user features like activity feeds - all without modifying your application code.
// Replicate tables across databases with Sequin
async function replicateChange(change) {
// Handle inserts, updates, and initial data
if (change.action !== 'delete') {
await db.query(`
INSERT INTO products_replica (
id,
name,
price,
updated_at
) VALUES ($1, $2, $3, $4)
ON CONFLICT (id) DO UPDATE SET
name = EXCLUDED.name,
price = EXCLUDED.price,
updated_at = EXCLUDED.updated_at
`, [
change.record.id,
change.record.name,
change.record.price,
new Date()
]);
} else {
// Handle deletes
await db.query('DELETE FROM products_replica WHERE id = $1', [change.record.id]);
}
}
// Example: Replicate a product update
await replicateChange({
action: "update",
record: { id: "prod_123", name: "Coffee Maker", price: 99.99 }
});
Replicate Tables
Seamlessly replicate data between databases in real-time. Sequin handles the complex parts of database replication - like race conditions, schema transformations, and failure recovery - so you can sync your data with just a few lines of code.
// Keep Redis cache in sync with your database
async function updateCache(change) {
const cacheKey = `products:${change.record.id}`;
if (change.action !== 'delete') {
// Update cache for inserts/updates
await redis.set(cacheKey, JSON.stringify({
...change.record,
cached_at: new Date()
}));
} else {
// Remove deleted items from cache
await redis.del(cacheKey);
}
}
// Example: Cache product update
await updateCache({
action: "update",
record: { id: "prod_123", name: "Coffee Maker", price: 99.99 }
});
Maintain Cache
Keep your caches in sync with your database. Sequin streams changes directly to Redis, Memcached, or your caching layer of choice - eliminating cache inconsistencies and the complexity of manual cache invalidation.
Features
Features
Features
Setting a higher standard
Setting a higher standard
Debezium requires complicated dependencies, endless configuration, and blackbox runtimes. Sequin is tailored to Postgres to cut out the complexity and deliver helpful features.
Debezium requires complicated dependencies, endless configuration, and blackbox runtimes. Sequin is tailored to Postgres to cut out the complexity and deliver helpful features.



SQL filters
Use WHERE clauses to route changes to your sinks.
Use WHERE clauses to route changes to your sinks.
Use WHERE clauses to route changes to your sinks.
function onRow(r) {
switch (r.status) {
case 'active': return JSON.stringify('running');
case 'pending': return JSON.stringify('waiting');
default: return JSON.stringify('unknown');
}
}
function onRow(r) {
switch (r.status) {
case 'active': return JSON.stringify('running');
case 'pending': return JSON.stringify('waiting');
default: return JSON.stringify('unknown');
}
}
Transforms
Transform messages.
Web Console
A rich web console to easily manage and observe sinks as you build.
A rich web console to easily manage and observe sinks as you build.
A rich web console to easily manage and observe sinks.



Backfill
Backfill at any time.



Observable
Trace every row from capture through to delivery
Trace every row from capture through to delivery
Trace every row from capture through to delivery.
Join the community
Join the community
Join the community
Open source, in production
Open source, in production
Sequin makes change data capture easier than ever. See what developers are saying and join the community to get started.
Sequin makes change data capture easier than ever. See what developers are saying and join the community to get started.
Discord
Join the Sequin Discord server to chat with contributors, get support, and discuss your use case.
©️ 2025 Sequin Labs, Inc. All rights reserved.
©️ 2025 Sequin Labs, Inc. All rights reserved.
©️ 2025 Sequin Labs, Inc. All rights reserved.