Skip to content
MediaSnatch cover

2026 · Paste a TikTok, YouTube, or Instagram link — get the file in five seconds. No ads, no logins, no logs.

MediaSnatch

Year
2026
Status
live
Makers
Rendy Andika
  • Rendy Andika
Tags
  • downloader
  • privacy
  • media
  • tool
  • self-hosted

The Problem

A creator wants to grab a TikTok reference clip without a watermark.

Every existing tool (snaptik, ssstik, y2mate) buries the download behind ad popups, redirect chains, and vague 'HD / Original' labels — then logs the URL on a server the user can't audit.

The friction turns a five-second task into a five-minute fight with interstitials.

The Solve

MediaSnatch collapses the flow to one input and one button.

Auto-paste detection spots a supported URL on focus, the platform is inferred from the URL (no 'Detect' step), and quality is picked from visual cards labelled '1080p · MP4 · ~24 MB' instead of format IDs.

The trade-off is hard self-hosting — yt-dlp needs a Node runtime and filesystem, so Vercel is out and a VPS is in.

In exchange the server never persists the file, never logs the URL, and streams bytes straight from yt-dlp's stdout to the browser.

Screens

App Flow

  1. 01Open app
  2. 02Auto-focus input; clipboard scan surfaces a 'Paste detected' pill if a supported URL is on the clipboard
  3. 03Paste URL
  4. 04Platform inferred from URL pattern; skeleton preview card appears within 200ms
  5. 05Metadata returns
  6. 06Preview fills in with thumbnail, author, duration, and a quality picker defaulting to highest no-watermark variant
  7. 07Click Download
  8. 08yt-dlp streams bytes through the Node route handler; progress bar shows real MB/s and ETA, cancellable at any time
  9. 09File saved
  10. 10Success toast + entry added to the localStorage-only recent-downloads strip

Under the Hood

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS v4
  • Motion
  • Zustand
  • yt-dlp
  • ffmpeg
  • Docker

The /api/download route handler pipes yt-dlp's stdout directly to the response. Nothing touches disk on the server, so there is no temp file to clean up, no quota to manage, and no artifact left behind if the user disconnects mid-download. Trade-off: the route must run on the Node runtime (not Edge) and the host needs yt-dlp + ffmpeg on PATH, which rules out Vercel-style serverless.

Changelog

  1. Surface cookie guidance inline when Instagram returns login_required.

  2. Show ffmpeg log on remux failure; add VP9/AV1 compatibility badge to the quality picker.

  3. Service-worker streaming falls back to a Blob path when pre-pump streaming fails on older Safari.