CLI tool
3b1b/manim avatar
3b1b/manim

ManimGL: The Original Math Animation Engine, Still Worth a Look

Animation engine for explanatory math videos. Create a conda environment using conda create -n manim python=3.9.

93,930 stars7,714 forksPythonMIT

At a glance

What is it?
ManimGL is the original animation engine behind 3Blue1Brown videos, distinct from the community edition. This review covers its installation, usage, and the trade-offs of choosing it in 2024.
Who is it for?
Adopt ManimGL if you want to replicate 3Blue1Brown's exact visual style and are comfortable with an engine that evolves alongside the videos it serves. Do not adopt it if you need stability, extensive documentation, or a large community; choose Manim Community instead.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

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

DEEP OPEN-SOURCE ANALYSIS

A Fork in the Road: ManimGL vs. Manim Community

The repository you are looking at is not the Manim most people use today. It is the original engine written by Grant Sanderson for 3Blue1Brown, and it is now called ManimGL. In 2020, a separate group forked it into Manim Community, which is maintained with a focus on stability, testing, and community contributions. The README warns you not to mix installation instructions between the two. That warning matters because the package name is different: this version installs as manimgl, not manim or manimlib. If you follow a tutorial for the community edition, you will end up with the wrong tool. For an engineer evaluating which to adopt, the first decision is not technical but philosophical: do you want the engine that powers a specific YouTube channel, or the one designed for broader use?

What ManimGL Actually Solves

ManimGL solves a narrow but demanding problem: creating precise, programmatic animations for explanatory math videos. It is not a general-purpose animation tool. Its strength is in rendering mathematical objects like graphs, axes, and geometric shapes with fine control over motion and timing. The target user is someone who wants to produce videos in the style of 3Blue1Brown, or who needs to animate mathematical concepts with pixel-level precision. The repository includes example scenes that demonstrate the syntax for objects and animations. If your need is for data visualization or UI animation, this is the wrong tool. The engine assumes you are comfortable writing Python code to describe every visual element, rather than clicking through a GUI.

Installation: More Than Just pip

Getting ManimGL running requires more than a simple pip install. The README lists system requirements: FFmpeg, OpenGL, and optionally LaTeX for text rendering. On Linux, you also need Pango and its development headers. For Ubuntu, the instructions include sudo apt install ffmpeg python3-pip libpango1.0-dev. LaTeX is optional, but if you want it, the recommended lightweight setup is texlive-science texlive-fonts-extra texlive-latex-extra, which is smaller than texlive-full. On macOS, you use Homebrew to install ffmpeg and mactex, and if you have an ARM-based processor, you also need arch -arm64 brew install pkg-config cairo. Windows users install FFmpeg and MiKTeX separately. The core installation is then pip install manimgl or, if you clone the repo, pip install -e . in the repository directory. The README also suggests a conda environment: conda create -n manim python=3.10, followed by conda activate manim. This is a real setup cost, especially if you have never installed LaTeX or Pango.

Running Your First Scene: CLI Flags and Workflow

Once installed, you run a scene with a command like manimgl example_scenes.py OpeningManimExample. This pops up a window playing the scene. The CLI offers practical flags: -w writes the scene to a file, -o writes and opens the result, -s skips to the final frame, -so saves that final frame as an image, -n <number> jumps to the nth animation, and -f makes the window fullscreen. There is also a manim-render command that does the same as manimgl for rendering. The README points to example scenes as a way to learn the syntax. It also mentions a custom_config.yml file that lets you set output directories, where to look for images and sounds, and defaults for style and video quality. You can edit that file or create your own in the directory where you run manim. This is a command-line-driven workflow, which suits engineers who prefer scripted rendering over interactive tools.

The Trade-Off: Precision at the Cost of Stability

ManimGL is not a stable API in the way that a mature library might be. The README notes that code from older 3Blue1Brown videos may not be compatible with the most recent version of manim. That is a direct warning about breaking changes. The engine is tied to the production needs of a YouTube channel, so it evolves as Sanderson's techniques change. This means you can expect occasional API shifts, and you may need to adapt your code when upgrading. The documentation is described as 'in progress', which is a polite way of saying it is incomplete. For an engineer who values long-term stability, this is a significant limitation. The community edition was created precisely to address these issues, so if you need a reliable, well-documented API, ManimGL is likely the wrong choice.

Alternatives: Manim Community and the Videos Repo

The most direct alternative is Manim Community, the fork mentioned in the README. It aims to be more stable, better tested, and quicker to respond to contributions. The package name is manim, and its documentation is at docs.manim.community. The core difference is in governance and release philosophy: Community is a community-driven project with a focus on backward compatibility, while ManimGL is driven by one person's video production. If you want to see how ManimGL is used in practice, the 3b1b/videos repository contains all the code for actual 3Blue1Brown videos. That repo is a real alternative source of examples, but the README warns that older video code may not work with the latest ManimGL. So you have two paths: use Manim Community for a stable foundation, or use ManimGL and accept that you are following a moving target.

Maintenance and Licensing: What the Repo Shows

The repository is actively maintained, with the last push on December 13, 2024, and version 1.7.2 released the same day. The license is MIT, which is permissive for commercial use. There is no homepage, and the documentation is still a work in progress. The maintenance cost for you as a user is the need to track releases and update your code accordingly. The README does not mention a migration guide between versions, so upgrading may require manual fixes. The license is a positive: you can use ManimGL in your own projects, even commercial ones, without concern. But the lack of a formal changelog or upgrade path is a real gap. Before adopting, check the release notes for the version you plan to use, and test your scenes after any upgrade.

Final Verdict: Who Should and Shouldn't Use ManimGL

ManimGL is for you if you want to create math videos that look exactly like 3Blue1Brown's, and you are willing to invest time in learning a less documented, evolving API. It is not for you if you need a stable, well-supported library for production work. The community edition is a safer default. If you do choose ManimGL, start by running the example scenes to verify your environment, then build a small scene using the custom_config.yml to set your output paths. Verify that your LaTeX setup works if you need text rendering. And be prepared to pin your ManimGL version to avoid unexpected changes. The engine is precise and powerful, but it comes with strings attached.

Editorial conclusion

Adopt ManimGL if you want to replicate 3Blue1Brown's exact visual style and are comfortable with an engine that evolves alongside the videos it serves. Do not adopt it if you need stability, extensive documentation, or a large community; choose Manim Community instead. Before committing, verify that your Python version (3.10+) and system dependencies (FFmpeg, OpenGL, optional LaTeX) match, and check that the example scenes in your target version still run, as older video code may not be compatible.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Community notes

Community notes