Skip to main content

Generate YouTube-like ids from numbers.

Project description

Sqids Python

PyPI package Github Actions Downloads

Sqids (pronounced "squids") is a small library that lets you generate unique IDs from numbers. It's good for link shortening, fast & URL-safe ID generation and decoding back into numbers for quicker database lookups.

Features:

  • Encode multiple numbers - generate short IDs from one or several non-negative numbers
  • Quick decoding - easily decode IDs back into numbers
  • Unique IDs - generate unique IDs by shuffling the alphabet once
  • ID padding - provide minimum length to make IDs more uniform
  • URL safe - auto-generated IDs do not contain common profanity
  • Randomized output - Sequential input provides nonconsecutive IDs
  • Many implementations - Support for 40+ programming languages

🧰 Use-cases

Good for:

  • Generating IDs for public URLs (eg: link shortening)
  • Generating IDs for internal systems (eg: event tracking)
  • Decoding for quicker database lookups (eg: by primary keys)

Not good for:

  • Sensitive data (this is not an encryption library)
  • User IDs (can be decoded revealing user count)

🚀 Getting started

Install the package from PyPI, e. g. with pip:

pip install sqids

Import the Sqids class from the sqids package:

from sqids import Sqids
sqids = Sqids()

👩‍💻 Examples

Simple encode & decode:

sqids = Sqids()
id = sqids.encode([1, 2, 3]) # "86Rf07"
numbers = sqids.decode(id) # [1, 2, 3]

Note 🚧 Because of the algorithm's design, multiple IDs can decode back into the same sequence of numbers. If it's important to your design that IDs are canonical, you have to manually re-encode decoded numbers and check that the generated ID matches.

Enforce a minimum length for IDs:

sqids = Sqids(min_length=10)
id = sqids.encode([1, 2, 3]) # "86Rf07xd4z"
numbers = sqids.decode(id) # [1, 2, 3]

Randomize IDs by providing a custom alphabet:

sqids = Sqids(alphabet="FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE")
id = sqids.encode([1, 2, 3]) # "B4aajs"
numbers = sqids.decode(id) # [1, 2, 3]

Prevent specific words from appearing anywhere in the auto-generated IDs:

sqids = Sqids(blocklist=["86Rf07"])
id = sqids.encode([1, 2, 3]) # "se8ojk"
numbers = sqids.decode(id) # [1, 2, 3]

📝 License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqids-0.5.2.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqids-0.5.2-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file sqids-0.5.2.tar.gz.

File metadata

  • Download URL: sqids-0.5.2.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for sqids-0.5.2.tar.gz
Algorithm Hash digest
SHA256 5ac08f0c5c9b6814bc2e7c79ee5931e0849d25d95c50e415771b022a44f58af9
MD5 e07bcaa28e209d7a32c08be25f2016bb
BLAKE2b-256 335b98c1b37109210631875092d9e7cb7aef3fda2f03780dd999fe5854afa5f3

See more details on using hashes here.

File details

Details for the file sqids-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: sqids-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for sqids-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0089ba823e21fd44290c7225f02fb0b5140c36e41959c04d86d3f6f2513799be
MD5 1ba7a49d25684ff55892485e2afdee12
BLAKE2b-256 7c96178018f3d5b871042e257e9e1db26c6aeb2a704e72cdc884cd2a8918ac2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page