Paste a Bluesky URL, AT URI, handle, or DID — get every other form, instantly.
Runs in your browser — nothing stored
Auto-detects every input format
Free forever, no account required
https://bsky.app/profile/alice.bsky.socialhttps://bsky.app/profile/alice.bsky.social/post/3kabc...at://did:plc:abc/app.bsky.feed.post/3kabc...alice.bsky.socialdid:plc:abc... or did:web:example.comAn 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.
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.
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.
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.
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.
SkyGrow uses the same APIs to surface conversations, schedule posts, and analyse engagement. Try it free.
Try SkyGrow free© 2026 SkyGrow. All rights reserved.