How to delete multiple topics in Apache Kafka
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
Apache Kafka is a distributed event streaming platform capable of handling trillions of events a day. As you work with Kafka, managing topics — the categories or feeds to which records are published — becomes crucial. Sometimes, for various reasons including cleanup, testing, or reorganization, you might need to delete one or more topics from your Kafka cluster.
Understanding Kafka Topic Deletion
Before you delete topics, it's important to understand that once a topic is deleted, all the data stored in that topic is also permanently lost unless specifically configured otherwise. Kafka's topic deletion process involves marking a topic for deletion and then having the Kafka brokers remove all data associated with the topic from the cluster.
Configuration Requirements
To delete topics, the Kafka cluster needs to be configured to allow topic deletions. This can be done by setting the delete.topic.enable property to true in the broker configuration file (server.properties):
This setting should be enabled on all brokers in the cluster. After making this change, you will need to restart the brokers for the configuration to take effect.
How to Delete Multiple Topics
Deleting multiple topics in Kafka can be performed using the Kafka command-line tools that come bundled with Kafka, or programmatically using Kafka's AdminClient API.
Using Kafka Command-Line Tools
The Kafka command line tool that deals with topic management is kafka-topics.sh. To delete multiple topics, you can use this tool in conjunction with shell scripting.
- List all topics you might want to delete to double-check their names:
- Delete multiple topics by specifying each topic name:
Replace localhost:9092 with your Kafka broker's addresses. If you have many topics, you might want to automate or script this process.
Using AdminClient API
For those preferring to use Java or another JVM language, the AdminClient API provides a way to manage Kafka topics programmatically.
Here’s a basic example in Java:
This code configures an AdminClient instance, then deletes the specified topics and waits for the operation to complete.
Precautions and Best Practices
| Aspect | Consideration |
| Data Loss | Ensure you have backups if needed since deletion is irreversible. |
| Configuration | Confirm delete.topic.enable is true across all brokers. |
| Validation | Always list and verify topic names before deletion to avoid mistakes. |
| Scripting Safety | Use caution when scripting deletions to prevent accidental data loss. |
| Monitoring | Observe the broker logs for any issues or errors during deletion. |
Conclusion
Deleting topics in Kafka is a straightforward process provided the prerequisites are met and careful planning is undertaken. Whether using command-line tools or programmatically via the AdminClient API, always ensure you are working within the bounds of your data governance and compliance requirements.
Related reading
- How to delete the consumer offset of a group for one specific topic
- How to deploy Kafka Stream applications on Kubernetes?
- How to deploy Kafka Streaming Application on Kafka Cluster
- How to deserialize records from Kafka using Structured Streaming in Java?
- How to design task distribution with ZooKeeper
- How to detect dead RabbitMQ connection?
- How to detect duplicate messages in a kafka topic?
- How to determine a Kafka consumer's offset

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.