Skip to content

[PROPOSAL] - Video Trimmer & GIF/WebP Exporter #7

@github-actions

Description

@github-actions

The Gap

Every popular free video trimmer and GIF converter tool uploads files to a remote server, creating an unavoidable privacy risk for users working with personal footage, screen recordings, or sensitive content. The paid alternatives are even worse:

  • Movavi: $19.95/month or $54.95/year for basic trim + export
  • Kapwing: Account required, watermark on free tier, $16/month to remove
  • Ezgif.com: Free but server-side upload, ad-heavy UI, file size caps
  • Imgflip / GIPHY: Watermarks on all free GIF exports

The search queries "trim video online free" and "video to gif online free no watermark" are high-volume with zero strong client-side, privacy-first competitors at the top of results.

The specific 80/20 use case we own: "I have a 2-minute screen recording. I want to trim it to 15 seconds and export it as a GIF or WebP to paste in a PR description — without uploading it anywhere."


The Tech

All processing runs 100% in the browser using:

API Role
FFmpeg.wasm (v0.12, single-threaded) Core processing — trim, transcode, GIF/WebP export. Single-threaded mode requires no SharedArrayBuffer, making it fully compatible with GitHub Pages hosting (no COOP/COEP headers needed). CDN-deliverable.
File API Load video from disk without any upload
<canvas> API Render timeline thumbnail strip for the range selector UI
Web Workers Run FFmpeg off the main thread so the UI stays responsive during processing
Blob + URL.createObjectURL Trigger local download of the output file

Supported outputs:

  • GIF — animated, FFmpeg palette-optimised (palettegen + paletteuse filters)
  • WebP — animated, ~60% smaller than GIF at equivalent quality
  • MP4 clip — stream-copy trim (near-instant, no re-encode, lossless)

MVP scope (no scope creep):

  1. Drag-and-drop or click-to-load video file
  2. <video> preview with play/pause
  3. Timeline range handles (start/end) rendered on Canvas
  4. Format picker: GIF / WebP / MP4
  5. "Process" button → FFmpeg.wasm in Web Worker with progress bar
  6. "Download" button → Blob URL

Out of scope: filters, audio stripping, speed control, batch processing.


Complexity: 6 / 10

The core challenge is the FFmpeg.wasm binary (~10 MB initial load). Mitigation: show a loading progress bar on first launch; the browser caches the WASM binary so subsequent uses are instant. The trim + GIF export pipeline is well-documented with active community examples.

This is the highest-complexity tool in the portfolio so far, but the privacy value proposition is uniquely strong and fully aligned with the "data never leaves the browser" mission.

Generated by Market Research Discovery ·

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions