Pretty whois for humans. Bulk lookups, EPP status decoding, redemption-period
explanations, and a one-keystroke jump to a registrar when a domain is free.
npx @egebese/whoiz google.com- Bulk lookups —
whoiz a.com b.io c.shopruns in parallel. - Field queries —
whoiz a.com status,periodshows only what you asked for. - EPP status decoder — every
clientTransferProhibitedetc. comes with a plain-language explanation. - Lifecycle awareness — knows the difference between
redemptionPeriod,pendingDelete, auto-renew grace, and gives an ETA for when a domain becomes registerable again. - Available? Browser opens. — when a domain is free,
whoizopens a Spaceship search so you can grab it in one step. (--no-opento disable.) - TUI mode —
whoiz a.com b.com --tuifor an interactive Ink-based viewer. - Background watch —
whoiz watch add domain.cominstalls a launchd / Schtasks / systemd-timer agent that re-polls on an adaptive cadence (weekly when 6 months out, daily near expiry, every 6h in redemption) and notifies on state change. Auto-uninstalls when nothing's left to watch. - WHOIS history — every probe writes a snapshot,
whoiz history domain.comshows every registrar / nameserver / status change since you started watching. - Foreground watch —
whoiz a.com --watchre-polls in place, default every 60s, for live monitoring in a terminal pane. - ccTLD-aware — falls back to system
whoisfor TLDs like.tr,.de,.fr,.nl,.it,.ruand decodes their non-EPP status codes. - Shell completion —
whoiz --completion bash|zsh|fishships ready-to-source scripts. - JSON output —
--jsonfor scripting.
# one-off via npx
npx @egebese/whoiz google.com
# or install globally
npm i -g @egebese/whoiz
whoiz google.comThe CLI command is whoiz regardless of how you install it.
whoiz <domain> [<domain> …] [fields]whoiz cloudflare.comwhoiz cloudflare.com vercel.com github.comBoth comma and slash separators work:
whoiz google.com status,period
whoiz google.com status/period/expiry
whoiz google.com -f registrar,nsAvailable field tokens: status, period, expiry, created, updated,
registrar, ns, dnssec, links, raw.
Bare whoiz (no arguments) launches the interactive TUI. You can also start
with domains preloaded:
whoiz # empty TUI, type to query
whoiz --tui # same thing, explicit
whoiz cloudflare.com --tui # preload one or more lookupsIn the TUI:
- Type a domain (or several, separated by space/comma) and press Enter to look up.
- Tab / Shift+Tab — switch between previous lookups.
- Ctrl+O — open the current domain on Spaceship in your browser.
- Ctrl+D — drop the current entry from history.
- Esc or Ctrl+C — quit.
whoiz cloudflare.com --jsonwhoiz somenewname.io --no-openwhoiz mybrand.shop -rPolls the same domain(s) on a schedule and redraws the box in place. Best for
short-lived monitoring inside a terminal — for set-and-forget monitoring use
whoiz watch add (below).
whoiz google.com --watch # every 60s (default)
whoiz google.com --watch -i 30 # every 30s
whoiz a.com b.com --watch -i 600 # check both, every 10minStop with Ctrl+C.
Adds a domain to a tiny on-disk watchlist and registers a single OS scheduler entry that wakes once an hour to process due entries. The polling cadence is adaptive:
| Time-to-expiry | Probe every |
|---|---|
| > 1 year | 30 days |
| 180 d – 1 y | 14 days |
| 30 – 180 d | 7 days |
| 14 – 30 d | 2 days |
| 3 – 14 d | 1 day |
| ≤ 3 d / hold / redemption / pendingDelete | 6 hours |
whoiz watch add mydomain.com # start watching
whoiz watch add a.com b.com --note "personal"
whoiz watch list # see tier + next probe
whoiz watch run mydomain.com # manual probe now
whoiz watch remove mydomain.com # stop watching
whoiz watch status # is the scheduler installed?
whoiz watch doctor # detailed diagnostics + recent logNotifications use the OS-native channel — osascript display notification on
macOS, Windows.UI.Notifications on Windows, notify-send on Linux — so no
extra dependencies. State lives in ~/.whoiz/.
Self-cleaning: when the last watch is removed (or a watched domain becomes available) the scheduler entry is uninstalled automatically. Nothing keeps running once you've stopped watching.
Resource cost: hourly wake, ~50 ms of work per fire if nothing is due. Mac and
Linux entries are marked LowPriorityIO / IOSchedulingClass=idle; Windows is
LIMITED privilege.
Every probe (foreground or background) records a normalized snapshot to
~/.whoiz/history/<domain>.jsonl. whoiz history walks that and shows only
the changes between snapshots:
whoiz history mydomain.com
whoiz history mydomain.com --json2026-02-15T00:00:00Z 3 changes
registrar OldReg → NewReg
expiry 2026-12-31T00:00:00Z → 2027-12-31T00:00:00Z
ns +c.example.com -b.example.com
2026-04-01T00:00:00Z 2 changes
state registered → redemption
statuses +redemptionperiod -clienttransferprohibited
History is local-only — there's no service to query for retroactive data, but once a domain is on your watchlist whoiz will catch every registrar / NS / status / expiry change going forward.
# bash
whoiz --completion bash > /usr/local/etc/bash_completion.d/whoiz
# zsh
whoiz --completion zsh > "${fpath[1]}/_whoiz" && compinit
# fish
whoiz --completion fish > ~/.config/fish/completions/whoiz.fish| State | Meaning |
|---|---|
| AVAILABLE | TLD's whois says no record exists. Register link opens automatically. |
| REGISTERED | Active registration; expiry countdown shown. |
| REDEMPTION | redemptionPeriod set — owner can restore for a high fee, public can't grab. |
| PENDING DELETE | pendingDelete set — drop in ~5 days, then public registration opens. |
| PENDING TRANSFER | pendingTransfer set — transfer in flight (~5 days). |
| HOLD | clientHold / serverHold set — DNS suspended. |
See CHANGELOG.md for the full release history.
PRs and issues welcome. Read CONTRIBUTING.md before opening one — it covers local setup, the project layout, what makes a good change, and the release flow.
If whoiz saved you a tab, a star helps others find it:
MIT © Ege Beşe