WHERE, and no way to change a message once it is written, so the grid drops those affordances
instead of pretending to honor them. What replaces them is a start position: read the newest
hundred messages, or the oldest, or everything after an offset or a timestamp.
Quick setup
Click New Connection…, select Kafka, enter one broker’s host and port, and connect. Any broker in the cluster works as the bootstrap: the rest are discovered from it. The driver speaks Kafka’s binary protocol directly and needs Kafka 0.11 or later, the release that introduced the record format every message has used since.Connection settings
There is no Database field. A connection is one cluster, and the sidebar shows its topics directly.
Connection URL
Authentication
Leave Security Protocol onPLAINTEXT for a broker with no authentication, which is the usual
local Docker setup. Managed Kafka nearly always wants SASL_SSL.
Pick
SCRAM-SHA-512 when the cluster offers both. If the mechanism is wrong the broker names the
ones it accepts in the error.
Reading messages
Opening a topic shows its most recent hundred messages, newest last. Columns arepartition,
offset, timestamp, key, value, headers, key_size, and value_size.
Messages from different partitions are interleaved by timestamp. Kafka orders messages only within a
partition, so that ordering is a reading convenience and not a property of the log; partition and
offset together are what identify a message.
A key or value that is not valid UTF-8 is shown as hex. A null value is a tombstone and renders
empty but distinct from a zero-length message, which matters on a compacted topic.
KafkaQL
The query editor takes a small command language.FROM TIME takes an ISO 8601 instant or milliseconds since the epoch, and resolves to the first
message at or after it in each partition.
DESCRIBE GROUP is the lag report: committed offset, end offset, and the gap, per partition. A
partition the group has never committed shows an empty lag rather than a number counted from zero.
A group the cluster does not hold is reported by name instead of coming back empty.
SHOW GROUPS asks every broker, because a broker knows only the groups it coordinates. When one
broker cannot be reached the list is marked truncated rather than presented as the whole cluster’s.
In SHOW BROKERS, takes_admin_requests marks the broker a DROP TOPIC goes to. On a KRaft
cluster any broker forwards an admin request, and the one marked here moves between runs.
Producing a message
PARTITION, a keyed message is placed by the same hash Kafka’s own producer uses, so it
lands with the rest of that key’s messages. A message with no key goes to partition 0.
Compression
Messages are decompressed as they are read. gzip, snappy, lz4, and zstd all work, and no setting selects them: each batch declares its own codec and brokers hand back whatever the producer stored.SSL/TLS
Security Protocol decides whether the connection is encrypted, and the SSL mode decides how strictly the certificate is checked. Setting the protocol toSSL or SASL_SSL with no mode chosen
verifies the chain and the hostname. A private CA goes in the CA Certificate field; mutual TLS
also needs the client certificate and key.
Setting the protocol to PLAINTEXT or SASL_PLAINTEXT turns encryption off whatever the SSL mode
says, so a mode left over from an earlier edit cannot silently encrypt a plaintext listener.
Limitations
Editing a cell, deleting a row, and sorting a column are all unavailable, and the grid dims them rather than failing at save time. Kafka has no update primitive, no per-message delete, and no server-side sort. To change what a consumer sees, produce a new message. Deleting a topic is available, from the sidebar or withDROP TOPIC <name>. The request goes to
the cluster controller, which accepts it and removes the log directories afterwards, so the topic
can still appear in the list for a moment. Truncate is not offered: Kafka removes records by
retention or by an offset per partition, neither of which empties a topic the way Truncate means.
Paging jumps are unavailable. Page two continues from where page one stopped, so a topic being
written to while you read it will not repeat or skip a message. A tail browse pages backwards
through the log, one page older each time.
Row counts are approximate. The count is the end offset minus the start offset, which overcounts
where retention has removed messages from the middle of a compacted topic.
Schema Registry is not read. A topic whose values are Avro or Protobuf shows the raw bytes,
including the five-byte Confluent wire-format prefix.
Creating a topic, editing topic configuration, and resetting consumer group offsets are not
available. Deleting a topic is, as the paragraph above describes.
Troubleshooting
Could not reach the Kafka cluster: the connection was refused
Nothing is listening on that address. Check the port:9092 is the usual plaintext listener and
9093 is often the controller, which does not answer client requests.
Could not reach the Kafka cluster: the TLS handshake failed
Security Protocol isSSL or SASL_SSL but the port is a plaintext listener. Brokers expose
one protocol per port, so use the port configured for TLS.
Kafka authentication failed: the broker does not offer PLAIN, only …
The mechanism does not match the cluster. Set SASL Mechanism to one of the names in the message.The broker rejected ListOffsets for partition …: this broker no longer leads the partition
The partition moved to another broker while the request was in flight, and it moved again before the retry. RunDESCRIBE TOPIC "…" to see the current leader of each partition. A cluster that is
rebalancing settles on its own; one that keeps moving has a broker leaving and rejoining.
Broker … advertises …, which could not be reached: …
The address in the message is what the cluster told this Mac to use, and nothing is listening there. Check that the broker’sadvertised.listeners names an address reachable from here, not a
container hostname or a private IP. Where it cannot be changed, set Broker Addresses to only use
the bootstrap address.

