Topic Names

A topic name is an UTF-8 string containing one or more levels separated by a forward slash character (/). A topic name must not contain any wildcard characters (+ and #)! Topic names are usabe both in publish and subscribe operations.

Example topic names:

Topic Name
topic
topic name
multi/level/topic
multi/level/topic/
/multi/level/topic/
/

Topic Filters

Wildcard characters can be used in topic filters to match one or more levels within a topic. MQTT has two types of wildcard characters a Single-level wildcard (+) and a Multi-level wildcard (#).

Single-level wildcard

A single-level wildcard can be used to match one level and multiple single-level wildcards can be used in one topic filter.

Topic Filter Matching topics Non-matching topics
+ finance  
/+ /finance  
+/+ /finance  
sport/+ sport/ sport
sport/tennis/+ sport/tennis/player1 sport/tennis/player1/ranking
  sport/tennis/player2  

Multi-level wildcard

A multi-level wildcard (#) can be used to match any level in a topic name. # matches its parent level and any number of child levels. When # is used it must be the last character of the topic filter.

Topic Filter Matching topics
sport/# sport
sport/tennis/player1/# sport/tennis/player1
  sport/tennis/player1/
  sport/tennis/player1/ranking
  sport/tennis/player1/score/wimbledon

Mixed topic filters

Single and multi level wildcards can be used in one topic filter:

Topic Filter Matching topics
+/tennis/# sport/tennis/player1/ranking