How to Browse Kafka Messages by Offset, Timestamp, and Partition
Read an exact Kafka offset range or start at a UTC timestamp, inspect key and headers, and understand retention and compaction gaps.
When someone says “check the message at offset 9310,” a topic name is only half the address. Kafka offsets belong to one partition. Start with the topic, partition, and offset together: orders.events / partition 2 / offset 9310.
Read an exact offset range
Open the Kafka message browser, connect through Holy CORS, choose a topic and partition, then select Exact offset. An interval from 9310 to 9320 includes offsets at or after 9310 and stops before 9320. The end is exclusive, so the interval is easy to use again as the next page’s start.
A compacted topic can have missing offsets. If you ask for 10 positions, you may receive fewer than 10 retained records. Do not infer that the client skipped data; compare the earliest and latest retained positions shown beside the results.
Start from a UTC timestamp
Choose Timestamp (UTC) and enter a time such as 2026-09-24T12:00. Kafka looks for the first record in that partition whose timestamp is at or after the target. Add a UTC end time to stop before the first record at or after that moment. When no such record exists, the read starts at the partition end. See the Apache Kafka consumer API for the timestamp lookup semantics.
Check which timestamp policy the topic uses: producer creation time and broker append time can answer different questions. For a multi-partition window, repeat the time lookup per partition; each partition has its own offset sequence.
Inspect the actual bytes
Open a row to switch among JSON, text, hex, and Base64. The raw Base64 in the JSON download keeps binary keys, values, null tombstones, duplicate header names, and null header values distinct. A readable preview is convenient, but it is not a lossless export.
If the value uses Avro or Protobuf, inspect its bytes here, then use the Avro converter or Protobuf converter with the relevant schema or proto contract. Text rendering alone cannot decode an unknown binary schema.
To take every currently retained record, choose Export retained · JSONL. It exports the selected partition by default; check All partitions for the whole topic. The browser captures each partition’s end and reads through it in batches. On browsers with a streaming save picker, the file writes as it goes; elsewhere, the download is limited to 20 MB.
Share the investigation
The Share report button shares the selected offsets and record metadata. Message content stays out of the link unless you explicitly check the option in an opened record. A recipient sees a snapshot and can connect their own cluster to fetch fresh data. The share link never includes broker credentials.