How to get a Nostr address (NIP-05) in 2026
Step-by-step guide to claiming a readable Nostr identifier. The fastest managed option, the fully self-hosted setup, costs, and verification.
You have a Nostr public key. You can already post, follow, and be followed. What you do not yet have is a name anyone can remember. npub1pf8hkx3ang2jngcgpsawtmj48c90pgqasmgpva7qhvnsty5j87yqwk3vy5 is correct, but nobody is putting that on a business card.
A Nostr address solves this in the shape of you@somewhere.com. The technical name is NIP-05 and we wrote a separate guide on what it is and how it works. This article is the practical companion. Two paths actually work in 2026; we walk through both end to end.
TL;DR. Sign up on nostr.blog and pick a username. It is the fastest path and starts at $2.99 per year. If you already own a domain, you can host the NIP-05 record yourself at no additional cost by putting a small JSON file at
/.well-known/nostr.json.
When you are ready, grab your @nostr.blog address
Before you start
You need exactly one thing: a Nostr key pair. If you already have an account in any Nostr client you have keys. If you do not, the how-to-use-nostr guide walks through creating them.
You need to know your public key in hex. Your client shows it either as an npub1... Bech32 string or as a 64-character hex string. The NIP-05 JSON file takes the hex form. Every Nostr client exposes both in the "account" or "settings" screen; if yours only shows the npub, there is usually a toggle to flip to hex.
Do not share your nsec (private key) with anyone during this process. No step of either path requires it. If a signup form asks for your nsec, back out.
Path 1: Register on nostr.blog
The short version: pick a name, pay the annual fee for that name length, done. Takes about two minutes.
Step by step
- Go to nostr.blog/create.
- Type the name you want. The form checks availability as you type and shows the price next to the name based on its length.
- If you already have a Nostr identity, sign in with your existing keys (NIP-07 browser extension or paste the npub for read-only binding). If you are brand new, the form generates a key pair for you and prompts you to back up the nsec before the next step.
- Pay the annual fee over Lightning. The checkout accepts any Lightning wallet; the invoice is visible as both a QR code and a copyable string.
- The moment payment confirms (usually under two seconds), the NIP-05 record is live. Your
@name.nostr.blogidentifier works in every Nostr client within minutes.
What is included
Beyond the identifier itself, the signup bundles:
- A Lightning wallet for receiving zaps, pre-configured with your new address as the zap-receive endpoint
- A web-based Nostr client you can use immediately from the same dashboard
- Automatic renewal reminders 30 days before the annual fee is due
- The ability to change the linked public key later (useful if you rotate keys)
What it costs by name length
Prices are annual. Short names are priced higher because there are fewer of them.
| Name length | Price per year |
|---|---|
| 1 character | $999 |
| 2 characters | $499 |
| 3 characters | $199 |
| 4 characters | $99 |
| 5 characters | $29 |
| 6 to 7 characters | $9.99 |
| 8 or more characters | $2.99 |
If the name you want is scarce (short, recognizable, or otherwise claimed), the scarcity is the point of the premium tier. If you just want something readable, the 8+ tier at $2.99 per year is the same technology for the price of a coffee.
Path 2: Host it on your own domain
If you already own a domain, you can run NIP-05 yourself with a static file and no ongoing cost beyond the domain registration.
The minimum viable setup is four files worth of work. We walk through it here assuming you have basic comfort with a web server, which is the honest prerequisite. If "edit the web server config" reads as a foreign sentence, Path 1 is faster and cheaper than the learning curve.
Step 1: Get your public key in hex
Open your Nostr client, find "account" or "settings," reveal the public key in hex form. It is 64 characters, all lowercase, a-f 0-9. Copy it somewhere you can paste from; you will need it twice.
Step 2: Create the JSON file
On the server hosting your domain, create the path /.well-known/nostr.json with this content:
{
"names": {
"yourname": "0a4f7b1a3d9a1529a3080c3ae5ee553e0af0a01d86d01677c0bb270592923f88"
}
}
Replace yourname with the local part of the identifier you want (for alice@alicedomain.com, the local part is alice). Replace the long hex string with your actual public key.
Step 3: Set CORS headers
The browser-based Nostr clients will only read this file if the server returns the right CORS header. Add to your server configuration:
Access-Control-Allow-Origin: *
For this path specifically. Clients in native apps will read the file without this header; browser clients will silently fail without it, and half the support questions about "my NIP-05 is broken" are exactly this.
Step 4: Verify
From any terminal:
curl -i https://yourdomain.com/.well-known/nostr.json?name=yourname
You should see:
- Status
200 OK Content-Type: application/jsonAccess-Control-Allow-Origin: *- The JSON body you put there
Then set the identifier yourname@yourdomain.com in your Nostr client's profile (under "verification" or "NIP-05 address"). Wait a minute, and a small checkmark should appear next to your display name across clients.
Optional: point clients at specific relays
The NIP-05 spec allows you to list preferred relays alongside the name. This helps clients fetch your posts faster on a cold load because they do not have to hunt through the default set.
Extended version of the JSON:
{
"names": {
"yourname": "0a4f7b1a3d9a1529a3080c3ae5ee553e0af0a01d86d01677c0bb270592923f88"
},
"relays": {
"0a4f7b1a3d9a1529a3080c3ae5ee553e0af0a01d86d01677c0bb270592923f88": [
"wss://relay.damus.io",
"wss://nos.lol",
"wss://relay.primal.net"
]
}
}
Optional. Your account works without it; some clients ignore it entirely. Worth adding if you want cold-start performance, not needed for basic verification.
How to check the result works
From a Nostr client you do not normally use (to bypass any caching in your primary app), search for your full identifier (yourname@yourdomain.com or you@nostr.blog). The client should:
- Find your profile without ambiguity.
- Show a checkmark or "verified" indicator next to your display name.
- Render the identifier in place of (or alongside) the npub across the UI.
If any of those three fails, re-verify each step. Common failures:
- CORS missing on the JSON file. Run the
curlcommand from Step 4 above and look for theAccess-Control-Allow-Originheader. If absent, add it to the server config. - Wrong pubkey in the JSON. Copy the hex from your client one more time and compare character by character. A single wrong character means the verification fails silently.
- Client-side cache. Log out and back in, or open the same profile in a different client. Nostr clients cache the NIP-05 mapping for up to 24 hours in some builds.
- Typo in the identifier.
alice@nostr.blogandAlice@nostr.blogare different strings to most clients. Use lowercase.
Changing your address later
Nothing about this is permanent. Two scenarios come up.
You want to change the name but keep the same public key. On nostr.blog, cancel the current name in the dashboard and register a new one; the new one resolves the moment payment confirms. On your own domain, edit the JSON file and update your Nostr client's profile; it takes minutes to propagate. In either case your followers, posts, and reputation stay because they are attached to the public key, not the name.
You want to change the underlying public key but keep the name. This happens if you compromise your nsec and need to rotate. On nostr.blog, the dashboard lets you point the existing NIP-05 at a new pubkey. On your own domain, edit the JSON. The downside: clients that cached the old mapping will still route to the old pubkey for up to a day. This is why rotating nostr keys is still an awkward operation in 2026 and there is active protocol work (NIP-26 delegations, NIP-41 key rotation drafts) to make it less awkward.
Which path should you actually pick
The honest split:
- nostr.blog if you want the thing working in two minutes, you care about a memorable name, you want the bundled Lightning wallet, or you do not want to think about web server configuration. This is the majority case.
- Your own domain if you already own one you trust, you are comfortable editing server config, and independence from any third-party provider matters more than setup time. Minority case, legitimate choice.
Both produce the exact same Nostr address technically. The only difference is who hosts the file and handles the renewal.
Frequently asked questions
Can I change my Nostr address later?
Do I need a website or domain for a Nostr address?
How much does a Nostr address cost?
What is the difference between my @name and my npub?
Can I have the same name on multiple Nostr services?
Related reading
What is NIP-05? The Nostr address, explained
NIP-05 is the email-shaped identifier you use on Nostr: alice@nostr.blog. What it actually does, what it does not, and how to get one.
7 min readGetting startedWhat is Nostr? A plain-English guide for 2026
Nostr is a simple, open protocol for social media and identity. No company runs it, no account can be deleted by anyone but you. Plain English.
6 min readGetting startedHow to use Nostr: a step-by-step guide for beginners
Open an app, get a pair of keys, follow some people, post. What starting Nostr looks like in 2026, with the details nobody warns you about.
9 min readIdentity and NIP-05Premium Nostr addresses: short, memorable, yours
One and two-letter Nostr identifiers exist, they cost more for a reason, and owning one is a specific identity statement. What premium names cost.
7 min readIdentity and NIP-05Using a custom domain for your Nostr identity: step-by-step
Host your own NIP-05 on a domain you control. Why you might want to, how to set it up in minutes, and what it gives you that a managed service does not.
6 min readIdentity and NIP-05How to get verified on Nostr: a practical guide
Verification on Nostr is NIP-05, not Twitter Blue. What it means, how to get the check, and what the verification actually proves (and does not).
6 min read