Bluesky is growing fast, but there's still no built-in way to download videos from posts. So I built bskyvideo.com — a free, lightning-fast tool that lets you save any video, GIF, or image from Bluesky directly to your device.
The Problem
If you've ever tried to save a video from Bluesky, you know the pain:
- Right-click > "Save Video" doesn't exist
- Screen recording loses quality
- Most third-party tools serve broken
.tsfiles that won't play on iPhones
My Solution
I built bskyvideo.com using Next.js 16 and the Bluesky AT Protocol. Here's how it works under the hood:
1. URL Parsing
The user pastes a Bluesky post URL like https://bsky.app/profile/user.bsky.social/post/abc123. The backend parses the handle and post ID.
2. AT Protocol Resolution
Using the public AT Protocol API, the tool resolves the handle to a DID (Decentralized Identifier), then fetches the full post thread to find embedded media.
3. Media Detection
The extraction engine recursively scans the post for any media type:
-
app.bsky.embed.video#view→ Video -
app.bsky.embed.images#view→ Images (up to 4) -
app.bsky.embed.recordWithMedia#view→ Quote posts with media
4. Server-Side FFmpeg Remuxing
For videos, Bluesky serves HLS streams (fragmented MPEG-TS). Most downloaders just hand you the raw .ts file, which won't play on iPhones or QuickTime.
I injected FFmpeg into a Vercel serverless function that remuxes the stream into a proper MP4 container in real-time. The result is a universally compatible video file.
5. Image Proxy
For images, I built a proxy that adds Content-Disposition: attachment headers, forcing the browser to download the file instead of opening it in a new tab.
The Result
- ⚡ Videos extract in under 2 seconds
- 📱 MP4 files play on every device (iPhone, Android, Mac, Windows)
- 🖼️ Images download in original HD resolution
- 💰 100% free, no signup required
Try It
If you have any feedback or feature requests, drop them in the comments!
Top comments (0)