Gerador de Client ID MQTT
Gere até 100 Client IDs MQTT únicos de uma vez — aleatórios, UUID, hex ou baseados em timestamp, com seu próprio prefixo. Ative o modo estrito para obter IDs que todo broker MQTT 3.1.1 é obrigado a aceitar.
Escolha as opções e clique em “Gerar Client IDs”.
Os IDs são gerados no seu navegador com a Web Crypto API e nunca são enviados a lugar nenhum.
Para que serve o Client ID do MQTT
Todo cliente MQTT envia um identificador de cliente no pacote CONNECT. O broker o usa para reconhecer o cliente entre reconexões: é a chave sob a qual o broker guarda a sessão — assinaturas, mensagens QoS 1 e QoS 2 na fila e confirmações pendentes. Se um dispositivo reconecta com o mesmo ID e sessão persistente, ele continua exatamente de onde parou. Se reconecta com outro ID, o broker o trata como um cliente totalmente novo e a sessão antiga fica lá até expirar.
Regra 1: Client IDs precisam ser únicos
Um broker permite só uma conexão por Client ID. Quando chega uma segunda conexão com um ID que já está conectado, o broker fecha a primeira — no MQTT 5 com o reason code 0x8E Session taken over. É a causa mais comum de relatos de “meu cliente fica desconectando”: dois dispositivos gravados com a mesma constante no firmware, um app web aberto em duas abas ou um serviço escalado para duas réplicas. Os dois clientes reconectam, derrubam um ao outro e o ciclo se repete a cada poucos segundos. Veja erros de conexão MQTT para mais sintomas.
Bons Client IDs são estáveis para cada dispositivo (para que sessões persistentes funcionem) e únicos em toda a frota. Um padrão comum é um prefixo legível mais algo específico do dispositivo: número de série, endereço MAC ou um valor aleatório gerado uma vez e salvo na flash. Clientes de navegador e de vida curta normalmente usam um ID aleatório novo a cada conexão.
Regra 2: a garantia de 23 caracteres
A especificação MQTT 3.1.1 diz que um broker deve aceitar Client IDs de 1 a 23 bytes contendo apenas 0-9, a-z e A-Z, e pode aceitar qualquer outra coisa. A maioria dos brokers modernos aceita IDs bem mais longos com hífens, sublinhados e dois-pontos, mas alguns brokers embarcados ou antigos os rejeitam com o return code 2 (identifier rejected) ou 0x85 Client Identifier not valid. Se você não controla com qual broker seus dispositivos vão falar, ative o modo estrito acima. As diferenças entre as versões do protocolo estão em MQTT 5 vs 3.1.1.
Client IDs vazios
Um cliente pode enviar um Client ID de tamanho zero e deixar o broker escolher um, mas só junto com clean session (3.1.1) ou clean start (5.0), porque não existe uma chave estável para guardar a sessão. Brokers MQTT 5 devolvem o ID gerado na propriedade Assigned Client Identifier. Alguns brokers desativam esse recurso, então gerar seu próprio ID é a opção portável.
Pronto para testar? Cole um ID gerado no cliente MQTT online e conecte em um broker público, ou abra uma segunda aba com o mesmo ID para ver um session takeover ao vivo.
Perguntas frequentes sobre Client ID
Qual o tamanho máximo de um Client ID MQTT?
O MQTT 3.1.1 exige que os brokers aceitem Client IDs de 1 a 23 bytes UTF-8 usando apenas 0-9, a-z e A-Z, e permite que aceitem mais. O MQTT 5 mantém a mesma garantia. Na prática, Mosquitto, EMQX, HiveMQ e a maioria dos brokers em nuvem aceitam IDs de até 65.535 bytes com qualquer caractere.
O que acontece se dois clientes usarem o mesmo Client ID?
O broker derruba a conexão existente e aceita a nova (um session takeover; reason code 0x8E no MQTT 5). Se os dois clientes reconectam automaticamente, um fica derrubando o outro e ambos parecem estar desconectando o tempo todo.
Posso usar um Client ID vazio?
Sim, se você pedir clean session (MQTT 3.1.1) ou clean start (MQTT 5). O broker então atribui um ID único; o MQTT 5 o devolve na propriedade Assigned Client Identifier. No MQTT 3.1.1 um ID vazio não pode ser combinado com sessão persistente.
O Client ID precisa ser secreto?
Não. Client IDs são identificadores, não credenciais — aparecem nos logs do broker e são fáceis de adivinhar. Sempre autentique com usuário e senha, token ou certificado de cliente, e use ACLs para impedir que um cliente se passe por outro.