A small Go CLI that generates secure random passwords with flexible character sets and exclusions.
Uses
crypto/randfor cryptographically secure randomness. If no charset flags are provided, all sets are enabled by default.
# latest
go install github.com/bilalbaraz/passgen@latest
# specific version
go install github.com/bilalbaraz/passgen@<version>brew tap bilalbaraz/tap
brew install passgenwget -L https://github.com/bilalbaraz/passgen/releases/latest/download/passgen_linux_amd64.zip \
&& unzip passgen_linux_amd64.zip \
&& sudo mv passgen /usr/local/bin/ \
&& rm passgen_linux_amd64.zipwget -L https://github.com/bilalbaraz/passgen/releases/latest/download/passgen_linux_arm64.zip \
&& unzip passgen_linux_arm64.zip \
&& sudo mv passgen /usr/local/bin/ \
&& rm passgen_linux_arm64.zip# basic (defaults to all character sets)
passgen --len 16 --count 3
# lower/upper/digits only
passgen --len 24 --count 5 --lower --upper --digits
# symbols only, excluding "@$"
passgen --len 20 --symbols --exclude "@$"
# exclude ambiguous characters (0 O 1 l I)
passgen --len 16 --no-ambiguous
# copy generated passwords to clipboard
passgen --len 20 --count 3 --copy
# render first password as QR code in terminal (requires -count 1)
passgen --len 20 --qrgo run .
go build .
go run ./cmd/passgen
go build ./cmd/passgen
go test -v ./...- Length:
--len <n>or-l <n> - Char sets:
--lower,--upper,--digits,--symbols - Count:
--count <n>or-c <n> - Exclude chars:
--exclude "..."or-x "..." - No ambiguous:
--no-ambiguous - Copy to clipboard:
--copyor-p - QR code:
--qror-q(only when--count 1) - Help:
-h/--help
No config file. All behavior is controlled via CLI flags.
- Errors are printed to stderr and exit with code 1 on invalid input.
-copyusespbcopy(macOS),clip(Windows), orwl-copy/xclip(Linux).

