domain-check
Universal domain exploration engine: fast domain availability checks across the internet, as both a CLI and Rust library.
Quick Links: Installation | Quick Start | Why domain-check | Configuration | Automation | Presets | Library | FAQ | Contributing
Why domain-check
- Broad TLD coverage: check across
1200+known TLDs with--all(bootstrap enabled by default). - Dual-protocol engine: RDAP-first with intelligent WHOIS fallback and IANA-based discovery.
- Fast and scalable: concurrent checks up to 100 domains at a time, with streaming or batch output modes.
- Domain generation built in: pattern expansion (
\w,\d,?), prefix/suffix permutations, dry-run previews. - Strong UX for humans: grouped pretty output, progress indicators, summaries, and detailed domain metadata.
- Automation-ready output: JSON/CSV modes, non-TTY-safe behavior, and explicit non-interactive flags.
- Configurable workflows: config files, environment variables, custom presets, and deterministic CI setups.
- CLI + library ecosystem: same core capabilities available in both
domain-checkanddomain-check-lib.
Installation
| Method | Command | Notes |
|---|---|---|
| Homebrew (macOS) | brew install domain-check |
Easiest install for macOS users |
| Cargo | cargo install domain-check |
Works on all Rust-supported platforms |
| GitHub Releases | Download binaries | Prebuilt binaries for macOS/Linux/Windows |
Quick Start
# Check one fully qualified domain
# Expand base name across TLDs
# Use curated TLD groups
# Generate names from a pattern (preview only)
# Check every known TLD (bootstrap-enabled)
Expected pretty output shape:
domain-check v0.9.0 — Checking 8 domains
Preset: startup | Concurrency: 20
── Available (3) ──────────────────────────────
rustcloud.org
rustcloud.ai
rustcloud.app
── Taken (5) ──────────────────────────────────
rustcloud.com
rustcloud.io
rustcloud.tech
rustcloud.dev
rustcloud.xyz
8 domains in 0.8s | 3 available | 5 taken | 0 unknown
Core Command Surface
domain-check [OPTIONS] [DOMAINS]...
| Category | Key flags |
|---|---|
| Domain selection | -t, --tld, --all, --preset, --list-presets, -f, --file |
| Generation | --pattern, --prefix, --suffix, --dry-run, -y, --yes |
| Output | -p, --pretty, -j, --json, --csv, -i, --info, --streaming, --batch |
| Performance/protocol | -c, --concurrency, --no-bootstrap, --no-whois, -d, --debug |
| Config | --config |
Full reference: docs/CLI.md
Configuration
Create domain-check.toml in your project directory:
[]
= 25
= "startup"
= true
= "8s"
= true
[]
= ["com", "io", "ai", "dev", "app"]
[]
= ["get", "my"]
= ["hub", "ly"]
Config lookup order:
./domain-check.toml > ~/.domain-check.toml > ~/.config/domain-check/config.toml
Common environment variables:
DC_CONCURRENCY=50
DC_PRESET=startup
DC_TLD=com,io,dev
DC_PRETTY=true
DC_TIMEOUT=10s
DC_BOOTSTRAP=true
DC_CONFIG=config.toml
DC_FILE=domains.txt
DC_PREFIX=get,my
DC_SUFFIX=hub,ly
Automation & CI
# Non-interactive structured output
# Pipe to jq
|
# Stream live results for long runs
Automation guide: docs/AUTOMATION.md
Smart Presets
Built-in presets: startup, popular, classic, enterprise, tech, creative, ecommerce, finance, web, trendy, country.
Reliability Notes
- Domain status is network- and registry-dependent. Temporary errors can produce
UNKNOWNstates. - WHOIS output is less standardized than RDAP; parsing quality varies by registry.
- For repeatable CI workflows, pin behavior with explicit flags (
--batch,--json,--no-bootstrap,--concurrency). - docs.rs reflects the latest published crate release and can lag repository
main.
Troubleshooting and expected edge cases: docs/FAQ.md
Library
Use domain-check-lib directly in Rust projects:
[]
= "0.9.1"
use DomainChecker;
async
Library docs: domain-check-lib/README.md | docs.rs
Project Docs
- CLI reference: docs/CLI.md
- Docs index: docs/README.md
- Examples and workflows: docs/EXAMPLES.md
- Automation usage: docs/AUTOMATION.md
- FAQ: docs/FAQ.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Security policy: SECURITY.md
License
Licensed under the Apache License, Version 2.0. See LICENSE.