Skip to content

Xevion/rdap

Repository files navigation

rdap

Version License CI Codecov TypeScript Next.js React

A web-based RDAP client for querying domains, IP addresses, and ASNs. Has dark mode.

Domain query screenshot IPv4 query screenshot

Tip

Try the live demo at rdap.xevion.dev to query domains, IPs, ASNs, and more in real-time.

What is RDAP?

RDAP (Registration Data Access Protocol) is the successor to WHOIS. It returns structured JSON instead of inconsistent plaintext, making it easier to parse and use programmatically.

Why?

The rdap.org client works fine, but I wanted something with dark mode and shareable URLs. Plus it was a good excuse to learn Next.js 16.

Main additions:

  • Dark mode (actually important when you stare at this stuff all day)
  • Every query gets a shareable URL
  • Better type detection for inputs
  • Cleaner UI with status badges and collapsible sections
  • JSContact support alongside vCard
  • Static export, no backend needed

Features

Query types: domains, IPv4/IPv6 (with CIDR), ASNs, entity handles, nameservers, or raw RDAP URLs. Type detection is automatic but can be overridden.

Supported objects: domains, IP networks, autonomous systems, entities (contacts/registrars), and nameservers. Shows all the standard RDAP fields plus DNSSEC info when available.

Contacts: Displays both vCard (jCard) and JSContact (RFC 9553) formats. Shows names, organizations, emails, phones, addresses, etc.

UI stuff: Dark/light mode, copy buttons everywhere, collapsible sections, status badges with hover tooltips, relative timestamps ("2 days ago"), responsive layout.

Technical: Uses IANA bootstrap files to resolve RDAP server URLs. All queries happen client-side from your browser. Zod schemas for validation. Fully static build.

Development

Uses pnpm:

pnpm install
pnpm dev          # localhost:3000
pnpm build        # static export
pnpm test         # vitest
pnpm check        # tsc + eslint

Self-Hosting

Fully static. Queries go directly from your browser to RDAP servers (no backend). Just run pnpm build and host the output anywhere.

CORS issue: Some RDAP servers don't set CORS headers, so those queries will fail in the browser. Might add an optional proxy later.

Privacy

The demo at rdap.xevion.dev has telemetry (PostHog) to track what breaks. Query targets aren't logged for successful queries, only type/timing. Failed queries might include the target for debugging. Self-hosted builds have no telemetry.

Contributing

PRs welcome. Uses ESLint, Prettier, Husky git hooks, and conventional commits.

License

MIT License © 2025 Ryan Walters