1001Ferramentas
🔗Conversores

Base62 (Short URLs)

Converta números decimais para Base62 (0-9, A-Z, a-z) e de volta. É o esquema usado por encurtadores de URL para gerar códigos curtos a partir de IDs.

Base62

De ID sequencial para código curto

Sua tabela tem um id autoincrement e você quer que a URL curta fique /3D7 em vez de /12345. Base62 é o truque padrão dos encurtadores: o mesmo número, escrito num alfabeto de 62 símbolos, ocupa quase metade dos caracteres. Digite o valor decimal no campo e o código aparece na hora, sem precisar rodar nada no servidor só para conferir o mapeamento.

Por dentro é divisão sucessiva por 62. O resto de cada divisão indexa o alfabeto 0-9, depois A-Z, depois a-z, e os dígitos vão sendo empilhados do mais significativo para o menos. Assim 62 vira 10, 61 vira z e 12345 vira 3D7. Preste atenção nessa ordem: várias bibliotecas populares colocam as minúsculas antes das maiúsculas, e aí o mesmo id gera um código diferente do que você vê aqui.

Três detalhes que valem checagem. O campo usa número de ponto flutuante, então acima de 9007199254740992 (dois elevado a 53) o resultado passa a ser silenciosamente errado. Valores negativos viram positivos e decimais são truncados sem aviso. E a página só vai de decimal para Base62, apesar de a descrição falar em voltar. Lembre também que código sequencial é enumerável: se o link precisa ser privado, embaralhe o id antes de codificar.

Perguntas frequentes

Dá para converter de Base62 de volta para número?
Não nesta página. Existe um único campo, numérico, e a conversão acontece só no sentido decimal para Base62.
Por que minha biblioteca gera um código diferente?
Quase sempre é a ordem do alfabeto. Aqui vêm 0-9, A-Z e depois a-z; muitas implementações usam 0-9, a-z e depois A-Z. Os dois são Base62, mas não são intercambiáveis.
Qual o maior número aceito com segurança?
9007199254740992. Acima disso o JavaScript perde precisão inteira e o código gerado deixa de corresponder ao id original.

Ferramentas Relacionadas