Skip to content

Repository files navigation

✂️ Bloom Clipper

License: MIT Platform Local First

Turn any landscape video into vertical 9:16 clips — with resizable angles. Load a podcast, interview, or any long-form recording, mark the moments worth posting, frame each one with a draggable aspect-locked crop box (or two, stacked, for interviews), watch the result live on a phone-shaped preview, and export ready-to-post 1080x1920 MP4s. All of it runs locally on your machine — no cloud, no upload, no watermark.

Pay once. Own it forever. No subscription. Try it — if it's not for you, email support@onetimesuite.com within 30 days for a full refund.

Third app in the Bloom family, alongside BloomRecorder (screen/camera recording) and Bloom Meeting (remote multi-guest recording). Bloom Clipper automatically lists videos from their libraries as clip sources.

Clipper

✨ Features

Clipper

  • Any source video — open any MP4/WebM/MOV/MKV, or pick straight from your Videos/BloomRecorder and Videos/BloomMeeting libraries (thumbnails included)
  • Cut marking — scrub the timeline, hit Set start / Set end, + Add cut; every cut is an editable row (tweak start/end to the tenth of a second, preview in place, delete)
  • Full 9:16 angle — one aspect-locked crop box over the source: drag to move, drag the corner to zoom, with a live zoom readout
  • Half 9:16 angle — for interviews: two aspect-locked 9:8 boxes (one per speaker); the render stacks angle 1 on top of angle 2 to fill the vertical frame
  • Phone preview — a live phone mock on the right shows exactly what the rendered 1080x1920 clip will look like, per cut, while you drag
  • Per-cut angles — every cut remembers its own mode and framing; switching Full/Half never loses your work
  • Export — every cut renders to <source-folder>/clips/<source>-clip-<n>.mp4 (1080x1920, H.264 + AAC, faststart) with per-clip progress; audio is the source's own audio for that range

Library + local AI editing (shared with the rest of the Bloom family — all fully offline, no API keys)

  • Local library with thumbnails, sort/filter, rename, multi-select, batch delete
  • MP4 / optimized two-pass GIF export with trim
  • Captions — local Whisper transcription (quantized, ONNX) burned in with drag-to-position placement and 4 styles
  • Remove Silences — detect quiet gaps, review/trim/undo each one, cut in a single pass
  • Edit Transcript — Descript-style: delete words or pauses from the text to cut the video
  • Make Viral Reels — local heuristic that finds hook moments and auto-cuts vertical clips

And

  • 100% local — zero telemetry, zero network calls, zero accounts

🚀 Quick start

git clone https://github.com/bensblueprints/bloomclipper
cd bloomclipper
npm ci && npm start

🧪 Tests

npm test                              # ffmpeg pipeline smoke test + clipper unit tests
npm run test:unit                     # just the clipper-core unit tests (node --test)
node scripts/clipper-render-test.js   # end-to-end: synthesizes a 1920x1080 source, renders one full and one half+half cut through the real app, verifies 1080x1920 output

📦 Build installers

npm run dist       # Windows NSIS installer
npm run dist:mac   # macOS DMG (see MAC-BUILD.md)

🔧 How the render works

  • Crop boxes are stored as fractions of the source frame (xPct, yPct, wPct) with height locked to the mode's ratio — the same convention as BloomRecorder's Scaled Angles.
  • Full mode: crop=w:h:x:y,scale=1080:1920,setsar=1
  • Half mode: each box is cropped and scaled to 1080x960, then stacked — [0:v]crop=…,scale=1080:960,setsar=1[top];[0:v]crop=…,scale=1080:960,setsar=1[bottom];[top][bottom]vstack=inputs=2[v]
  • All pure logic (cut validation, percentage → pixel crop geometry, ffmpeg args) lives in clipper-core.js, unit-tested with node --test.

🛠 Tech stack

  • Electron — main + preload + renderer, context isolation on
  • ffmpeg-static — bundled ffmpeg for all rendering, thumbnails, probing, silence detection, and caption burn-in
  • @huggingface/transformers (ONNX runtime, Node) — quantized Whisper running fully locally for captions, reels, and the transcript editor
  • Plain HTML/CSS/JS renderer — no framework, boots instantly

📁 Where clips go

Rendered clips land in a clips/ folder right next to the source video. The app's own library lives at %USERPROFILE%\Videos\BloomClipper (or your platform's Videos folder).

License

MIT © 2026 Ben (bensblueprints)

macOS build

See MAC-BUILD.md.

About

Bloom Clipper - turn any landscape video into vertical 9:16 clips with resizable angles and a live phone preview. Pay once, own it forever.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages