VideoFlowcodeGitHubTry itCoreRenderersReact Video EditorPlaygroundExamplesDocscodeGitHubTry it
Blog

Programmatic video — guides, tutorials, comparisons.

Long-form articles on building videos with code: VideoFlow tutorials, deep dives into transitions and GLSL effects, head-to-heads with Remotion and FFmpeg, and playbooks for shipping JSON-driven rendering pipelines.

How to Automate Loom-style Product Demos with TypeScriptHow to Automate Loom-style Product Demos with TypeScriptMay 22, 2026Automated Podcast Audiogram Generator: Turning Audio into Viral Video with TypeScriptAutomated Podcast Audiogram Generator: Turning Audio into Viral Video with TypeScriptMay 22, 2026How to Turn Markdown Changelogs into Automated Product Update VideosHow to Turn Markdown Changelogs into Automated Product Update VideosMay 22, 2026Automating Personalized Onboarding Videos with VideoFlow and TypeScriptAutomating Personalized Onboarding Videos with VideoFlow and TypeScriptMay 22, 2026Automated Video Subtitles: A Developer's Guide to the VideoFlow Captions LayerAutomated Video Subtitles: A Developer's Guide to the VideoFlow Captions LayerMay 22, 2026Automating YouTube Shorts: Build a Vertical Video Factory in 30 Lines of TypeScriptAutomating YouTube Shorts: Build a Vertical Video Factory in 30 Lines of TypeScriptMay 22, 2026Cinematic 3D Video with TypeScript: A Guide to Perspective and RotationCinematic 3D Video with TypeScript: A Guide to Perspective and RotationMay 22, 2026Cinematic GLSL Effect Stacking: Building High-End Visuals with CodeCinematic GLSL Effect Stacking: Building High-End Visuals with CodeMay 22, 2026Diffable Video: Versioning Your Media Pipeline with VideoJSONDiffable Video: Versioning Your Media Pipeline with VideoJSONMay 22, 2026Headless Video Rendering in Node.js: No FFmpeg RequiredHeadless Video Rendering in Node.js: No FFmpeg RequiredMay 22, 2026Video as Data: Building an LLM-Powered Video Generation PipelineVideo as Data: Building an LLM-Powered Video Generation PipelineMay 22, 2026Mastering Motion: A Deep Dive into VideoFlow Transitions and EasingMastering Motion: A Deep Dive into VideoFlow Transitions and EasingMay 22, 2026Why VideoFlow is the Best Open Source Remotion AlternativeWhy VideoFlow is the Best Open Source Remotion AlternativeMay 22, 2026Global by Default: Automating Video Localization with TypeScriptGlobal by Default: Automating Video Localization with TypeScriptMay 22, 2026From JSON to 60 FPS: Building Real-Time Video Previews in ReactFrom JSON to 60 FPS: Building Real-Time Video Previews in ReactMay 22, 2026How to Render MP4 from a Node API without FFmpegHow to Render MP4 from a Node API without FFmpegMay 22, 2026How to Render MP4s in Node.js Without Installing FFmpegHow to Render MP4s in Node.js Without Installing FFmpegMay 22, 2026One JSON, Every Aspect Ratio: Resolution-Agnostic Video with VideoFlowOne JSON, Every Aspect Ratio: Resolution-Agnostic Video with VideoFlowMay 22, 2026One JSON, Three Aspect Ratios: Building Resolution-Agnostic Video PipelinesOne JSON, Three Aspect Ratios: Building Resolution-Agnostic Video PipelinesMay 22, 2026State-Driven Video: Syncing Your React UI with a Programmatic TimelineState-Driven Video: Syncing Your React UI with a Programmatic TimelineMay 22, 2026Testing Your Video: How to Build a CI/CD Pipeline for Programmatic MediaTesting Your Video: How to Build a CI/CD Pipeline for Programmatic MediaMay 22, 2026The Three-Renderer Rule: Preview, Export, and Automate with VideoFlowThe Three-Renderer Rule: Preview, Export, and Automate with VideoFlowMay 22, 2026The Three-Renderer Rule: Why Live Preview is the Secret to Programmatic VideoThe Three-Renderer Rule: Why Live Preview is the Secret to Programmatic VideoMay 22, 2026The Three-Renderer Rule: Building Unified Video Pipelines with VideoFlowThe Three-Renderer Rule: Building Unified Video Pipelines with VideoFlowMay 22, 2026Treating Video like Markdown: How to Automate Explainer Videos with VideoFlowTreating Video like Markdown: How to Automate Explainer Videos with VideoFlowMay 22, 2026Video as Markdown: Why Your Video Pipeline Should Be DiffableVideo as Markdown: Why Your Video Pipeline Should Be DiffableMay 22, 2026Why Your Video Pipeline Should Be Diffable: Git for MP4sWhy Your Video Pipeline Should Be Diffable: Git for MP4sMay 22, 2026Building a Video Rendering API with Serverless FunctionsBuilding a Video Rendering API with Serverless FunctionsMay 22, 2026Video Version Control: Why Your Timelines Should Be in GitVideo Version Control: Why Your Timelines Should Be in GitMay 22, 2026Why You Should Store Your Videos as JSON, Not MP4Why You Should Store Your Videos as JSON, Not MP4May 22, 2026Zero-Server Cost Video: Rendering MP4s in the Browser with WebCodecsZero-Server Cost Video: Rendering MP4s in the Browser with WebCodecsMay 22, 2026Scaling Social Proof: How to Automate Video Testimonials with TypeScriptScaling Social Proof: How to Automate Video Testimonials with TypeScriptMay 21, 2026How to Build Personalized "Year in Review" Videos at Scale with TypeScriptHow to Build Personalized "Year in Review" Videos at Scale with TypeScriptMay 21, 2026Beyond Opacity: How to Use BlendModes for Programmatic Motion GraphicsBeyond Opacity: How to Use BlendModes for Programmatic Motion GraphicsMay 21, 2026How to Build a Quote-to-Video Engine in 20 Lines of TypeScriptHow to Build a Quote-to-Video Engine in 20 Lines of TypeScriptMay 21, 2026Beyond Static Images: Building Dynamic Social Video Banners with TypeScriptBeyond Static Images: Building Dynamic Social Video Banners with TypeScriptMay 21, 2026From String Concatenation to Type-Safe Video: Replacing FFmpeg with VideoFlowFrom String Concatenation to Type-Safe Video: Replacing FFmpeg with VideoFlowMay 21, 2026Git for Video: Why Your Pipeline Should Be DiffableGit for Video: Why Your Pipeline Should Be DiffableMay 21, 2026GitHub to Video: Automating Product Update Videos from Your Commit HistoryGitHub to Video: Automating Product Update Videos from Your Commit HistoryMay 21, 2026The Headless Video Playbook: Scaling Your Rendering APIThe Headless Video Playbook: Scaling Your Rendering APIMay 21, 2026Headless Video Rendering: Generating MP4s in Node.js Without FFmpegHeadless Video Rendering: Generating MP4s in Node.js Without FFmpegMay 21, 2026From Markdown to MP4: Automating Developer Documentation with VideoFlowFrom Markdown to MP4: Automating Developer Documentation with VideoFlowMay 21, 2026Beyond Frame Math: Mastering Timing and Flow with VideoFlow’s PrimitivesBeyond Frame Math: Mastering Timing and Flow with VideoFlow’s PrimitivesMay 21, 2026Beyond Node.js: Generating Programmatic Video from Python, Go, and RustBeyond Node.js: Generating Programmatic Video from Python, Go, and RustMay 21, 2026Beyond Dashboards: Building Personalized SaaS Recap Videos with VideoFlowBeyond Dashboards: Building Personalized SaaS Recap Videos with VideoFlowMay 21, 2026How to Build a Production-Ready Video Rendering Pipeline with Node.js and BullMQHow to Build a Production-Ready Video Rendering Pipeline with Node.js and BullMQMay 21, 2026Programmatic Motion Graphics: Recreating After Effects Lower Thirds with CodeProgrammatic Motion Graphics: Recreating After Effects Lower Thirds with CodeMay 21, 202627 Ways to Switch Scenes: A Guide to Programmatic Video Transitions27 Ways to Switch Scenes: A Guide to Programmatic Video TransitionsMay 21, 2026The 1% Rule: Why Resolution-Agnostic Layout is the Secret to Scalable VideoThe 1% Rule: Why Resolution-Agnostic Layout is the Secret to Scalable VideoMay 21, 2026How to Build a 'Spotify Wrapped' Style Video Recap for Your SaaSHow to Build a 'Spotify Wrapped' Style Video Recap for Your SaaSMay 21, 2026Scaling Global Video: A Developer's Guide to Multi-Language MP4 GenerationScaling Global Video: A Developer's Guide to Multi-Language MP4 GenerationMay 21, 2026The 1em Rule: Building Resolution-Agnostic Video DesignsThe 1em Rule: Building Resolution-Agnostic Video DesignsMay 21, 2026The Three-Renderer Rule: Why Your Video Pipeline Needs a DOM PreviewThe Three-Renderer Rule: Why Your Video Pipeline Needs a DOM PreviewMay 21, 2026The 3-Renderer Rule: Why Your Programmatic Video Strategy Needs JSON PortabilityThe 3-Renderer Rule: Why Your Programmatic Video Strategy Needs JSON PortabilityMay 21, 2026The Three-Renderer Rule: Unified Video Pipelines from Preview to ExportThe Three-Renderer Rule: Unified Video Pipelines from Preview to ExportMay 21, 2026The Three-Renderer Rule: Why Your Video Pipeline Needs More Than Just FFmpegThe Three-Renderer Rule: Why Your Video Pipeline Needs More Than Just FFmpegMay 21, 2026The 3-Renderer Rule: Build Video Apps That Preview, Export, and AutomateThe 3-Renderer Rule: Build Video Apps That Preview, Export, and AutomateMay 21, 2026Unit Testing Your Videos: A Software Engineering Approach to Motion GraphicsUnit Testing Your Videos: A Software Engineering Approach to Motion GraphicsMay 21, 2026JSON as the New MP4: Building Version-Controlled Video PipelinesJSON as the New MP4: Building Version-Controlled Video PipelinesMay 21, 2026Video as a Microservice: Scaling Programmatic Video in ProductionVideo as a Microservice: Scaling Programmatic Video in ProductionMay 21, 2026Video as a Git Artifact: Why Your Motion Graphics Should Be VersionedVideo as a Git Artifact: Why Your Motion Graphics Should Be VersionedMay 21, 2026Video as JSON: Building Diffable, Version-Controlled Video AssetsVideo as JSON: Building Diffable, Version-Controlled Video AssetsMay 21, 2026Video as Markdown: Why your Video Pipeline should be Diffable and Version-ControlledVideo as Markdown: Why your Video Pipeline should be Diffable and Version-ControlledMay 21, 2026Version-Controlled Video: How to Diff and Branch Your Motion GraphicsVersion-Controlled Video: How to Diff and Branch Your Motion GraphicsMay 20, 2026Data in Motion: How to Build Animated Dashboards with VideoFlowData in Motion: How to Build Animated Dashboards with VideoFlowMay 19, 2026Automating E-commerce: Generating Product Videos from a JSON FeedAutomating E-commerce: Generating Product Videos from a JSON FeedMay 19, 2026Zero-Cost Browser-Side Video Rendering with WebCodecsZero-Cost Browser-Side Video Rendering with WebCodecsMay 16, 2026The Art of the Reveal: 5 Cinematic Text Animations in VideoFlowThe Art of the Reveal: 5 Cinematic Text Animations in VideoFlowMay 16, 2026How to Build a High-Impact Caption Engine for Short-Form VideoHow to Build a High-Impact Caption Engine for Short-Form VideoMay 16, 2026How to Build a Serverless Video Rendering Pipeline with AWS LambdaHow to Build a Serverless Video Rendering Pipeline with AWS LambdaMay 16, 2026Video as Code: Why Portable JSON is the Future of Video PipelinesVideo as Code: Why Portable JSON is the Future of Video PipelinesMay 16, 2026Zero-Server Video Rendering: Export MP4s in the Browser with WebCodecsZero-Server Video Rendering: Export MP4s in the Browser with WebCodecsMay 16, 2026Beyond the Shell: Why Your Video Pipeline Should Be a TypeScript Library, Not an FFmpeg ScriptBeyond the Shell: Why Your Video Pipeline Should Be a TypeScript Library, Not an FFmpeg ScriptMay 14, 2026Component-Driven Video: Mastering Layer Groups and CompositionComponent-Driven Video: Mastering Layer Groups and CompositionMay 14, 2026How to Automate Video Creation from Markdown with VideoFlowHow to Automate Video Creation from Markdown with VideoFlowMay 14, 2026Authoring Resolution-Agnostic Videos: Why 1em is Your Secret WeaponAuthoring Resolution-Agnostic Videos: Why 1em is Your Secret WeaponMay 14, 2026How to Build an In-App Video Editor with React and VideoFlowHow to Build an In-App Video Editor with React and VideoFlowMay 12, 2026Mastering GLSL Video Effects: Building Cinematic Pipelines with VideoFlowMastering GLSL Video Effects: Building Cinematic Pipelines with VideoFlowMay 12, 2026Building a YouTube Shorts Factory with VideoFlow and TypeScriptBuilding a YouTube Shorts Factory with VideoFlow and TypeScriptMay 11, 2026The Three-Renderer Rule: Why Your Video Pipeline Needs a Single Source of TruthThe Three-Renderer Rule: Why Your Video Pipeline Needs a Single Source of TruthMay 10, 2026Zero-Server Video Automation: Rendering MP4s in the Browser with WebCodecsZero-Server Video Automation: Rendering MP4s in the Browser with WebCodecsMay 8, 2026Programmatic Video Animation: A Deep Dive into VideoFlow KeyframesProgrammatic Video Animation: A Deep Dive into VideoFlow KeyframesMay 5, 2026Agentic Video: How to Give Your AI Agent a VideoFlow ToolAgentic Video: How to Give Your AI Agent a VideoFlow ToolMay 2, 2026Shotstack Alternative: Why Developers are Switching to Open Source VideoFlowShotstack Alternative: Why Developers are Switching to Open Source VideoFlowApril 28, 2026VideoFlow vs. Remotion: The Developer's Guide to Code-to-Video in 2025VideoFlow vs. Remotion: The Developer's Guide to Code-to-Video in 2025April 25, 2026How to Render MP4 in Node.js Without FFmpegHow to Render MP4 in Node.js Without FFmpegApril 20, 2026Programmatic Video for SaaS: From Postgres Rows to Personalized MP4sProgrammatic Video for SaaS: From Postgres Rows to Personalized MP4sApril 15, 2026
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 →How to Automate Loom-style Product Demos with TypeScriptAutomated Podcast Audiogram Generator: Turning Audio into Viral Video with TypeScriptHow to Turn Markdown Changelogs into Automated Product Update VideosAutomating Personalized Onboarding Videos with VideoFlow and TypeScriptAutomated Video Subtitles: A Developer's Guide to the VideoFlow Captions LayerAutomating YouTube Shorts: Build a Vertical Video Factory in 30 Lines of TypeScriptCinematic 3D Video with TypeScript: A Guide to Perspective and RotationCinematic GLSL Effect Stacking: Building High-End Visuals with Code
© 2026 VideoFlow. Apache-2.0 core.