npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

calldibs

v0.0.4

Published

Call dibs on a name — check availability across domains, social media, package registries, and trademarks.

Readme

dibs

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.

Install

npm install -g calldibs

Or run directly:

npx calldibs acme

Quick Start

# 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.csv

Domain Input

Pass 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: notionso for social handles, notion-so for package registries
  • Ensures .so is always in the TLD check list
  • Skips variant generation (you're checking a specific brand)
  • .com is treated as a plain name — example.com just checks example

What It Checks

| 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 |

Default TLDs

.com, .dev, .io, .ai, .co, .app

Any valid IANA TLD is supported (1,400+). Just pass whatever you need via --tlds.

Variants

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,app

With -v all, checking acme also checks useacme, getacme, acmehq, acmeapp, acmedev, and 21 more variants. Each is scored and ranked.

Scoring & Recommendations

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 | | | X / Twitter | | | Instagram, LinkedIn | | | GitHub, .ai domain | | | TikTok, YouTube, .com-adjacent domains | | | Reddit, .co, .app domains | | 2-3× | Package registries (npm, npm org, PyPI, crates.io, etc.) | | | 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 |

Output Formats

Pretty (default)

Human-readable report with colors, progress bars, and grouped results:

dibs acme

Shows a variant ranking table, detailed per-platform results for the best variant, and a recommendation with actionable details.

JSON

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}'

CSV

dibs acme -f csv > report.csv
variant,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,

CLI Reference

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 |

Interactive Mode

Run dibs with no arguments to enter interactive mode. You'll be prompted to:

  1. Enter the name
  2. Select which platforms to check
  3. Select which TLDs to check
  4. 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.

Non-Interactive Mode

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 json

Error Handling

Every 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.

How It Works

  1. Input parsing — if the input is a domain (e.g. notion.so), extracts the name and TLD, formats per platform
  2. Name cleaning — the input is lowercased and stripped to [a-z0-9-]
  3. Variant generation — prefixes and suffixes are applied to create alternatives (when -v is used, disabled for domain inputs)
  4. Parallel checking — all variants × all platforms are checked concurrently
  5. Scoring — each variant gets a weighted score based on platform importance
  6. Recommendation — variants are ranked by score, the best is highlighted with a verdict

Development

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 link

License

MIT