nanoid
Version, currently 0.7.210 versions
github.com/mamantoha/nanoid.cr
Crystal implementation of Nanoid, secure URL-friendly unique ID generator
43 stars
0 dependents
License: MIT
Nothing has been indexed for 0.7.2 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.
Installation
# Add this to your shard.yml
dependencies:
nanoid:
github: mamantoha/nanoid.cr
version: ~> 0.7.2Then run:
shards installshard.yml
No shard.yml has been indexed for 0.7.2. You can read it on the repository.
Dependencies
Unknown: the shard.yml for this version has not been read yet.
README
This README is the one indexed from the repository at its latest ref, not from the tag for this version.
# nanoid.cr
[](https://app.codacy.com/app/mamantoha/nanoid.cr?utm_source=github.com&utm_medium=referral&utm_content=mamantoha/nanoid.cr&utm_campaign=Badge_Grade_Settings)
[](https://github.com/mamantoha/nanoid.cr/actions/workflows/crystal.yml)
[](https://github.com/mamantoha/nanoid.cr/releases)
[](https://mamantoha.github.io/nanoid.cr/)
[](https://github.com/mamantoha/nanoid.cr/blob/master/LICENSE)
Crystal implementation of original [NanoID](https://github.com/ai/nanoid)
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
nanoid:
github: mamantoha/nanoid.cr
```
## Usage
```crystal
require "nanoid"
```
`Nanoid.generate` uses URL-friendly symbols (`A-Za-z0-9_-`) and returns an ID with 21 characters.
```crystal
Nanoid.generate
# => 3gFI8yZxcfXsXGhB0036l
```
If you want to reduce ID length (and increase collisions probability), you can pass the length as an argument.
```crystal
Nanoid.generate(size: 8, alphabet: "1234567890abcdef")
# => 86984b57
```
Non-secure API is also available.
```crystal
Nanoid.generate(secure: false)
# => no0MmiInNcBm9jR2_3sGt
Nanoid.generate(size: 10, alphabet: "1234567890abcdef", secure: false)
# => 2793b2351c
```
## Benchmark
`crystal run --release ./bench/benchmark.cr`
```console
Crystal 1.20.2 (2026-05-15)
LLVM: 22.1.6
Default target: aarch64-apple-darwin25.5.0
Nanoid.simple_generate(21) 4.02 (248.69ms) (± 0.48%) 76.3MB/op 2.40× slower
Nanoid.complex_generate(21) 3.27 (306.11ms) (± 2.61%) 91.6MB/op 2.96× slower
Nanoid.non_secure_generate(21) 9.65 (103.58ms) (± 1.75%) 45.8MB/op fastest
UUID v4 3.87 (258.20ms) (± 1.28%) 168MB/op 2.49× slower
Nanoid.simple_generate(36) 4.05 (246.65ms) (± 2.05%) 107MB/op 1.62× slower
Nanoid.complex_generate(36) 3.06 (326.75ms) (± 0.98%) 122MB/op 2.14× slower
Nanoid.non_secure_generate(36) 6.55 (152.59ms) (± 1.58%) 61.0MB/op fastest
UUID v4 3.82 (261.80ms) (± 1.85%) 168MB/op 1.72× slower
```
## Development
Clone this repository and install dependencies:
```console
shards install
```
Run tests:
```console
crystal spec
```
## Contributing
1. Fork it (<https://github.com/mamantoha/nanoid.cr/fork>)
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
4. Push to the branch (git push origin my-new-feature)
5. Create a new Pull Request
## Contributors
- [mamantoha](https://github.com/mamantoha) Anton Maminov - creator, maintainer
## License
Copyright: 2018-2026 Anton Maminov (anton.maminov@gmail.com)
This library is distributed under the MIT license. Please see the LICENSE file.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.7.2- Tagged
- Jun 29, 2026
- Commit
68ba9bc233c0- Indexed
- not yet
Dependents
No indexed shard depends on this one yet.
Repository
github.com/mamantoha/nanoid.cr
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 13, 2026
- Synced
- Aug 12, 2026
- Versions
- 10