Download a Bluesky Video From a Share Link (2026)
Got a bsky.app/profile/.../post/... share link? Paste it into curl-x and save the original MP4 in seconds—no app, login, or bsky.app link downloader install.
Want to try it now? Paste a post link from any supported platform to download its media instantly.
Open DownloaderTo download a Bluesky video from a share link, copy the full bsky.app/profile/HANDLE/post/RKEY URL from the Bluesky app's Share → Copy link button, open curl-x in any browser, paste the link, and save the MP4. That URL already points at one public post—there is no separate video ID to dig up, and no bsky.app login required to fetch it.
This guide is for anyone who received a Bluesky share link in a group chat, Discord server, or another app and wants the actual video file—on iPhone, Android, Windows, or Mac.
TL;DR
- Bluesky share links look like
bsky.app/profile/user.bsky.social/post/3mq5yidyc3c2g.- Paste the entire URL—curl-x strips tracking query strings automatically.
- Open curl-x in a regular browser tab, paste the link, and download the video.
- curl-x fetches the original uploaded MP4, not a re-encoded stream capture.
- Handles and
did:plc:identifiers both work as the profile segment.- Deleted posts, blocked accounts, or profile/feed links won't extract—curl-x needs one specific post.
Key takeaways
- A Bluesky share link is a direct pointer to one post, not a shortened redirect like Facebook or TikTok share URLs—there's no extra hop to resolve.
- Bluesky is built on the AT Protocol, and public posts have no login wall, so curl-x reads the same data a logged-out visitor sees.
- curl-x resolves the link back to the poster's original uploaded blob, sidestepping the HLS-style playlist the Bluesky app streams in the browser.
- GIFs on Bluesky come in two forms—looping clips stored as MP4, and Tenor-picker GIFs—and curl-x handles both.
In this guide
- Quick answer: download from a Bluesky share link
- What is a Bluesky share link
- Handles vs DIDs in the share link
- Why there's no login wall
- Step-by-step: download a Bluesky video from a share link
- Which Bluesky links curl-x accepts
- Video, images, and GIFs: what you actually get
- Device-specific save tips
- Troubleshooting share link downloads
- FAQ: download Bluesky videos from share links
Quick Answer: Download From a Bluesky Share Link
- In the Bluesky app, open the post and tap Share → Copy link
- Open a browser and go to curl-x
- Paste the full
bsky.app/profile/.../post/...URL and start the extraction - Download the MP4 that curl-x returns
That four-step flow works for any public Bluesky post with a video in under a minute. If you'd rather skip the web form entirely, jump to the curl trick further down, or read the fuller walkthrough in how to copy a Bluesky post link and how to download Bluesky videos.
What Is a Bluesky Share Link?
When you tap Share → Copy link on a Bluesky post, the app puts a URL like this on your clipboard:
https://bsky.app/profile/user.bsky.social/post/3mq5yidyc3c2g
Unlike Facebook's /share/v/CODE or TikTok's vm.tiktok.com short links, a Bluesky share link is not a redirect wrapper. It's the canonical address of the post itself: the profile segment names the author, and the post segment carries the record key (rkey)—a short identifier Bluesky's AT Protocol assigns when the post is created. There's no intermediate hop for curl-x to follow before it can read the post.
That directness is a byproduct of how Bluesky is built. It runs on the AT Protocol, an open, federated network where every post is a signed record stored in the author's personal data repository (their "PDS"). The bsky.app web and mobile apps are just one client reading that public data—curl-x is, functionally, another one. If you want the protocol-level detail, atproto.com's documentation covers how posts, repositories, and blob storage fit together.
Handles vs DIDs in the Share Link
The segment right after /profile/ can appear in two different forms, and curl-x accepts both:
| Form | Example | Where you see it |
|---|---|---|
| Handle | user.bsky.social or a custom domain like name.example.com | Standard Copy link output |
| DID (decentralized identifier) | did:plc:abc123xyz… | Some share sheets, embeds, and third-party tools |
A handle is a human-readable name; a DID is the permanent, unique identifier behind it (handles can change owners or expire, DIDs don't). Both resolve to the same underlying account, and curl-x's parser matches either pattern in the profile segment of the URL—you don't need to convert one to the other before pasting.
Why There's No Login Wall
Unlike Facebook or Instagram, where a share link can dead-end at a login prompt, public Bluesky posts have no login wall by design. The AT Protocol treats public posts as, well, public: anyone (a person, a browser, or a script) can read them without an account. curl-x calls the same public AppView endpoint (public.api.bsky.app) that powers the logged-out bsky.app experience, so if you can see a post while signed out, curl-x can extract it too.
The one exception is federation: Bluesky lets people run their own personal server (PDS) instead of Bluesky's. For the small number of accounts that self-host, photo extraction still works, but full-quality video sometimes doesn't resolve—see Bluesky's support docs for how self-hosting works on the network.
Step-by-Step: Download a Bluesky Video From a Share Link
Step 1: Copy the share link
In the Bluesky app (iOS or Android):
- Open the post with the video
- Tap the share icon (or the ··· menu) below the post
- Tap Share → Copy link
On desktop (bsky.app in a browser):
- Open the post
- Click the share icon
- Choose Copy link, or just copy the URL from the address bar—it's already the post URL
Confirm the clipboard contains /profile/ and /post/—those two segments mean you copied a single post, not a profile or feed link.
Step 2: Open curl-x and paste the link
- Go to curl-x in Safari, Chrome, Firefox, or Edge
- Paste the full URL into the input box
- Tap or click Download
curl-x parses the handle (or DID) and record key from the URL, queries Bluesky's public post-thread API, and resolves the video embed back to the original file.
Step 3: Save the MP4
curl-x hands back the original uploaded video, not the HLS playlist the app streams. Tap or click the download button and the MP4 lands in your browser's downloads location—see the device notes below for where to find it.
The curl download trick
Every Bluesky post curl-x can extract also has a dedicated page at /bluesky/[actor]/[rkey]—and that page is a real file when a command-line client asks for it. Take the handle and record key straight out of the bsky.app URL:
curl -OJ https://www.curl-x.com/bluesky/user.bsky.social/3mq5yidyc3c2g
Run that and curl streams the video back as a file, no browser involved. Open the exact same curl-x.com/bluesky/... URL in a normal browser and you get the regular post page with a download button instead—same link, two audiences. This is the same mechanic that powers curl-x's /[username]/status/[tweetId] pages on Twitter/X.
Which Bluesky Links curl-x Accepts
curl-x's parser matches one URL shape: bsky.app/profile/<actor>/post/<rkey>, with an optional www. prefix and trailing slash.
| Link type | Example pattern | Works? |
|---|---|---|
| Standard handle | bsky.app/profile/user.bsky.social/post/3mq5yidyc3c2g | Yes |
| Custom-domain handle | bsky.app/profile/name.example.com/post/3mq5yidyc3c2g | Yes |
| DID form | bsky.app/profile/did:plc:abc123.../post/3mq5yidyc3c2g | Yes |
With www. | www.bsky.app/profile/user.bsky.social/post/3mq5yidyc3c2g | Yes |
| With tracking params | .../post/3mq5yidyc3c2g?ref=share | Yes—stripped automatically |
Does not work:
| Link type | Why |
|---|---|
Profile page (bsky.app/profile/user.bsky.social) | No single post to extract |
| Feed, list, or starter pack URL | Not a post record |
| Deleted post | AT Protocol record no longer exists |
| Blocked or deactivated account | Public API can't see the post |
| Quote post with no attached media | curl-x reads media attached to the linked post, not the quoted one |
Visibility check: open the link in a private/incognito tab while logged out. If you can see the video there, curl-x can extract it—Bluesky share links inherit the underlying post's visibility, they don't add or remove access.
Video, Images, and GIFs: What You Actually Get
Bluesky posts carry different embed types, and curl-x handles each one differently:
| Post contains | What curl-x returns | Notes |
|---|---|---|
| Video | Original MP4 | Resolved from the poster's uploaded blob, not the streaming playlist |
| Single image | Original file (JPEG/PNG/WebP as uploaded) | Full resolution, plus the CDN rendition as a fallback |
| Multi-image post (up to 4 or more) | Each photo separately, in order | Every image gets its own download |
| Looping GIF clip | MP4 | Bluesky stores "GIFs" recorded in-app as actual video |
| Tenor/Klipy picker GIF | .gif file (with an MP4 rendition when derivable) | Picker GIFs are external embeds, not uploaded blobs |
| Quote post with attached media | The attached media | curl-x does not reach into the quoted post |
The practical upshot: right-clicking a video frame in your browser and choosing "Save" doesn't work on Bluesky at all (there's no static image to save), and saving a screen recording throws away resolution and audio sync. curl-x's approach—reading the original blob straight from Bluesky's storage—gets you the same file the poster uploaded.
Device-Specific Save Tips
iPhone and iPad (Safari)
- After curl-x serves the file, tap the download arrow in Safari's toolbar
- Open the MP4 from Files → Downloads
- Tap Share → Save Video to move it into Photos
If Safari tries to play the video inline instead of downloading it, long-press the player and choose Download Linked File. The same steps apply on Twitter—see how to save Twitter videos to Files on iPhone for the equivalent walkthrough.
Android (Chrome)
- Pull down the notification shade and tap the finished download
- To make the clip show up in Gallery, move it to
DCIM/Cameraor trigger a media scan
Windows, Mac, and Chromebook
The MP4 saves straight to your browser's Downloads folder—drag it into a video editor or slideshow from there.
Troubleshooting Share Link Downloads
| Symptom | Likely cause | Fix |
|---|---|---|
| Invalid URL | Copied a profile or feed link, not a post | Re-copy from Share → Copy link on the specific post |
| Post not found | Post deleted, account blocked/deactivated | Open the link in a private tab logged out to confirm it still loads |
| No media found | Text-only post, or media only in a quoted post | Link the post (or the quoted post) that actually has the attachment |
| Video missing on a working post | Rare case: poster's account self-hosts its own PDS | Photo extraction still works; full video may not resolve |
| Extraction times out | Bluesky API is momentarily slow | Wait a few seconds and retry |
| Rate limited | Too many rapid extractions | Wait 30–60 seconds and try again |
| Only a GIF preview, no video | The post used an external Tenor/Klipy embed, not uploaded video | Expected—curl-x still returns the .gif/MP4 file for that embed |
FAQ: Download Bluesky Videos From Share Links
How do I download a video from a bsky.app link?
Copy the post's bsky.app/profile/HANDLE/post/RKEY link using Share → Copy link, then paste it into curl-x and download the MP4 it returns. No account or app install is required as long as the post is public.
Is there a dedicated bsky.app link downloader?
curl-x acts as one: paste any public bsky.app post URL and it returns the original video, photo, or GIF as a file. It also runs the same extraction from the command line via curl -OJ https://www.curl-x.com/bluesky/HANDLE/RKEY.
Can I save a Bluesky video without the app?
Yes. The share link is a normal web URL, so you never need the Bluesky app itself—open it on desktop, paste it into curl-x, and save the MP4 directly to your computer or phone's Downloads folder.
Does a Bluesky handle or DID link work the same way?
Yes. curl-x's parser accepts both a handle (user.bsky.social, or a custom domain) and a did:plc: identifier in the profile segment of the URL—both point at the same account and extract identically.
Why did my share link fail with "post not found"?
The most common causes are a deleted post, a deactivated or blocked account, or a link that actually points to a profile or feed instead of one post. Double-check you copied the link from Share → Copy link on the post itself, not the author's profile page.
Do I need to be logged in to Bluesky to download a video?
No. Public Bluesky posts have no login wall—curl-x reads them the same way a logged-out visitor's browser would. If a post requires login to view (a private account or a blocked relationship), no downloader can bypass that.
Is downloading a Bluesky video legal?
Downloading public media for personal, offline viewing is generally low-risk, but re-uploading someone else's video without permission can violate copyright and Bluesky's Terms of Service and community guidelines. When in doubt, ask the poster or repost the original link instead of re-uploading the file.
Bottom line: a Bluesky share link already points straight at the post—paste it into curl-x, skip the login wall entirely, and save the original MP4 in a couple of clicks. For the full rundown of what shipped and where support currently stops, read curl-x now supports Bluesky, or go deeper on link formats and multi-image posts with how to copy a Bluesky post link and how to download Bluesky videos. The same paste-and-download flow works across curl-x's other platforms too: Twitter/X, Facebook, Instagram, Threads, Reddit, and TikTok.
Related Guides
How to Download Bluesky Videos: The 2026 Guide
Download Bluesky videos, photos, and GIFs in original quality in 2026. Step-by-step for iPhone, Android, PC, and Mac—plus the curl trick—no login required.
How to Copy a Bluesky Post Link
Copy a Bluesky post link on iPhone, Android, or desktop and get the correct bsky.app URL. Learn handles vs DIDs, then paste the link into curl-x.
How to Download Instagram Videos: The 2026 Guide
Download Instagram videos, Reels, Stories, and IGTV clips in 2026. Step-by-step guide for iPhone, iPad, Android, and desktop—no app or login required.