Free tool
UNS topic and tag name generator
Generate consistent Unified Namespace topics from your list of sites, areas, lines and machines. Accented letters and characters MQTT forbids are cleaned, Sparkplug B topics are prepared too, and the result downloads as CSV or JSON.
Generated topics
| UNS topic (MQTT) | Sparkplug B topic | Sparkplug metric name |
|---|
Topic tree
How the topics are generated
Each machine line is combined with each signal into one topic: enterprise/site/area/line/machine/signal. Every level is lowercased, accented letters become their ASCII equivalents, spaces, dots and underscores become the separator you choose, and other characters are dropped. In the example three machines and four signals give 12 topics; the first is acme-plastik/istanbul/pres-atolyesi/hat-1/pres-03/state, and its Sparkplug counterpart is the state metric on spBv1.0/istanbul/DDATA/pres-atolyesi-hat-1/pres-03.
Topic rules are checked against section 4.7 of the MQTT 3.1.1 and MQTT 5.0 specifications: no "+", "#" or U+0000, and topics starting with "$" are reserved for the server. Sparkplug B topics follow the spBv1.0/group_id/message_type/edge_node_id/device_id form of the Eclipse Sparkplug 3.0 specification. Lines spelled differently that land on the same topic once normalised are listed separately; in the field they are the most common reason two machines' data gets mixed up.
Where to start with a UNS
The naming rule is the cheapest UNS decision and the hardest to undo. We describe the architecture in Proxus' Unified Namespace architecture guide, and how we build it on site on our Unified Namespace solution and industrial data governance pages. More tools are on the tools page.
Frequently asked questions
Common questions
How should Unified Namespace (UNS) topics be named?
The common approach follows the physical hierarchy of the plant: enterprise/site/area/line/machine/signal. Each level is lowercase ASCII with one word separator, so "Press 03" and "press-03" land on the same topic and subscribers can filter safely with the wildcards + and #. What matters most is picking one rule and applying it across the whole plant.
Can topic names contain non-ASCII letters?
MQTT topic names are UTF-8, so technically yes. But systems can change the case of letters such as the Turkish İ/ı differently, and the same machine can end up on two topics. The tool therefore transliterates letters such as ç, ğ, ı, ö, ş and ü to ASCII and drops anything else.
Which characters are not allowed in a topic name?
Under MQTT 3.1.1 and 5.0, "+" and "#" are wildcards and cannot appear in a published topic name, and U+0000 is not allowed. Topics starting with "$" (such as $SYS) are reserved for the server. A topic name is 1 to 65535 bytes long. The tool removes these characters and shows the line they were on.
How does a Sparkplug B topic differ from a UNS topic?
A Sparkplug B topic (Eclipse Sparkplug 3.0) has a fixed form: spBv1.0/group_id/message_type/edge_node_id/device_id. The full hierarchy does not fit in it; the tool makes the site or enterprise the group_id, the levels in between the edge_node_id and the machine the device_id, and gives the signal as the metric name. This is a common mapping, not the only right one; adapt it to the rules of your Sparkplug network.
Is the data I enter sent anywhere?
No. Topics are generated in your browser and the CSV and JSON files are built there too; no value is sent to a server.

Next step
Let’s turn your goal into a clear engineering scope.
Tell us about your plant, your machines and your goal. An integration engineer will set up a discovery call with you.