motion-canvas

From public sources

Motion Canvas is an open-source TypeScript library and editor for programming vector animations with generators and syncing them to voice-overs.

LibraryCategory: Libraries & SDKs · Animation & 3DOpen sourcedata checked Oct 15, 2026

Overview

Creating informative vector animations usually means fighting with timelines and manual keyframing, and keeping them in sync with narration is tedious. Motion Canvas lets you describe animations as code, using TypeScript generator functions, and previews the result in real time. It is two things in one: a TypeScript library for programming animations and an editor that shows a live preview. The editor also lets you adjust certain aspects of an animation directly, which would otherwise require editing code by hand. The 2d package provides the default renderer for 2D motion graphics. Motion Canvas is aimed at developers and educators who make explainer videos and technical visualizations. It is released under the MIT license, runs on Vite, and projects can be bootstrapped with the create package. An example alternative to closed-source motion design tools is available in the open-source ecosystem, and this project's README lists its packages and local development workflow for contributors.
  • animation
  • presentation
  • visualization

Installation

Commands are shown, never run by the marketplace. Check them against the official documentation.

Compatibility

Unknown means no evidence was found — not that the product is incompatible.
PlatformStatusArchitectureEvidenceConfidence
Node.jsUnknown———
PythonUnknown———
JVMUnknown———
.NETUnknown———
WebAssemblyUnknown———
Web browserUnknown———

Releases

checked Oct 29, 2026
v3.17.2LatestDec 14, 2024Official source ↗

Files in 3.17.2

This release has no attached files.

Release history

Quality profile

algorithm quality-v1.0 · assessed Oct 15, 2026
Quality Score88
Risk Score0
Confidence 1.00
Quality Score and Risk Score are different measures. A high score does not guarantee safety.

Score components

Maintenance · 2012
last activity 105 days ago
Documentation · 1515
README 5248 chars, description present
Ready to use · 1515
install instructions: yes; releases: yes
Metadata · 1010
4/4 of description, homepage, license, topics
Releases · 106
10 release(s), latest 607 days ago
Category confidence · 1010
classifier confidence 1
Adoption · 1010
19345 stars (log-dampened, 10k = max)
License clarity · 55
SPDX MIT
Community · 55
issues enabled, 842 forks

License

MIT
Known licensefrom the repository host

This is the catalog policy status, not legal advice.

Sources

github.com/motion-canvas/motion-canvasPrimary★ 19,345 starslast activity Jul 2, 2026Primary repository · Confidence 1.00

Reviews

Sign in to write a review

No reviews yet.

Alternatives

README

From motion-canvas/motion-canvas · license MIT · fetched Oct 29, 2026

Motion Canvas

Motion Canvas is two things:

  • A TypeScript library that uses generators to program animations.
  • An editor providing a real-time preview of said animations.

It's a specialized tool designed to create informative vector animations and synchronize them with voice-overs.

Aside from providing the preview, the editor allows you to edit certain aspects of the animation which could otherwise be tedious.

Using Motion Canvas

Check out our getting started guide to learn how to use Motion Canvas.

Developing Motion Canvas locally

The project is maintained as one monorepo containing the following packages:

NameDescription
2dThe default renderer for 2D motion graphics
coreAll logic related to running and rendering animations.
createA package for bootstrapping new projects.
docsOur documentation website.
e2eEnd-to-end tests.
examplesAnimation examples used in documentation.
internalInternal helpers used for building the packages.
playerA custom element for displaying animations in a browser.
templateA template project included for developer's convenience.
uiThe user interface used for editing.
vite-pluginA plugin for Vite used for developing and bundling animations.

After cloning the repo, run npm install in the root of the project to install all necessary dependencies. Then run npx lerna run build to build all the packages.

Developing Editor

When developing the editor, run the following command:

npm run template:dev

It will start a vite server that watches the core, 2d, ui, and vite-plugin packages. The template package itself contains a simple Motion Canvas project that can be used during development.

Developing Player

To develop the player, first build the template: npm run template:build. Then, start npm run player:dev.

Installing a local version of Motion Canvas in a project

It can be useful to install a local version of Motion Canvas in a standalone project. For example, when you want to use your own fork with some custom-made features to create your animations.

Let's assume the following project structure:

projects/
├── motion-canvas/ <- your local monorepo
└── my-project/ <- a bootstrapped project
    └── package.json

You can link the local packages from the monorepo by updating the package.json of your project. Simply replace the version with a file: followed by a relative path to the package you want to link:

  "dependencies": {
-   "@motion-canvas/core": "^3.11.0",
+   "@motion-canvas/core": "file:../motion-canvas/packages/core",
    // ...
  },

If you're linking the ui package, you'll also need to modify vite.config.ts to allow vite to load external files:

import {defineConfig} from 'vite';
import motionCanvas from '@motion-canvas/vite-plugin';

export default defineConfig({
  server: {
    fs: {
      // let it load external files
      strict: false,
    },
  },
  plugins: [motionCanvas()],
});

This is necessary because the editor styles are loaded using the /@fs/ prefix and since the linked ui package is outside the project, vite needs permission to access it.

Then run npm install in to apply the changes and that's it.

You can use the same technique to test out any custom package you're working on.

Contributing

Read through our Contribution Guide to learn how you can help make Motion Canvas better.

Open the repository ↗