Aether Renderer

Open source · Rust · MIT

The engine behind transparent video

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.

How the pieces talk to each other

The family

One pipe, no temp files

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 120

Why it's built this way

🎯 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.

🫧 Transparency first

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.

🔒 Local and small

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

Cloud and API ☁️

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.

How it started

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.

🎬 A logo for Flixlar

An animated SVG/canvas logo, wanted as a transparent watermark on top of videos.

🦀 aether-renderer-core

PNG frames in, transparent WebM, MOV or GIF out. Then a small desktop app around it.

🪼 Thousands of downloads later

Over 7,500 downloads, a frame-perfect HTML capture crate, and web2vid.com for everyone who just wants the video.

Mads Paaskesen · Hardcore Websmith

Source

aether-renderer-core · aether-renderer-capture · aether-renderer-gui