Bluesky custom domain handle: get your DNS record and check it
Using your own domain as a Bluesky handle (like @yourname.com) takes one DNS TXT record. Type your current handle and the domain you want, and this page looks up your account ID, shows the exact record to add, and then checks that the record is live so you know the change will work before you press Verify in the app.
How to add the record
- Log in to wherever your domain's DNS is managed (your registrar, Cloudflare, Namecheap, GoDaddy and so on) and add a new TXT record.
- Name / host:
_atproto. Some providers want the full name,_atproto.example.com; the tool above shows both. For a subdomain handle such asme.example.com, the name is_atproto.me. - Value:
did=did:plc:...exactly as shown above, with no quotes and no spaces. Most providers add the quotes for you. - Save, wait a few minutes, press Check the record is live, then in the Bluesky app go to Settings, Account, Handle, choose "I have my own domain", enter the domain and tap Verify DNS Record.
If you cannot add a TXT record
The AT Protocol also accepts an HTTPS method: serve a plain-text file at https://yourdomain/.well-known/atproto-did whose only content is your DID (did:plc:...). That suits people who control a website but not its DNS. The app lets you pick this method on the same screen.
Common problems
| Symptom | Likely cause |
|---|---|
| Check says "no record found" | Wrong name (the host was doubled to _atproto.example.com.example.com), or DNS has not propagated yet. Wait and retry. |
| Record found but the value differs | A copy of an old DID, or extra characters. Paste the value from this page again. |
| Record is right but the app fails | Cached lookups can take up to the record's TTL to clear. Try again in 10 to 30 minutes. |
Two TXT records on _atproto | Keep only one that starts with did=; extra ones can confuse resolution. |
How this page works
Your account ID (DID) comes from Bluesky's public resolveHandle endpoint. The live check asks Cloudflare's public DNS-over-HTTPS service for the TXT record and also asks Bluesky whether the domain already resolves to your account. Both requests go straight from your browser; nothing is sent to or stored by Plainwork, and no password or login is ever needed. A DNS result can differ from what the app sees until caches expire, so treat a pass here as a strong sign rather than a guarantee. Skyprint is independent and not affiliated with Bluesky.
Once your handle is set
See how your account is doing with the free Bluesky stats card, check when your followers respond and your engagement rate, or get the full day-by-hour heatmap, format breakdown and CSV in Skyprint Pro ($4, one time).