Coming soon for macOS

Ship videos as fast as you ship code.

Script, automate, and capture high-res browser videos for portfolios, docs, and demos. No manual recording. No screen capture tools. Just config and go.

Features

Everything you need to automate video.

Scripted, Not Recorded

Define scrolls, clicks, and waits in a JSON config. Plonk handles the smooth animations and precise timing.

Reproducible Output

Same config, same video. Every time. Ship a UI update? Re-render your demos in seconds, not hours.

4K, Smooth, Polished

High resolution. Configurable frame rates. Smooth scroll animations. Your work looks as good as it actually is.

Version Control Your Videos

Your configs are just files. Commit them to git. Diff them. Automate batch renders in CI.

Works With Any URL

Point Plonk at localhost, staging, or production. Capture authenticated flows by passing cookies.

Clean Output, No Lock-in

Standard web-optimized MP4 files. Add voiceover, splice clips, or upload directly. No proprietary formats.

How It Works

One config. One command.

Define what you want to capture, and Plonk does the rest.

config.json
{ "plonk": { "url": "https://example.app/", "displayUrl": "example.app/wow", "size": "large", "showChrome": false, "hideControls": true }, "actions": [ { "type": "enter", "position": { "x": 0.7, "y": 0.4 }, "steps": 30 }, { "type": "wait", "duration": 300 }, { "type": "scrollToText", "text": "target this text" }, { "type": "wait", "duration": 500 }, { "type": "clickText", "text": "ss02" }, { "type": "wait", "duration": 500 }, { "type": "click" }, { "type": "wait", "duration": 500 }, { "type": "scrollToText", "text": "and now this text" }, { "type": "wait", "duration": 500 }, { "type": "clickText", "text": "ss01" } ] }
$plonk run config.jsonoutput.mp4(12.4 MB, 8 seconds)

Ready to ship your first video?

Join the waitlist. We'll let you know when Plonk is ready.