Pular para o conteúdo
TBToolbox Brasil

O que é UUID? Guia Completo com Exemplos e Boas Práticas

·8 min de leitura·Por Equipe Toolbox Brasil

O UUID (Universally Unique Identifier) é um identificador único universal utilizado para identificar registros, objetos, usuários, arquivos e diversos outros recursos em sistemas computacionais.

Seu principal objetivo é gerar identificadores com uma probabilidade extremamente baixa de colisão, permitindo que diferentes sistemas criem IDs únicos sem precisar consultar um servidor central.

Atualmente, UUIDs são amplamente utilizados em APIs, bancos de dados, microsserviços, aplicações distribuídas e armazenamento em nuvem.


Índice


Como funciona um UUID?

Um UUID possui 128 bits, normalmente representados por 32 caracteres hexadecimais, divididos em cinco grupos.

Exemplo:

550e8400-e29b-41d4-a716-446655440000

Esse formato facilita a leitura humana sem alterar o valor do identificador.


Estrutura

Um UUID é composto por cinco blocos:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

Onde:

  • M representa a versão do UUID (1, 3, 4, 5, 7)
  • N indica a variante utilizada

| Bloco | Tamanho | Descrição | |-------|---------|-----------| | 1º | 8 chars | time-low | | 2º | 4 chars | time-mid | | 3º | 4 chars | time-high + versão | | 4º | 4 chars | clock-seq + variante | | 5º | 12 chars | node |


Versões do UUID

Existem diferentes versões, cada uma com um objetivo específico.

UUID v1

Baseado em:

  • Data e hora
  • Endereço MAC da máquina

Vantagens: Ordenação temporal. Desvantagens: Pode expor informações da máquina.

UUID v3

Gerado utilizando:

  • Namespace
  • Nome
  • Hash MD5

Sempre gera o mesmo UUID para a mesma entrada (determinístico).

UUID v4

É a versão mais utilizada atualmente. Quase todos os seus bits são gerados aleatoriamente.

Exemplo:

7d444840-9dc0-41d1-b245-5ffdce74fad2

É ideal para:

  • APIs
  • Bancos de dados
  • Identificadores públicos
  • Sistemas distribuídos

UUID v5

Semelhante ao v3, porém utiliza SHA-1 em vez de MD5. Também é determinístico.

UUID v7

O UUID v7 é uma versão mais recente que combina:

  • Timestamp (milissegundos Unix)
  • Aleatoriedade

Ele foi projetado para melhorar a ordenação em bancos de dados e reduzir fragmentação de índices. Por isso, vem sendo adotado por diversos projetos modernos.

Comparativo

| Versão | Base | Determinístico | Ordenável | |--------|------|----------------|-----------| | v1 | Tempo + MAC | Não | Sim | | v3 | Namespace + MD5 | Sim | Não | | v4 | Aleatório | Não | Não | | v5 | Namespace + SHA-1 | Sim | Não | | v7 | Tempo + Aleatório | Não | Sim |


UUID x GUID

Na prática, UUID e GUID representam o mesmo conceito.

A diferença é apenas histórica:

  • UUID é o termo definido pelo padrão (RFC 4122)
  • GUID foi o nome adotado pela Microsoft

Hoje, ambos costumam ser usados como sinônimos.


Onde o UUID é utilizado?

Você encontrará UUID em praticamente qualquer sistema moderno:

  • APIs REST
  • Microsserviços
  • Bancos de dados
  • Arquivos e objetos na nuvem
  • Aplicações mobile
  • Sistemas distribuídos
  • Filas de processamento
  • Eventos e logs

Exemplos de código

JavaScript (navegador)

Os navegadores modernos possuem suporte nativo:

const id = crypto.randomUUID();
console.log(id);
// Resultado: 3f5d74fd-26a7-4a3e-a09d-85b6d5d8c0f1

Node.js

import { randomUUID } from "crypto";

const id = randomUUID();
console.log(id);

Python

import uuid

id = uuid.uuid4()
print(id)

PostgreSQL

CREATE TABLE usuarios (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  nome TEXT NOT NULL
);

INSERT INTO usuarios (id, nome) VALUES (gen_random_uuid(), 'João');

Vantagens

  • Identificadores praticamente únicos
  • Não depende de sequência numérica
  • Pode ser gerado em qualquer servidor
  • Excelente para sistemas distribuídos
  • Evita conflitos entre múltiplas aplicações
  • Ideal para sincronização entre bancos
  • Suportado nativamente pela maioria dos bancos e linguagens

Limitações

  • Ocupa mais espaço que um inteiro (16 bytes vs 4-8 bytes)
  • Pode impactar índices dependendo da versão utilizada (v4 é aleatório, causa fragmentação)
  • É menos legível para humanos
  • Nem sempre é a melhor escolha para tabelas muito grandes com alta leitura sequencial

Erros comuns

Utilizar UUID sem necessidade

Para sistemas simples e locais, um identificador numérico pode ser suficiente. UUID é mais indicado quando há necessidade de unicidade global ou geração distribuída.

Escolher a versão errada

Nem todo UUID serve para o mesmo cenário:

  • v4 → aleatoriedade pura
  • v7 → ordenação temporal (melhor para índices)
  • v5 → identificadores determinísticos (mesmo input → mesmo UUID)

Expor IDs internos sem planejamento

Embora UUID dificulte adivinhações em comparação com IDs sequenciais, ele não substitui mecanismos de autorização. Sempre valide as permissões do usuário antes de fornecer acesso a um recurso.


Boas práticas

✔ Utilize UUID v4 para identificadores aleatórios

✔ Considere UUID v7 quando precisar de melhor ordenação em bancos de dados

✔ Gere UUIDs utilizando bibliotecas confiáveis ou APIs nativas (crypto.randomUUID())

✔ Não tente criar UUIDs manualmente

✔ Utilize o tipo UUID nativo do banco de dados quando disponível

✔ Para URLs públicas, considere UUIDs curtos (Base62 encoding) se legibilidade importar

✔ Indexe colunas UUID corretamente no banco de dados


Perguntas Frequentes

UUID pode se repetir?

Na teoria, sim. Na prática, a probabilidade é extremamente baixa (2¹²² combinações possíveis para v4), tornando colisões praticamente irrelevantes para aplicações comuns.


UUID é criptografado?

Não. Ele é apenas um identificador. Não deve ser utilizado para proteger informações.


UUID é mais seguro que ID sequencial?

Ele dificulta a adivinhação de identificadores (não é possível prever o próximo UUID), mas não substitui autenticação ou controle de acesso.


Qual UUID devo utilizar?

Na maioria dos projetos: UUID v4 é uma excelente escolha. Se precisar de melhor desempenho em índices e ordenação temporal: UUID v7.


UUID ocupa mais espaço?

Sim. Um UUID possui 128 bits (16 bytes), enquanto um INT ocupa 4 bytes e um BIGINT ocupa 8 bytes. Em tabelas com milhões de registros, isso pode impactar o armazenamento.


Posso usar UUID como chave primária?

Sim. É uma prática comum. Use o tipo nativo UUID do banco (PostgreSQL, MySQL 8+) e considere UUID v7 para melhor performance de escrita sequencial.


Conclusão

O UUID tornou-se um dos padrões mais importantes para identificação de recursos em aplicações modernas.

Sua capacidade de gerar identificadores praticamente únicos sem depender de um servidor central faz dele uma excelente escolha para APIs, microsserviços, bancos de dados distribuídos e aplicações escaláveis.

Escolher a versão adequada e seguir boas práticas ajuda a obter melhor desempenho e organização do sistema.


Experimente nossa ferramenta

Precisa gerar um UUID rapidamente?

Utilize gratuitamente o Gerador de UUID do Toolbox Brasil:

  • Gere identificadores válidos instantaneamente
  • Suporte a geração em lote (até 100 UUIDs)
  • Funciona diretamente no navegador
  • Sem necessidade de instalar qualquer software

Abrir Gerador de UUID →