DEV Community

Pedro Szabo
Pedro Szabo

Posted on

How I Built a Serverless Video Converter at 13 Years Old (React + FFmpeg WASM)

Why I stopped uploading files to servers and decided to process everything locally using WebAssembly.

We’ve all been there. You have a 500MB .MKV video file that you need to convert to .MP4 to edit in Premiere or share on WhatsApp.

You search "Free Video Converter" on Google. You click the first link. It asks you to upload the file. You stare at a loading bar for 20 minutes: "Uploading 12%...". Then, when it finally finishes, it says: "Limit reached. Please upgrade to Pro for files larger than 100MB."

I got tired of this. I’m a 13-year-old developer from Brazil, and I decided to build a solution that respects both my time and my privacy.

Meet ZeroConvert.net.

The Concept: Why Upload?
Traditional converters work like this: Your PC -> Upload -> Server (Conversion) -> Download -> Your PC

This is slow, expensive for the developer (server costs), and bad for privacy (who is watching your videos?).

I wanted to build something using WebAssembly (WASM). The idea is to bring the conversion engine to the browser, not the file to the server. Your PC (Browser) -> Conversion -> Done.

The Stack
To make this happen, I used:
- Frontend: React + Vite (for speed)
- Styling: TailwindCSS
- Engine: FFmpeg.wasm (v0.11)
- Backend/Auth: Supabase
- Hosting: Firebase + Cloudflare

The Technical Challenge: SharedArrayBuffer
The biggest headache in building ZeroConvert was enabling Multithreading.

Video conversion is heavy. If you run it on a single thread in JavaScript, the UI freezes, and the browser crashes. To use the full power of the user's CPU, I needed SharedArrayBuffer.

However, modern browsers block this by default for security reasons (Spectre/Meltdown vulnerabilities). To fix it, I had to configure strict security headers on Cloudflare.

Getting these headers to play nice with Firebase Hosting and external image resources was a week-long battle, but it was worth it. Now, the converter uses multiple cores of your CPU, making it incredibly fast.

Privacy First
Since the code runs 100% on the client side, your files never leave your device. You can even turn off your Wi-Fi after the page loads, and it will still convert your videos.

This was crucial for me. I wanted a tool where I could convert personal family videos or copyrighted game clips without sending them to a random server in a different country.

What's Next?
I’m currently working on adding a "Pro" feature for cloud storage, but my main focus is optimizing the WASM engine to handle 4K videos even smoother.

If you are a developer, an editor, or just someone who hates waiting for uploads, give it a try.

Try it here: https://zeroconvert.net

Feedback is always welcome! I'm constantly learning.

Top comments (0)