domain-check
Fast, powerful CLI tool for checking domain availability using RDAP and WHOIS protocols.
Key Features
- Domain Generation — pattern expansion (
\w,\d,?), prefix/suffix permutations, dry-run preview - Universal Coverage — check against all 32 TLDs with
--allor use smart presets - Lightning Fast — concurrent processing up to 100 domains simultaneously
- Beautiful Output — colored results, progress counters, loading spinner, grouped pretty mode
- Multiple Formats — pretty terminal display, JSON, CSV for automation, detailed info mode
- Bulk Processing — process thousands of domains from files with real-time streaming
- Agent-Friendly —
--yesskips prompts, non-TTY never blocks,--dry-runfor previews - Configuration Files — persistent settings with TOML configs, env vars, and custom presets
- Dual Protocol — RDAP-first with automatic WHOIS fallback for maximum accuracy
Installation
Homebrew (macOS)
Cargo (All Platforms)
Pre-built Binaries
Download from GitHub Releases — available for macOS, Linux, and Windows.
Quick Start
# Check a single domain
# Check multiple TLD variations
# Generate domains with patterns (dry-run to preview)
# app0.com, app1.com, ..., app9.com (10 domains)
# Prefix/suffix permutations
# getmyapphub.com, getmyapp.com, trymyapphub.com, trymyapp.com, myapphub.com, myapp.com
# Use smart presets (startup, enterprise, country)
# Pretty mode — grouped results with section headers
Pretty mode output:
domain-check v0.7.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
Command Reference
domain-check [OPTIONS] [DOMAINS]...
Core Options
| Option | Description | Example |
|---|---|---|
-t, --tld <TLD> |
Specify TLDs for base names | -t com,org,io |
--all |
Check against all 32 known TLDs | --all |
--preset <NAME> |
Use TLD preset (startup/enterprise/country) | --preset startup |
-f, --file <FILE> |
Read domains from file | -f domains.txt |
--config <FILE> |
Use specific config file | --config my-config.toml |
Domain Generation
| Option | Description | Example |
|---|---|---|
--pattern <PAT> |
Generate from pattern (\w=letter, \d=digit, ?=either) |
--pattern "app\d" |
--prefix <LIST> |
Prepend prefixes to names | --prefix get,my,try |
--suffix <LIST> |
Append suffixes to names | --suffix hub,ly,app |
--dry-run |
Preview generated domains, no network | --dry-run |
-y, --yes |
Skip confirmation prompts | --yes |
Output Options
| Option | Description |
|---|---|
-p, --pretty |
Grouped, structured output with section headers |
-j, --json |
JSON format |
--csv |
CSV format |
-i, --info |
Show detailed domain info (registrar, dates) |
--streaming |
Show results as they complete |
--batch |
Collect all results before displaying |
Performance & Protocol
| Option | Description | Default |
|---|---|---|
-c, --concurrency <N> |
Max concurrent checks (1-100) | 20 |
-b, --bootstrap |
Use IANA bootstrap for unknown TLDs | false |
--no-whois |
Disable WHOIS fallback | false |
-d, --debug |
Show detailed debug information |
See the full CLI Reference for all options and advanced usage patterns.
Configuration
Config Files
Create a .domain-check.toml to set persistent defaults:
[]
= 25
= "startup"
= true
= "8s"
= true
[]
= ["com", "io", "ai", "dev", "app"]
= ["com", "org", "net", "biz", "info"]
[]
= ["get", "my"]
= ["hub", "ly"]
Config file locations (checked in order):
./domain-check.toml > ~/.domain-check.toml > ~/.config/domain-check/config.toml
Environment Variables
DC_CONCURRENCY=50 # Default concurrency
DC_PRESET=startup # Default preset
DC_TLD=com,io,dev # Default TLD list
DC_PRETTY=true # Enable pretty output
DC_TIMEOUT=10s # Request timeout
DC_BOOTSTRAP=true # Enable IANA bootstrap
DC_CONFIG=config.toml # Config file path
DC_FILE=domains.txt # Domains file path
DC_PREFIX=get,my # Default prefixes for generation
DC_SUFFIX=hub,ly # Default suffixes for generation
Examples
Domain Generation
# Pattern-based: check all "go0" through "go9" domains
# Prefix/suffix: explore brand variations
# Dry-run to preview what will be checked
# Agent-friendly: no prompts, structured output
|
Automation & CI/CD
# Environment-driven configuration
DC_CONCURRENCY=50 DC_PRESET=enterprise
# Pipe JSON results for downstream processing
|
Bulk Workflows
# Domain research pipeline
# Brand protection monitoring
# High-concurrency processing
Custom Presets
# Define presets in .domain-check.toml, then use them
# Or via environment variable
DC_PRESET=my_startup
See Advanced Examples for more enterprise workflows.
Library
Building a Rust app? Use domain-check-lib directly:
[]
= "0.8.0"
use DomainChecker;
async
See the Library Documentation for streaming, bulk processing, and configuration APIs.
Resources
Crates: domain-check (CLI) | domain-check-lib (Library)
License
Licensed under the Apache License, Version 2.0 — see the LICENSE file for details.