O que é UUID

UUID (Universally Unique Identifier) — também chamado de GUID (Globally Unique Identifier) no mundo Microsoft — é um identificador de 128 bits que tem a garantia estatística de ser único entre todos os sistemas do mundo, sem necessidade de coordenação central. Especificado na RFC 4122 e padronizado pela ITU como X.667.

Formato do UUID

UUID é representado como 32 caracteres hexadecimais divididos em 5 grupos separados por hífens: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (8-4-4-4-12). O caractere M indica a versão (1 a 5) e o primeiro nibble do N indica a variante. O UUID v4 gerado aqui tem M = 4 e N ∈ {8, 9, A, B}.

Versões do UUID

VersãoBaseUso
v1Timestamp + MACHistórica; vaza hardware do gerador
v3MD5 de namespaceHash determinístico
v4Aleatório (122 bits)Mais comum; usado aqui
v5SHA-1 de namespaceHash determinístico moderno
v7Timestamp + aleatórioNovo padrão para chaves ordenáveis (RFC 9562/2024)

Qual a chance de colisão de UUID v4

Com 122 bits de aleatoriedade, existem 2¹²² ≈ 5,3 × 10³⁶ combinações. Para ter 1% de chance de duas colisões em um universo de IDs, seriam necessários 2,71 × 10¹⁸ UUIDs gerados — aproximadamente 2,7 quintilhões. Na prática, pode-se considerar colisão impossível em qualquer sistema real.

Quando usar UUID em vez de auto-incremento

Vantagens do UUID: não expõe quantidade de registros (1, 2, 3 é previsível; UUID não); pode gerar IDs em clientes offline sem coordenação; unifica bases distribuídas sem conflito; evita enumeração maliciosa (/user/1, /user/2).
Desvantagens: ocupa 16 bytes (vs 4-8 do INT), dificulta indexação em bancos relacionais, não ordena cronologicamente (exceto v7). Para dados imutáveis (eventos, logs) prefira v7.

UUID em diferentes linguagens

JavaScript (navegador moderno): crypto.randomUUID().
Python: import uuid; uuid.uuid4().
Java: java.util.UUID.randomUUID().
C#: Guid.NewGuid().
PostgreSQL: gen_random_uuid() (extensão pgcrypto).
MySQL 8+: UUID() ou UUID_TO_BIN() para armazenar como BINARY(16).

Boas práticas para armazenar UUID

PostgreSQL: tipo nativo UUID — 16 bytes, rápido.
MySQL: usar BINARY(16) com UUID_TO_BIN/BIN_TO_UUID, trocando bytes para melhor indexação.
MongoDB: tipo BSON UUID.
REST APIs: enviar sempre em string com hífens — padrão mais compatível.
URLs públicas: UUID v4 serve bem — não vaza data de criação nem sequência.

Perguntas Frequentes

  • Sim, por probabilidade. Com 122 bits aleatórios, a chance de duas colisões em um bilhão de UUIDs é praticamente zero. Para todos os fins práticos, é "único no universo".

  • Tecnicamente nenhuma — GUID é o nome que a Microsoft usa internamente para UUID. Mesma estrutura, mesma garantia. Em ambientes .NET você vê "GUID"; em Linux/open-source, "UUID".

  • Pode, e muitos sistemas modernos preferem. Tome cuidado com o impacto em índices (UUIDs aleatórios causam fragmentação). Para sistemas com alto volume de inserts, considere UUID v7 (ordenável cronologicamente).

  • Sim. Usamos crypto.randomUUID() do navegador, que usa gerador criptograficamente seguro (CSPRNG). Nenhum UUID é armazenado ou enviado a servidores — tudo ocorre na sua máquina.

Buscas relacionadas

gerador de uuid online, uuid v4 generator, guid online, gerar identificador único, uuid javascript, uuid postgresql.