Introduction
Client-side rendering in the browser using WebCodecs
Client-Side Rendering (Browser Export) — Default
Client-side rendering is the default rendering mode in the RVE SDK. Users can export videos directly in their browser — no server infrastructure required. Under the hood, the SDK uses @remotion/web-renderer to encode video using the browser's built-in WebCodecs API.
This is enabled automatically when you use the SDK without providing a customRenderer. There are no API routes to implement, no servers to manage, and no cloud configuration. The video is rendered frame-by-frame in the browser and downloaded as an MP4 when complete.
When to Use Client-Side Rendering
Client-side rendering is the default — you're already using it if you haven't configured a customRenderer. It's ideal for:
- Getting started - works out of the box with zero setup
- Local-first apps - no server costs or infrastructure to maintain
- Prototyping and demos - ship a working export immediately
- Light to medium workloads - most use cases work well client-side
Still confused?
Think of client-side rendering like editing a photo in your browser and hitting "Save As" - the processing happens right on your device. No uploads, no servers, no waiting for a cloud job. The tradeoff is that rendering speed depends on the user's hardware, and some advanced features aren't available in this mode.
Browser Requirements
Client-side rendering requires a browser that supports the WebCodecs API. If a user's browser does not support it, the editor shows a dialog that recommends a supported browser. You can also connect RVE Cloud Rendering so the render does not depend on browser support.
| Browser | Supported |
|---|---|
| Chrome 94+ | Yes |
| Edge 94+ | Yes |
| Firefox | No |
| Safari | No |
Browser compatibility
WebCodecs is not supported in all browsers. If your users need a server path, use RVE Cloud Rendering. Use SSR or Lambda when your team must own the infrastructure.
Feature Limitations
When browser export is active, the editor hides some controls because the browser export cannot draw them:
- Green screen removal: the control is hidden on video items, and the AI tab is hidden on image items.
- Media padding: the padding controls are hidden on video and image items.
- Audio fades: the Fade in and Fade out sliders are hidden on sound items.
The blur keyframe applies only to text and shapes. The browser export cannot draw blur correctly on images and videos, so blur is not available for them.
Animations, 3D layouts, keyframes, and caption word highlights work in browser export.
Export Waits for Media
Before the browser export draws a frame, it waits for fonts, Lottie animations, and video frames to load. Thus the first frames can take more time than the frames after them.
How It Works
User clicks "Export Video"
│
▼
Browser checks WebCodecs support
- Unsupported: shows browser dialog
- Supported: continues
│
▼
renderMediaOnWeb() renders each frame
- Uses hardware acceleration when available
- Waits for fonts, Lottie, and video
- Shows a progress bar to the user
│
▼
Render complete, MP4 blob created
- Downloads automatically to the user's deviceCSR vs Server Rendering
Browser rendering is the default. Use RVE Cloud Rendering when you need broad browser support, long videos, automation, or high-volume production work.
| Browser | RVE Cloud Rendering | Self-managed SSR or Lambda | |
|---|---|---|---|
| Where it runs | User's browser | RVE Cloud in your selected region | Your infrastructure |
| Server setup | None | Secure proxy routes | Full render infrastructure |
| Best for | Getting started and light use | Production, batches, and high volume | Full infrastructure control |
| Browser support | Chrome and Edge | Any | Any |
Next Steps
- Set up client-side rendering in your project
- Set up RVE Cloud Rendering for production scale
- Compare all methods in Choose a Rendering Method