MQTT-Client-ID-Generator
Erzeuge bis zu 100 eindeutige MQTT-Client-IDs auf einmal — zufällig, UUID, Hex oder zeitstempelbasiert, mit deinem eigenen Präfix. Mit dem strikten Modus bekommst du IDs, die jeder MQTT-3.1.1-Broker akzeptieren muss.
Wähle deine Optionen und klicke auf „Client-IDs erzeugen“.
Die IDs werden in deinem Browser mit der Web Crypto API erzeugt und nirgendwohin gesendet.
Wofür die MQTT-Client-ID da ist
Jeder MQTT-Client sendet im CONNECT-Paket eine Client-Kennung. Der Broker erkennt den Client darüber bei Reconnects wieder: Sie ist der Schlüssel, unter dem der Broker die Session speichert — Subscriptions, wartende QoS-1- und QoS-2-Nachrichten und offene Bestätigungen. Verbindet sich ein Gerät mit derselben ID und einer persistenten Session neu, macht es genau dort weiter, wo es aufgehört hat. Mit einer anderen ID behandelt der Broker es als völlig neuen Client, und die alte Session bleibt liegen, bis sie abläuft.
Regel 1: Client-IDs müssen eindeutig sein
Ein Broker erlaubt pro Client-ID nur eine Verbindung. Kommt eine zweite Verbindung mit einer bereits verbundenen ID, schließt der Broker die erste — in MQTT 5 mit dem Reason Code 0x8E Session taken over. Das ist die häufigste Ursache für „mein Client trennt ständig die Verbindung“: zwei Geräte mit derselben Konstante in der Firmware, eine Web-App in zwei Tabs oder ein Dienst mit zwei Replikas. Beide Clients verbinden sich neu, werfen sich gegenseitig raus, und das Spiel wiederholt sich alle paar Sekunden. Weitere Symptome findest du unter MQTT-Verbindungsfehler.
Gute Client-IDs sind pro Gerät stabil (damit persistente Sessions funktionieren) und in der ganzen Flotte eindeutig. Ein gängiges Muster ist ein lesbares Präfix plus etwas Gerätespezifisches: eine Seriennummer, eine MAC-Adresse oder ein einmal erzeugter und im Flash gespeicherter Zufallswert. Browser- und kurzlebige Clients nutzen meist pro Verbindung eine neue Zufalls-ID.
Regel 2: die 23-Zeichen-Garantie
Laut MQTT-3.1.1-Spezifikation muss ein Broker Client-IDs mit 1 bis 23 Bytes aus 0-9, a-z und A-Z akzeptieren und darf alles andere akzeptieren. Die meisten modernen Broker nehmen deutlich längere IDs mit Bindestrichen, Unterstrichen und Doppelpunkten, einige Embedded- und ältere Broker lehnen sie aber mit Return Code 2 (identifier rejected) oder 0x85 Client Identifier not valid ab. Wenn du nicht bestimmen kannst, mit welchem Broker deine Geräte sprechen, aktiviere oben den strikten Modus. Die Unterschiede der Protokollversionen erklärt MQTT 5 vs. 3.1.1.
Leere Client-IDs
Ein Client darf eine leere Client-ID senden und den Broker eine wählen lassen — aber nur zusammen mit Clean Session (3.1.1) bzw. Clean Start (5.0), weil es keinen stabilen Schlüssel zum Speichern einer Session gibt. MQTT-5-Broker liefern die erzeugte ID in der Property Assigned Client Identifier zurück. Manche Broker deaktivieren diese Funktion, deshalb ist eine eigene ID die portable Wahl.
Bereit zum Testen? Füge eine erzeugte ID in den Online-MQTT-Client ein und verbinde dich mit einem öffentlichen Broker — oder öffne einen zweiten Tab mit derselben ID, um einen Session Takeover live zu sehen.
FAQ zur Client-ID
Wie lang darf eine MQTT-Client-ID sein?
MQTT 3.1.1 verlangt, dass Broker Client-IDs mit 1 bis 23 UTF-8-Bytes aus 0-9, a-z und A-Z akzeptieren, und erlaubt ihnen, mehr zu akzeptieren. MQTT 5 gibt dieselbe Garantie. In der Praxis akzeptieren Mosquitto, EMQX, HiveMQ und die meisten Cloud-Broker IDs mit bis zu 65.535 Bytes und beliebigen Zeichen.
Was passiert, wenn zwei Clients dieselbe Client-ID verwenden?
Der Broker trennt die bestehende Verbindung und akzeptiert die neue (Session Takeover; MQTT-5-Reason-Code 0x8E). Wenn sich beide Clients automatisch neu verbinden, werfen sie sich gegenseitig immer wieder raus, und beide scheinen ständig die Verbindung zu verlieren.
Kann ich eine leere Client-ID verwenden?
Ja, wenn du eine Clean Session (MQTT 3.1.1) bzw. Clean Start (MQTT 5) anforderst. Der Broker vergibt dann eine eindeutige ID; MQTT 5 liefert sie in der Property Assigned Client Identifier zurück. In MQTT 3.1.1 lässt sich eine leere ID nicht mit einer persistenten Session kombinieren.
Muss die Client-ID geheim sein?
Nein. Client-IDs sind Kennungen, keine Zugangsdaten — sie stehen in den Broker-Logs und sind leicht zu erraten. Authentifiziere dich immer mit Benutzername und Passwort, Token oder Client-Zertifikat und nutze ACLs, damit sich kein Client als ein anderer ausgeben kann.