domain-check
Fast, powerful CLI tool for checking domain availability using RDAP and WHOIS protocols.
Why domain-check?
Tired of switching between browser tabs and WHOIS websites to check if domains are available? domain-check brings fast, accurate domain availability checking directly to your terminal. Built in Rust for speed, with configuration files, environment variables, custom presets, and bulk processing for when you need to check hundreds of domains at once.
Perfect for developers, domain investors, startups, and anyone who works with domains regularly.
📦 Installation
Homebrew (macOS)
Cargo (All Platforms)
Download Binaries
Pre-built binaries available for macOS, Linux, and Windows: GitHub Releases
🚀 Quick Start
Check a single domain
# 🔴 example.com is TAKEN
Check multiple TLD variations
# 🔍 Checking 4 domains...
# 🔴 mystartup.com is TAKEN
# 🟢 mystartup.io is AVAILABLE
# 🟢 mystartup.ai is AVAILABLE
# 🟢 mystartup.dev is AVAILABLE
Check ALL TLDs at once
# Check against ALL 35+ known TLDs in seconds
# 🔍 Checking 35+ domains across all TLDs...
# 🟢 myapp.com is AVAILABLE
# 🔴 myapp.io is TAKEN
# 🟢 myapp.ai is AVAILABLE
# 🟢 myapp.dev is AVAILABLE
# ... (38 more results in ~2 seconds)
Use smart presets
# Check against startup-focused TLDs (8 TLDs)
# Enterprise-focused TLDs (6 TLDs)
Bulk check from file
⚙️ Configuration & Customization
Configuration Files
Create persistent settings with configuration files:
# .domain-check.toml
[]
= 25
= "startup"
= true
= "8s"
= true
[]
= ["com", "io", "ai", "dev", "app"]
= ["com", "org", "net", "biz", "info"]
= ["com", "org", "crypto", "blockchain"]
[]
= "pretty"
= true
Configuration file locations (checked in order):
./domain-check.toml
(project-specific)~/.domain-check.toml
(user global)~/.config/domain-check/config.toml
(XDG standard)
Environment Variables
Perfect for CI/CD and automation:
# Basic settings
# File locations
# Use in commands
DC_TIMEOUT=30s
Custom Presets
Define your own TLD combinations:
# Use custom preset from config file
# Via environment variable
DC_PRESET=my_startup
📖 Command Reference
Usage
domain-check [OPTIONS] [DOMAINS]...
Arguments
<DOMAINS>...
- Domain names to check (supports both base names and FQDNs)
Core Options
Option | Description | Example |
---|---|---|
-t, --tld <TLD> |
Specify TLDs for base names | -t com,org,io |
--all |
Check against all 42+ 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 |
Performance Options
Option | Description | Default |
---|---|---|
-c, --concurrency <N> |
Max concurrent checks (1-100) | 20 |
--force |
Override safety limits | |
--streaming |
Show results as they complete | |
--batch |
Collect all results before showing |
Output Options
Option | Description | Example |
---|---|---|
-p, --pretty |
Colorful output with emojis | --pretty |
-j, --json |
Output in JSON format | --json |
--csv |
Output in CSV format | --csv |
-i, --info |
Show detailed domain information | --info |
Protocol Options
Option | Description | Default |
---|---|---|
-b, --bootstrap |
Use IANA bootstrap for unknown TLDs | false |
--no-whois |
Disable WHOIS fallback | false |
Debugging
Option | Description |
---|---|
-d, --debug |
Show detailed debug information |
-v, --verbose |
Enable verbose logging |
-h, --help |
Show help information |
-V, --version |
Show version |
Environment Variables
Variable | Description | Example |
---|---|---|
DC_CONCURRENCY |
Default concurrency | DC_CONCURRENCY=50 |
DC_PRESET |
Default preset | DC_PRESET=startup |
DC_TLD |
Default TLD list | DC_TLD=com,io,dev |
DC_PRETTY |
Enable pretty output | DC_PRETTY=true |
DC_TIMEOUT |
Request timeout | DC_TIMEOUT=10s |
DC_BOOTSTRAP |
Enable bootstrap | DC_BOOTSTRAP=true |
DC_CONFIG |
Config file path | DC_CONFIG=my-config.toml |
DC_FILE |
Domains file path | DC_FILE=domains.txt |
🎯 Choose Your Path
Just need CLI? You're all set! Check out our CLI Examples for advanced usage patterns.
Building a Rust app? Use our library:
[]
= "0.6.0"
See the Library Documentation for integration examples.
Need bulk domain processing? See Advanced Examples for enterprise workflows.
✨ Key Features
🌐 Universal Coverage - Check against ALL 35+ TLDs with --all
or use smart presets
⚡ Lightning Fast - Concurrent processing up to 100 domains simultaneously
📊 Rich Output Options - Beautiful terminal display, JSON/CSV for automation, detailed info mode
📁 Bulk Processing - Process thousands of domains from files with real-time streaming results
⚙️ Configuration Files - Persistent settings with TOML configuration files
🔧 Environment Variables - Full DC_* environment variable support for automation
🎯 Custom Presets - Define your own TLD combinations for repeated use
📋 Examples
Basic Usage
# Single domain
# Multiple domains with pretty output
# Check startup-focused TLDs
# Check all available TLDs
Configuration-Driven Workflow
# One-time setup
# Now simple commands use your preferences
Automation & CI/CD
# Environment-driven configuration
DC_CONCURRENCY=50 DC_PRESET=enterprise
# Docker usage
# GitHub Actions
|
Advanced Workflows
# Domain research pipeline
# Brand protection monitoring
# Performance testing with high concurrency
🔗 Resources
- CLI Documentation: Command Reference & Examples
- Library Documentation: docs.rs/domain-check-lib
- Advanced Examples: Enterprise Workflows
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
Crates
- CLI Tool: crates.io/crates/domain-check
- Library: crates.io/crates/domain-check-lib
📝 License
Licensed under the Apache License, Version 2.0 - see the LICENSE file for details.
Built with ❤️ in Rust