Skip to content

Repository files navigation

🔍 Domain Finder

Brainstorm, generate and bulk-check domain availability from your terminal

License: MIT Ruby Python

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.

🧰 What's Inside

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

🚀 Quick Start

Requirements

gem install whois whois-parser   # Ruby tools
# flowgen.py and rdap_check.sh only need: python3, dig, curl, whois (preinstalled on macOS/Linux)

1. Expand seed words and check them

Edit the word lists in utils/:

// utils/domain_words.json
{ "domain_words": ["spark", "nova", "forge"] }

// utils/tlds.json
["com", "ai", "io"]

Then run:

ruby domain_finder.rb

Every prefix + word and word + suffix combination gets checked against every TLD. Available domains land in results/<word>.json, sorted by length.

2. Generate brand names out of thin air

python3 flowgen.py --n 3000 --tld ai --confirm 80 --style all

flowgen 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

3. Check specific words fast

./rdap_check.sh spark nova forge
# spark:  com=T  ai=T  io=A  app=A

A = available, T = taken, ? = registry didn't answer. Available domains accumulate (deduped) in results/availability.txt.

4. Debug a single domain

ruby domain_finder_debug.rb example.xyz

Prints the full WHOIS record so you can see exactly why a domain reads as taken or free.

📁 Project Layout

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)

⚠️ Rate Limits

WHOIS registries throttle aggressively, especially .ai:

  • domain_finder.rb sleeps 0.5s between lookups and retries failed connections up to 5 times
  • rdap_check.sh sleeps 2s before each .ai query
  • flowgen.py dodges 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.

📝 License

MIT - see LICENSE.

About

Naming toolbox: expand seed words, generate pronounceable pseudowords, and bulk-check domain availability via WHOIS, RDAP and DNS from your terminal

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages