Open Standard · Draft v0.1 · CC0

Bitcoin-native identity
for all BTC names

Resolve any .btc, .sats, .unisat, .x, .xbt, or .sat name to Bitcoin addresses, cross-chain records, Ordinal avatars, and more. BNRP is the open protocol spec that makes it work — built on Bitcoin, no vendor lock-in.

Try:
Supports: .btc .sats .unisat .x .xbt .sat

Preview an Ordinal avatar

Paste any Ordinals inscription ID to preview it as a BNRP avatar. This is what wallets and apps will display when a name sets an ord: avatar record.

How BNRP works

01

Name ownership on Bitcoin

A .btc, .sats, .unisat, .x, .xbt, or .sat name is an Ordinals inscription. Ownership is determined by who holds the UTXO — verifiable on any Bitcoin node. No registry contract, no trusted database.

02

Routing inscription

The name owner inscribes a routing record linking their name to Bitcoin addresses, cross-chain addresses (ETH, SOL, Base, Arbitrum), an Ordinal avatar, and web content.

03

Primary name & reverse resolution

A self-transfer makes a name the wallet's primary identity. Any app can reverse-resolve a raw Bitcoin address to a human-readable name — with mandatory anti-spoofing verification.

04

Open resolver API

Any party can run a BNRP-compliant resolver. No vendor lock-in. Wallets, explorers, and dApps query the standard REST API — same interface regardless of who runs the indexer.

Specification

Protocol Extensions

Live improvement proposals extending the core resolve schema. Each is a deployed spec with an open API endpoint and a demo page.

Integrate BNRP

BNRP is a REST API standard. Any wallet, app, or explorer can add .btc name resolution in under 10 minutes. No key, no login, no SDK required to start.

01

Resolve a name

One GET request returns addresses, profile, avatar, Lightning, and agent fields.

GET https://api.bnrp.name/v1/resolve/{name}
02

Reverse resolve

Turn any Bitcoin address into a .btc name with anti-spoofing verification built in.

GET https://api.bnrp.name/v1/reverse/{address}
03

Lightning Address

Any name with a Lightning Address set returns a valid LNURL-pay payRequest.

GET https://api.bnrp.name/.well-known/lnurlp/{name}

Resolve response schema (v1)

{
  "name": "satoshi.btc",
  "owner": "bc1p...",
  "inscription_id": "a8b2c1...i0",
  "addresses": {
    "btc_taproot":   "bc1p...",
    "btc_segwit":    null,
    "eth":           null,
    "sol":           null,
    "spark":         null,
    "agent_address": null,
    "lnurlp":        "satoshi@getalby.com",   // BNRP-IP-09
    "nostr_pubkey":  "npub1...",               // BNRP-IP-12
    "did":           "did:btc:satoshi.btc"     // BNRP-IP-12
  },
  "profile": {
    "display":       "Satoshi",
    "description":   "Bitcoin pioneer",
    "avatar":        "ord:a8b2c1...i0",
    "url":           "https://satoshi.org",
    "com.twitter":   "satoshi",
    "com.github":    "satoshi",
    "com.nostr":     "npub1...",               // BNRP-IP-12
    "com.farcaster":  "satoshi",               // BNRP-IP-12
    "agent_instructions": null,
    "payment_policy": null
  },
  "via": "bnrp-inscription",
  "resolved_at": "2026-05-16T21:00:00.000Z"
}
Integration Guide npm: @btc-native/bnrp GitHub

Register your name

Fill in your details below, copy the generated JSON, and inscribe it to your wallet via UniSat. The latest inscription always wins — update any field anytime by re-inscribing.

Supports .btc .sats .unisat .x .xbt .sat
Ordinals inscription ID of your PFP. To update, just re-inscribe with a new ID.
Your Spark wallet address for instant BTC payments. Get yours at spark.money.
Separate wallet for agent-initiated purchases. Keeps your Ordinals wallet cold.
JSON preview Updates live as you type
{}

After inscribing, paste your new inscription ID below to verify and generate your ID card.

Step 2 — Verify inscription

Enter any BTC name (trump.btc) or paste a routing inscription ID to generate the identity card.