Если у вас есть значение, уникальное для каждой сущности, вы можете получить более короткую версию, хешируя ее и обрезая. Хеши, такие как md5 или sha1, хорошо перемешаны, это означает, что каждый бит на выходе имеет 50% -ную вероятность переворачивания, если вы измените один бит на входе. Если вы усекаете хэш, вы просто увеличиваете шансы на столкновение, но вы можете сделать компромисс между длиной и шансами на столкновение.
Url-безопасное кодирование base64 является хорошим вариантом для преобразования хеша в текст.
orig_id = 'weiowoeiwoeciw0eijw0eij029j20d232weifw0jiw0e20d2' # the original id
shorter_id = base64.urlsafe_b64encode(hashlib.md5(orig_id).digest())[:11]
С base64 у вас есть 6 бит информации на символ, 11 символов дают вам 66 бит уникальности или шанс столкновения 1 в 2 ** 66.