Go GPL-3.0

go-nanoid

Nano ID for Go

J

jaevor

Dernière activité 14 avr. 2026
jaevor/go-nanoid

441

étoiles

17

forks

1

issues ouvertes

gogolangguidnanoiduuid

Ce README est souvent en anglais.

go-nanoid

Build Status Build Status GitHub Issues Go Version Go Ref

This module is a Go implementation of ai/nanoid.

go get github.com/jaevor/go-nanoid
import (
	"log"
	"github.com/jaevor/go-nanoid"
)

func main() {
	gen, err := nanoid.Canonic()
	if err != nil {
		panic(err)
	}

	id1 := gen()
	log.Printf("ID 1: %s", id1) // eLySUP3NTA48paA9mLK3V

	// Makes sense to use CustomASCII since 0-9 is ASCII.
	decenaryID, err := nanoid.CustomASCII("0123456789", 12)
	if err != nil {
		panic(err)
	}

	id2 := decenaryID()
	log.Printf("ID 2: %s", id2) // 817411560404
}

Note

This module's functions use an internal buffered slice of random bytes, and thus also a mutex. This slight (but constant) overhead of memory per generator allows it to be very efficient, but may not be ideal if you are only generating an ID every now and then.

Security

Benchmarks

All benchmarks & tests are in nanoid_test.go.

These are all benchmarks of nanoid.Standard(#)

# of characters & # of IDs benchmark screenshot
8, ~21,800,000
21, ~16,400,000
36, ~11,500,000
255, ~2,500,000

Credits & references

License

GNU General Public License v3.0

Projets similaires

Golang random IDs generator.

Gogolangnanoidunique-id
Mmatoous
1,6 k étoiles65

A generator library for concise, unambiguous and URL-safe UUIDs

Gogogolangshortuuid
Llithammer
1,4 k étoiles66

A UUID package for Go

Goforked-repogouuid
Ggofrs
1,8 k étoiles128