🎯 Deterministic
Capture freezes the page's clock: performance.now(), rAF, Date, CSS and Web Animations all see the exact frame time. Same page, same bytes, on any machine, at any speed.
Open source · Rust · MIT
Aether Renderer is a small family of tools: two Rust crates with command-line apps, and a desktop app that puts them together. Use the part you need.
Just want to make a video? web2vid.com is the friendly front door.
PNG frames (folder, ZIP or a stream on stdin) to WebM, MOV, GIF or MP4 with transparency, fades and background colours.
Read more →CLI · crateAny HTML/CSS/JS animation to a deterministic, transparent PNG sequence or stream, stepped frame by frame in headless Chrome.
Read more →Desktop appBoth in one window for macOS, Windows and Linux: live preview, a code editor, drag and drop, presets and real progress.
Read more →Capture writes PNG files back to back on stdout; core reads them from stdin and encodes as they arrive. Nothing touches the disk, and a slow encoder simply slows the capture down.
The same thing works in Rust: png_stream() from capture is aRead that goes straight into render_stream() in core.
aether-renderer-capture -i anim.html --stdout --fps 30 -d 4 \
| aether-renderer-core -i - -o anim.webm --fps 30 --frames 120Capture freezes the page's clock: performance.now(), rAF, Date, CSS and Web Animations all see the exact frame time. Same page, same bytes, on any machine, at any speed.
Alpha is kept all the way through: VP9 WebM for the web, ProRes 4444 for video editors, transparent GIF for everything else. Fades go to transparent, not black.
No cloud, no account, no watermark. Single Rust binaries plus FFmpeg (and chrome-headless-shell for HTML). Tested in CI on Linux, macOS and Windows.
Coming soon
The same frame-perfect engine as a service: send HTML, get a transparent video back. No Chrome or FFmpeg to install, ready for CI pipelines, social media tools and apps. The crates and the desktop app stay free and open source.
It gets built when enough people ask for it. Tell us what you'd use, and follow the progress on the waitlist.
Need a dedicated cloud instance, a high-volume API or a custom setup for your company now?Get in touch, and I'll get back to you within 24 hours.
curl https://api.web2vid.com/v1/render \
-H "Authorization: Bearer $WEB2VID_KEY" \
-F html=@anim.html -F format=webm -F fps=30 -F duration=4
# -> { "status": "done", "url": "https://.../anim.webm" }A sketch of the planned API. Details may change.
Aether Renderer wasn't planned. I needed the Flixlar logo, animated in SVG and canvas, as a transparent watermark on videos. To make that work, I wrote a small Rust crate that turns the animation frames into video. I made it a proper crate because I wanted to build more tools like it, and put a little GUI on top. It turned out a lot of other people needed the same thing, and I love seeing what they make with it.
An animated SVG/canvas logo, wanted as a transparent watermark on top of videos.
PNG frames in, transparent WebM, MOV or GIF out. Then a small desktop app around it.
Over 7,500 downloads, a frame-perfect HTML capture crate, and web2vid.com for everyone who just wants the video.
Mads Paaskesen · Hardcore Websmith
aether-renderer-core · aether-renderer-capture · aether-renderer-gui