Need help with py-nanoid?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

puyuan
219 Stars 12 Forks MIT License 71 Commits 7 Opened issues

Description

Python Nanoid

Services available

!
?

Need anything else?

Contributors list

# 121,293
Shell
hooks
Git
golang
31 commits
# 321,870
HTML
Python
16 commits
# 210,832
tf-idf
Clojure
Common ...
Postgre...
1 commit
# 63,145
TypeScr...
React N...
MongoDB
React
1 commit

Nano ID

CircleCI

A tiny, secure, URL-friendly, unique string ID generator for Python.

  • Safe. It uses cryptographically strong random APIs and tests distribution of symbols.
  • Compact. It uses a larger alphabet than UUID (A-Za-z0-9_-). So ID size was reduced from 36 to 21 symbols.

Installation

pip install nanoid

Usage

Normal

The main module uses URL-friendly symbols (A-Za-z0-9_-) and returns an ID with 21 characters (to have a collision probability similar to UUID v4).

from nanoid import generate

generate() # => NDzkGoTCdRcaRyt7GOepg

Symbols

-,.()
are not encoded in the URL. If used at the end of a link they could be identified as a punctuation symbol.

If you want to reduce ID length (and increase collisions probability), you can pass the length as an argument.

from nanoid import generate

generate(size=10) # => "IRFa-VaY2b"

Don’t forget to check the safety of your ID length in ID collision probability calculator.

Custom Alphabet or Length

If you want to change the ID's alphabet or length you can use the internal generate module.

from nanoid import generate

generate('1234567890abcdef', 10) # => "4f9zd13a42"

Non-secure API is also available:

from nanoid import non_secure_generate

non_secure_generate('1234567890abcdef', 10)

Tools

  • ID size calculator to choice smaller ID size depends on your case. nanoid-dictionary with popular alphabets to use with nanoid/generate.
  • nanoid-dictionary
    with popular alphabets to use.

Other Programming Languages

Changelog

  • v2.0.0
    • Replace ~ to - in default alphabet.
    • Add non-secure fast generator.
    • Reduce default characters from 22 to 21.
  • v0.3.0
    • Fix array out of bound error.

Credits

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.