MQTT Topic Designer Workbench

Design MQTT Topic Names and Topic Filters, then test whether the broker will route messages as intended.

animation
mqtt
protocols
topic-filters
namespace-design
Learner-ready MQTT topic designer workbench with topic namespace linting, Topic Name versus Topic Filter separation, wildcard matching, $ topic behavior, scale projection, scenario presets, source links, and local desktop/mobile visual verification.
MQTT Topic Names Topic Filters Wildcards

MQTT Topic Designer Workbench

MQTT does not create folders on the broker. A Topic Name is a UTF-8 string used by a PUBLISH packet, and a Topic Filter is the subscription rule the broker compares against it. Use this workbench to design a namespace, test wildcard filters, and see the operational risk before deploying a fleet.

Diagnosis A scoped telemetry hierarchy is ready for wildcard testing.
Topic name Valid publish template
Filter result Matches selected samples
Scale 720 possible topics
1. Publish

Topic Name

A publisher sends one concrete Topic Name. It cannot contain + or # wildcards.

2. Subscribe

Topic Filter

A subscriber registers a Topic Filter. It may use + for one level and # for the final subtree.

3. Broker

String Matching

The broker routes by comparing each publish Topic Name with active filters. Topic case and every slash matter.

4. Design

Namespace Choice

Good early levels let clients subscribe by tenant, site, device, data type, or event without overly broad filters.

Build hierarchy Separate stable levels from variable identifiers.
Generate topics Turn the template into concrete publish Topic Names.
Lint design Find invalid syntax and maintainability risks.
Test filter Check which sample messages a subscriber receives.
Estimate scale Review topic count and filter scope.
Topic hierarchy

Build hierarchy

The publish template is split into levels. Variable levels are placeholders that become concrete Topic Names before PUBLISH.

Routing model

Publish to Subscribe

Publisher PUBLISH

v1/acme/factory-a/boiler-01/telemetry/temperature

Concrete Topic Name. Wildcards are not allowed here.

Subscriber filter

v1/acme/+/+/telemetry/temperature

The broker compares the Topic Name to this Topic Filter.

Generated samples

Which messages arrive?

Diagnosis

Scoped designGood

The namespace has useful routing levels and the filter is narrow enough for a telemetry dashboard.

Lint results

Syntax and design checks

Event log

Broker reasoning

Topic status

Valid

The generated publish topics contain no wildcards.

Filter status

Valid

The wildcard placement is valid for a Topic Filter.

Matching samples

3 of 6

Only the intended tenant and metric arrive.

Namespace scale

720

Estimated concrete topics from the selected fleet size.

Filter scope

120

Estimated matching topics for this subscription.

Topic Name

PUBLISH uses a concrete name

No + or #. A template can show variables for teaching, but the actual packet carries a filled-in string.

Topic Filter

SUBSCRIBE uses a matching rule

+ matches one complete level. # matches the remaining subtree and must be the final level.

$ topics

System namespace is special

A filter that starts with # or + does not match Topic Names that start with $.

Design rule

Put routing intent in levels

Tenant, site, device, and data category levels make authorization and dashboards easier than flat strings.

Technical notes and primary sources
MQTT syntax

Topic Names and Filters

MQTT defines Topic Names for PUBLISH and Topic Filters for SUBSCRIBE. Wildcards belong to Topic Filters, not Topic Names.

Wildcard rules

Full-level matching

+ and # must occupy a whole level. # must be either the entire filter or the final level after a slash.

Operational design

Topics are not storage folders

The broker matches strings. Hierarchies are conventions that help humans, ACLs, dashboards, and subscriptions behave predictably.

Practice prompts
Prompt 1

Tenant dashboard

Design a filter that sees all telemetry for one tenant but not commands or status updates.

Prompt 2

Device command panel

Change the namespace so a maintenance tool can subscribe to commands for one site without receiving every site.

Prompt 3

Presence monitor

Use a status topic and decide whether your filter should include all devices, one site, or one device.