Pular para o conteúdo

Gerador de CUID Eficiente para Identificadores Únicos em Sistemas

Gere identificadores únicos resistentes a colisões (CUIDs) para sistemas distribuídos, bancos de dados e aplicações web. Crie IDs escaláveis e classificáveis instantaneamente.

Gerador de CUID

Gere um ID resistente a colisões de forma rápida e fácil.

Clique em “Gerar Novo CUID” para criar um id.
Calculadora de carregamento...
📚

Documentação

O que é um CUID?

Um CUID (identificador exclusivo resistente a colisões) é uma string curta de letras e números usada para identificar um registro, arquivo ou evento, de modo que nenhum item compartilhe o mesmo nome com outro. Esta ferramenta gera CUID2, a versão atual do formato, usando a biblioteca @paralleldrive/cuid2. Cada ID tem 25 caracteres, contém apenas letras minúsculas e números e é criado inteiramente no navegador — nada é enviado a um servidor.

Como usar este gerador de CUID

  1. Clique em Gerar novo CUID para criar um ID.
  2. Clique em Copiar para a área de transferência para copiá-lo.
  3. Cole o ID em um banco de dados, nome de arquivo ou aplicação.
  4. Clique novamente em gerar para obter outro ID. Colisões entre valores CUID2 distintos são extremamente improváveis, embora não sejam matematicamente impossíveis.
  5. Clique em Redefinir para limpar o resultado.

O ID gerado também é armazenado no URL da página, portanto um link para o resultado pode ser compartilhado ou salvo nos favoritos.

Estrutura e fórmula do CUID2

Um CUID2 é construído da seguinte forma:

1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2

A função de hash combina quatro entradas privadas: o horário atual, um contador por sessão, uma impressão digital da máquina host e entropia aleatória. Ela processa essas entradas com SHA3-512, converte o resultado para a base 36 (dígitos de 0 a 9 e letras de a a z) e mantém 24 desses caracteres. A letra aleatória inicial faz o ID completo ter 25 caracteres, que é o comprimento definido para esta ferramenta.

Somente o primeiro caractere existe de forma independente: uma letra aleatória colocada no início para que todo ID comece com uma letra, e não com um número. Muitos sistemas, como nomes de tabelas e colunas SQL, exigem que os identificadores comecem com uma letra. Por isso, um CUID2 pode ser usado com segurança como nome em praticamente qualquer lugar. Cada caractere depois da primeira letra faz parte de um único corpo de hash contínuo e opaco — não há seções separadas.

Como o hash funciona apenas em uma direção, nenhuma de suas entradas pode ser extraída do ID final. Um CUID2 não contém um horário recuperável, um contador recuperável nem uma impressão digital recuperável. Essa é uma escolha deliberada de privacidade e segurança: o ID, sozinho, não pode revelar quando nem onde foi criado.

Exemplo

A geração de um ID com esta ferramenta pode produzir:

1vcpuhcj51eomj1o31dnlqopu0
2

Nesse caso, v é a letra inicial aleatória, e cpuhcj51eomj1o31dnlqopu0 (24 caracteres) é o corpo do hash. As duas partes parecem diferentes apenas porque o primeiro caractere tem a garantia de ser uma letra — o corpo do hash pode conter uma combinação de letras e números.

Por que os sistemas usam CUID2

  • Não exige coordenação. Qualquer máquina pode gerar um ID válido por conta própria, sem consultar um servidor central ou banco de dados para obter o próximo valor.
  • Resistência a colisões. A combinação de horário, contador, impressão digital do host e entropia aleatória torna extremamente improvável que duas máquinas produzam o mesmo ID, mesmo ao gerar muitos IDs por segundo.
  • Compatível com URLs. Um CUID2 usa apenas letras minúsculas e números, portanto nunca precisa ser codificado para uso em um endereço web.
  • Geração rápida e privada. Como esta ferramenta executa o gerador no navegador, os IDs são criados instantaneamente e nunca deixam o dispositivo.

Os IDs CUID2 não podem ser ordenados pelo horário de criação. Ao contrário de um número de incremento automático de banco de dados ou do formato CUID mais antigo (versão 1), um CUID2 oculta o horário dentro do hash, em vez de armazená-lo de forma visível. Aplicações que precisam ordenar registros pela sequência de criação devem armazenar uma coluna de horário separada junto do ID.

CUID2 vs. UUID vs. IDs de incremento automático

RecursoCUID2UUID v4Incremento automático
Comprimento25 caracteres36 caracteres (com hífens)Varia (geralmente um número curto)
Conjunto de caracteresLetras minúsculas e númerosDígitos hexadecimais e hífensDígitos
Exige coordenação centralNãoNãoSim (uma sequência do banco de dados)
Ordenável pelo horário de criaçãoNãoNãoSim
Compatível com URLs sem codificaçãoSimSimSim

CUID2 e UUID v4 resolvem o mesmo problema: gerar IDs sem coordenação central. O CUID2 é mais curto e usa um conjunto menor de caracteres, o que facilita sua leitura e sua colagem em um URL. Um UUID também pode ser usado com segurança em um endereço web, porque o hífen é um caractere não reservado em URLs, mas ele tem 11 caracteres a mais.

Usos comuns

  • Chaves primárias em bancos de dados distribuídos, nos quais vários servidores inserem linhas de forma independente
  • IDs de requisição ou rastreamento usados para acompanhar uma ação em vários microsserviços
  • Nomes de arquivos enviados, para que dois arquivos nunca sobrescrevam um ao outro
  • IDs de sessão ou token para aplicações web
  • IDs de mensagens em filas como Kafka ou RabbitMQ

Um breve histórico

O formato CUID original foi lançado por Eric Elliott em 2012 como alternativa aos UUIDs para aplicações distribuídas. O CUID2, publicado pelo mesmo projeto Paralleldrive, reformulou o formato com base em um hash criptográfico e removeu o horário e o contador recuperáveis que a versão original expunha. Esta ferramenta gera apenas IDs CUID2.

Perguntas frequentes

Qual é a diferença entre CUID (v1) e CUID2?
O CUID v1 armazenava um horário e um contador visíveis dentro do ID, o que tornava os IDs ordenáveis, mas também revelava quando e quantos IDs haviam sido criados. O CUID2 substitui esses campos visíveis por um hash de mão única, de modo que nenhuma informação possa ser lida novamente a partir do ID.

Os CUIDs desta ferramenta podem ser ordenados pelo horário de criação?
Não. Um CUID2 não tem um horário recuperável, portanto os IDs não podem ser ordenados pelo momento em que foram gerados apenas observando a string.

Qual é o comprimento de um ID gerado? É possível alterar esse comprimento?
Esta ferramenta sempre gera IDs de 25 caracteres. Não há uma opção nesta ferramenta para solicitar um comprimento diferente.

Duas máquinas diferentes podem gerar o mesmo CUID2 ao mesmo tempo?
Em teoria, isso é possível, mas na prática é extremamente improvável. Cada ID combina uma impressão digital específica do host com entropia aleatória, portanto é muito improvável que máquinas independentes produzam o mesmo hash.

Esta ferramenta envia algum dado a um servidor?
Não. O ID é gerado por JavaScript executado no navegador, usando o relógio do sistema local e a aleatoriedade fornecida pelo navegador. Nenhum dado é transmitido.

Posso usar um CUID2 como chave primária de um banco de dados?
Sim. IDs CUID2 funcionam bem como chaves primárias em bancos de dados distribuídos, pois qualquer nó pode gerar um sem consultar uma sequência central. Eles não são ordenados naturalmente pelo horário de inserção. Portanto, uma aplicação que precise dessa ordem deve manter uma coluna created_at separada.