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

Wallet Integrations

Open pull requests and integration status across Bitcoin wallets and apps. Any wallet can ship BNRP resolution with under 100 lines of code. No SDK required.

PR OPEN May 2026

Leather

BTC send flow. Bitcoin Name option in recipient dropdown. Resolves all 8 TLDs to taproot address.

leather-io/mono #2332
PR OPEN May 2026

Xverse

BTC send flow. Inline resolution in RecipientSelector. No extra step for the user.

secretkeylabs/xverse-web-extension #865
PENDING

OKX Wallet

BTC send flow. Outreach in progress.

No PR yet
PENDING

UniSat

Business relationship required. Public pressure track active.

No PR yet
YOUR WALLET

Add your wallet

BNRP is a single GET request. Any wallet can ship name resolution in an afternoon. Full integration guide with code samples.

Integration guide

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.

Cash App: use your $cashtag — e.g. $jack becomes jack@cash.app

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.