NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1636 most downloaded on pub.dev
A tiny, secure, URL-friendly, unique string ID generator, nanoid with a pure Dart API.
Last release 1 months ago
28 Aug 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 3 of 3 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
3 releases · first in 2023
One column per quarter.
New Alphabet.crockfordBase32 , Crockford's Base32 , for ids a human reads out loud or types back in. Drops the lookalikes I L O , and U so ids are les
New Alphabet.crockfordBase32, Crockford's Base32, for ids a human reads out loud or types back in.
Drops the lookalikes I L O, and U so ids are less likely to spell words (32 chars) #5
nanoid(alphabet: Alphabet.crockfordBase32, length: 26); // F6J399SP385YMNBFMNEA1YB2YWNew Alphabet.base58, as used by Bitcoin and IPFS.
Drops the lookalikes 0 O I l and stays case sensitive, so it is shorter than Base32 at the same entropy (58 chars) #5
nanoid(alphabet: Alphabet.base58, length: 22); // yKBEBzwwHC7pygkBPJkW52New Alphabet.cookieSafe, valid in a cookie value without quoting or escaping (77 chars) #5
Fix The length ArgumentError messages named the wrong bounds, calling 2 and 255 invalid when both generate ids #3
Fix repository pointed at the repository's old name, so pub.dev could not verify it. Added issue_tracker
The README gained a Which alphabet? table listing every alphabet with its entropy per character #5, and a Collisions section that charts how many ids each alphabet and length is good for #7
Update pubspec topics description and repo link
Official Dart 3 support, breaking changes, and new Alphabet API.
Official Dart 3 support, breaking changes, and new Alphabet API.
Breaking changes:
nanoid(10) is now nanoid(length: 10). The length parameter has been changed from an optional positional to an optional named parameter.import 'package:nanoid/async.dart'; has been removed. Call await Future(() {}); or before calling nanoid() to achieve the same effect.import 'package:nanoid/nanoid.dart'; to import 'package:nanoid2/nanoid2.dart';import 'package:nanoid/non-secure.dart'; has been removed. Call nanoid(random: Random()); instead to force a non-secure (and faster) random number generator.nonoid() automatically uses Random() instead of Random.secure() on platforms that do not provide a cryptographically secure source of random numbers.customAlphabet('custom', 10) API. Use nanoid(alphabet: 'custom', length: 10); instead.New APIs:
Alphabet class provides a set of predefined alphabets for various use cases.Your coding agent can read these notes before it upgrades. Set up the MCP server →