Generate delightful, random word combinations for your app — perfect for project names, usernames, or unique identifiers.
bun add joyfulimport { joyful } from "joyful";
joyful(); // "amber-fox"
joyful({ segments: 3 }); // "golden-marble-cathedral"
joyful({ segments: 3, separator: "_" }); // "swift_northern_lights"
joyful({ maxLength: 8 }); // "tan-elk"| Option | Type | Default | Description |
|---|---|---|---|
segments |
number |
2 |
Number of words to generate |
separator |
string |
"-" |
Character(s) between words |
maxLength |
number |
— | Maximum length of the returned string |
Returns a string of random words joined by the separator.
When maxLength is set, words are filtered to fit within the constraint. Throws if the limit is too short to produce a valid result.
All word lists are manually curated to be safe for work and family-friendly. Every category has been audited to exclude profanity, slurs, and negative or distressing terms. You can use joyful-generated names in any context without worry.
The first word is always a prefix (adjective or color). Subsequent words are drawn from:
| Category | Words |
|---|---|
| Adjectives | 227 |
| Animals | 203 |
| Architecture | 184 |
| Art | 186 |
| Colors | 114 |
| Emotions | 89 |
| Fashion | 169 |
| Food | 186 |
| History | 131 |
| Literature | 197 |
| Music | 162 |
| Mythology | 164 |
| Nature | 202 |
| Professions | 288 |
| Science | 223 |
| Space | 131 |
| Sports | 154 |
| Transportation | 183 |
| Segments | Combinations |
|---|---|
| 2 | 673,282 |
| 3 | 1,996,954,412 |
| 4 | 5,922,966,785,992 |
| 5 | 17,567,519,487,252,272 |
Run bun run perf to generate the runtime, startup, package size, and consumer
bundle size report. See BENCHMARKS.md for what the report
measures and how to interpret it.
Based on friendly-words by Glitch, with curated word lists and additional categories.
ISC