LeClap
Your video from one JSON template: camera, effects, music, transitions, rendered on the device. No server, no upload.
Try it · Examples · Comparison · Docs · Showcase
🎥 Demo
Click the frame: the film plays on leclap.dev, with captions.
⏱ Try it in 30 seconds
Node 24.11 or later. FFmpeg is optional: the CLI brings ffmpeg-static along and uses it when there is no
ffmpeg on your PATH.
npx @leclap/cli init hello --no-remotion --no-mcp
cd hello && npm install && npm run render
That writes build/output.mp4: three seconds of "Hello, LeClap" on a navy card, from the
template.json next to it. Edit the JSON, render again.
If the title is missing, the ffmpeg on your PATH was built without drawtext (Homebrew's current build is
one). npx leclap diagnose lists what your FFmpeg can and can't do.
Rather not install anything? Open the same template in the web builder,
where it renders in the tab through WebAssembly. The template travels in the URL fragment, which browsers
don't send to servers. leclap studio template.json prints that link for any template.
🎞 Template in, video out
Three templates from this repo and what they render to. Click a frame to play the render.
All 59 samples, with their templates, are on the showcase. Each effect, one frame at a time, in the gallery.
🤔 Why LeClap?
Four ways to get a video out of JavaScript, and when each one is the right call. Claims about the others come from their own docs; a "—" means their docs don't say. The full comparison has the sources and the caveats, ours first.
¹ Per platform, not across them: Node and the browser encode with libx264, Android with libopenh264, iOS
with h264_videotoolbox, and the on-device build drops boxblur and rewrites eq to lutyuv. Same
composition, different pixels.
Remotion wins more of this than a comparison table usually admits: LeClap vs Remotion spells out where.
📦 Packages
The rest of the monorepo is private: the creative kit (templates, fonts, media), the web builder (React, FFmpeg in WebAssembly), the Expo app (camera to render, on the phone) and the Rust engine that links FFmpeg into it. Working on the repo itself: CONTRIBUTING.md and AGENTS.md.
📚 Read next
- Descriptor reference: every section, transition, look, caption and filter, one page per topic.
- Template configuration and effects: the same reference, in the repo.
- Engine configuration:
ProjectConfig, environment variables, encoders. - Architecture and on-device compilation: how one core runs on three FFmpeg builds.
- One descriptor, three FFmpeg builds: the long version, on the blog.
- Agent-made PR videos and browser agents in the builder.
- Showcase: 50 templates with their renders.
🤝 Contributing & licence
Issues and PRs welcome: start with CONTRIBUTING.md. The code is MIT.
The LeClap name and logo are trademarks of Alexandre Mogère. Fork and reuse the code freely, but give your fork a different name and don't imply endorsement. See TRADEMARK.md.