Skip to content

I Built My Own Video Downloader — No Ads, No Watermarks, Three Platforms

Fed up with ad-infested download sites, I built a clean local tool that downloads TikTok, Instagram, and X videos without watermarks. Here's how the provider chain, proxy download, and caching work — conceptually.

By Ajay Walia · May 11, 2026 · 6 min read

Share: LinkedIn
Anime developer surrounded by chaotic pop-up ads on screen

Every video download site I tried felt like navigating a minefield — five ad clicks to reach a button that triggers another redirect. So I stopped using them and built a clean local tool that handles TikTok, Instagram, and X in one paste.

No watermarks. No ads. No accounts. Just a URL.

~6 min read · Node.js + React · conceptual deep-dive

The Problem With Every Downloader Site

You find a TikTok video you want to keep. Maybe it's a tutorial, a recipe, a clip you want to share somewhere offline. You Google "download TikTok without watermark" and click the first result. What follows is a ritual:

Pop-up #1 appears. You close it. A second tab opens. You close that. You find the actual download button — but it's fake and triggers another ad. The real button is somewhere underneath a consent banner. You finally click download. It starts… and gives you a watermarked file anyway.

This happens on nearly every popular downloader site. They're monetised almost entirely through advertising, and the UX is designed to maximise your exposure to that advertising — not to help you download a video. The actual download logic underneath all that noise is usually a single API call.

So I asked myself: how hard would it actually be to build a clean version of this for personal use?

What I Actually Wanted

Three things, nothing more:

1

No watermark, always

The tool should try its hardest to get a watermark-free file. If it can't, it tells you — it doesn't quietly give you the watermarked version pretending it's clean.

2

Support the platforms I actually use

TikTok, Instagram, and X (Twitter). Paste any URL from any of these three and it should just work.

3

Zero friction interface

One input, one button. No accounts, no CAPTCHAs, no ads. It runs locally so there's nothing to sign up for.

How It Works — The Conceptual Picture

The tool is split into two halves: a lightweight React frontend and a Node.js backend. The frontend is just the URL input box. All the interesting logic lives in the backend.

Here are the five things that happen the moment you paste a URL and hit Download:

Step 1 — Figure Out Which Platform You're On

The very first thing the backend does is inspect the URL and decide: is this TikTok, Instagram, or X? Each platform has its own URL patterns — including short links, mobile URLs, and regional variants — and the tool checks all of them.

tiktok.com · vm.tiktok.com · vt.tiktok.com
instagram.com · www.instagram.com
x.com · twitter.com · mobile.twitter.com

If the URL doesn't match any of these, the backend rejects it immediately with a clear error before wasting any time trying to fetch something it can't handle. No silent failures.

Anime engineer pointing at a holographic flowchart of the download architecture

The backend runs through a short chain: detect → resolve → try providers → cache → serve

Step 2 — Resolve Short Links

TikTok in particular loves to generate short share links like vm.tiktok.com/AbcXyz. These redirect to the full video URL, but the download providers need the real URL to work with. So the backend follows up to five redirects to resolve the final destination before doing anything else.

Step 3 — The Provider Chain

This is the core of the tool. The backend doesn't rely on a single source for the download link — it tries multiple providers in order, and only moves to the next one if the previous failed.

Validated & resolved URL
Provider 1: TikWM API — fast, HD, usually no-watermark
↓ if failed
Provider 2: yt-dlp — catches what TikWM misses, supports all 3 platforms
↓ if both fail on no-watermark
Last resort: watermarked fallback (with a clear warning shown)
✓ Download link returned to frontend

The first provider, TikWM, is a public API that's fast and usually returns an HD, watermark-free file. But it occasionally struggles with newer videos or private content. That's when yt-dlp steps in — a powerful open-source tool that knows how to extract media from hundreds of platforms, and is updated constantly as platforms change their serving behaviour.

Why yt-dlp as a fallback and not primary? TikWM is faster and returns a clean pre-parsed result. yt-dlp is more capable but adds latency since it runs as a local process and parses raw platform data. Using TikWM first keeps the happy path quick.

Step 4 — The Proxy Download

Here's a detail that actually matters for reliability: the tool doesn't give your browser a direct link to TikTok's CDN or Instagram's servers. Instead, it registers a short-lived secure token that points back to the Node backend. When you click download, your browser hits the backend's own /api/file endpoint, which streams the video directly to you.

Why does this matter? Direct CDN links from social platforms often include authentication tokens or short expiry times. They also sometimes block downloads when accessed directly from a browser outside the platform. Running the stream through the backend sidesteps both issues — and means the download starts with a clean filename instead of a jumble of CDN parameters.

Step 5 — Caching

Once a video URL has been resolved and a download link extracted, the result is cached in memory for 30 minutes. If you (or someone else on the same local instance) pastes the same video URL again within that window, the backend returns the cached result instantly — no API calls, no yt-dlp process, just the stored answer.

The Result

What this adds up to in practice:

🎯

No-watermark first, always

The tool tries every avenue for a clean file before falling back. The fallback is clearly labelled.

Fast on repeat URLs

Same video twice within 30 minutes? Instant response from the in-memory cache.

🎵

Audio extraction too

The tool also surfaces the audio-only track when available — useful for saving music from TikTok.

🔒

No external accounts

Runs entirely locally. Nothing to log into, nothing phoning home, no API keys required.

Anime developer smiling at a clean minimal download interface

One URL input, three download buttons, zero pop-ups. That's the whole interface.

What's Next

The tool is currently running locally but I'm planning to deploy it on curiousbit.netlify.app so anyone who wants a clean download experience can use it without having to run Node themselves. The architecture is already production-ready — it's just a matter of pointing it at a hosting environment and wiring up the environment variables.

A few things I'd like to add before making it fully public: rate limiting per IP (to avoid abuse), a simple download history in the UI, and potentially Instagram Stories support which currently needs a different extraction path.

The code is structured as a monorepo — backend and frontend live together, share URL validation logic, and build to a single deployable package. If you want to run it yourself locally, it's a single npm install && npm run dev away.

Over to you: Have you ever got fed up enough with a broken web experience that you built your own alternative? I'd love to hear what you made — or whether you'd actually use a clean, ad-free downloader like this if it were publicly hosted. Drop your thoughts below or find me on LinkedIn.

Ajay Walia

About the Author

Ajay Walia

AI {IT Architect} focusing on local-first multi-agent AI engineering, zero-data-egress systems. Ideator, Creator and Executor on Curious Bit.

Don't stop now

Keep Reading