DEV Community

Cover image for I built URL2Vid - a free tool to download video/audio from 10+ platforms using a URL
ptqwerty
ptqwerty

Posted on

I built URL2Vid - a free tool to download video/audio from 10+ platforms using a URL

What I built

URL2Vid is a free web app that takes a video URL from platforms like YouTube, Instagram, TikTok, Twitter/X, Facebook, Reddit, LinkedIn, Pinterest, Snapchat, and Threads — and lets you download it as MP4 (video), muted MP4, or MP3 (audio only). No account, no app install, no watermarks.

Try it: https://url2vid.codedeck.me
Source: [https://github.com/PurushottamBarai/URL2Vid]


Why I built it

Most "free video downloader" sites online are ad-riddled, redirect you through 5 pages, or bundle sketchy extensions. I wanted something clean that just does the one job — paste a link, get your file.

Tech stack

  • Frontend: React + Vite + Tailwind CSS
  • Backend: Node.js + Express
  • Extraction: yt-dlp under the hood, with ffmpeg for audio/format conversion
  • Deployment: Render (frontend + backend as a single service)

The hardest part: platform quirks

Every platform has different URL formats, and getting reliable extraction across all of them was the real challenge:

  • YouTube: watch links, Shorts, and youtu.be short-links all need to resolve the same way
  • Reddit: share-links (/s/...) don't resolve directly — they need to be followed to their canonical /comments/... form before extraction works
  • Pinterest: pin.it short-links and full pin URLs both needed handling

I ended up writing a full test suite that runs a real request against every platform + URL-pattern variant (watch vs shorts vs short-link, etc.) so I could catch regressions across all of them at once instead of testing platforms one at a time.

What's next

  • Better SEO/discoverability (still very early days for this project)
  • Possibly batch downloads

Feedback welcome

This is a personal/learning project — if you try it and hit an issue with a specific platform or URL format, I'd genuinely appreciate a bug report or a comment here. Always looking to make the extraction more robust.

Top comments (0)