second devlog
I built a thing that takes a short video and turns it into a growing grid of the same clip looping forever. One tile, then four, then nine, and so on until the whole screen is just the same meme repeating itself.
The idea
The whole point was that nothing leaves the browser. No uploads, no servers. You drop a video, the browser rips the frames out with canvas, and then it just starts multiplying them. Audio stays from the original file so it doesn’t sound like garbage.
Frame extraction
Getting this part right took longer than I expected. At first I was sampling too slowly and the loops looked choppy. Then I was sampling too fast and the browser would choke on longer clips.
Settled on:
- 24 fps
- Max video length: 60 seconds
- Max file size: 15 MB
- Frames scaled down to 480px
Still not perfect, but it works for most meme-length clips.
The multiplying grid
This was the fun part. I started with a simple canvas renderer that just kept adding more of the same frame. Watching a single sad cat video slowly take over the entire screen is weirdly satisfying.
Had to add a couple of limits though:
- Hard cap at 1024 tiles
- Auto-pause every couple of minutes
Otherwise Chrome starts melting.
Extra stuff
- Recent clips saved with IndexedDB so you can re-run the last few videos without uploading again
- Drag and drop + a demo video button
- Basic play/pause/mute controls
Try it
Live version is up at meloop.vercel.app
What’s still rough
- Performance on older phones isn’t great
- The pause modal feels a bit abrupt
- Some longer clips still struggle during frame extraction
The core idea works though, and everything stays private, which was the main goal.