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

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!