Generate random, human-friendly names, like determined-pancake
or sinister discovery
. fname is like a grammatically aware diceware generator for unique names or identifiers.
fname isn't meant to provide a secure, globally unique identifier, but with over 500 billion possible combinations, it's good enough for most non-critical use cases.
Download the latest release from the releases page.
go install github.com/splode/fname/cmd/fname@latest
git clone https://github.com/splode/fname.git
cd fname
go install ./cmd/fname
Generate a single, random name phrase:
$ fname
extinct-green
Generate multiple name phrases, passing the number of names as an argument:
$ fname --quantity 3
influential-length
direct-ear
cultural-storage
Generate a name phrase with a custom delimiter:
$ fname --delimiter "__"
glaring__perception
Generate a name phrase with more words:
$ fname --size 3
vengeful-toy-identified
$ fname --size 4
spellbinding-project-presented-fully
Note: the minimum phrase size is 2 (default), and the maximum is 4.
Generate a name phrase with a specific casing:
$ fname --casing upper
TRAGIC-MOUNTAIN
$ fname --casing title
Whimsical-Party
Specify the seed for generating names:
$ fname --seed 123 --quantity 2
pleasant-joy
eligible-tenant
$ fname --seed 123 --quantity 2
pleasant-joy
eligible-tenant
go get github.com/splode/fname
package main
import (
"fmt"
"github.com/splode/fname"
)
func main() {
rng := fname.NewGenerator()
phrase, err := rng.Generate()
fmt.Println(phrase)
// => "influential-length"
}
package main
import (
"fmt"
"github.com/splode/fname"
)
func main() {
rng := fname.NewGenerator(fname.WithDelimiter("__"), fname.WithSize(3))
phrase, err := rng.Generate()
fmt.Println(phrase)
// => "established__shark__destroyed"
}
fname is not cryptographically secure, and should not be used for anything that requires a truly unique identifier. It is meant to be a fun, human-friendly alternative to UUIDs.
fname's dictionary is curated to exclude words that are offensive, or could be considered offensive, either alone or when generated in a phrase. Nevertheless, all cases are not and cannot be covered. If you find a word that you think should be removed, please open an issue.
We welcome contributions to the fname project! Whether it's reporting bugs, suggesting improvements, or submitting new features, your input is valuable to us. Here's how you can get started:
- Fork the repository on GitHub.
- Clone your fork and create a new branch for your changes.
- Make your changes and commit them to your branch.
- Create a pull request, and provide a clear description of your changes.
Before submitting a pull request, please make sure your changes are well-tested and adhere to the code style used throughout the project. If you are unsure how to proceed or need help, feel free to open an issue or ask a question in the discussions section.
If you encounter a bug or any issue, please open an issue on GitHub. When reporting a bug, try to include as much information as possible, such as the steps to reproduce the issue, the expected behavior, and the actual behavior. This will help us diagnose and fix the issue more efficiently.
We are always looking for ways to improve fname. If you have a suggestion for a new feature or an enhancement to an existing feature, please open an issue or start a discussion in the discussions section. Be sure to explain your idea in detail, and if possible, provide examples or use cases.
Thank you for your interest in contributing to fname!