All free tools
Free Tool

Bluesky AT URI Converter

Paste a Bluesky URL, AT URI, handle, or DID — get every other form, instantly.

Try:

Runs in your browser — nothing stored

Auto-detects every input format

Free forever, no account required

What can I paste in?

  • Profile URL https://bsky.app/profile/alice.bsky.social
  • Post URL https://bsky.app/profile/alice.bsky.social/post/3kabc...
  • AT URI at://did:plc:abc/app.bsky.feed.post/3kabc...
  • Handle alice.bsky.social
  • DID did:plc:abc... or did:web:example.com

Frequently asked questions

What's an AT URI?+

An AT URI is the protocol-level identifier for a record on the AT Protocol (the network Bluesky is built on). It looks like at://did:plc:abc.../app.bsky.feed.post/3kabc and uniquely identifies a post, profile, or any other record.

Why convert to AT URIs?+

Bluesky web URLs are convenient for humans, but tools, scrapers, feed generators, and SDKs work with AT URIs and DIDs. If you're building anything on AT Protocol you'll need both forms.

What's a DID?+

A decentralized identifier — the permanent ID for an account. Handles change (you can rename); DIDs don't. did:plc:* is the most common type on Bluesky; did:web:* is used for self-hosted identities.

Does this make any network calls?+

Yes — handle ↔ DID resolution requires a call to Bluesky's public AppView API. Pure URL/AT URI parsing is local. Nothing is logged or stored.

Why does my old post link still work after I changed handle?+

Because Bluesky resolves the handle in the URL to your DID at request time. Your DID is what actually owns the post — the handle is just a friendly label.

Building on AT Protocol?

SkyGrow uses the same APIs to surface conversations, schedule posts, and analyse engagement. Try it free.

Try SkyGrow free

© 2026 SkyGrow. All rights reserved.