User Rating 0.0
Total Usage 0 times
Standard Base10 Integer
Shuffled Base36 String

Quick Tools

Warning: Changing the mapping will make previously generated IDs undecodable.
Is this tool helpful?

Your feedback helps us improve.

About

This tool transforms sequential integers (e.g., database IDs like 1, 2, 3) into short, non-sequential alphanumeric strings (e.g., 3f, m9, x2). Unlike standard Base36 conversion which remains sequential, this tool uses a position-dependent bijective mapping (the Shrti algorithm) to shuffle the character set at every digit position.

Using sequential IDs in public URLs (e.g., /user/1050) exposes your business growth metrics to competitors (the German Tank Problem) and allows scrapers to easily iterate through your data. Obfuscating these IDs into random-looking strings protects your data integrity while remaining fully reversible without a database lookup.

id-obfuscation base36 hash-ids serial-number developer-tools

Formulas

The encoding process treats the number as a Base36 integer, but instead of using the standard alphabet 0-9a-z, it selects a character from a specific randomized alphabet based on the digit's position i.

ID = L-1&concat;i=0 Mapi[di]

Where d is the Base36 digit vector of the input number N, and Mapi is the shuffled alphabet for position i.

Reference Data

Position (Index)Mapping Pattern (First 10 Chars)Used For
0 (MSD)3foayirxqw...1st Character
1mt8nkfd4l5...2nd Character
2gsthf3d95w...3rd Character
3vgqf2eh8az...4th Character
4akro6z9p1c...5th Character

Frequently Asked Questions

The current mapping supports up to 16 Base36 digits. This allows for numbers up to 36^16 - 1, which is approximately 7.9 x 10^24 (7.9 Septillion). This is significantly larger than a 64-bit integer.
No. This is encoding with obfuscation. It is reversible by anyone who has the mapping key. Do not use this for sensitive data like passwords or credit cards. It is designed to hide sequential ID patterns in URLs.
UUIDs are 36 characters long and require more storage. This method produces much shorter strings for smaller numbers (e.g., ID 1,000,000 becomes just a 4-5 character string) while still looking random.
Yes. You can generate a new random mapping set in the "Configuration" section. Ensure you save this mapping, as you will need the exact same key to decode your IDs later.