You can link your Bluesky account to a custom domain you own through Namecheap. Instead of the default @username.bsky.social handle, your profile displays your own domain name. This verification tells others that you control the domain and the account belongs to you.
The process requires adding a TXT record to your domain DNS settings in Namecheap. Bluesky then reads that record to confirm ownership. The entire setup takes about 10 minutes, though DNS propagation can delay verification by up to 48 hours.
This article walks through the DNS configuration steps on Namecheap and explains how to trigger the verification on Bluesky. It also covers common mistakes that cause the handle to fail verification.
Key Takeaways: Verifying a Bluesky Handle With Namecheap DNS
- Namecheap Advanced DNS > Add New Record: Add a TXT record with your Bluesky DID value to prove domain ownership.
- Bluesky Settings > Account > Handle: Enter your custom domain and click Update Handle to start verification.
- DNS propagation delay: After adding the TXT record, wait up to 48 hours before Bluesky confirms the handle.
How Bluesky Handle Verification With a Custom Domain Works
Bluesky uses a decentralized identity system. Every account has a DID (Decentralized Identifier), a permanent string that does not change even if you change your handle. When you set a custom domain as your handle, Bluesky looks for a specific DNS record on that domain. The record must contain your DID in a specific format.
The DNS record is a TXT record at the subdomain _atproto. The full hostname looks like _atproto.yourdomain.com. The value of the TXT record must be exactly did=did:plc:xxxxx, where did:plc:xxxxx is your Bluesky DID.
Bluesky does not require an email verification or a file upload on your web server. The DNS-based method works even if your domain has no website hosting. You only need DNS management access through Namecheap.
Prerequisites Before You Start
You need three things before proceeding:
- A Bluesky account with a verified email address.
- A domain registered through Namecheap. The domain must use Namecheap BasicDNS, PremiumDNS, or FreeDNS. Third-party DNS services like Cloudflare require separate steps.
- Your Bluesky DID. You can find this in Bluesky under Settings > Account > Advanced. Copy the full DID string starting with did:plc:.
Steps to Add the TXT Record in Namecheap and Verify on Bluesky
Follow these steps to configure your Namecheap DNS and verify your handle on Bluesky.
- Log into your Namecheap account
Go to Namecheap.com and sign in. Click Domain List in the left sidebar to see all your domains. - Open Advanced DNS for your domain
Click the Manage button next to the domain you want to use. Then click Advanced DNS in the top navigation bar. - Add a new TXT record
Under the Host Records section, click Add New Record. From the Type dropdown, select TXT Record. - Enter the host and value
In the Host field, type _atproto. In the Value field, paste your Bluesky DID in this exact format: did=did:plc:xxxxx. Replace did:plc:xxxxx with your actual DID. Leave the TTL set to Automatic. - Save the record
Click the green checkmark icon to save the record. Namecheap will confirm the record is added. - Open Bluesky Settings
Go to Bluesky and click Settings in the left sidebar. Then click Account. - Enter your custom domain as handle
Click Change Handle. Select I have my own domain. Type your full domain name, for example yourdomain.com. Do not include www or https://. - Click Update Handle
Bluesky will attempt to read the TXT record. If DNS has propagated, your handle updates immediately. If not, you see a message that verification is pending. Wait and try again later.
If Bluesky Still Has Issues After the Main Fix
Even after following the steps above, verification may fail. Here are the most common problems and how to fix them.
TXT Record Shows ‘Record Not Found’ After 24 Hours
This usually means the record was added incorrectly. Go back to Namecheap Advanced DNS and check the Host field. If you entered @ or left it blank, the record applies to the root domain instead of the _atproto subdomain. Delete the incorrect record and add a new one with _atproto exactly as the host.
Handle Changes Back to @username.bsky.social After a Few Days
Bluesky rechecks the DNS record periodically. If the record disappears or becomes invalid, Bluesky resets your handle. Check that your Namecheap account is active and your domain is not expired. Also verify that the TXT record value still matches your current DID. If you migrated your Bluesky account, your DID may have changed.
Verification Works on Mobile but Not Desktop, or Vice Versa
This is a DNS caching issue. Different devices and networks cache DNS records for different lengths of time. On the device where verification fails, try using a different network, such as switching from Wi-Fi to cellular data. You can also flush the DNS cache on Windows by opening Command Prompt as administrator and typing ipconfig /flushdns.
Bluesky Handle Verification: Namecheap DNS vs Bluesky Default Handle
| Item | Custom Domain via Namecheap DNS | Default Bluesky Handle |
|---|---|---|
| Handle format | yourdomain.com | @username.bsky.social |
| Verification method | DNS TXT record with your DID | None required |
| Ownership proof | Proves you control the domain | Only proves you control the Bluesky account |
| Setup time | 10 minutes plus DNS propagation | Instant on sign-up |
| Cost | Domain registration fee plus Namecheap DNS | Free |
| Portability | Handle stays with your domain if you switch platforms | Handle is tied to Bluesky |
The table shows that a custom domain handle provides stronger proof of identity and portability. The default handle is faster to set up but does not prove domain ownership.
You now have a verified Bluesky handle linked to your Namecheap domain. Your profile displays your domain name, and anyone who visits your profile can see the verified badge. To confirm the verification is working, ask a friend to view your profile from a different device. For an extra layer of trust, add a second TXT record with the same value at the root domain host @. This allows Bluesky to verify your handle even if the _atproto subdomain record is temporarily unreachable.