Render pixel-perfect
MP4s from HTML.
Locally. At 4K, 60fps.

Deterministic local HTML-to-video rendering for creators, developers, agencies, and automation workflows - packaged as a Windows x64 desktop app and wired to a GPU-accelerated FFmpeg pipeline.

HtmlToMp4 desktop app rendering an HTML animation to MP4.
Real app capture 10 render trial GPU ready
  • Windows x64
  • 4K @ 60fps
  • 8K HEVC
  • NVENC h264 + hevc
  • CPU fallback
  • Parallel batching
  • Private local rendering
  • Deterministic RAF

Product proof

The desktop app is the demo.

These are real captures from the Windows x64 trial flow: file selection, encoder detection, render progress, completion, and the final MP4 output.

HtmlToMp4 desktop app showing the trial-ready render screen.

01

Trial-ready app

Select local HTML files, choose an output folder, and confirm trial limits before rendering.

HtmlToMp4 settings screen showing GPU encoder and FFmpeg status.

02

GPU and FFmpeg settings

Auto-detect encoder support, choose the NVENC preset, and fall back to CPU when needed.

HtmlToMp4 conversion progress screen with frame count, logs, and status cards.

03

Deterministic render progress

Track captured frames, elapsed time, remaining time, output format, and logs while rendering.

HtmlToMp4 conversion complete screen with output actions and final logs.

04

Conversion complete

Open the finished output or convert again after the app writes the final MP4 stream.

The magic moment

Watch HTML become an MP4.

This 15-second capture shows the desktop workflow and rendered output together: local HTML in, deterministic frames captured, H.264 MP4 out.

Real Gumroad demo capture - 15 seconds - local Windows render flow

Technical HTML-to-MP4 proof

A live htmlhub.org animation on the left, and the MP4 rendered from that same HTML with convert.js on the right.

htmlhub.org / vanta-clouds.html
<!-- htmlhub.org / animations / vanta-clouds.html -->
<div id="vanta"></div>

<script>
  VANTA.CLOUDS({
    el: "#vanta",
    mouseControls: true,
    touchControls: true,
    skyColor: 0x78c6df,
    cloudColor: 0xc9d8f2,
    cloudShadowColor: 0x1b3354,
    sunColor: 0xffa24c,
    speed: 0.8,
    scale: 3
  });
</script>
vanta-clouds.mp4  -  1920x1080  -  60fps
Source: live htmlhub HTML -> Output: H.264 MP4 rendered by convert.js

Why htmltomp4

Three things, done properly.

01

Fidelity

If it runs in Chrome, it renders in your MP4.

WebGL, Three.js, Canvas, CSS keyframes, @font-face, complex layouts. requestAnimationFrame is shimmed and stepped deterministically — every frame is frame-perfect.

Zero frame drops · yuv420p · ICC-safe color
02

Speed

4K at 60fps on an RTX 2060.

NVENC h264 + hevc with libx264/libx265 fallback. JPEG frame piping cuts capture overhead ~3×. Worker pool runs up to 4 concurrent NVENC sessions with a shared FFmpeg process per worker.

~47s for a 10-second 4K clip · RTX 2060, parallel=4
03

Ownership

Free trial. Local files. Full licenses when issued.

Private rendering: your HTML, frames, and videos never leave your machine. License activation is the only time the app contacts our servers.

10 trial renders · 30-day offline grace after activation · local rendering

How it works

A one-line pipeline.

  1. 01

    Design in HTML/CSS.

    Build anything you can render in a browser — Three.js scenes, Canvas, SVG, CSS keyframes, typographic animations, dashboards.

  2. 02

    Select one or multiple HTML files.

    Open the Windows x64 desktop app, choose a single file or a batch, then set resolution, framerate, duration, encoder, and parallelism.

  3. 03

    Get an MP4.

    NVENC-encoded H.264 or HEVC, faststart-flagged for web playback, deterministic down to the frame. Drop it into Premiere, Figma, or an ad manager.

Who it's for

Built for people who ship video in bulk.

Motion designers

Export loops and title cards at broadcast resolution.

Render your CSS or WebGL mock-up to 4K/60 without rebuilding it in After Effects.

Social media automation

Template an ad in HTML, render 500 variants overnight.

Parallel batching + deterministic timing means every variant is frame-identical across runs.

Dev teams

Snapshot your animations in CI.

Use the CLI in a GitHub Action to generate reference MP4s for visual regression on every PR.

Creators & agencies

Keep the entire pipeline on your machine.

No uploads, no queue times, no per-minute bills. Render while you work on the next thing.

Compatibility

Built for the Windows machines already doing the work.

Desktop Pro runs locally on Windows x64, prefers NVIDIA NVENC for fast h264/hevc export, and falls back to CPU encoding when a supported GPU is not available.

  • Windows 10/11 x64
  • NVIDIA NVENC recommended
  • CPU fallback supported
  • FFmpeg and Chromium bundled
  • Works offline after activation
  • 30-day offline grace
  • Free trial included for hardware testing

Pricing

Desktop Pro ships today. No subscription.

Get the Windows x64 desktop trial for $0 through Gumroad, then unlock Desktop Pro with a full license for up to 3 machines.

Desktop Pro

Shipping today

$0 free trial download
  • Windows x64 desktop app
  • Full licenses support 3 machine activations
  • Free trial: 10 renders, 1080p max, 10s max
  • Select one or multiple HTML files
  • Batch rendering with a full license
  • 4K/60 and 8K HEVC output with a full license
  • NVENC h264/hevc GPU acceleration
  • CPU fallback
  • Deterministic RAF frame stepping
  • Offline rendering — files never leave your machine
  • Use the trial first to verify hardware compatibility

Cloud API

Coming soon

Usage-based pay-as-you-go
  • POST HTML or a URL, get an MP4/PNG
  • CDN-hosted outputs, webhooks
  • Managed rendering farm
  • Waitlist access while the hosted API is finalized
  • Desktop Pro owners get early access/founder pricing

Community CLI

Planned

Free coming later
  • CPU-only baseline encoder for developers and CI
  • Public GitHub repo planned
  • Docker image for reproducible jobs
  • Community support

Technical sheet

The parts we're proud of.

Under the hood: bundled Chromium, a deterministic RAF shim, JPEG piping into a tuned NVENC-backed FFmpeg.

Chromium engine
Headless Chrome (latest stable) - viewport deviceScaleFactor 1
Resolution
Up to 7680x4320 (8K) - 4K/60 on consumer GPUs
Codecs
NVENC h264 / hevc - libx264 / libx265 CPU fallback
Color
yuv420p - configurable pix_fmt - ICC-safe
Frame capture
JPEG piped to FFmpeg (configurable quality) or PNG
Animation stepping
Deterministic RAF shim - Web Animations API pause/seek
HTML requirements
Best with self-contained HTML or complete local asset folders
Known limitations
Broken script paths, blocked CDNs, logins, remote media, and some heavy WebGL scenes may need cleanup
Parallelism
Worker pool - up to 4 concurrent NVENC sessions
Timeout behavior
30-minute default - batch continues past timed-out files
CLI flags
width - height - frameRate - duration - encoder - parallel - ...
License
$0 trial download - Windows x64 - full licenses issued separately

Questions

The ones people actually ask.

How does the trial work?

The free trial includes 10 local test renders up to 1080p, 10 seconds each, one file at a time. Upgrade to unlock unlimited renders, batch processing, 4K/8K, and commercial use.

How many machines can I use?

Each lifetime license includes activation on up to 3 machines you own. You can deactivate a machine from inside the app. If you change hardware or hit the limit, contact support for an activation reset.

Does anything leave my computer?

Your HTML files, captured frames, and rendered videos stay on your machine. License activation contacts the license server with your license key, machine ID, app version, and platform.

What happens offline?

After activation, the app can continue working offline for up to 30 days before it needs to revalidate the license.

What GPUs are supported?

Any NVIDIA card with NVENC — GTX 1050 and up. NVENC h264 is ubiquitous; NVENC hevc unlocks 8K output on newer cards. If no NVENC is available, Desktop Pro falls back cleanly to libx264/libx265 on the CPU.

Why not just use ffmpeg and a screen recorder?

Real-time screen capture drops frames, shifts colors, and locks your machine. htmltomp4 renders in a hidden Chromium window and steps time deterministically — every frame is frame-perfect and the output is byte-identical across runs.

Why not Remotion?

Remotion is a React framework — you rewrite your animation as components. htmltomp4 takes any HTML file as input: design-tool exports, Three.js demos, CSS keyframe loops, dashboards. No refactor required.

Why did my export come out white or blank?

A white or blank MP4 usually means Chromium loaded the HTML file but the page did not render its animation. The most common cause is missing dependencies: scripts, CSS, images, fonts, or Vanta/Three.js files referenced with broken local paths like ../vendor/... or CDN URLs that could not load. Keep all referenced assets beside the HTML, use correct relative paths, or make the HTML self-contained. Also make sure the animation container has an explicit width and height before converting.

What kinds of HTML may not render perfectly?

HtmlToMp4 works best with self-contained HTML/CSS/JS animations that can run in Chromium without login prompts, user clicks, cross-origin restrictions, unsupported browser APIs, or missing network assets. Very heavy WebGL scenes, live dashboards, remote media, DRM video, webcam/microphone input, and pages that depend on real-time servers may need cleanup before they render reliably.

Can I run it headlessly in CI?

Yes. It is already headless. Desktop Pro runs locally on Windows x64 and can render with NVENC when a GPU is available or CPU fallback for CPU-only jobs. Full flag reference ships with the app.

What about the Cloud API?

It is coming soon as a hosted version of the same rendering engine. Join the waitlist; Desktop Pro owners get early access and founder pricing.

How do full licenses work?

The $0 Gumroad download is the free trial. Buy the Desktop Pro license when you are ready to unlock commercial use, batch rendering, and higher output limits. Support is available at support@htmltomp4.com.