VideoFlowcodeGitHubTry itCoreRenderersReact Video EditorPlaygroundExamplesDocscodeGitHubTry it
← Back to Blog

The 3-Renderer Rule: Why Your Video Pipeline Should Be JSON-First

July 8, 2026 · By VideoFlowLearn how the 3-renderer rule and portable VideoJSON solve the biggest challenges in modern video pipelines, from server costs to live previews.The 3-Renderer Rule: Why Your Video Pipeline Should Be JSON-First

The 3-Renderer Rule: Why Your Video Pipeline Should Be JSON-First

Most modern video pipeline architectures are built on a house of cards. They either rely on fragile, string-concatenated FFmpeg commands that are impossible to test, or they use proprietary React-based frameworks that tie your video's logic to a specific UI runtime. If you want to preview a frame, you need a dev server. If you want to export an MP4, you need a heavy-duty Node environment.

This coupling is the silent killer of scalable video automation. At VideoFlow, we believe the solution is a "JSON-First" approach. By treating video as a portable, serializable data structure rather than a piece of executable code, you unlock what we call the 3-Renderer Rule: the ability to use the exact same video definition across the browser, the server, and a live preview component without changing a single line of logic.

The 3-Renderer Rule Architecture

The Portability Problem in Video Automation

When you build a video pipeline using traditional tools, you often hit a wall when moving between environments. A video defined in a React component (like in Remotion) is powerful, but it's tethered to the React ecosystem. If you want to generate that same video from a Python backend or a Go-based microservice, you're out of luck—you have to invoke a headless browser just to "read" the video's instructions.

VideoFlow solves this by separating the authoring from the rendering. You use the @videoflow/core fluent builder to define your scene, but the final output is a portable VideoJSON document. This JSON is the source of truth. It contains every layer, every keyframe, and every one of our 27 transition presets in a format that any language can produce and any VideoFlow renderer can consume.

The 3-Renderer Rule Explained

The true power of a JSON-first video pipeline is realized through the three official VideoFlow renderers. Because they all adhere to the same VideoJSON schema, you can pick the best tool for the job at every stage of your user's journey.

1. The DOM Renderer: Frame-Accurate Live Preview

During the authoring phase, you need instant feedback. The @videoflow/renderer-dom package provides a frame-accurate, 60fps live preview. Because it's rendering the JSON directly to the DOM, it's incredibly lightweight. You can drop it into a React app to build interactive video documentation or a custom editor UI.

2. The Browser Renderer: Zero-Server Export

When a user hits "Export," why pay for server time? The @videoflow/renderer-browser package uses the modern WebCodecs API to encode the video directly in the user's browser tab. It’s Apache-2.0 open source, meaning you can ship high-performance MP4 export in your client-side app without a single cent of cloud rendering cost.

3. The Server Renderer: Headless Automation

For batch jobs, scheduled social posts, or LLM-driven content factories, you need a headless environment. The @videoflow/renderer-server package runs in Node.js and uses Playwright to drive headless Chromium. By default, it encodes video using WebCodecs + MediaBunny, meaning you don't even need FFmpeg installed on your server to get professional results.

JSON as Video Data

Building a JSON-First Pipeline

Implementing this in your stack is straightforward. First, you define your video using the core builder. Notice how we use normalized coordinates ([0.5, 0.5]) and em-based units (fontSize: 6) to ensure the video is resolution-agnostic.

import VideoFlow from '@videoflow/core';

const $ = new VideoFlow({ width: 1920, height: 1080, fps: 30 });

const title = $.addText({
  text: 'JSON-First Video',
  fontSize: 8,
  color: '#FF5A1F',
  position: [0.5, 0.4],
});

title.fadeIn('600ms');
$.wait('3s');
title.fadeOut('400ms');

// Compile to a portable JSON object
const videoData = await $.compile();

Once you have that videoData object, you can send it anywhere. You could save it to a Postgres JSONB column, send it over a WebSocket to a preview client, or POST it to a serverless function for rendering.

On the server, rendering that JSON is a one-liner:

import ServerRenderer from '@videoflow/renderer-server';

// Render to a file without needing FFmpeg system dependencies
await ServerRenderer.render(videoData, {
  outputType: 'file',
  output: './automated-export.mp4',
});

Why This Beats the Alternatives

When compared to Remotion or traditional FFmpeg scripts, the JSON-first approach wins on three fronts:

  1. Interoperability: Your video logic isn't trapped in a JS bundle. Any service that can emit JSON can effectively "write" a VideoFlow video.
  2. Scalability: By leveraging the browser renderer, you can offload the heaviest compute tasks to your users' hardware, drastically reducing your infrastructure overhead.
  3. Simplicity: You get cinematic primitives like GLSL effects and complex transitions out of the box, rather than having to hand-code shaders or string together complex FFmpeg filtergraphs.

Conclusion: Future-Proof Your Video Stack

As LLMs and agents become the primary authors of digital content, the need for a structured, portable video format is only growing. LLMs need portable VideoJSON because it provides a reliable, typed schema that they can generate without the hallucination risks of raw code.

Whether you're building a SaaS dashboard with personalized recaps or a global content factory, the 3-renderer rule ensures your video pipeline remains flexible, cost-effective, and easy to maintain.

Ready to see it in action? Head over to our Playground to build your first scene, or check out the full documentation to start building your own JSON-first pipeline. If you like what we're building, don't forget to star us on GitHub.

VideoFlow

Open-source toolkit for composing videos from code.

Product

CoreRenderersReact Video EditorPlayground

Learn

DocsAPI referenceExamplesvs. Remotionvs. FFmpeg

Project

GitHubLicenseContactTermsPrivacy

From the blog

All posts →Generating Multi-Language Video at Scale: The Localization PlaybookBrowser-Side Video Export: Zero-Server Rendering with WebCodecsCinematic GLSL: Stacking Effects for a Retro VHS Look in VideoFlowCinematic Text: Mastering Typography and Text Effects in VideoFlowHow to Generate Personalized Video Ads from a CSV with TypeScriptThe Git-Flow for Video: Why Your MP4s Should Be Diffable JSONBeyond the Play Button: Building Interactive Video Docs with VideoFlowBeyond the Prompt: Why LLMs Need Portable VideoJSON
© 2026 VideoFlow. Apache-2.0 core.