---
title: "Kafka high watermark vs log end offset (LEO)"
description: "Three records reach the leader while slow followers sit at LEO 0. The Kafka high watermark, min(LEO) over the ISR, stays at 0, then jumps to 3 as they catch up."
url: https://monedula.dev/kafka-simulator/scenarios/leo-vs-hw/
---

# Kafka high watermark vs log end offset (LEO)

Scenario 00.2.1 · LEO vs high watermark. Anatomy · Intermediate · about 2 min · Apache Kafka 4.3.

LEO is each replica’s log end; the high watermark is the committed line = min(LEO) across the ISR.

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

## What you start with

Each replica has a log-end offset (LEO) - the next position it will write - while the high watermark is the committed line, equal to the smallest LEO across the ISR. With followers fetching on a delay, watch the leader’s LEO run ahead of the high watermark until the replicas catch up.

## Step by step

1. **Idle · LEO = HW = 0** (t+0.000s): One partition, three replicas. Every replica's log end offset (LEO) and the high watermark (HW) start at 0. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.1&t=0)
2. **Leader's LEO races ahead · HW still 0** (t+0.900s): Three records are appended to the leader, so its LEO is 3. The followers, paced by a slow replica fetch, are still at 0. The high watermark = min(LEO) across the ISR = 0, so nothing is committed yet. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.1&t=1)
3. **Followers caught up · HW = 3** (t+1.300s): The followers fetched the three records, so every replica's LEO is 3. With all ISR members caught up, the high watermark advances to 3 - all three records are now committed. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.1&t=2)

## The takeaway

A record is committed only once every in-sync replica has it: the high watermark = min(LEO) over the ISR is what makes a write durable, not the leader’s LEO alone.

## Further reading

- [Apache Kafka documentation](https://kafka.apache.org/43/design/design/#replication)
