A lightweight, non-JVM command-line tool for producing, consuming, and inspecting Apache Kafka messages.
kcat (formerly kafkacat) is a versatile command-line utility that acts as a netcat-like interface for Apache Kafka. It enables users to produce messages to Kafka topics from standard input, consume messages from topics to standard output, and inspect cluster metadata without requiring a Java Virtual Machine (JVM). This makes it an essential tool for debugging, testing, and operating Kafka data pipelines.
Kafka developers and administrators who need a lightweight, non-JVM tool for command-line interaction with Kafka clusters, such as for debugging, testing, or scripting data operations.
Developers choose kcat for its fast, lightweight, and statically linked binary (around 150KB), which provides a straightforward CLI without JVM overhead. It offers unique features like Avro deserialization with Schema Registry, transactional and idempotent production, header support, and even an in-memory mock Kafka cluster for testing.
Generic command line non-JVM Apache Kafka producer and consumer
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
kcat is statically linked and around 150KB, enabling quick deployment without JVM overhead, making it ideal for rapid debugging and scripting in resource-constrained environments.
It deserializes Avro messages using Confluent Schema-Registry and outputs them as JSON, simplifying debugging of Avro-encoded data pipelines without custom code.
Supports transactional message production and exactly-once semantics via idempotent producers, allowing reliable data ingestion for testing and operational scripts.
Can spin up an in-memory mock Kafka cluster for ephemeral testing, avoiding the need for a full Kafka setup during development, as shown in the examples.
Allows any librdkafka configuration property via command-line flags and supports custom output formats with -f, providing extensive control over serialization and logging.
Lacks a GUI or web-based dashboard, which can hinder users who prefer visual tools for monitoring message flows or managing clusters interactively.
Requires external libraries like librdkafka and optional ones for Avro/JSON support, making setup cumbersome on systems without package managers or for custom builds.
Primarily focused on producing, consuming, and metadata listing; it doesn't support advanced Kafka admin tasks like topic creation, deletion, or ACL management.
The rename from kafkacat to kcat, while trademark-compliant, can cause confusion in documentation and tooling, and reliance on librdkafka may introduce version compatibility issues.