snortlin/nano-id
Laravel-friendly NanoID generator for PHP: create short, URL-safe, collision-resistant IDs with configurable length and alphabet. Simple API, lightweight and fast—ideal for public identifiers, tokens, and model keys without exposing sequential IDs.
A tiny, secure, URL-friendly, unique string ID generator for PHP.
This package is PHP implementation of ai's nanoid. Read its documentation for more information.
A-Za-z0-9_-). So ID size was reduced from 36 to 21 symbols.The preferred method of installation is via Composer:
composer require snortlin/nano-id
use Snortlin\NanoId\NanoId;
$nanoId = NanoId::nanoId(); // "unQ87dO06B5B-Ybq2Aum5"
// Custom size, default = 21
$nanoId = NanoId::nanoId(16); // "6PUg-8nn5IQrvKNw"
// Custom size and alphabet
$nanoId = NanoId::nanoId(16, '0123456789abcdef'); // "58b141975c2b72f3"
use Snortlin\NanoId\NanoId;
// Default size (21), numbers (0123456789)
$nanoId = NanoId::nanoId(NanoId::SIZE_DEFAULT, NanoId::ALPHABET_NUMBERS); // "782295634533276321176"
// Custom size, numbers and English alphabet without unreadable letters: 1, l, I, 0, O, o, u, v, 5, S, s, 2, Z
$nanoId = NanoId::nanoId(12, NanoId::ALPHABET_ALPHA_NUMERIC_READABLE); // "AcFQM9X3pCi8"
By default, Nano ID uses random bytes generation for security and low collision probability. If you are not so concerned with security and more concerned with performance, you can use the faster non-secure generator.
use Snortlin\NanoId\NanoId;
$nanoId = NanoId::nanoIdNonSecure();
// Custom size, default = 21
$nanoId = NanoId::nanoIdNonSecure(16);
// Custom size and alphabet
$nanoId = NanoId::nanoIdNonSecure(16, '0123456789abcdef');
How can I help you explore Laravel packages today?