I Vibe-Coded an m3u8-to-mp4 Converter in a Few Hours, Hit #1 on Google, Then Watched the Clones Eat My Lunch
The m3u8 problem has been the same for a decade.
You find a video online. You want to keep it. You dig into the network tab. You get… a .m3u8 file. Which is not a video. It's a text file — a playlist — pointing at dozens or hundreds of tiny .ts chunks that have to be downloaded and stitched together before anything plays.
Your options as of 2025 looked like this:
- Chrome extensions that "convert m3u8 to mp4" — most of them request access to every tab you open, run unrelated trackers, and get pulled from the store every few months for exactly the reason you'd guess.
- Upload-based websites where you hand over the URL or file, it sits in a queue, some server somewhere downloads and processes it for you, then emails you a link an hour later. You have no idea what that server saw, logged, or kept. Your file is no longer yours.
- Command line.
ffmpeg -i input.m3u8 -c copy output.mp4. Works great. For 1% of the population.
So: spyware, waitlist, or terminal.
Great market.
The thing that was sitting there, waiting
FFmpeg has had a WebAssembly build for years. The entire ffmpeg binary, compiled to WASM, running inside a browser tab. No server. No upload. No queue. Your file never leaves your machine.
This was not a secret. It had been on GitHub forever. There were demos. There were conference talks. There were blog posts.
What there wasn't: a clean, single-purpose consumer product that did one thing — m3u8 in, mp4 out — and did it entirely in the browser with zero friction.
Nobody had shipped it.
So I did.
A few hours
m3u8-to-mp4-converter.com was vibe-coded in one afternoon. The stack is embarrassingly simple:
- ffmpeg.wasm running inside a Web Worker
- A drag-and-drop input for
.m3u8URLs or files - A progress bar piped straight from ffmpeg's stderr
- A download button when it's done
No backend. No database. No account. No upload. No queue. No "we'll email you when it's ready." The whole thing is a static site served from a CDN. The browser does the work. The user's file stays on the user's machine.
I shipped the first version the same day. A launch post went up on Rabbit Byte Club in June 2025. Then I mostly forgot about it.
That was the mistake.
The climb

Google Search Console, last 16 months. The left half of this chart is what happens when you ship something the market actually wanted.
Here's what I came back to months later.
No ads. No backlinks campaign. No Hacker News push. No influencer posts. Nothing. Just people typing "m3u8 to mp4" into Google, landing on a page that actually worked in their browser without installing anything, and — I assume — telling other people about it.
By December 8, 2025, the peak:
- 272 clicks in one day
- 1,072 impressions in one day
- Average position 5.9 on Google
- #1 result globally for "m3u8 to mp4"
For the 16-month window overall: 38,100 clicks. 174,000 impressions. 21.9% CTR. The query "m3u8 to mp4" alone delivered 18,812 clicks. "convert m3u8 to mp4" delivered another 2,075.
For a solo weekend project with zero marketing, that's absurd.
And then look at the right half of the chart.
December 8, 2025 — the day the line fell
See the cliff.
The tool didn't break. Search volume didn't drop — people still want to convert m3u8 files, and they will until YouTube and Netflix collapse into a black hole. What happened is simpler.
The competition noticed.
These are sites that didn't exist, or didn't rank, a few months before. Same approach. Same ffmpeg.wasm. Same in-browser conversion pitch. Some of them flat-out cloned the UI. A couple have almost the same progress-bar wording.
They moved fast because the path was already paved for them. Being first proved the market. Being first proved that an in-browser ffmpeg.wasm tool could rank, monetize, and pull real traffic.
Being first also, it turns out, makes you the reference implementation everyone else copies.
Google doesn't care who shipped first. Google cares about fresh content, new backlinks, updated pages, and whoever is playing the SEO game hardest this quarter. While I was not watching, other people were watching. And building. And writing. And linking.
So the line fell.
The lesson, which I should have known
Shipping is step one. Defending is step two.
You can build first, ship first, rank first — and still lose the position inside a quarter if you don't:
- Ship features the clones don't have. "It just works" is a temporary moat.
- Update the page. Google's algorithm treats a stale page as a dying page, even if the product underneath still works perfectly.
- Build real backlinks. Word of mouth is a tailwind, not a strategy.
- Monitor the SERP weekly. Not monthly. Not quarterly. Weekly. If a clone creeps from position 8 to position 3, you want to know the week it happens, not six months later when you finally check your dashboard.
I did none of this. I treated the site like a finished project. The clones treated it like a business.
Guess who's ranking.
So what now
The tool still works. It is still free. It is still fully in-browser, still zero-upload, still zero-tracking. If anything I'm doubling down — there's a redesign in progress, features the clones can't copy in an afternoon, and yes, I am finally going to do the SEO work I should have done eight months ago.
But the real lesson isn't about m3u8. Or ffmpeg. Or SEO.
It's this:
The reason most indie products die isn't that they were built badly.
It's that they were built once.
Build once, you're a project. Build continuously, you're a company.
I'm done being a project.
If you're using shady Chrome extensions or upload-based sites to convert m3u8 files, stop. Try m3u8-to-mp4-converter.com — your file never leaves your browser.