Maiúsculas
Sem hífens
1.cb03b48b-a6f2-4b41-818a-cd872f6dfb69

📚 O que é UUID?

UUID (Universally Unique Identifier), também conhecido como GUID (Globally Unique Identifier) no mundo Microsoft, é um identificador de 128 bits projetado para ser único em todo o mundo, sem necessidade de coordenação central.

O formato padrão de um UUID consiste em 32 dígitos hexadecimais, exibidos em 5 grupos separados por hífens: 8-4-4-4-12 caracteres, totalizando 36 caracteres.

xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx

O "4" indica a versão (v4 = aleatório) e o "y" indica a variante (8, 9, a ou b)

🔧 Versões de UUID

  • UUID v1: Baseado em timestamp e endereço MAC (pode revelar informações)
  • UUID v2: Similar ao v1, usado para segurança DCE (raro)
  • UUID v3: Baseado em hash MD5 de um namespace e nome
  • UUID v4: Gerado aleatoriamente — o mais usado hoje!
  • UUID v5: Baseado em hash SHA-1 de um namespace e nome
  • UUID v7: Novo padrão com timestamp ordenável (2022+)

Esta ferramenta gera UUID v4, que é puramente aleatório e o mais comum em aplicações modernas.

💼 Casos de Uso Comuns

  • Chaves primárias: IDs únicos em bancos de dados distribuídos
  • Identificadores de sessão: Tokens de sessão em aplicações web
  • Rastreamento: IDs para logs, eventos e transações
  • Nomes de arquivos: Evitar colisões em uploads de arquivos
  • APIs e microsserviços: Correlação de requisições entre serviços
  • Testes: Dados de exemplo em desenvolvimento e testes

❓ Perguntas Frequentes

UUID v4 pode gerar duplicatas?

Teoricamente sim, mas a probabilidade é astronomicamente baixa. Com 122 bits aleatórios, você precisaria gerar 2.71 quintilhões de UUIDs para ter 50% de chance de colisão.

Devo usar UUID ou IDs sequenciais?

UUIDs são ideais para sistemas distribuídos e quando você não quer expor a ordem de criação. IDs sequenciais são melhores para performance em alguns bancos de dados e quando a ordem importa.

UUID com ou sem hífens?

Ambos são válidos. O formato com hífens é mais legível, enquanto sem hífens é mais compacto (32 vs 36 caracteres). Alguns bancos de dados têm tipos específicos para UUID.

📝 Exemplos de Código

Veja como gerar UUIDs v4 em diferentes linguagens de programação:

💛 JavaScript

// Usando crypto.randomUUID() (navegadores modernos e Node.js 19+)
const uuid = crypto.randomUUID();
console.log(uuid); // "550e8400-e29b-41d4-a716-446655440000"

// Implementação manual compatível
function uuidv4() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
        const r = Math.random() * 16 | 0;
        const v = c === 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}

🐍 Python

import uuid

# Gerar UUID v4 (aleatório)
novo_uuid = uuid.uuid4()
print(novo_uuid)  # 550e8400-e29b-41d4-a716-446655440000

# Converter para string sem hífens
uuid_sem_hifens = str(novo_uuid).replace('-', '')

# Validar se string é um UUID válido
try:
    uuid.UUID(str(novo_uuid))
    print("UUID válido")
except ValueError:
    print("UUID inválido")

🟣 C# (.NET)

using System;

// Gerar novo GUID (equivalente a UUID)
Guid novoGuid = Guid.NewGuid();
Console.WriteLine(novoGuid); // 550e8400-e29b-41d4-a716-446655440000

// Formatos de saída
string comHifens = novoGuid.ToString("D"); // padrão
string semHifens = novoGuid.ToString("N"); // 32 caracteres

// Parse de string para Guid
Guid parsed = Guid.Parse("550e8400-e29b-41d4-a716-446655440000");

// Validar GUID
bool isValid = Guid.TryParse(input, out Guid result);

☕ Java

import java.util.UUID;

// Gerar UUID v4 (aleatório)
UUID novoUuid = UUID.randomUUID();
System.out.println(novoUuid);

// Converter para string sem hífens
String semHifens = novoUuid.toString().replace("-", "");

// Parse de string para UUID
UUID parsed = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");

// Obter componentes
long mostSigBits = novoUuid.getMostSignificantBits();
long leastSigBits = novoUuid.getLeastSignificantBits();

🐘 PHP

<?php
// Função para gerar UUID v4
function uuidv4() {
    $data = random_bytes(16);
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // versão 4
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // variante
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}

$uuid = uuidv4();
echo $uuid; // 550e8400-e29b-41d4-a716-446655440000

// Validar UUID com regex
$pattern = '/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i';
$isValid = preg_match($pattern, $uuid);
?>