Skip to main content

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

Release files for sqids 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sqids 0.5.2
File Size Uploaded
sqids-0.5.2.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sqids 0.5.2
File Interpreter ABI Platform
sqids-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 27.1 kB

Release files / sqids-0.5.2.tar.gz

Download URL sqids-0.5.2.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5ac08f0c5c9b6814bc2e7c79ee5931e0849d25d95c50e415771b022a44f58af9
BLAKE2b-256 checksum
How to use checksums
335b98c1b37109210631875092d9e7cb7aef3fda2f03780dd999fe5854afa5f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / sqids-0.5.2-py3-none-any.whl

Download URL sqids-0.5.2-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0089ba823e21fd44290c7225f02fb0b5140c36e41959c04d86d3f6f2513799be
BLAKE2b-256 checksum
How to use checksums
7c96178018f3d5b871042e257e9e1db26c6aeb2a704e72cdc884cd2a8918ac2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page