snortlin / nano-id
A tiny, secure, URL-friendly, unique string ID generator for PHP
Installs: 4 692
Dependents: 1
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 1
Requires
- php: ^7.4|^8.0
This package is auto-updated.
Last update: 2025-01-29 07:08:30 UTC
README
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.
- Fast. It is faster than UUID.
- Safe. It uses cryptographically strong random APIs. Can be used in clusters.
- Compact. It uses a larger alphabet than UUID (
A-Za-z0-9_-
). So ID size was reduced from 36 to 21 symbols. - Customizable. Size, alphabet and Random Bytes Generator may be overridden.
Installation
The preferred method of installation is via Composer:
composer require snortlin/nano-id
Usage
Base usage
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"
Custom alphabet
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"
Faster and Non-Secure
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');
Tools
- ID size calculator shows collision probability when adjusting the ID alphabet or size.
Credits
- Andrey Sitnik ai for Nano ID.
- Stanislav Lashmanov CyberAP for Predefined character sets to use with Nano ID.