1001Ferramentas
🆔 Validadores

Validador CUID2

Valide IDs no formato CUID2 (collision-resistant, 24 chars, base36, prefixo letra), retornando se é sintaticamente válido.

CUID2 (Collision-resistant Unique IDentifier 2): 24 caracteres, base36 (a-z + 0-9), começa com letra.

O que é um CUID2?

O CUID2 (Collision-resistant Unique IDentifier, versão 2) é um esquema moderno para gerar ids únicos em sistemas distribuídos. É o sucessor do hoje obsoleto CUID v1, redesenhado com segurança e privacidade como objetivos principais. Um CUID2 se parece com tz4a98xxat96iws9zmbrgj3a: apenas caracteres base36 minúsculos.

Regras de formato

  • Os caracteres são base36 minúsculo: dígitos 0-9 e letras a-z.
  • O id DEVE começar com uma letra, nunca com um dígito.
  • O comprimento padrão é 24 caracteres, mas é configurável de 2 a 32.
  • Sem hifens, sem maiúsculas, sem caracteres especiais.

A validação, portanto, checa o conjunto de caracteres, a regra da letra inicial e a faixa de comprimento.

Por que CUID2 em vez de CUID v1

O CUID v1 embutia um timestamp, um contador e uma impressão digital do host, o que podia vazar informação (hora de criação, taxa de geração, identidade da máquina). O CUID2, em vez disso, faz hash de um conjunto de entropia com SHA3, de modo que a saída não vaza esses metadados. O custo dessa escolha: um CUID2 não é ordenável lexicograficamente por hora de criação. Se você precisa de ids que ordenem cronologicamente, use ULID ou UUIDv7.

CUID2 vs outros esquemas de id

  • UUID — 128 bits, hexadecimal com hifens; padronizado, porém mais longo e (na v4) aleatório.
  • NanoID — compacto, alfabeto configurável; ótimo para URLs, mas sem garantias de privacidade por design.
  • ULID — ordenável no tempo e base32 de Crockford; trade-off oposto ao do CUID2.
  • CUID2 — privacidade em primeiro lugar, resistente a colisões, mas não ordenável.

Pegadinhas comuns

  • Aceitar um id que começa com dígito — inválido para CUID2.
  • Aceitar letras maiúsculas; o CUID2 é estritamente minúsculo.
  • Supor que dá para ordenar registros pelo CUID2 e obter ordem cronológica — não dá.
  • Confundir o CUID2 com o CUID v1 obsoleto (que começava com a letra c e era mais longo).

FAQ

Dois CUID2 podem colidir? O design torna colisões astronomicamente improváveis entre geradores distribuídos, que é justamente o objetivo — mas nenhum esquema é matematicamente livre de colisão, então é "resistente a colisões", não "impossível de colidir".

Por que não usar simplesmente UUIDv4? Ambos são aleatórios e não ordenáveis; o CUID2 é mais curto, amigável para URL (sem hifens) e explicitamente endurecido contra vazamento de metadados.

Qual comprimento devo usar? O padrão de 24 é um bom equilíbrio. Ids mais curtos aumentam o risco de colisão; só vale aumentar para geração em volume extremamente alto.

Ferramentas Relacionadas