---
title: "Why Kafka consumers cannot read past the high watermark"
description: "A record on the leader is not yet replicated, so the consumer polls and gets nothing. Kafka consumers only read committed records, below the high watermark."
url: https://monedula.dev/kafka-simulator/scenarios/consumer-cannot-read-past-hw/
---

# Why Kafka consumers cannot read past the high watermark

Scenario 00.2.2 · Reading up to the HW. Anatomy · Intermediate · about 2 min · Apache Kafka 4.3.

A consumer can only read committed records (offsets below the HW); an uncommitted record on the leader is invisible until the HW advances.

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

## What you start with

Consumers may only read committed records - those below the high watermark. A record sitting on the leader but not yet replicated to the full ISR is uncommitted, so watch it stay hidden from the consumer until replication advances the high watermark past it.

## Step by step

1. **Idle · consumer at 0** (t+0.000s): One record will be produced. The consumer polls continuously; watch what it is allowed to read. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.2&t=0)
2. **Uncommitted on the leader · consumer reads nothing** (t+0.900s): The record is on the leader (LEO = 1) but not yet replicated, so the high watermark is still 0. The consumer polls during this window but reads nothing: a consumer may only read up to the HW. An uncommitted record is invisible - it could still be lost if the leader failed before replicating. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.2&t=1)
3. **Replicated · HW advances to 1** (t+1.300s): The followers fetched the record and the high watermark advanced to 1. The record is now committed and becomes readable. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.2&t=2)
4. **Consumer reads the committed record** (t+1.700s): On its next poll the consumer reads up to the high watermark, advancing its position to 1. [Open at this step](https://monedula.dev/kafka-simulator/playground/?scenario=00.2.2&t=3)

## The takeaway

Consumers never see uncommitted data: a record becomes readable only after replication advances the high watermark, which prevents reading writes that could still be lost.

## Further reading

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