Open-source project
remotion-dev/remotion avatar
remotion-dev/remotion

Remotion treats React as the source of truth, and the licence is not OSS

GitHub describes it as 🎥 Make videos programmatically with React. The repository metadata lists TypeScript as its primary language. The metadata lists the NOASSERTION license. This article stays within the project description and details documented in the GitHub repository README.

61,259 stars4,730 forksTypeScriptNOASSERTION

At a glance

What is it?
Remotion renders video from React components, and you can work on a video by prompting a coding agent, by dragging in a GUI, or by writing code. Before any of that matters, the project states it holds a special licence that can require a company licence, so that is the first thing to check.
Who is it for?
Adopt Remotion if your video is a function of data, because that is the case the library is built for and the one that justifies a code-first workflow over a timeline editor. Do not adopt it for an open source project or a company that has not checked the licence, because the project states a company licence is required in some cases and the repository points at a licence file rather than a standard grant.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The licence is a licence file, not a standard grant

This is the first thing to resolve and the project puts it in the README rather than burying it. The wording is that Remotion has a special license and requires obtaining a company license in some cases, with a pointer to the licence page for more information. The package metadata agrees in a way that rules out a conventional open source licence: the root package.json declares its licence as SEE LICENSE IN LICENSE.md rather than naming MIT, Apache-2.0 or anything else, and the repository facts record no standard licence identifier at all. A LICENSE.md file sits at the root next to a separate commercial licence page and a store link in the documentation index. None of this is a judgement about the terms themselves, but a team shipping this in a product needs to read that file before writing a line of component code.

npx create-video@latest is the whole getting-started path

The installation story is one command, conditional on a runtime you probably already have:

console
npx create-video@latest

That is stated as the route for anyone who already has Node.JS installed, with the installation page in the documentation named for everybody else. What the command produces is not explained in the repository, so the first-run experience lives in the docs rather than here. The scale of what you are installing into is worth knowing before you type it, because the project describes itself as extensively documented over more than 1000 pages, and the README's job is largely to be an index into that documentation rather than to teach you. The index itself is a useful map, grouping the surface into components such as elements, effects, shapes, transitions, sound effects, captions and fonts.

Three workflows, and React code is the only source of truth

The project offers three ways to produce a video and makes an unusual claim about them. You can make videos agentically, turning an idea into a video using your coding agent, interactively, editing and animating with drag and drop, or programmatically, connecting to data and managing complexity with code. What makes that more than a feature list is the sentence that follows: React code is the source of truth and you can switch workflow at any point. The practical consequence is that a drag-and-drop edit and a prompt are not separate modes producing separate artefacts, they are two front ends over the same component tree, so work started one way can be finished the other without conversion. For a team that mixes designers and engineers on one asset, that is the reason to choose this over a timeline tool.

Rendering has five documented paths, and the comparison page exists for a reason

Where the video actually gets produced is a decision the project refuses to make for you, and the documentation index lists the options as separate entries rather than burying them. There are Node.js APIs for server-side rendering, Lambda for cloud function execution, Vercel through a sandbox integration, and client-side rendering in the browser, plus a page titled as a comparison of the options. That last entry is the one to read first, because the failure modes differ in kind rather than in speed. Server-side rendering gives you a render farm you operate, Lambda and Vercel hand the compute to someone else, and client-side rendering moves the cost onto whoever opens the page. The automation pitch rests on batch rendering, described as rendering millions of videos on your own infrastructure, which is the case where the choice matters most.

The repository is a Bun and Turborepo monorepo that also contains Go

The build system is not the JavaScript default, and the details are in the root package.json rather than in prose. The root package is named remotion-monorepo, is marked private, and carries version 0.0.0, which is the convention for a workspace root rather than a published artefact. Real work is driven through turbo, with build mapped to turbo run make, test to turbo run lint test, and ci to turbo run make test at concurrency one. Alongside that sit bun.lock and bunfig.toml, so the package manager is Bun, and pre-commit.ts, publish.ts and set-version.ts are TypeScript entry points rather than shell hooks. The surprise for a contributor is go.work and go.work.sum at the root, since a React video library containing a Go workspace is not what the README prepares you for, and the media tooling is where that split lives.

Releases land several times a week, so the version number is a moving target

The version scheme is worth reading before you pin anything. Three consecutive releases are listed within six days: v4.0.528 on 2026-09-24, v4.0.529 on 2026-09-25 and v4.0.530 on 2026-09-29, and the last push to the repository was on 2026-09-29, the same day as the newest of them. A fourth component climbing through the hundreds is a project shipping continuously rather than cutting releases per feature, which is normal for a library that renders video and depends on browser and codec behaviour that moves underneath it. The consequence for a reader is that a caret range in a package.json is not a stable choice here. If a render pipeline produces an artefact you care about, the exact version that produced it is the thing to record, and the set-version.ts script at the root is the mechanism the project uses to move the number.

Two audiences share one repository, and the docs serve both

The README is written for someone evaluating a purchase decision and for someone building, and it serves the first better than the second. The commercial section of the index points at a licence page, a store and an about page, alongside a gallery of finished videos, which tells you the project expects a meaningful share of its audience to be choosing a tool rather than contributing to one. The building audience gets an agents and contributing link, and the repository carries the corresponding files, with an AGENTS.md, a CONTRIBUTING.md, a DESIGN.md, a FUNDING.yml and editor and tool directories for .claude, .codex, .zed and .vscode. The agent skills and prompts entries in the documentation index are consistent with the agentic workflow claim, and they are the part of the setup a new user tends to miss while following the install page.

Editorial conclusion

Adopt Remotion if your video is a function of data, because that is the case the library is built for and the one that justifies a code-first workflow over a timeline editor. Do not adopt it for an open source project or a company that has not checked the licence, because the project states a company licence is required in some cases and the repository points at a licence file rather than a standard grant. Verify first which rendering path you will actually run, since Node.js APIs, Lambda, Vercel and client-side rendering have different operational shapes, and then pin an exact version, because releases land several times a week.

Frequently asked questions

What is a Remotion?

A library for making videos programmatically with React, where the React code is the source of truth. The project describes it as video tools for the agent era.

Is Remotion free or paid?

The project states it has a special license and that obtaining a company license is required in some cases, pointing to its licence page for the detail. The root package.json declares SEE LICENSE IN LICENSE.md rather than a standard open source identifier.

How to use Remotion?

Run npx create-video@latest if you already have Node.JS installed, otherwise start from the installation page in the documentation. The project describes more than 1000 pages of documentation covering elements, effects, shapes, transitions, captions and fonts.

What can you make with Remotion?

Videos built as React components, worked on agentically with a coding agent, interactively with drag and drop, or programmatically against data. Beyond single videos it is aimed at design systems of animated assets, batch rendering, and publishing video editors or simpler tools.

how to install remotion

With npx create-video@latest, which the project offers to anyone who already has Node.JS installed. The installation page in the documentation is the route given for everybody else.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/remotion-dev-remotion.svg)](https://hysenlabs.com/projects/remotion-dev-remotion)