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.
Want to try it now? Paste a post link from any supported platform to download its media instantly.
Open DownloaderTo download Bluesky videos, copy the public post link from the Bluesky app (Share > Copy link), paste it into a web-based Bluesky video downloader like curl-x, and save the original MP4 to your device. Bluesky has no native "save video" button, and right-clicking the player in a browser does not work the way it does on older video sites—but any public post's video, photos, or GIFs can be extracted once you have the correct bsky.app link.
This guide is for anyone who wants to save a Bluesky video for offline viewing, archiving, or reference—on iPhone, Android, Windows, or Mac—without installing an app or logging into anything.
TL;DR
- Bluesky doesn't offer a built-in download button, and its player streams video as chunked HLS segments—not a single saveable file.
- Copy the link to one specific post:
bsky.app/profile/HANDLE/post/RKEY.- Paste it into curl-x, which fetches the original uploaded MP4 straight from the poster's data server, not a stream capture.
- Public posts need no login. Private, blocked, or deleted posts can't be downloaded by any honest tool.
- Command-line fans can skip the web UI entirely with
curl -OJ.
Key takeaways
- Bluesky video is not stored as a single downloadable file the way the app plays it—curl-x resolves the post back to the original blob on the poster's Personal Data Server (PDS) instead of capturing the streaming playlist.
- Both handles (
user.bsky.social, custom domains) and DID identifiers (did:plc:…) work as the profile segment of a post URL. - A single post can carry a video, up to four standalone photos, a newer 5–10 photo gallery carousel, or a GIF—curl-x handles all of them the same way.
- Because Bluesky posts are public by default, extraction needs no account, no API key, and no browser extension.
In this guide
- How Bluesky actually serves video (and why that matters)
- Do you need a Bluesky account to download video?
- Which Bluesky links work
- What you can download from a Bluesky post
- Step-by-step: download a Bluesky video with curl-x
- The curl trick: download straight from the terminal
- Download on iPhone and iPad
- Download on Android
- Download on PC and Mac
- Troubleshooting common errors
- Is downloading Bluesky videos legal?
- FAQ: download Bluesky videos
How Bluesky Actually Serves Video (And Why That Matters)
Bluesky runs on the AT Protocol, an open, federated network where each account's posts and media live in a personal repository hosted on a Personal Data Server (PDS)—usually Bluesky's own infrastructure, but sometimes a self-hosted server the account owner runs. Uploaded media (a video, a photo, a GIF) is stored as a blob, referenced by a content-addressed identifier called a CID. You can read the underlying spec at atproto.com.
When you open a video post in the Bluesky app or on bsky.app, the player does not load one MP4 file. It streams an adaptive HLS playlist—small chunked segments assembled on the fly for smooth playback across connection speeds. That is convenient for viewing and terrible for saving: there is no single file for a browser's "Save video as…" to grab, which is why most manual tricks for downloading Bluesky video fail or produce a broken partial clip.
curl-x sidesteps the stream entirely. It reads the post through Bluesky's public AppView API (public.api.bsky.app, the same getPostThread endpoint the app itself calls), pulls the video blob's CID out of the response, and requests the original file directly from the PDS via the com.atproto.sync.getBlob method—entering through Bluesky's bsky.social entryway, which redirects to whichever host actually stores that account's data. The result is the complete file the poster uploaded, not a screen-recorded or stitched-together copy. For the full rundown of what shipped, see curl-x Now Supports Bluesky.
Do You Need a Bluesky Account to Download Video?
No. Bluesky posts are public by default, and the AppView API that curl-x reads is the same public endpoint a logged-out visitor's browser calls when it loads bsky.app. If you can open the post without signing in, curl-x can extract it.
The flip side: if a post requires login to view—because the account is private, blocked, deactivated, or the post was deleted—the public API can't see it, and neither can curl-x or any other legitimate tool. There is no workaround that doesn't involve stolen credentials, and you shouldn't trust any downloader that claims otherwise.
Which Bluesky Links Work
curl-x needs a link to one specific post, not a profile, a feed, or a list. If you're unsure how to grab the exact URL from the app, How to Copy a Bluesky Post Link walks through every device.
| Link type | Example | Works? |
|---|---|---|
| Standard handle link | bsky.app/profile/user.bsky.social/post/3mq5yidyc3c2g | Yes |
| Custom-domain handle | bsky.app/profile/name.example.com/post/3mq5yidyc3c2g | Yes |
| DID form (from some share sheets) | bsky.app/profile/did:plc:abc123.../post/3mq5yidyc3c2g | Yes |
| Link with tracking parameters | bsky.app/profile/user.bsky.social/post/3mq5yidyc3c2g?ref_src=... | Yes—stripped automatically |
| Profile page | bsky.app/profile/user.bsky.social | No—no single post to extract |
| Feed, list, or starter pack | — | No—same reason |
A handle (like user.bsky.social or a custom domain) and a DID (like did:plc:z72i7hdynmk6r22z27h6tvur) point at the same account—Bluesky's share sheet sometimes hands you one, sometimes the other, and curl-x accepts both without any conversion on your part.
What You Can Download From a Bluesky Post
| Media type | What it is | Typical save format |
|---|---|---|
| Video | Standard uploaded clips | MP4 (original, not HLS) |
| Looping GIF clips | Short clips posted as a "GIF"—Bluesky actually stores these as video | MP4 |
| Tenor picker GIFs | GIFs added from Bluesky's built-in GIF search | GIF (with an MP4 rendition offered too) |
| Single photo | One image attached to a post | JPEG/PNG at full resolution |
| Multi-image post | Up to four photos in one post | One file per image, in order |
| Gallery carousel | Newer 5–10 photo format | One file per image, in order |
| Quote post with attached media | Your own media on a quote post | Same as video/image above |
What curl-x cannot fetch:
- Text-only posts—there's simply no media to extract.
- The quoted post's own media—curl-x only pulls media attached to the post you link, not media buried inside a quoted post. Link the quoted post directly instead.
- Deleted posts and blocked or deactivated accounts.
- Full-quality video from a small number of self-hosted accounts—Bluesky is federated, and a handful of users run their own PDS outside Bluesky's infrastructure; photo downloads from those accounts still work, but video sometimes doesn't.
Step-by-Step: Download a Bluesky Video With curl-x
- Open the specific post in the Bluesky app or at
bsky.app—not your home feed or the account's profile grid. - Copy the link. Tap the ⋯ menu on the post, then Share > Copy link. On desktop, copy the URL straight from the address bar.
- Paste the URL into curl-x on the homepage.
- curl-x fetches the post's public data and lists what it found—a video, a GIF, or every photo in a multi-image post.
- Pick the item you want. Multi-image and gallery posts list each photo individually with its own download button.
- Save the file. Video and native GIFs return as MP4, ready for your device's Downloads folder or Files app.
If you started from a link someone shared in a chat rather than copying it yourself, the flow is identical—see Download a Bluesky Video From a Share Link for that exact path.
The curl Trick: Download Straight From the Terminal
Every Bluesky post curl-x supports also has a dedicated page at curl-x.com/bluesky/HANDLE/RKEY. Open that URL in a regular browser and you get the normal post page with a download button. Hit the same URL with curl or wget and you get the media file streamed back directly—no HTML, no browser needed:
curl -OJ https://www.curl-x.com/bluesky/user.bsky.social/3mq5yidyc3c2g
Swap in the handle (or DID) and record key from the bsky.app link you copied. The -O flag saves the file under its server-provided name, and -J uses the Content-Disposition header so the extension matches the actual file type. This is the same mechanic that powers curl-x's signature trick on Twitter/X and Reddit links—one paste box, one CLI command, same output either way.
Download on iPhone and iPad
- Open curl-x in Safari.
- Paste the Bluesky post link and tap Download.
- Confirm Safari's download prompt, then tap the download arrow beside the address bar to open the file.
- Tap Share > Save Video (or Save to Files) to move it into Photos or iCloud Drive.
Apple documents this download-then-move flow in Download items in Safari on iPhone. If the MP4 opens inline instead of saving, use Download Linked File from the share sheet—the same fix applies whether the source link came from Bluesky or Twitter/X.
Download on Android
- Copy the post link in the Bluesky app.
- Open Chrome (or Firefox) and go to curl-x.
- Paste the link, tap Download, and confirm the system save prompt.
- Find the file in Files or Gallery > Downloads.
If Chrome plays the video instead of saving it, use the three-dot menu > Download while the file is loading, or return to curl-x and use the direct download link it returns.
Download on PC and Mac
- Copy the Bluesky post URL.
- Open curl-x in Chrome, Firefox, Safari, or Edge.
- Paste the link and download.
- Play the MP4 from your Downloads folder with VLC, QuickTime, or your default player.
No extension or desktop client is required, and there's nothing to install—avoid any "Bluesky downloader" that asks you to run an .exe or .dmg installer.
Troubleshooting Common Errors
| Problem | Likely cause | Fix |
|---|---|---|
| "Post not found" | Deleted post, deactivated/blocked account, or a link to a profile/feed instead of a post | Re-copy the link from the specific post; see Which Bluesky links work |
| Invalid URL error | Pasted a profile grid or search result URL | Open the exact post and use Share > Copy link |
| Video won't extract but photos on the same account do | Rare case—account uses a self-hosted PDS | No workaround; this is a known limitation, not a bug |
| Download is only a thumbnail image | Interrupted request while fetching the original blob | Retry—curl-x falls back to the CDN rendition only for images, never for video |
| Image looks lower-resolution than expected | The CDN "fullsize" fallback was used instead of the original blob | Retry the extraction; the original file is the default when the blob is reachable |
curl -OJ returns an HTML error page instead of media | Handle/record key typed incorrectly, or the post isn't public | Re-copy the exact bsky.app URL and rebuild the curl-x.com/bluesky/… link from it |
For the full list of edge cases curl-x's Bluesky extractor won't cross—deleted posts, blocked accounts, self-hosted PDS video—see curl-x Now Supports Bluesky.
Is Downloading Bluesky Videos Legal?
Legal: saving public media for personal, offline use sits in a similar gray area across every social platform—it depends on your country, the poster's rights, and how you reuse the file. Re-uploading someone else's video without permission can violate copyright law regardless of which app it came from. Bluesky's own Terms of Service govern what you may do with content on the network; when in doubt, ask the poster or repost via an embed/share instead of a re-upload.
Etiquette and safety: stick to browser-based tools that only ever ask for a public URL—never your Bluesky password or an app password. A legitimate downloader has no reason to authenticate as you: no login, no sideloaded apps, no "connect your account" prompts.
FAQ: Download Bluesky Videos
Does curl-x download Bluesky videos in original quality?
Yes. curl-x fetches the video blob directly from the poster's Personal Data Server via the AT Protocol's getBlob method, returning the exact file that was uploaded—not a re-encoded stream capture of the HLS playlist the app plays in your browser.
Do I need a Bluesky account to download a video?
No. Public posts require no login to view or extract. If the post needs an account to open—because it's private, blocked, or the account is deactivated—no downloader, including curl-x, can retrieve it.
Can I download every photo in a multi-image Bluesky post?
Yes. Standard posts hold up to four photos, and the newer gallery format holds five to ten; curl-x lists each image individually, in order, at its original uploaded resolution rather than the compressed feed preview.
Does curl-x work with Bluesky GIFs?
Yes, both kinds it supports: looping clips posted as "GIFs" (which Bluesky actually stores as MP4 video) download as MP4, and GIFs added from the built-in Tenor picker download as real .gif files with an MP4 rendition offered too.
Why did I get "post not found" on a link that opens fine in the app?
The most common causes are a deleted post, a deactivated or blocked account, or a URL that points at a profile or feed instead of a single post. Re-copy the link from the specific post using Share > Copy link and confirm it contains /post/.
Can I use curl or wget instead of the website?
Yes. Every supported post has a page at curl-x.com/bluesky/HANDLE/RKEY; hitting that URL with curl -OJ or wget streams the media file back directly, while the same link opened in a browser shows the normal download page.
Is downloading Bluesky videos legal?
Downloading public media for personal offline use is generally low-risk, but re-uploading or redistributing someone else's video without permission can violate copyright and Bluesky's Terms of Service. When you plan to repost rather than just view offline, get permission first.
Bottom Line
Downloading Bluesky videos comes down to one habit: copy the public post's link, paste it into a tool that fetches the original blob instead of the streaming playlist, and save the file. Handles, custom domains, and DID links all work the same way, and the identical trick covers photos, multi-image posts, and GIFs.
Grab a public Bluesky link you already have permission to save and try it on curl-x now. The same paste box handles Twitter/X, Threads, and Facebook too—see How to Download Twitter Videos, Threads vs. Twitter/X: Downloading Media Compared, and How to Download Facebook Videos.
Related Guides
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.
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.