Uma UUID (Universally Unique Identifier, identificador único universal) é um identificador de 128 bits (16 bytes) considerado único na prática, mesmo quando gerado sem uma autoridade central. Como texto padrão escreve-se com 32 caracteres hexadecimais e 4 hífens, agrupados em 8-4-4-4-12 (ex. 550e8400-e29b-41d4-a716-446655440000). Esta ferramenta pode gerar cada versão definida pela RFC 4122 e pela atual RFC 9562 — v1, v3, v4, v5 e v7.
O que é uma UUID, e quais são as suas versões?
Uma explicação completa das versões de UUID segundo a RFC 4122/9562, quando usar cada uma, e em que se diferencia um GUID.
Mini-ferramentas adicionais: UUID NIL, ULID, conversor Base64 e UUID Minecraft
Quatro mini-ferramentas adicionais inspiradas em ferramentas UUID da concorrência: uma UUID vazia fixa, um identificador ULID ordenável, um conversor de UUID para Base64/Hex, e um gerador de UUID offline para Minecraft.
OfflinePlayer:<nome> (MD5), tal como o servidor Minecraft em modo offline. Não corresponde à UUID de conta Mojang/Microsoft real de um jogador online.Tabelas de referência de versões UUID e formatos
Uma comparação citável de versões, exemplos de formato, e uma comparação UUID/GUID/ULID.
| Versão | Origem dos dados | Ordenável? | Uso típico |
|---|---|---|---|
| v1 | Marca temporal + identificador de nó | Parcialmente | Sistemas legados, compatibilidade |
| v2 (DCE Security) | ID POSIX (UID/GID) + marca temporal + nó | Parcialmente | Raro — sistemas DCE/POSIX antigos |
| v3 | Namespace + nome (MD5) | Não | Identificador determinístico (histórico) |
| v4 | Completamente aleatória | Não | Uso geral, a mais comum |
| v5 | Namespace + nome (SHA-1) | Não | Identificador determinístico (recomendada) |
| v7 | Marca temporal + aleatória | Sim | Chaves primárias de bases de dados |
| ULID (extra) | Marca temporal + aleatória (Base32) | Sim | Identificador ordenável, cadeia curta |
| Formato | Exemplo |
|---|---|
| Padrão (minúsculas) | 550e8400-e29b-41d4-a716-446655440000 |
| Maiúsculas | 550E8400-E29B-41D4-A716-446655440000 |
| Sem hífens | 550e8400e29b41d4a716446655440000 |
| Chavetas (GUID .NET) | {550e8400-e29b-41d4-a716-446655440000} |
| Prefixo URN | urn:uuid:550e8400-e29b-41d4-a716-446655440000 |
| Base64 (16 bytes) | VQ6EAOKbQdSnFkRmVUQAAA== |
| Propriedade | UUID | GUID | ULID |
|---|---|---|---|
| Comprimento em bits | 128 | 128 (mesmo padrão) | 128 |
| Comprimento em texto | 36 caracteres | 36 (ou 38 com chavetas) | 26 caracteres |
| Alfabeto | Hexadecimal (0-9, a-f) + hífens | Hexadecimal + hífens | Crockford Base32 |
| Ordenável cronologicamente? | Só v1/v7 | Só v1/v7 | Sim (por defeito) |
| Uso habitual | Uso geral | Ecossistema .NET / Windows | Chaves de base de dados, IDs de logs |
Exemplos de código por linguagem: como gerar uma UUID
Código pronto a copiar para gerar UUID/GUID em Python, JavaScript/Node, Java, C#, Go, PHP, PostgreSQL e MySQL. Cada exemplo mostra a abordagem padrão da linguagem em questão.
uuid, sem necessidade de instalação.# Biblioteca padrão, sem necessidade de instalação import uuid # v4 (aleatória) — o uso mais comum print(uuid.uuid4()) # 550e8400-e29b-41d4-a716-446655440000 # v5 (baseada em nome, SHA-1) — determinística print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com")) # v1 (tempo + nó) print(uuid.uuid1()) # Formatos de texto u = uuid.uuid4() print(u.hex) # sem hífens print(str(u).upper()) # maiúsculas
crypto.randomUUID() integrado em navegadores modernos e Node 19+.// Navegador + Node 19+ (integrado, v4)
const id = crypto.randomUUID();
console.log(id); // 550e8400-e29b-41d4-a716-446655440000
// Node.js (via o módulo crypto)
import { randomUUID } from "node:crypto";
console.log(randomUUID());
// Maiúsculas / sem hífens
console.log(id.toUpperCase());
console.log(id.replace(/-/g, ""));
java.util.UUID (v4 aleatória e v3 baseada em nome).import java.util.UUID;
// v4 (aleatória)
UUID id = UUID.randomUUID();
System.out.println(id); // 550e8400-e29b-41d4-a716-446655440000
// v3 (baseada em nome, MD5)
UUID named = UUID.nameUUIDFromBytes("example.com".getBytes());
System.out.println(named);
// Análise a partir de texto
UUID parsed = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");
Guid. O .NET 9 acrescenta também Guid.CreateVersion7(), ordenada por tempo.using System;
// GUID de tipo v4 (aleatória)
Guid id = Guid.NewGuid();
Console.WriteLine(id); // 550e8400-e29b-41d4-a716-446655440000
Console.WriteLine(id.ToString("B")); // {550e8400-...} formato GUID .NET
Console.WriteLine(id.ToString("N")); // sem hífens
Console.WriteLine(id.ToString("D").ToUpper()); // maiúsculas
// .NET 9+: v7 (ordenada por tempo, adequada para bases de dados)
Guid v7 = Guid.CreateVersion7();
github.com/google/uuid (go get github.com/google/uuid).package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Println(uuid.New()) // v4 (aleatória)
// v5 (baseada em nome, SHA-1)
fmt.Println(uuid.NewSHA1(uuid.NameSpaceDNS, []byte("example.com")))
// v7 (ordenada por tempo) — google/uuid v1.6+
v7, _ := uuid.NewV7()
fmt.Println(v7)
}
ramsey/uuid (composer require ramsey/uuid).use Ramsey\Uuid\Uuid; // v4 (aleatória) echo Uuid::uuid4()->toString(); // 550e8400-e29b-41d4-a716-446655440000 // v7 (ordenada por tempo, adequada para bases de dados) echo Uuid::uuid7()->toString(); // v5 (baseada em nome, SHA-1) — determinística echo Uuid::uuid5(Uuid::NAMESPACE_DNS, "example.com")->toString();
gen_random_uuid() está integrada desde a versão 13 (as versões anteriores precisam da extensão pgcrypto).-- Gerar uma UUID v4 (aleatória) SELECT gen_random_uuid(); -- Valor por defeito automático numa coluna de tabela CREATE TABLE users ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), name text NOT NULL ); -- Versões anteriores (PostgreSQL 12 e anteriores): -- CREATE EXTENSION IF NOT EXISTS pgcrypto;
UUID() gera um valor de tipo v1; recomenda-se UUID_TO_BIN(..., 1) para um armazenamento ordenado.-- Gerar uma UUID em texto (tipo v1) SELECT UUID(); -- Armazenar como BINARY ordenado de 16 bytes (otimizado para o índice) SELECT UUID_TO_BIN(UUID(), 1); CREATE TABLE users ( id BINARY(16) PRIMARY KEY, name VARCHAR(120) NOT NULL ); -- Converter de novo para texto ao ler: -- SELECT BIN_TO_UUID(id, 1) FROM users;
crypto.randomUUID() nativo, com o tipo de retorno tipado como um modelo literal de string.// TypeScript 5.x — o tipo `\`${string}-${string}-${string}-${string}-${string}\`` vem de lib.dom.d.ts
const id: `${string}-${string}-${string}-${string}-${string}` = crypto.randomUUID();
console.log(id); // 550e8400-e29b-41d4-a716-446655440000
// Node.js (via o módulo crypto, com tipos do @types/node)
import { randomUUID } from "node:crypto";
const id2: string = randomUUID();
// Função auxiliar tipada
function novoId(): string {
return crypto.randomUUID();
}
uuid (adiciona uuid = { version = "1", features = ["v4"] } ao Cargo.toml).use uuid::Uuid;
fn main() {
// v4 (aleatória)
let id = Uuid::new_v4();
println!("{id}"); // 550e8400-e29b-41d4-a716-446655440000
// v5 (baseada em nome, SHA-1) — determinística
let named = Uuid::new_v5(&Uuid::NAMESPACE_DNS, b"example.com");
println!("{named}");
// Análise a partir de texto
let parsed = Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000").unwrap();
}
SecureRandom da biblioteca padrão, sem necessidade de gem.require "securerandom" # v4 (aleatória) — o uso mais comum puts SecureRandom.uuid # 550e8400-e29b-41d4-a716-446655440000 # v3 (baseada em nome, MD5) — determinística puts SecureRandom.uuid_v3(SecureRandom::UUID_DNS_NAMESPACE, "example.com") # v5 (baseada em nome, SHA-1) — determinística puts SecureRandom.uuid_v5(SecureRandom::UUID_DNS_NAMESPACE, "example.com")
uuidgen está pré-instalado na maioria das distribuições Linux e no macOS.# uuidgen (Linux/macOS, pacote util-linux ou BSD)
uuidgen # v4 por defeito na maioria das implementações
# 550E8400-E29B-41D4-A716-446655440000
# Forçar minúsculas
uuidgen | tr 'A-Z' 'a-z'
# Kernel Linux (alternativa sem uuidgen instalado)
cat /proc/sys/kernel/random/uuid
# Gerar 5 de uma vez
for i in {1..5}; do uuidgen; done
Glossário de termos UUID
Definições breves dos conceitos essenciais usados ao falar de UUID/GUID.
Guias detalhados
Respostas detalhadas às perguntas mais habituais sobre UUID.
Que versão de UUID devo usar?
Para a maioria dos cenários, v4 (completamente aleatória) é uma boa opção por defeito: simples, respeitadora da privacidade, e não revela nenhuma informação. Se a usares como chave primária de base de dados e o desempenho do índice importar, prefere v7; como os valores v7 gerados sequencialmente ficam ordenados cronologicamente, causam menos fragmentação nos índices de árvore B.
Se precisares sempre de derivar o mesmo identificador a partir da mesma entrada (ex. um URL ou um endereço de correio), usa v5 (baseada em SHA-1); v3 (baseada em MD5) mantém-se apenas por compatibilidade com sistemas legados. Recorre a v1 apenas quando trabalhares com sistemas antigos que a exijam por compatibilidade.
Para uma chave primária de base de dados: UUID, autoincremento, ou ULID?
Os inteiros autoincrementais indexam mais rápido, mas podem colidir em sistemas distribuídos (quando vários servidores inserem registos simultaneamente) e revelam publicamente o número de linhas. Uma UUID v4 nunca colide, mas por ser completamente aleatória, pode fragmentar os índices de árvore B e tornar as escritas mais lentas.
A UUID v7 ou ULID resolve este problema graças a um prefixo com marca temporal: nenhuma das duas colide, e como são inseridas em ordem, o seu desempenho de indexação aproxima-se do autoincremento. O ULID é também mais curto (26 caracteres face aos 36 da UUID); a escolha costuma depender do que o teu ecossistema (ORM/base de dados) suportar.
Qual é realmente a probabilidade de colisão de uma UUID v4?
Uma UUID v4 tem 122 bits gerados aleatoriamente, o que dá 2122 (≈5,3 × 1036) valores possíveis. Segundo o cálculo do paradoxo do aniversário, seria preciso gerar cerca de 2,71 biliões (2,71 × 1018) de UUID antes de atingir uma probabilidade de colisão de 50% — uma escala praticamente impossível, equivalente a cada pessoa na Terra gerar milhares de milhões de UUID a cada segundo.
Por isso, as UUID v4 são consideradas com total segurança «únicas» em aplicações reais. Dito isto, a qualidade do gerador de números aleatórios importa; esta ferramenta usa o criptográfico crypto.getRandomValues em vez do inseguro Math.random().
Adiciona esta ferramenta ao teu site (código de incorporação)
Incorpora gratuitamente o gerador UUID no teu próprio site. Copia o código abaixo para o teu HTML — a ferramenta é mostrada numa vista simplificada e liga a esta página como fonte.
A ferramenta incorporada tem um design fixo; podes ajustar o valor de height conforme o teu site. Sem publicidade nem dados pessoais, funciona inteiramente no cliente.
Perguntas frequentes
O que é uma UUID?
Como se gera uma UUID v4?
Qual é a diferença entre um GUID e uma UUID?
Como se geram UUID em lote?
Quantos caracteres ou bytes tem uma UUID?
É seguro usar um gerador de UUID online?
Qual é a diferença entre UUID v1 e v4?
O que é um ULID, e em que se diferencia de uma UUID?
Como saber quando foi gerada uma UUID v7 ou v1?
Como se gera uma UUID em Python, C#, PostgreSQL e linguagens semelhantes?
uuid.uuid4(),
JavaScript/Node crypto.randomUUID(), Java UUID.randomUUID(), C#/.NET Guid.NewGuid(),
Go uuid.New(), PHP Uuid::uuid4(), PostgreSQL gen_random_uuid(), MySQL UUID().
Os exemplos baseados em nome (v5) e ordenados por tempo (v7) estão na mesma secção.Metodologia e fontes
Fontes: RFC 4122 (A Universally Unique IDentifier) · RFC 9562 (o padrão UUID atual, que acrescenta v6/v7/v8) · W3C Web Cryptography API · a especificação oficial do ULID (Crockford Base32). Última atualização: 26 de julho de 2026. Os resultados são algorítmicos; v3/v5 são determinísticas, enquanto v1/v4/v7 e ULID se baseiam em aleatoriedade criptográfica.