Codebytes: Shorter UUIDs with collision prediction using nanoid

To generate an unique ID most of us use npm libraries and node utils like uuid, crypto.randomUUID. One of the major cons is these IDs are larger in size and the shorter UUID generation will increase the probability of duplicate IDs.

Here comes the sav…


This content originally appeared on DEV Community and was authored by prakash chokalingam

To generate an unique ID most of us use npm libraries and node utils like uuid, crypto.randomUUID. One of the major cons is these IDs are larger in size and the shorter UUID generation will increase the probability of duplicate IDs.

Here comes the saviour, nanoid - A tiny, secure, URL-friendly, unique string ID generator for JavaScript.

Since the bigger alphabet is being used in the UUID generation, nanoid can generate random unique ids within 21 chars.

And its 2x faster and safer than other UUID generators.

Wait... This will blow your mind!

mind blown

Nanoid is completely configurable from size to char's, to be used while generating the UUIDs. Then how does it avoid the probability of duplication? It comes with a collision calculator which helps to predict the probability of collision based on configuration.
collision calculator

It has support for various other programming languages. Checkout this awesome repo:

GitHub logo ai / nanoid

A tiny (108 bytes), secure, URL-friendly, unique string ID generator for JavaScript

Nano ID

Nano ID logo by Anton Lovchikov

English | Русский | 简体中文

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

“An amazing level of senseless perfectionism which is simply impossible not to respect.”

  • Small. 130 bytes (minified and gzipped). No dependencies Size Limit controls the size.
  • Fast. It is 2 times faster than UUID.
  • Safe. It uses hardware random generator. Can be used in clusters.
  • Short IDs. It uses a larger alphabet than UUID (A-Za-z0-9_-) So ID size was reduced from 36 to 21 symbols.
  • Portable. Nano ID was ported to 19 programming languages.
import { nanoid } from 'nanoid'
model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT"

Supports modern browsers, IE with Babel, Node.js and React Native.

Sponsored by Evil Martians

Table of Contents


This content originally appeared on DEV Community and was authored by prakash chokalingam


Print Share Comment Cite Upload Translate Updates
APA

prakash chokalingam | Sciencx (2021-10-15T15:33:12+00:00) Codebytes: Shorter UUIDs with collision prediction using nanoid. Retrieved from https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/

MLA
" » Codebytes: Shorter UUIDs with collision prediction using nanoid." prakash chokalingam | Sciencx - Friday October 15, 2021, https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/
HARVARD
prakash chokalingam | Sciencx Friday October 15, 2021 » Codebytes: Shorter UUIDs with collision prediction using nanoid., viewed ,<https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/>
VANCOUVER
prakash chokalingam | Sciencx - » Codebytes: Shorter UUIDs with collision prediction using nanoid. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/
CHICAGO
" » Codebytes: Shorter UUIDs with collision prediction using nanoid." prakash chokalingam | Sciencx - Accessed . https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/
IEEE
" » Codebytes: Shorter UUIDs with collision prediction using nanoid." prakash chokalingam | Sciencx [Online]. Available: https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/. [Accessed: ]
rf:citation
» Codebytes: Shorter UUIDs with collision prediction using nanoid | prakash chokalingam | Sciencx | https://www.scien.cx/2021/10/15/codebytes-shorter-uuids-with-collision-prediction-using-nanoid/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.