This is taking
longer than expected.

Check your connection.

Still tinkering with this one
back to projects
my own little video downloader

Fetchline

A self-hosted video downloader for TikTok, YouTube, and Instagram. Paste a link, choose a format, and get the file back. It runs on my own server and cleans up after itself.

Year 2025
Type Self-hosted
Stack Flask + FFmpeg
Closed source
Scroll to explore

How a download flows through it

From the link you paste to the file you get back, it all stays on my server.

URL In validated
Probe formats detected
Select 1080 · 720 · audio
Download auto-cleanup
Waiting... 0%

A few useful details

The parts that keep it running without much babysitting.

01

Stitching video and audio back together

Video and audio often arrive as separate streams. Once both finish, FFmpeg joins them. Anything that needs H.264 gets re-encoded on the GPU when one is available, with a CPU fallback.

FFmpeg · NVENC · mux
02

Progress from start to finish

The server streams progress to the page and tracks downloading and merging separately, so the interface shows what is happening during both stages.

WebSocket · real-time
03

A fallback when a download stalls

There are two paths to a file. If the first stalls, the second takes over automatically.

resilience · fallback
04

Cleanup is automatic

Files are deleted a few minutes after they are served. A watchdog stops stuck jobs, and per-IP limits keep one person from taking over the server.

watchdog · auto-cleanup
why i made it

I wanted one I could run myself.

I didn't want to rely on random downloader sites, so I put my own on hardware I control. It started as a simple link-to-file tool. I added the progress tracking, fallbacks, and cleanup as I kept using it.

The stuff it's made of

Python
Flask
FFmpeg
WebSocket
Self-hosted