Inspiration

I run a small music YouTube channel. Making compilation videos meant hours of manually chopping and shuffling clips in an editor every single time, for every video. A friend was even quoted $100 for a tool that did exactly this. So instead of paying for it, I decided to build it myself...for me first, and then for anyone who makes music content.

What it does

ShuffleCuts turns a pile of video clips together with a song into a finished, shuffled music video automatically. You drop in your clips, add a track, and it samples different sections of each clip and arranges them in sync with the music, so the result feels edited, not repetitive. You control the cut length and smooth transitions, preview the result, and download the MP4.

The best part: everything runs in your browser. Your clips never get uploaded, nothing touches a server, and it's completely free and private.

How I built it

  • Frontend: React + TypeScript + Vite, styled with Tailwind
  • Video processing: ffmpeg.wasm, running entirely client-side in the browser
  • Deployment: Vercel (with custom COOP/COEP headers so ffmpeg's SharedArrayBuffer works in production)
  • Waitlist: Formspree for capturing interest in Pro features
  • Analytics: Novus.ai installed to track real product behavior

The core is a custom "shuffle" engine that gives each clip its own advancing playhead, so across the video you see a clip's beginning, then its middle, then its end with real variety, not the same few seconds repeating.

Challenges I ran into

The biggest one: browser memory limits. Processing video entirely client-side is powerful, but the browser caps how much memory a tab can use. Long renders with many segments would crash. I rebuilt the stitching logic more than once moving from "process everything then combine" to interleaved batch processing that frees memory as it goes and added graceful error handling so heavy loads fail with a helpful message instead of a frozen screen.

Accomplishments that I'm proud of

  • I shipped a real, working product that's live, deployed, and usable by anyone, not just a demo or a prototype.
  • The shuffle engine actually works well. Getting clips to sample from different sections and feel genuinely edited not repetitive was the hardest creative problem, and the output looks clean.

  • I kept it private and free by designhence processing video entirely in the browser means users' clips never leave their device. No servers, no uploads, no cost.

  • I solved real engineering problems under pressure browser memory crashes, ffmpeg in production, deployment headers and shipped something resilient enough for real use.

  • I built it for myself first. It's a tool I genuinely use for my own channel, which kept every decision honest.

What I learned

Building video processing client-side was a real compliance: you get free, private, no-server processing, but you inherit the browser's hard memory ceiling and have to design around it carefully. I also learned that building in public and shipping something I genuinely needed myself made it better. I wasn't building to impress judges, I was building a tool I actually use.

What's next for Shuffle Cuts

Auto-lyrics, longer exports, and saved history these are all teased on the live Pro waitlist.

Built With

Share this project:

Updates