MQTT topic wildcard matcher

A wildcard subscription quietly misses devices, or pulls in far more than intended, once it hits the fleet. Test MQTT subscription filters with + and # against a list of topics before you deploy.

Open the calculator in EM·LINKBelow is a worked example. The working calculator runs free in EM·LINK.

Worked example

Example inputs

mumbai/+/temp
mumbai/line1/#
mumbai/line1/temp mumbai/line2/temp mumbai/line1/boiler/temp pune/line1/temp mumbai/line1 $SYS/broker/load

Example result

Topics matched4 of 6

Filter 2 also catches mumbai/line1, because # matches the parent level too.

TopicFilter 1Filter 2
mumbai/line1/tempyesyes
mumbai/line2/tempyesno
mumbai/line1/boiler/tempnoyes
pune/line1/tempnono
mumbai/line1noyes
$SYS/broker/loadnono

Not matched: pune/line1/temp and $SYS/broker/load.

Matching runs in your browser. Nothing is sent to us.

Run it with your own values

The working calculator is MQTT Topic Matcher in EM·LINK, our free browser tool. The button opens it directly.

Open in EM·LINK

How to read the result

Paste your real topic tree and see exactly which topics each filter catches.

Never subscribe to # alone in production.

How this is calculated

A filter is split on / and compared level by level with each topic.

+ matches exactly one level # matches all remaining levels (last segment only) Levels must match unless the filter ends in # Wildcards do not match $SYS topics

The full derivation, step by step, is in the EM·LINK documentation.

Calculated per MQTT 3.1.1 / 5.0 topic rules. These tools are an engineering aid, not a certification.

Next step

Running MQTT across a whole fleet? Embedos Edge publishes clean topics with OTA and remote config built in.

Common questions

What is the difference between + and # in MQTT?

+ matches one level; # matches everything from that level down and must be last.

Does # match $SYS topics?

No. Most brokers keep wildcards from crossing into $ topics.

Can I test many topics at once?

Yes, paste a list.