---
title: "Kafka producer acks=0: fire and forget, silent data loss"
description: "With acks=0 the producer never waits for the broker. One record replicates by luck; the next is lost when its Kafka leader dies, and the producer is never told."
url: https://monedula.dev/kafka-simulator/scenarios/acks-0-fire-and-forget/
---

# Kafka producer acks=0: fire and forget, silent data loss

Scenario 01.1.1 · acks=0: fire and forget. Producers & EOS · Intermediate · about 2 min · Apache Kafka 4.3.

The producer never waits for an ack (status ‘sent’) - lowest latency, but a record on a leader that dies before replicating is silently lost.

Run it: https://monedula.dev/kafka-simulator/playground/?scenario=01.1.1

## What you start with

The producer's acks setting controls how much durability it waits for. With acks=0 the producer dispatches a record and moves on immediately, never waiting for the broker to confirm the write. Watch O1 replicate safely, then watch O2 vanish when its leader is killed before replication - the producer is never told.

## Step by step

1. **Idle · producer ready (acks=0)** (t+0.000s): Three replicas, a producer configured acks=0. Watch the producer's status as it sends. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=01.1.1&t=0)
2. **O1 dispatched · status ‘sent’** (t+0.900s): With acks=0 the producer wrote O1 to the leader and immediately moved on - its status is ‘sent’, not ‘ok’. It never waited for an acknowledgement, so this is the lowest-latency mode. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=01.1.1&t=1)
3. **O1 replicated (lucky)** (t+1.500s): The followers fetched O1 and the high watermark advanced - O1 is durable. But the producer never knew or waited; acks=0 gives no commit signal. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=01.1.1&t=2)
4. **Leader died before O2 replicated · O2 lost silently** (t+2.400s): O2 was on the leader only when it was killed. A new leader is elected from a follower that never received O2, so O2 is gone - and with acks=0 the producer was never told (still ‘sent’, no error). Fire-and-forget trades durability for latency. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=01.1.1&t=3)

## The takeaway

acks=0 gives the lowest possible latency at the cost of silent data loss: a record on a leader that dies before replicating is gone, and the producer never learns it failed.

## Configs in this scenario

- [`acks`](https://kafka.apache.org/43/configuration/producer-configs/#producerconfigs_acks): How many replicas must have a write before the producer counts it as sent: 0 (none), 1 (the leader only) or all (every in-sync replica, the default, and required for idempotence). [How acks works](https://monedula.dev/kafka-simulator/configs/acks/)

## Further reading

- [Apache Kafka documentation](https://kafka.apache.org/43/configuration/producer-configs/#producerconfigs_acks)

## Troubleshooting

- [Kafka messages lost after broker failure: causes and fixes](https://monedula.dev/kafka-simulator/troubleshooting/messages-lost-after-broker-failure/)
