Bitcoin Name Profiles

Profile Viewer

Look up any .btc name to see its on-chain profile: avatar, bio, payment addresses, and social links stored via BNRP.

.btc Resolved
Specification BNRP-IP-12

Profile Record Standard

A standard set of fields that any Bitcoin name holder can inscribe on-chain. Any resolver, wallet, or app that reads BNRP can display a consistent identity card from these records. Fields are optional — set only what you want to expose.

Profile fields

Field Type Description
display string Display name — overrides the TLD name in UIs. Use your preferred handle or full name.
description string Short bio, max 160 chars. Plain text. Shown below the name in profile cards.
avatar string ord:<inscription_id> for an ordinal, or a full HTTPS URL. Resolves to the image at render time.
url string Primary website. Full HTTPS URL.
com.twitter string Twitter/X handle, without the @ symbol.
com.github string GitHub username.
com.nostr string Nostr public key in npub1... bech32 format.
com.telegram string Telegram handle, without the @ symbol.
com.discord string Discord tag (e.g. username#1234 or username for newer Discord names).
com.farcaster string Farcaster handle, without the @ symbol.

Address fields

Field Type Description
btc_taproot string Bitcoin Taproot address (bc1p...). Recommended primary BTC address.
btc_segwit string Bitcoin native SegWit address (bc1q...).
btc_p2sh string Bitcoin P2SH address for wallets that don't support SegWit.
btc_legacy string Bitcoin legacy address (1...).
eth string Ethereum address, checksummed.
sol string Solana address (base58).
spark string Spark protocol address for Bitcoin-native Lightning payments.
agent_address string Address designated for AI agent payments on behalf of this name.
lnurlp string Lightning Address in user@domain.com format. Enables instant BTC payments via Lightning.
nostr_pubkey string Nostr public key as hex string (64 chars). Used for encrypted messaging.
did string Decentralized Identifier, e.g. did:btc:satoshi.btc. Used in verifiable credential flows.

Setting records

Records are set by inscribing a BNRP profile operation with a records object. Include only the fields you want to set. The resolver takes the latest valid inscription as the current state.

Inscription payload — BNRP profile op
{
  "op": "profile",
  "name": "satoshi.btc",
  "records": {
    "display": "Satoshi",
    "description": "Bitcoin pioneer",
    "avatar": "ord:a859c487...i0",
    "url": "https://satoshi.org",
    "com.twitter": "satoshi",
    "com.nostr": "npub1...",
    "lnurlp": "satoshi@getalby.com"
  },
  "addresses": {
    "btc_taproot": "bc1p...",
    "nostr_pubkey": "a1b2c3...",
    "did": "did:btc:satoshi.btc"
  }
}
Ready to set your profile? Connect your wallet and update your records from My Names.
Edit Profile Full BNRP spec
Developers

Fetch a profile

The BNRP API returns the full profile object for any resolved name. One fetch, one JSON object, all records.

JavaScript
// Resolve a Bitcoin name
const res = await fetch('https://api.bnrp.name/v1/resolve/satoshi.btc');
const { profile, addresses } = await res.json();

// Render avatar
const avatarUrl = profile.avatar?.startsWith('ord:')
  ? `https://static.unisat.space/content/${profile.avatar.slice(4)}`
  : profile.avatar;

// Send a payment to their Lightning address
const lnAddress = addresses.lnurlp; // e.g. "satoshi@getalby.com"

// Get their primary BTC address
const btcAddr = addresses.btc_taproot ?? addresses.btc_segwit;
cURL
curl https://api.bnrp.name/v1/resolve/satoshi.btc
API Reference BNRP Protocol Docs