acks) level to determine when a message is considered successfully written.
The default value of acks has changed with Kafka v3.0
- If using Kafka < v3.0,
acks=1 - If using Kafka >= v3.0,
acks=all
acks=0 (fire and forget)
Whenacks=0, producers consider messages “written successfully” immediately after sending, without waiting for broker acceptance.

- Highest possible throughput
- Lowest latency
- No durability guarantees
- Potential for data loss if broker fails
- Metrics collection where some data loss is acceptable
- High-volume logging where speed is more important than reliability
- Scenarios where losing some messages won’t impact business logic
acks=1 (leader acknowledgment)
Whenacks=1, producers consider messages “written successfully” when the leader broker acknowledges receipt.

- Balanced throughput and durability
- Leader response required before considering message sent
- Replication happens asynchronously in background
- Risk of data loss if leader fails before replication completes
- Most common configuration for general-purpose applications
- Good balance between performance and reliability
- Suitable when some data loss is acceptable but should be minimized
acks=all (full acknowledgment)
Whenacks=all, producers consider messages “written successfully” when all in-sync replicas (ISR) accept the message.

- Highest durability guarantees
- Lower throughput due to replication requirements
- Works with
min.insync.replicassetting - No data loss as long as at least one ISR remains
- Critical business data that cannot be lost
- Financial transactions
- Audit logs and compliance data
- Any scenario where data durability is paramount
Popular Configuration
acks=all and min.insync.replicas=2 provides optimal data durability and allows withstanding the loss of one Kafka broker.Interaction with min.insync.replicas
Themin.insync.replicas setting works together with acks=all to control durability:
- min.insync.replicas=1: Only leader needs to be in-sync (defeats purpose of acks=all)
- min.insync.replicas=2: Leader + 1 follower must acknowledge (recommended)
- min.insync.replicas=3: Leader + 2 followers must acknowledge (high durability)
Topic durability and availability
For a replication factor of 3: Reads: Available as long as one partition is up and considered ISR Writes:acks=0&acks=1: Available as long as one partition is up and ISRacks=all:min.insync.replicas=1: Tolerates 2 broker failuresmin.insync.replicas=2: Tolerates 1 broker failure (recommended)min.insync.replicas=3: Cannot tolerate any broker failures
Performance implications
Throughput comparison
- acks=0: Highest throughput (no waiting for acknowledgments)
- acks=1: Moderate throughput (wait for leader only)
- acks=all: Lowest throughput (wait for all ISRs)
Latency comparison
- acks=0: Lowest latency (immediate return)
- acks=1: Moderate latency (leader roundtrip)
- acks=all: Highest latency (full replication roundtrip)
Best practices
Production recommendations
- Use
acks=allfor critical data that cannot be lost - Use
acks=1for general-purpose applications with balanced requirements - Avoid
acks=0in production unless data loss is explicitly acceptable
Configuration examples
High durability (recommended for critical data):Data loss scenarios
acks=0: Data loss if producer fails to send or broker is downacks=1: Data loss if leader fails before replicationacks=all: Data loss only if all ISRs fail simultaneously