Why MotionFlow
What makes it better
than the alternatives
- 01
Local-first architecture
No database, no server, no account; projects are JSON files on the user's computer and editing uses lightweight proxy copies while export reads the original files
- 02
On-device captions
Word-by-word transcription with Whisper runs locally in a Web Worker; no uploads, no API calls, no usage limits
- 03
AI tools with privacy mode
Claude API integration for highlight detection, script generation and frame analysis; Private mode disables all AI features and logs every API call to an activity ledger
- 04
Multi-format export
One edit outputs to YouTube (16:9), Reels/Shorts (9:16) and TikTok (1:1) with automatic reframing and loudness normalization
- 05
Full source included
Clean React + Electron codebase with CLAUDE.md guide for AI coding tools, .env.example for all settings, and HowToSetup.md for builds and branding
Timeline Editor
- Multi-track timeline with video
- audio
- titles and stickers tracks
- Cut
- trim
- split
- duplicate
- group and slip tools
- In/Out range selection and razor tool
- Snapping
- zoom
- fit-to-window and keyboard shortcuts (Q/W trim
- I/O/X in/out/clear
- V/C select/razor)
- Undo/redo with Zustand state management
- Markers for navigation
- Clip speed control (0.25x to 4x)
- Copy/paste clips and effects between tracks
Media Management
- Import video
- audio and images from local files
- Automatic proxy generation for smooth playback (electron/media.cjs)
- Thumbnail and waveform cache
- FFprobe metadata extraction (duration
- resolution
- fps
- codec)
- Export always reads original files
- never proxies
- No uploads
- no cloud storage
Captions & Transcription
- On-device transcription with Whisper (Hugging Face Transformers in Web Worker)
- Word-by-word captions with timestamps
- Caption styling: font
- size
- color
- background
- outline
- shadow
- position
- Auto-split long captions
- Manual caption editing and timing adjustment
- Export captions as SRT or burn into video
Titles & Text
- Animated title templates (fade
- slide
- zoom
- typewriter)
- Custom text with font selection (Bebas Neue
- Inter
- JetBrains Mono
- Montserrat
- Playfair Display bundled)
- Text styling: color
- size
- alignment
- line height
- letter spacing
- Text effects: outline
- shadow
- background box
- Position and transform controls (x
- y
- scale
- rotation)
- Fade in/out timing
Stickers & Elements
- Animated sticker library (bundled assets in src/assets/)
- Position
- scale and rotation controls
- Fade in/out timing
- Sticker rendering with shared graphics.js code for preview and export consistency
Transitions
- Transition library: fade
- dissolve
- wipe
- slide
- zoom
- blur (src/lib/transitions.js)
- Adjustable duration (0.1s to 2s)
- Preview in timeline and canvas
- FFmpeg filter graph generation for export (electron/fx.cjs)
Effects & Color
- One-click look presets (Cinematic
- Vintage
- Warm
- Cool
- etc.)
- Color grading: brightness
- contrast
- saturation
- temperature
- tint
- Visual effects: blur
- sharpen
- vignette
- grain
- chromatic aberration (src/lib/glfx.js with WebGL)
- Crop and transform: position
- scale
- rotation
- flip
- Fade in/out audio and video
- Copy/paste effects between clips (Ctrl+Alt+C / Ctrl+Alt+V)
Audio & Voice
- Multi-track audio mixing
- Volume control per clip
- Audio fade in/out
- Voice effects: pitch shift
- echo
- reverb
- robot
- telephone (electron/fx.cjs)
- Text-to-speech with system voices (electron/main.cjs
- SpeechSynthesisUtterance)
- Voiceover recording with microphone (src/components/Record.jsx)
- Waveform display in timeline
AI Tools (Claude API)
- Highlight detection: analyzes frames and suggests best moments (electron/ai.cjs)
- Script generation from video content
- Frame analysis and description
- Private mode disables all AI features
- Activity ledger logs every API call (what was sent
- when
- response summary)
- User pastes their own Claude API key (stored encrypted with safeStorage)
- Frame sampling sends small preview images
- never original files
Export & Rendering
- FFmpeg export from original files (electron/export.cjs
- electron/fx.cjs)
- Multi-format presets: YouTube (1920×1080
- 16:9)
- Reels/Shorts (1080×1920
- 9:16)
- TikTok (1080×1080
- 1:1)
- Custom resolution and fps
- Loudness normalization for YouTube (-14 LUFS)
- H.264 MP4 output
- Progress bar with time remaining
- Export queue (one at a time)
- Preview and export use identical rendering code (src/lib/engine.js
- text.js
- graphics.js
- effects.js
- transitions.js)
Project Management
- Projects saved as .mflow JSON files (no database)
- File format: project settings
- media list (absolute paths + metadata)
- tracks
- clips
- In/Out range
- cached AI analysis
- Save/Open/Export keyboard shortcuts (Ctrl+S / Ctrl+O / Ctrl+E)
- Settings stored in OS app-data folder (JSON)
- No account system
- no server
Settings & Configuration
- Claude API key (encrypted with safeStorage)
- Private mode toggle (disables AI)
- Proxy quality setting (low
- medium
- high)
- Auto-save interval
- Default project settings (size
- fps
- background)
- Keyboard shortcuts reference
- Activity ledger for AI calls
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| JavaScript | — | — | Front-end | 55.9% |
| JavaScript (React) | — | — | Front-end | 33.4% |
| HTML | — | — | Front-end | 6.3% |
| CSS | — | — | Styling | 4.4% |
- Primary language
- JavaScript ES6+
- Framework
- Electron 33.2.1 + React 18.3.1 + Vite 6.0.7
- Database
- None (JSON files on disk)
- Authentication
- None (single-user desktop app)
- Licence
- Single-site
- Screens
- 15
- Supported languages
- English only
- Browser support
- Chromium (Electron embedded), web demo: modern browsers with WebAssembly
| Minimum | Recommended | |
|---|---|---|
| CPU | Windows 10 | 8 GB RAM, SSD, dedicated GPU for faster preview |
| RAM | 11 or macOS 10.13+, 4 GB RAM, 500 MB disk | |
| OS | Electron 33.2.1 (Node.js 20.18.0, Chromium 130.0.6723.59) | Electron 33.2.1 (Node.js 20.18.0, Chromium 130.0.6723.59) |
| Est. monthly hosting | $0 | $0 |
```bash npm install ```
```bash npm run dist:win # or dist:mac # Installers in release/ ```
```bash npm run build # Host dist/ statically ```
```bash npm run dev # Electron window with hot reload ```
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (2 minor)
Small improvements the developer has been told about. None of them stop the software from working.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.