A Java library for generating random, human-readable word combinations with customizable formatting and category filtering. Perfect for creating unique identifiers, usernames, project names, or any scenario requiring memorable random text.
Random Word Slugs generates combinations like "happy-little-cat", "braveBlueElephant", or "Clever Fast Robot" by
intelligently combining adjectives and nouns from a curated database of over 600 words across 25+ categories.
With the default configuration it can produce almost 30 million unique combinations.
- π² Random Generation - Generate memorable word combinations
- π Multiple Formats - kebab-case, camelCase, Title Case, lower case, Sentence case
- π·οΈ Category Filtering - Filter by animals, colors, professions, technology, and more
- π― Flexible Patterns - Customize word order and parts of speech
- π Combinatorics - Calculate total possible unique combinations
Add the JitPack repository and dependency to your build.gradle.kts:
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
dependencies {
implementation("com.github.XavierCanadas:random-word-slugs-java:v1.0.1")
}Or if using Gradle Groovy (build.gradle):
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.XavierCanadas:random-word-slugs-java:v1.0.1'
}For Maven (pom.xml):
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.XavierCanadas</groupId>
<artifactId>random-word-slugs-java</artifactId>
<version>v1.0.1</version>
</dependency>
</dependencies>import com.github.xaviercanadas.randomwordslugs.generator.SlugGenerator;
public class Main {
public static void main(String[] args) {
SlugGenerator generator = new SlugGenerator();
// Generate with defaults (3 words, adjective-adjective-noun, kebab-case)
String slug = generator.generate();
System.out.println(slug);
// Output: "happy-little-cat"
}
}SlugGenerator generator = new SlugGenerator();
String slug2 = generator.generate(2); // "happy-cat"
String slug4 = generator.generate(4); // "brave-big-blue-elephant"
String slug5 = generator.generate(5); // "clever-fast-red-funny-robot"import com.github.xaviercanadas.randomwordslugs.model.Case;
import com.github.xaviercanadas.randomwordslugs.generator.SlugOptions;
SlugGenerator generator = new SlugGenerator();
// camelCase
SlugOptions camelOptions = SlugOptions.builder()
.format(Case.CAMEL)
.build();
String camelSlug = generator.generate(3, camelOptions);
// Output: "happyLittleCat"
// Title Case
SlugOptions titleOptions = SlugOptions.builder()
.format(Case.TITLE)
.build();
String titleSlug = generator.generate(3, titleOptions);
// Output: "Happy Little Cat"
// Sentence case
SlugOptions sentenceOptions = SlugOptions.builder()
.format(Case.SENTENCE)
.build();
String sentenceSlug = generator.generate(3, sentenceOptions);
// Output: "Happy little cat"
// lower case
SlugOptions lowerOptions = SlugOptions.builder()
.format(Case.LOWER)
.build();
String lowerSlug = generator.generate(3, lowerOptions);
// Output: "happy little cat"import com.github.xaviercanadas.randomwordslugs.model.Category;
SlugGenerator generator = new SlugGenerator();
// Generate animal-themed slugs
SlugOptions animalOptions = SlugOptions.builder()
.withNounCategories(Category.ANIMALS)
.withAdjectiveCategories(Category.COLOR, Category.SIZE)
.build();
String animalSlug = generator.generate(3, animalOptions);
// Output: "blue-big-elephant"
// Technology-themed slugs
SlugOptions techOptions = SlugOptions.builder()
.withNounCategories(Category.TECHNOLOGY)
.withAdjectiveCategories(Category.CONDITION)
.format(Case.CAMEL)
.build();
String techSlug = generator.generate(3, techOptions);
// Output: "fastPowerfulProcessor"Available Categories:
- Nouns: ANIMALS, FOOD, PLACE, PEOPLE, FAMILY, PROFESSION, TECHNOLOGY, TRANSPORTATION, SPORTS, MEDIA, EDUCATION, BUSINESS, HEALTH, RELIGION, SCIENCE, TIME, THING
- Adjectives: APPEARANCE, PERSONALITY, CONDITION, SIZE, COLOR, SHAPES, QUANTITY, TASTE, TOUCH, SOUNDS, TIME
import com.github.xaviercanadas.randomwordslugs.model.PartsOfSpeech;
SlugGenerator generator = new SlugGenerator();
// Custom pattern: noun-adjective-noun
SlugOptions customPattern = SlugOptions.builder()
.partsOfSpeech(PartsOfSpeech.NOUN, PartsOfSpeech.ADJECTIVE, PartsOfSpeech.NOUN)
.build();
String customSlug = generator.generate(customPattern);
// Output: "cat-happy-dog"
// Another pattern: adjective-adjective-adjective-noun
SlugOptions manyAdjectives = SlugOptions.builder()
.partsOfSpeech(
PartsOfSpeech.ADJECTIVE,
PartsOfSpeech.ADJECTIVE,
PartsOfSpeech.ADJECTIVE,
PartsOfSpeech.NOUN
)
.build();
String descriptiveSlug = generator.generate(manyAdjectives);
// Output: "brave-clever-fast-robot"SlugGenerator generator = new SlugGenerator();
// Total possible slugs with default settings
long total = generator.totalUniqueSlugs(3, null);
System.out.println("Total possible 3-word slugs: "+total );
// With category filtering
SlugOptions filtered = SlugOptions.builder()
.withNounCategories(Category.ANIMALS)
.withAdjectiveCategories(Category.COLOR)
.build();
long filteredTotal = generator.totalUniqueSlugs(3, filtered);
System.out.println("Filtered combinations: "+filteredTotal);random-word-slugs-java/
βββ src/
β βββ main/
β β βββ java/com/randomwords/
β β βββ Main.java # Example usage and demos
β β βββ data/
β β β βββ WordDatabase.java # Word storage (700+ words)
β β βββ generator/
β β β βββ SlugGenerator.java # Main generator logic
β β β βββ SlugOptions.java # Configuration builder
β β βββ model/
β β β βββ Case.java # Format types enum
β β β βββ Category.java # Word categories enum
β β β βββ PartsOfSpeech.java # Grammar types enum
β β β βββ Word.java # Word data model
β β βββ util/
β β βββ Formatter.java # Text formatting utilities
β βββ test/
β βββ java/com/randomwords/
β βββ data/
β β βββ WordDatabaseTest.java
β βββ generator/
β β βββ SlugGeneratorTest.java
β β βββ SlugOptionsTest.java
β βββ model/
β β βββ WordTest.java
β βββ util/
β βββ FormatterTest.java
βββ build.gradle.kts # Gradle build configuration
βββ jitpack.yml # JitPack configuration
βββ LICENSE # MIT License
βββ README.md
SlugGenerator- Main entry point for generating slugsSlugOptions- Builder pattern for configuring generation optionsWordDatabase- Contains 300+ nouns and 300+ adjectives across 25+ categoriesFormatter- Handles text case transformationsWord- Immutable data model for words with categories- Model Classes - Type-safe enums for categories, formats, and parts of speech
This project is licensed under the MIT License - see the LICENSE file for details.
This library is a Java port inspired by the TypeScript random-word-slugs library by Nick Scialli, also licensed under MIT. The original word database and core concept are derived from that project.
- Original Concept: random-word-slugs by Nick Scialli - The TypeScript library that inspired this Java implementation
- Word Database: Curated word lists adapted from the original project
- Project Context: Developed as part of a Computer Science final degree project (TFG) at Universitat Pompeu Fabra
- Java: 21 or higher.