MQTT Topic Structure Planner
MQTT Topic Structure Planner tests the subscriptions before devices are deployed, because reordering a hierarchy afterwards means reflashing everything.
🔒 This tool runs entirely in your browser. Your files are never uploaded to a server.
IoT & Systems
MQTT Topic Structure Planner
Frontend preview — no upload or external service.
Topic Structure
Your results are ready.
How the MQTT Topic Structure Planner works
- List the hierarchy levels from most general to most specific.
- Check the wildcard subscriptions you will actually need — a hierarchy that cannot express them needs reordering, and that is much cheaper to discover now.
- Avoid leading slashes, spaces and the wildcard characters themselves in level names.
The method
MQTT wildcards work positionally, so the order of levels determines which subscriptions are possible.
+ matches one level; # matches all remaining levels
Putting device before metric lets you subscribe to one device's everything; putting metric first lets you subscribe to one metric across everything. You cannot have both cheaply, which is why order is the design decision.
FAQ
General to specific, or the other way?
General to specific is the convention, because wildcards work positionally. Whichever attribute you most often need to filter across should sit later in the hierarchy.
What characters should I avoid?
Leading slashes create an empty first level. Spaces cause tooling problems. Plus and hash are wildcards and cannot appear in a published topic name. Non-ASCII is legal and frequently regretted.
How deep should the hierarchy go?
Deep enough to express the subscriptions you need and no deeper. Every extra level is one more thing to get right in every publisher, and unused levels are pure overhead.
How we compare
| Feature | Online Tool Store | A CLI script | An IDE plugin |
|---|---|---|---|
| Wildcard coverage check | ✓ | ✗ | ✗ |
| Naming warnings | ✓ | ✗ | Sometimes |
| Nothing uploaded | ✓ | ✓ | ✗ |
| No broker needed | ✓ | ✗ | ✓ |
MQTT Topic Structure Planner tests the subscriptions before devices are deployed, because reordering a hierarchy afterwards means reflashing everything.