Hey dev.to, long time no see. I went quiet for a while, mostly because I've had my head down in one project, and I figured I should come up for air and actually say something about it.
What I've been building
TapirUpscale is a free AI video upscaler that runs entirely in your browser. You drop in a video, pick 2x or 4x, and it upscales it on your own machine. Nothing is uploaded to a server.
I've been building free browser-based tools for a long time now. The "everything runs client-side" approach keeps my server costs near zero and means people don't have to hand their files to a stranger. Video upscaling is the most ambitious one I've tried with that approach, and also the one that pushes it hardest.
The honest part: browser upscaling has trade-offs
I don't want to oversell this, because the limits are real:
- It's slow. You're running a neural network on whatever hardware the visitor happens to have.
- Your laptop will get warm. Possibly loud.
- Results depend on your device. A decent desktop GPU and a five-year-old phone are not the same experience.
- Mobile is weak. It works in theory, but I wouldn't recommend it for anything long.
In exchange: it's free, there's no sign-up, no watermark, and your video never leaves your computer. For short clips and casual use, that's a good deal. For a two-hour movie, it isn't, and the site says so.
The Pro version (a.k.a. why I'm tired)
The free version is out. The Pro version is the one I'm still fighting with.
The idea is to take the same approach further, with better models and faster processing for people who need more than the browser comfortably gives them. In practice it keeps turning into one of those projects where every fix exposes two new problems. Performance, memory limits, model sizes, deciding what belongs in Pro versus free... it all trades off against everything else. Honestly, it's been rough, and I'm not going to pretend otherwise.
It'll ship when it's actually good, not before.
Stack, for the curious
- SvelteKit for the site
- WebAssembly and in-browser inference for the actual upscaling
- Multilingual from day one, with the SEO content kept in plain markdown files per page per language
What I'd love to hear
If you've shipped anything heavy in the browser (video, ML, big WASM modules), I'd like to know how you handled memory pressure and long-running jobs. And if you try the free version and it breaks, tell me. I'd rather hear about it than guess.
Thanks for reading, and I'll try not to disappear for another year.
