A toolbox for naming things. Feed it seed words, let it expand them with prefixes/suffixes across multiple TLDs, generate pronounceable made-up brand names, and check what's actually available - via WHOIS, RDAP and DNS.
| Tool | What it does |
|---|---|
domain_finder.rb |
Expands seed words with prefixes + suffixes across TLDs and WHOIS-checks every combination |
domain_finder_dictionary.rb |
Brute-force checks an entire English dictionary (≤8 letter words) against your TLDs |
flowgen.py |
Generates flowing, pronounceable pseudowords (≤8 letters), scores them, and confirms availability via DNS prefilter + RDAP/WHOIS |
rdap_check.sh |
Fast availability check for specific words across .com .ai .io .app |
domain_finder_debug.rb |
Inspect the raw WHOIS record for a single domain |
sorter.rb |
Sorts a results file by domain length (shortest first) |
json_remover.rb |
Trims the dictionary to words of 8 characters or fewer |
gem install whois whois-parser # Ruby tools
# flowgen.py and rdap_check.sh only need: python3, dig, curl, whois (preinstalled on macOS/Linux)Edit the word lists in utils/:
Then run:
ruby domain_finder.rbEvery prefix + word and word + suffix combination gets checked against every TLD. Available domains land in results/<word>.json, sorted by length.
python3 flowgen.py --n 3000 --tld ai --confirm 80 --style allflowgen builds pseudowords from evocative stems (light, mind, star, water, nature), ranks them by a "flow score" (vowel endings, consonant variety, anti-babble penalties), DNS-prefilters thousands in parallel, then confirms the top candidates via RDAP/WHOIS.
Styles: invented | latin | english | transparent (reads identically in English and Spanish) | all
./rdap_check.sh spark nova forge
# spark: com=T ai=T io=A app=AA = available, T = taken, ? = registry didn't answer. Available domains accumulate (deduped) in results/availability.txt.
ruby domain_finder_debug.rb example.xyzPrints the full WHOIS record so you can see exactly why a domain reads as taken or free.
domain-finder/
├── domain_finder.rb # Main checker: seeds × affixes × TLDs
├── domain_finder_dictionary.rb # Dictionary brute-forcer
├── domain_finder_debug.rb # Single-domain WHOIS inspector
├── flowgen.py # Pseudoword generator + availability pipeline
├── rdap_check.sh # Quick multi-TLD checker
├── sorter.rb # Sort results by length
├── json_remover.rb # Dictionary trimmer
├── utils/ # Word lists (seeds, affixes, TLDs, dictionary)
└── results/ # Output (gitignored)
WHOIS registries throttle aggressively, especially .ai:
domain_finder.rbsleeps 0.5s between lookups and retries failed connections up to 5 timesrdap_check.shsleeps 2s before each.aiqueryflowgen.pydodges most of this with a parallel DNS prefilter, only hitting RDAP/WHOIS for finalists
A ? or "quota exceeded" means try again later - it does not mean the domain is taken.
MIT - see LICENSE.