Call dibs on a name — check availability across domains, social media, package registries, and trademarks in one command.
dibs acme
dibs checks your name across 18+ platforms simultaneously and tells you what's available and what's taken. Optionally generate variants like useacme, acmehq, acmedev to find the best available version.
npm install -g calldibsOr run directly:
npx calldibs acme# Check a name on all platforms
dibs acme
# Pass a domain — extracts the name and ensures that TLD is checked
dibs notion.so
# Interactive mode — prompts for everything
dibs
# Also check variants (useacme, acmehq, etc.)
dibs acme -v all
# Only check specific variant patterns
dibs acme -v hq,use,app
# Check specific platforms only
dibs acme -o github,npm,domain
# Check specific TLDs only
dibs acme -t com,ai,dev
# Output as JSON
dibs acme -f json
# Export as CSV
dibs acme -f csv > report.csvPass a full domain and dibs will do the right thing:
dibs notion.so- Extracts the name (
notion) and TLD (.so) - Formats the name per platform:
notionsofor social handles,notion-sofor package registries - Ensures
.sois always in the TLD check list - Skips variant generation (you're checking a specific brand)
.comis treated as a plain name —example.comjust checksexample
| Category | Platforms | Flag IDs |
|---|---|---|
| Domains | WHOIS lookup for any TLD | domain |
| Social | GitHub, X/Twitter, Instagram, LinkedIn, TikTok, YouTube, Reddit, Ghost | github, twitter, instagram, linkedin, tiktok, youtube, reddit, ghost |
| Packages | npm, npm org, PyPI, crates.io, RubyGems, Go (pkg.go.dev), Homebrew, Docker Hub | npm, npm-org, pypi, crates, rubygems, go, homebrew, dockerhub |
| Legal | USPTO Trademark | trademark |
.com, .dev, .io, .ai, .co, .app
Any valid IANA TLD is supported (1,400+). Just pass whatever you need via --tlds.
By default, only the exact name is checked. Use --variants / -v to also check common alternatives and find the best available version for your brand. Variants are disabled when passing a domain as input.
Prefixes: use___, get___, try___, go___, hey___, my___, the___, with___, on___, by___
Suffixes: ___hq, ___app, ___dev, ___io, ___labs, ___so, ___inc, ___co, ___team, ___run, ___now, ___ai, ___sh, ___cli, ___api, ___js
# Check all variants
dibs acme -v all
# Check specific patterns only
dibs acme -v hq,use,appWith -v all, checking acme also checks useacme, getacme, acmehq, acmeapp, acmedev, and 21 more variants. Each is scored and ranked.
Each check result is one of three statuses:
| Status | Meaning |
|---|---|
available |
The name is not taken on that platform |
taken |
The name is already registered/in use |
error |
The check failed (rate limit, timeout, etc.) — does not penalize the score |
Platforms are weighted by importance to a business:
| Weight | Platforms |
|---|---|
| 15× | .com domain |
| 12× | USPTO Trademark |
| 8× | X / Twitter |
| 7× | Instagram, LinkedIn |
| 6× | GitHub, .ai domain |
| 5× | TikTok, YouTube, .com-adjacent domains |
| 4× | Reddit, .co, .app domains |
| 2-3× | Package registries (npm, npm org, PyPI, crates.io, etc.) |
| 2× | Ghost |
The weighted score produces a verdict:
| Score | Verdict |
|---|---|
| ≥ 80% | 🎉 Great — widely available, grab it now |
| ≥ 60% | 👍 Good — solid choice with minor conflicts |
| ≥ 35% | 🤔 Fair — notable gaps, consider a variant |
| < 35% | 👎 Poor — largely taken, try a different name |
Human-readable report with colors, progress bars, and grouped results:
dibs acmeShows a variant ranking table, detailed per-platform results for the best variant, and a recommendation with actionable details.
dibs acme -f json{
"recommendation": {
"verdict": "poor",
"summary": "\"acme\" is largely taken. Try a different name or variant.",
"details": [
"✗ .com domain is taken — consider a variant or alternative TLD",
"✗ Only 2/8 social handles available — branding will be inconsistent",
"◐ 5/8 package registries available",
"⚠ Possible USPTO trademark conflict — consult a lawyer before proceeding"
]
},
"best": {
"name": "acme",
"pattern": "bare",
"score": 28,
"available": 10,
"taken": 14,
"errors": 0,
"total": 24,
"results": [
{
"platform": "Domain acme.com",
"status": "taken",
"url": "https://acme.com",
"message": null
},
{
"platform": "GitHub",
"status": "taken",
"url": "https://github.com/acme",
"message": null
},
{
"platform": "npm",
"status": "available",
"url": "https://www.npmjs.com/package/acme",
"message": null
}
]
},
"variants": [
{
"name": "acme",
"pattern": "bare",
"score": 28,
"available": 10,
"taken": 14,
"errors": 0,
"total": 24
}
]
}Pipe to jq for extraction:
# Get the best variant name
dibs acme -f json | jq -r '.best.name'
# List all available platforms for the best variant
dibs acme -f json | jq '.best.results[] | select(.status == "available") | .platform'
# Get all variant scores
dibs acme -v all -f json | jq '.variants[] | {name, score}'dibs acme -f csv > report.csvvariant,pattern,platform,status,url,message
acme,bare,Domain acme.com,taken,https://acme.com,
acme,bare,GitHub,taken,https://github.com/acme,
acme,bare,npm,available,https://www.npmjs.com/package/acme,
dibs [OPTIONS] [NAME]
| Flag | Short | Description |
|---|---|---|
NAME |
The name or domain to check (omit for interactive mode) | |
--only |
-o |
Platforms to check (comma-separated) |
--tlds |
-t |
TLDs to check (comma-separated, e.g. com,ai,dev) |
--variants |
-v |
Enable variants: all for every pattern, or comma-separated list (e.g. hq,use,app) |
--format |
-f |
Output format: pretty, json, or csv (default: pretty) |
--help |
-h |
Show help with full documentation |
--version |
Show version number |
Run dibs with no arguments to enter interactive mode. You'll be prompted to:
- Enter the name
- Select which platforms to check
- Select which TLDs to check
- Choose whether to generate variants and which patterns to use
Your selections are saved between sessions — next time you run dibs, your previous choices are pre-selected.
Pass the name as a positional argument. All options can be set via flags. This is ideal for scripts, CI, and LLM tool use.
# Minimal — just check npm and GitHub for one name
dibs myproject -o npm,github -f json
# Full sweep with JSON output
dibs myproject -f json
# Full sweep with variants
dibs myproject -v all -f json
# Narrow check — just domains
dibs myproject -o domain -t com,dev,ai,app -f json
# Check a specific domain
dibs open.ai -f jsonEvery platform check is wrapped in error handling. If a check fails (network timeout, rate limit, service down), it returns { status: "error" } with a message instead of crashing. Errors do not count against the score — they reduce the total possible score so your recommendation isn't unfairly penalized.
The CLI always exits with code 0 when given valid arguments, regardless of check failures.
- Input parsing — if the input is a domain (e.g.
notion.so), extracts the name and TLD, formats per platform - Name cleaning — the input is lowercased and stripped to
[a-z0-9-] - Variant generation — prefixes and suffixes are applied to create alternatives (when
-vis used, disabled for domain inputs) - Parallel checking — all variants × all platforms are checked concurrently
- Scoring — each variant gets a weighted score based on platform importance
- Recommendation — variants are ranked by score, the best is highlighted with a verdict
git clone https://github.com/avigoldman/dibs
cd dibs
npm install
# Run in development
npm run dev
# Type check
npx tsc --noEmit
# Unit tests (114 tests, mocked, fast)
npm test
# Integration tests (real network calls)
npm run test:integration
# Build
npm run build
# Link globally for local use
npm linkMIT