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

unphurl

v0.1.5

Published

Domain intelligence CLI — check URLs from the terminal

Readme

 _   _ _   _ ____  _   _ _   _ ____  _
| | | | \ | |  _ \| | | | | | |  _ \| |
| | | |  \| | |_) | |_| | | | | |_) | |
| |_| | |\  |  __/|  _  | |_| |  _ <| |___
 \___/|_| \_|_|   |_| |_|\___/|_| \_\_____|

URL intelligence from the terminal. One URL in, structured signals out.

Unphurl analyses any URL across 7 dimensions and 23 configurable signals. It tells you the age of the domain, whether it impersonates a known brand, if SSL is valid, if the domain is parked, how the redirect chain behaves, and whether it can receive email. You get a risk score from 0 to 100 built from raw signals, not opinions.

AI agents have hands to grab URLs. Unphurl gives them eyes.

Why it exists

Most URL security tools are built for security teams. Dashboards, threat feeds, enterprise pricing. Unphurl is built for developers, AI agents, and anyone who works in a terminal.

No dashboard. No login portal. npx unphurl and you're checking URLs.

What you get back

Every check returns signals across 7 dimensions:

| Dimension | What it tells you | |-----------|-------------------| | Redirect behaviour | Full chain (up to 10 hops), shortener detection, stopped reasons | | Brand impersonation | Levenshtein + homoglyph analysis against 150+ brands | | Domain intelligence | Age, registrar, expiration, status codes, nameservers (via RDAP) | | SSL/TLS | Real handshake validation from Cloudflare's edge | | Parked detection | 4-layer check: registrar pages, for-sale, empty content, parking services | | URL structure | Length, path depth, subdomain count, entropy, IP detection, encoded chars | | DNS enrichment | MX record existence (can the domain receive email?) |

Every signal is business intelligence. Domain age tells you how established a company is. No MX record means they can't receive email. Expiring domains mean a business might be shutting down. Parked detection tells you if a business is real. Redirect chains reveal middlemen and tracking.

What it costs

Every new account gets 20 free pipeline check credits. Most lookups are free. Known domains (Tranco Top 100K) and previously analysed domains return cached results at no cost. You only pay when an unknown domain runs through the full pipeline for the first time.

| Package | Credits | Price | Per check | |---------|---------|-------|-----------| | Starter | 100 | $9 | $0.090 | | Standard | 500 | $39 | $0.078 | | Pro | 2,000 | $99 | $0.050 | | Scale | 10,000 | $399 | $0.040 |

One-time purchases, no subscriptions. In typical use, 95-99% of URLs resolve free.

Install

npx unphurl https://example.com

Or install globally:

npm install -g unphurl

Quick start

# Sign up (get your API key)
unphurl signup --email [email protected] --name "Your Name"

# Set your key
export UNPHURL_API_KEY=uph_your_key_here

# Check a URL
unphurl https://suspicious-domain.xyz

# Check 500 URLs from a file
unphurl --batch urls.txt

# Output JSON for piping
unphurl https://example.com --json | jq '.score'

Commands

Check URLs

# Single URL
unphurl https://suspicious-domain.xyz

# Batch check from file (one URL per line, # comments ignored)
unphurl --batch urls.txt

# Use a custom scoring profile
unphurl https://example.com --profile cold-email

# Raw JSON output
unphurl https://example.com --json

Filtering batch results

# Clean URLs (score under 25)
unphurl --batch urls.txt --json | jq -r '.results[] | select(.result.score < 25) | .url' > clean.txt

# Flagged URLs (score 50+)
unphurl --batch urls.txt --json | jq -r '.results[] | select(.result.score >= 50) | .url' > flagged.txt

# Export as CSV
unphurl --batch urls.txt --json | jq -r '.results[] | [.url, .result.score, .result.domain, .result.signals.phishing.is_phishing] | @csv' > results.csv

Account management

# Create an account
unphurl signup --email [email protected] --name "Your Name"
unphurl signup --email [email protected] --name "Your Name" --company "Acme Inc"

# View account info
unphurl account

# Rotate your API key (new key shown once, old key revoked immediately)
unphurl account rotate-key

# Delete your account permanently
unphurl account delete --confirm

Credits and billing

# Check your credit balance
unphurl --balance

# View available packages
unphurl pricing

# Buy pipeline checks (opens Stripe checkout)
unphurl purchase pkg_100

Scoring profiles

Profiles let you weight signals differently for different jobs. A security bot cares about brand impersonation. A cold email tool cares about parked domains and missing MX records. Create profiles for each use case.

# View all 23 default scoring weights
unphurl profiles defaults

# Create a custom profile (only include weights you want to change)
unphurl profiles create cold-email --weights '{"parked":30,"no_mx_record":20,"ssl_invalid":15}'

# List your profiles
unphurl profiles

# Show a profile with merged defaults
unphurl profiles show cold-email

# Delete a profile
unphurl profiles delete cold-email

History and stats

# View check history
unphurl history
unphurl history --page 2 --limit 50

# View usage statistics
unphurl stats
unphurl stats --json

Authentication

Set your API key as an environment variable:

export UNPHURL_API_KEY=uph_your_key_here

Or pass it directly:

unphurl https://example.com --key uph_your_key_here

Output options

By default, output is coloured for readability. To disable:

unphurl https://example.com --no-color
NO_COLOR=1 unphurl https://example.com

Use --json on any command for machine-readable JSON output.

How billing works

  • A positive credit balance is required for all checks, even free lookups. Free lookups don't deduct credits, but you need at least 1 credit on your account.
  • Known domains (Tranco Top 100K like google.com, amazon.com): free, instant.
  • Cached domains (analysed recently by anyone): free, instant.
  • Unknown domains (first-time analysis): 1 credit, runs the full 7-dimension pipeline.
  • Batch checks deduct credits upfront for unknowns. If you don't have enough, the batch is rejected with a summary showing exactly how many credits you need.
  • Failed pipeline checks are automatically refunded.

Build a business on it

Unphurl costs you $0.04-$0.09 per check. A website link audit takes 15 minutes and uses 50-100 credits. Charge $150-$500 per audit. The math works.

Service ideas: link health audits, lead list verification, SEO backlink audits, newsletter link monitoring, vendor vetting reports, brand protection monitoring.

Also available as

License

MIT