RevealTheme logo

Gerador de UUID

Gere UUID v4 (identificadores únicos universais aleatórios). Cada clique produz um novo.

Como usar esta ferramenta

  1. 1

    Click the Generate UUID button to produce a fresh random v4 UUID.

  2. 2

    Read the 36-character identifier shown in the canonical 8-4-4-4-12 format below the button.

  3. 3

    Click Copy to put the UUID on your clipboard for pasting into code, a database, or a config file.

  4. 4

    Click Generate UUID again whenever you need another one — every click replaces the value with a brand-new random UUID.

O que é um UUID e por que o software o utiliza?

Um UUID (Universally Unique Identifier, às vezes chamado de GUID em contextos da Microsoft) é um valor de 128 bits usado para identificar entidades sem necessidade de coordenação entre sistemas. A ideia de um UUID é que dois programas distintos, executando-se em duas máquinas distintas e sem se conhecerem, podem gerar UUIDs e presumir com confiança que eles nunca colidirão. Essa propriedade viabiliza o design de sistemas distribuídos: você pode deixar que qualquer serviço cunhe identificadores localmente sem um contador central, mesclar bancos de dados sem renumerar linhas e pré-gerar identificadores no cliente antes mesmo de o servidor ver a requisição. Os UUIDs têm cinco versões canônicas definidas pela RFC 4122: v1 (baseado em tempo + endereço MAC, vaza o horário de criação e a identidade da máquina), v3 (hash MD5 de um namespace + nome), v4 (aleatório, o mais comum), v5 (hash SHA-1 de um namespace + nome). A RFC 9562 adicionou a v6 (ordenado por tempo, como a v1, mas sem vazar o MAC) e a v7 (timestamp Unix + aleatório, projetado especificamente para chaves primárias de bancos de dados porque é ordenado cronologicamente). Esta ferramenta gera UUID v4 por meio de crypto.randomUUID(), que utiliza aleatoriedade criptograficamente robusta do sistema operacional subjacente do navegador, a mesma fonte de onde vêm as chaves TLS. A saída é idêntica byte a byte à de uuid.uuid4() do Python, crypto.randomUUID() do Node e google/uuid.NewRandom() do Go.

Casos de uso comuns

  • Chaves primárias de banco de dados: substituem os inteiros autoincrementados quando você precisa mesclar bancos de dados ou gerar IDs no lado do cliente.

  • Identificadores de sessão em cookies: longos o suficiente para que adivinhar por força bruta um ID de sessão válido seja computacionalmente inviável.

  • Chaves de idempotência para requisições de API: repita a requisição com segurança; o servidor deduplica por UUID.

  • Identificadores de arquivos enviados: nomeie os arquivos enviados por UUID para evitar colisões de caminho e não expor os nomes de arquivo originais.

  • IDs de rastreamento distribuído: cada requisição recebe um UUID, propagado pelos serviços para correlacionar os logs.

  • Identificadores de fixtures de teste: aleatoriedade previsível para dados de teste sem precisar coordenar IDs entre os casos de teste.

Perguntas frequentes

O que significa v4?
Versão 4: é gerado a partir de 122 bits de aleatoriedade mais 6 bits fixos de versão/variante. Outras versões: a v1 baseia-se em timestamp + MAC (não a use; vaza a identidade da máquina e o horário), a v3/v5 são hashes determinísticos de um namespace + nome (úteis para identificadores derivados estáveis), a v7 é aleatória com prefixo de timestamp (excelente para bancos de dados porque é ordenada cronologicamente). Para a maioria dos casos, a v4 é a opção padrão correta.
Quão únicos os UUIDs realmente são?
Os UUID v4 têm 122 bits efetivos de aleatoriedade: 5,3×10^36 valores possíveis. Você teria que gerar 2,71 quintilhões de UUIDs antes de atingir uma probabilidade de colisão de 50%. Para contextualizar, se você gerasse um bilhão de UUIDs por segundo, precisaria de 85 anos para chegar a esse limiar. Colisões práticas não ocorrem com um bom gerador de números aleatórios.
Devo usar v4 ou v7 para as chaves primárias de bancos de dados?
A v7 é melhor para bancos de dados. Os UUID v4 são aleatórios, o que significa que as linhas novas se dispersam ao acaso pelos índices B-tree, causando inchaço do índice e inserções lentas em larga escala. A v7 antepõe o timestamp, de modo que os UUIDs novos sempre se ordenam depois dos antigos, mantendo os padrões de inserção sequenciais. PostgreSQL, MySQL e SQL Server se beneficiam da v7. Se a sua biblioteca ainda não suportar a v7, os ULIDs são uma alternativa popular com a mesma propriedade.
É seguro usar crypto.randomUUID()?
Sim. Está especificado pela WHATWG e implementado em todos os navegadores modernos por meio do gerador criptográfico de números aleatórios do sistema operacional (a mesma fonte de onde vêm as chaves TLS). A saída é imprevisível e se distribui uniformemente por todo o espaço de UUID v4.
Qual é a diferença entre UUID e GUID?
São funcionalmente idênticos: GUID é o termo da Microsoft para o mesmo conceito. O formato de bytes difere em algumas APIs da Microsoft (o Guid.ToByteArray() do .NET usa ordem de bytes mista nos três primeiros campos), então, quando a interoperabilidade importa, fique atento à ordem dos bytes. O formato de string canônico (8-4-4-4-12) é idêntico.
Posso encurtar um UUID para usá-lo em URLs?
Sim: codifique os 128 bits em Base62 ou Base64 em vez do formato hexadecimal canônico. O Base62 lhe dá 22 caracteres; o Base64 dá 22 com preenchimento ou 22 na sua variante segura para URL. Algumas bibliotecas também usam formatos de 'UUID curto'. Os bits subjacentes não mudam; apenas a codificação de exibição é diferente.
Por que meu UUID começa com os mesmos caracteres que outro?
É coincidência: os UUID v4 são aleatórios. Com 36 caracteres hexadecimais no total e apenas 22 caracteres hexadecimais aleatórios (4 são reservados para versão/variante e 4 são hifens), algumas coincidências de prefixo são inevitáveis quando você gera muitos. O UUID completo é único mesmo que os prefixos coincidam.

Ferramentas relacionadas