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!
United States
NORTH AMERICA
Related News
Secret Claude Tracker Shocks Users After Anthropic's Anti-Surveillance Stance
12h ago
EV Batteries Defy Expectations, Last Hundreds of Thousands of Miles
1d ago
GBase 8a Performance Anomaly Case Study: How a Single Parameter Change Sparked a Chain Reaction
1d ago
Who Else Has Inherited a Codebase With Zero Comments and a Prayer?
1d ago
完美的平庸
4h ago