Gerador de UUID/GUID Online - v1, v4, v7
Gere UUIDs (Universally Unique Identifiers) ou GUIDs (Globally Unique Identifiers) instantaneamente. Suporta versões v1, v4 e v7 com múltiplas opções de formato. Perfeito para IDs de banco de dados, chaves de API, tokens e muito mais.
Dica: Use v4 para IDs aleatórios gerais, v1 quando precisar de timestamp embutido, e v7 para IDs ordenáveis cronologicamente (melhor para bancos de dados).
O que é UUID/GUID?
UUID (Universally Unique Identifier) ou GUID (Globally Unique Identifier) é um identificador de 128 bits usado para identificar recursos de forma única em sistemas computacionais. A probabilidade de gerar dois UUIDs idênticos é extremamente baixa, tornando-os ideais para identificadores únicos globais.
Versões de UUID
UUID v1 - Baseado em Timestamp
Gerado a partir do timestamp atual e do endereço MAC (ou valor aleatório). Permite ordenação temporal mas pode revelar informações sobre quando e onde foi gerado.
6ba7b810-9dad-11d1-80b4-00c04fd430c8 Use quando: Precisar de UUIDs ordenáveis cronologicamente em sistemas legados.
UUID v4 - Aleatório (Mais Comum)
Gerado completamente de forma aleatória. É a versão mais usada e recomendada para a maioria dos casos. Não revela nenhuma informação sobre origem ou tempo de criação.
f47ac10b-58cc-4372-a567-0e02b2c3d479 Use quando: Precisar de IDs únicos aleatórios para qualquer propósito geral.
UUID v7 - Ordenável por Tempo (Novo)
Versão mais recente (RFC draft 2024). Combina timestamp Unix com aleatoriedade, permitindo ordenação cronológica mantendo unicidade. Excelente para bancos de dados e sistemas distribuídos.
018d2f8a-3c4e-7890-b456-789012345678 Use quando: Precisar de IDs ordenáveis para melhor performance em índices de BD.
Casos de Uso Comuns
🗄️ Chaves Primárias de Banco
IDs únicos para tabelas em bancos de dados distribuídos
🔐 Tokens e Sessões
Identificadores únicos para sessões de usuário e tokens temporários
📁 Nomes de Arquivos
Garantir nomes únicos para uploads e armazenamento de arquivos
🔗 IDs de Recursos REST
Identificadores únicos para recursos em APIs RESTful
📊 Rastreamento de Eventos
IDs únicos para logs, eventos e transações
🌐 Sistemas Distribuídos
Garantir unicidade entre múltiplos servidores sem coordenação
Formatos Suportados
Padrão (minúsculas com hífen):
f47ac10b-58cc-4372-a567-0e02b2c3d479 Maiúsculas com hífen:
F47AC10B-58CC-4372-A567-0E02B2C3D479 Minúsculas sem hífen:
f47ac10b58cc4372a5670e02b2c3d479 Maiúsculas sem hífen:
F47AC10B58CC4372A5670E02B2C3D479 Estrutura de um UUID
Um UUID padrão tem 36 caracteres (32 hexadecimais + 4 hífens) divididos em 5 grupos:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
└──┬──┘ └┬─┘ └┬─┘ └┬─┘ └────┬─────┘
│ │ │ │ │
│ │ │ │ └─ Node (48 bits)
│ │ │ └──────── Clock Seq (16 bits)
│ │ └─────────── Time Hi + Version (16 bits)
│ └──────────────── Time Mid (16 bits)
└─────────────────── Time Low (32 bits)
O dígito M indica a versão (1, 4 ou 7). O dígito N indica a variante (sempre 8, 9, A ou B).
Implementação em Diferentes Linguagens
JavaScript/Node.js
// Usando o pacote 'uuid'
import { v4 as uuidv4, v1 as uuidv1 } from 'uuid';
const id = uuidv4(); // UUID v4
console.log(id); // f47ac10b-58cc-4372-a567-0e02b2c3d479
const idV1 = uuidv1(); // UUID v1
console.log(idV1); // 6ba7b810-9dad-11d1-80b4-00c04fd430c8
// Nativo no navegador (crypto API)
const uuid = crypto.randomUUID();
console.log(uuid); // Gera UUID v4 Python
import uuid
# UUID v4 (aleatório)
id = uuid.uuid4()
print(id) # f47ac10b-58cc-4372-a567-0e02b2c3d479
# UUID v1 (timestamp)
id_v1 = uuid.uuid1()
print(id_v1) # 6ba7b810-9dad-11d1-80b4-00c04fd430c8
# Como string
id_str = str(uuid.uuid4())
print(id_str) Java
import java.util.UUID;
// UUID v4 (aleatório)
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());
// UUID a partir de string
UUID parsed = UUID.fromString("f47ac10b-58cc-4372-a567-0e02b2c3d479");
System.out.println(parsed); C# / .NET
using System;
// UUID v4 (aleatório)
Guid id = Guid.NewGuid();
Console.WriteLine(id.ToString());
// Diferentes formatos
Console.WriteLine(id.ToString("N")); // sem hífens
Console.WriteLine(id.ToString("D")); // com hífens (padrão)
Console.WriteLine(id.ToString("B")); // com chaves {} PHP
<?php
// Usando função nativa (PHP 8.3+)
$uuid = uuid_create(UUID_TYPE_RANDOM);
echo $uuid;
// Ou usando ramsey/uuid
use Ramsey\Uuid\Uuid;
$uuid = Uuid::uuid4();
echo $uuid->toString(); // f47ac10b-58cc-4372-a567-0e02b2c3d479
?> Go
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
// UUID v4
id := uuid.New()
fmt.Println(id.String())
// UUID v1
idV1, _ := uuid.NewUUID()
fmt.Println(idV1.String())
} SQL (PostgreSQL)
-- Ativar extensão
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Gerar UUID v4
SELECT uuid_generate_v4();
-- Gerar UUID v1
SELECT uuid_generate_v1();
-- Usar como chave primária
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(100)
); Ruby
require 'securerandom'
# UUID v4 (aleatório)
uuid = SecureRandom.uuid
puts uuid # f47ac10b-58cc-4372-a567-0e02b2c3d479
# Sem hífens
uuid_no_dash = SecureRandom.uuid.gsub('-', '')
puts uuid_no_dash UUID vs Auto-Increment IDs
| Característica | UUID | Auto-Increment |
|---|---|---|
| Unicidade Global | ✅ Sim | ❌ Não (por tabela) |
| Geração Cliente | ✅ Sim | ❌ Servidor apenas |
| Performance Insert | ⚠️ Menor | ✅ Maior |
| Espaço Armazenamento | 128 bits | 32-64 bits |
| Previsibilidade | ✅ Não previsível | ❌ Sequencial |
| Merge de Dados | ✅ Fácil | ❌ Conflitos |
| Ideal Para | Sistemas distribuídos | Aplicações centralizadas |
Boas Práticas
- Use UUID v4 por padrão: É a versão mais segura e recomendada para uso geral
- UUID v7 para bancos: Se performance de índice é crítica, considere UUID v7
- Evite UUID v1 em APIs públicas: Pode revelar timestamp e informações de rede
- Armazene como binário: Em bancos de dados, armazene UUIDs como BINARY(16) para economia de espaço
- Indexe corretamente: Use índices apropriados para UUIDs, especialmente em grandes volumes
- Não ordene por UUID v4: UUIDs v4 são aleatórios, usar ORDER BY neles não faz sentido
- Gere no cliente quando possível: UUIDs podem ser gerados no frontend/cliente com segurança
- Valide formato: Sempre valide UUIDs recebidos para garantir formato correto
Segurança e Privacidade
⚠️ UUID não é Token de Segurança
UUIDs são identificadores únicos, mas não devem ser usados como tokens de segurança ou secrets. Para autenticação, use bibliotecas específicas que geram tokens criptograficamente seguros (JWT, OAuth tokens, etc.).
🔐 Aleatoriedade de UUID v4
UUID v4 usa números pseudo-aleatórios criptograficamente seguros. A chance de colisão é de aproximadamente 1 em 2^122, tornando-o seguro para IDs únicos. Para contexto, você precisaria gerar 1 bilhão de UUIDs por segundo durante 85 anos para ter 50% de chance de uma única colisão.
Perguntas Frequentes
UUID e GUID são a mesma coisa?
Sim, são essencialmente a mesma coisa. UUID é o termo padrão RFC 4122, enquanto GUID é o termo usado pela Microsoft. Ambos são identificadores de 128 bits com o mesmo formato.
Qual a probabilidade de colisão?
Para UUID v4, a probabilidade é extremamente baixa: aproximadamente 1 em 2^122 (5.3 × 10^36). Na prática, a chance de colisão é negligível, mesmo em sistemas de larga escala.
UUID é case-sensitive?
Não. UUIDs são hexadecimais e não são case-sensitive. "f47ac10b..." e "F47AC10B..." representam o mesmo UUID. No entanto, a convenção é usar minúsculas.
Posso usar UUID como URL?
Sim! UUIDs são seguros para URLs. Não contêm caracteres especiais que precisem de encoding.
Exemplo: https://api.exemplo.com/users/f47ac10b-58cc-4372-a567-0e02b2c3d479
UUID é mais lento que auto-increment?
Em termos de inserção em banco de dados, sim, UUIDs podem ser um pouco mais lentos devido ao tamanho (128 bits vs 32-64 bits) e à natureza aleatória (fragmentação de índice). No entanto, UUID v7 resolve muito desse problema com IDs ordenáveis.
Posso gerar UUID offline?
Sim! UUIDs podem ser gerados completamente offline sem conexão com internet ou servidor. UUID v4 usa apenas números aleatórios locais, garantindo unicidade global sem coordenação.
Como validar um UUID?
Use regex: /^[0-9a-f]8-[0-9a-f]4-[1-7][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$/i
Ou use bibliotecas nativas que têm validação embutida.
🚀 Dica Pro
Para aplicações modernas com PostgreSQL ou MySQL 8.0+, considere usar UUID v7. Combina as vantagens de UUIDs (unicidade global, geração cliente) com a performance de IDs sequenciais (ordenação cronológica, índices eficientes). É o melhor dos dois mundos!