Manim Compared: 3b1b Original vs Community Edition, How to Choose Between 87k+39k Star Math Animation Engines

The Problem

You’ve seen 3Blue1Brown’s videos — those buttery smooth math visualizations where Fourier transforms spin on screen, linear algebra matrices warp geometric shapes in real time. You want to make something similar. But PowerPoint can’t do it, After Effects makes you want to quit, and Blender feels like overkill.

The question isn’t “which tool can make animations.” It’s “which tool lets you describe in code exactly what happens at second 3: the curve shifts from blue to red while the camera rotates 45 degrees from top-down to side view.”

Manim was built for exactly this. It’s the engine behind 3Blue1Brown, 87.8k GitHub stars, MIT license, written in Python.

What It Is

Manim — Mathematical Animation Engine — was created by Grant Sanderson (the person behind 3Blue1Brown) as a personal tool for making math visualization videos. But “Manim” now refers to two different projects, which is the first thing every newcomer gets confused by:

3b1b/manim (Original)ManimCommunity/manim (Community)
Stars87.8k39.1k
Forks7.3k2.9k
Watchers93352
Commits6,3696,264
pip packagemanimglmanim
RendererOpenGL (GPU)Cairo (CPU), optional OpenGL
LanguagePython 96.4%, GLSL 3.6%Python 98.2%, GLSL 1.6%
Latest versionv1.7.2 (Dec 2024)v0.20.1 (Feb 2026)
Releases1333
DocsBasic, example-drivenComprehensive, ReadTheDocs + official site
CI/TestingNoneFull CI + Codecov
DockerNoOfficial image
JupyterNo%%manim magic
LicenseMITMIT (dual copyright)

In short: 3b1b/manim is what Grant uses. ManimCommunity/manim is what the community uses.

In 2020, the community forked it into Manim Community Edition with a goal of being more stable, better tested, and friendlier for contributions. Grant continues maintaining his own version, but the community edition is where most active development happens.

Why It Stands Out

Code as Animation: Pixel-Level Precision

Manim’s core idea is describing animations in Python code instead of dragging a timeline. Both versions support:

  • Every object’s position, color, and scale at every frame
  • Camera movement start/end times, interpolation methods, rotation angles
  • LaTeX formula highlighting and transformation, symbol by symbol
  • 3D scene camera paths and lighting

This isn’t “make an animation.” It’s “describe a mathematical object’s behavior over time in code.” You’re writing behavior definitions, not scripts.

The Rendering Split: OpenGL vs Cairo

This is the fundamental difference between the two versions:

3b1b/manim uses OpenGL (GPU rendering):

  • Live preview window — see your animation as you code, no render wait
  • GPU acceleration — complex scenes render an order of magnitude faster
  • Custom GLSL shaders — 3.6% of the codebase is GLSL for bespoke effects
  • Cost: requires OpenGL support, macOS ARM needs extra Cairo install, higher system requirements

ManimCommunity/manim uses Cairo (CPU rendering):

  • Better cross-platform compatibility — no GPU required
  • More predictable output — Cairo’s 2D rendering is consistent
  • Optional OpenGL backend — community edition supports switching, but Cairo is default
  • Cost: slower rendering, complex scenes may need waiting

Pick 3b1b for 3D and real-time preview. Pick community for 2D math animations and stability.

Battle-Tested by 3Blue1Brown

The 3b1b version’s biggest edge is real-world validation. Every 3Blue1Brown video is built with it, with all source code at 3b1b/videos. That means:

  • APIs validated by actual production use
  • Massive library of real-scene code references
  • The author uses it daily — bugs get fixed

The community edition’s edge is engineering maturity: full CI, Codecov coverage, official Docker image, Jupyter magic command, 33 releases (vs 13 for the original). It’s more of a “proper open-source project” than “someone’s tool that happened to get open-sourced.”

Quick Start

3b1b Original (ManimGL)

# Install (note the package name is manimgl)
pip install manimgl

# Run the examples
manimgl example_scenes.py OpeningManimExample

System dependencies: FFmpeg, OpenGL, LaTeX (optional, for math formulas). On macOS:

brew install ffmpeg mactex
# ARM Mac also needs Cairo
arch -arm64 brew install pkg-config cairo

Community Edition (ManimCE)

# Install (note the package name is manim)
pip install manim

# Run the examples
manim -p -ql example.py SquareToCircle

Community docs are more thorough: docs.manim.community. Docker works out of the box:

docker run -it -v "$PWD":/ manimcommunity/manim manim -p -ql example.py SquareToCircle

Jupyter notebooks support %%manim magic commands.

Code Comparison

The two versions have API differences. Same “square to circle” animation:

3b1b version:

from manimlib import *

class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        square = Square()
        square.flip(RIGHT)
        square.rotate(-3 * TAU / 8)
        circle.set_fill(PINK, opacity=0.5)

        self.play(ShowCreation(square))
        self.play(Transform(square, circle))
        self.play(FadeOut(square))

Community version:

from manim import *

class SquareToCircle(Scene):
    def construct(self):
        circle = Circle()
        square = Square()
        square.flip(RIGHT)
        square.rotate(-3 * TAU / 8)
        circle.set_fill(PINK, opacity=0.5)

        self.play(Create(square))
        self.play(Transform(square, circle))
        self.play(FadeOut(square))

Note the differences: from manimlib import * vs from manim import *, ShowCreation vs Create. Code is not interchangeable between versions.

The Killer Demo

The 3b1b/videos repo contains source code for every 3Blue1Brown video. Here’s a simplified version of how matrix transformations work in Essence of Linear Algebra:

class MatrixTransformation(Scene):
    def construct(self):
        # Create a coordinate plane
        plane = NumberPlane()
        
        # Create a vector
        vector = Arrow(ORIGIN, [2, 1, 0], color=YELLOW)
        
        # Matrix: a shear transformation
        matrix = [[1, 1], [0, 1]]
        
        # Show plane and vector
        self.play(ShowCreation(plane))
        self.play(ShowCreation(vector))
        
        # Apply the matrix — the entire plane warps
        self.play(plane.animate.apply_matrix(matrix))
        self.play(vector.animate.apply_matrix(matrix))
        self.wait()

What this does: display a coordinate plane and a vector, then a shear transformation applies to both — the viewer sees intuitively that “matrices are transformations of space.”

For more complex scenes, like the rotating vector summation in the Fourier Transform video, the full source code is in the 3b1b/videos repo. Every frame’s mathematical precision, color palette, and camera movement is code-controlled.

Which Version to Choose

Choose 3b1b/manim if:

  • You’re building 3D scenes — OpenGL rendering pipeline handles 3D better
  • You want to replicate 3Blue1Brown’s style — this is the original, API matches video source exactly
  • You need live preview — pop-up window shows animation as you code, no render wait
  • You want to write custom GLSL shaders — 3.6% of the codebase is GLSL
  • You’re willing to read source code and sparse docs — community edition has better docs, but the original is more flexible

Choose ManimCommunity/manim if:

  • You’re a beginner — comprehensive docs, simple install, active community
  • You need stable production — 33 releases, full CI, Codecov coverage
  • You need Docker deployment — official image works out of the box
  • You want Jupyter Notebook support — %%manim magic command
  • You’re doing 2D math animations — Cairo rendering is sufficient and more compatible
  • You want to contribute — community edition has a more structured contribution process

Don’t Mix Them

Different pip package names (manimgl vs manim), different import paths (from manimlib import * vs from manim import *), different method names (ShowCreation vs Create). Don’t install both in the same environment — they’ll conflict.

Community Resources

When to Use (and When Not To)

Good fit:

  • Math/physics teaching videos — this is its core purpose
  • Animated data visualization — more expressive than static charts
  • Science media content — YouTube/Bilibili math explainer videos
  • Academic presentations — animate concepts from papers

Bad fit:

  • Quick GIF for social media — overkill, use ffmpeg + PIL instead
  • Commercial ad animations — Manim’s visual style is academic, not commercial
  • Real-time interactive apps — it’s an offline renderer, not a game engine
  • Non-math content — the API is designed for mathematical animation, other uses feel awkward

Heads up:

  • pip package name is manimgl, not manim. Wrong package causes conflicts with community edition
  • macOS ARM needs Cairo installed separately or you’ll get errors
  • 3b1b version docs are sparser than community edition — read source code and 3b1b/videos examples when stuck
  • Migrating old code to new versions may have breaking changes — the 3b1b/videos README mentions this

Verdict

Manim isn’t “another animation library.” It’s the purest implementation of the idea that code should describe mathematical objects’ behavior over time. The dual-repo story — 87.8k + 39.1k stars — tells a clear story: math visualization animation is a real need, and each version serves a different audience.

If you want 3Blue1Brown-style 3D animation and don’t mind sparse docs, go with manimgl. If you’re a beginner, doing 2D animations, or value stability and documentation, go with manim (community edition).

Either way, the first step is the same: install it, run an example scene, and feel what code-controlled animation is like.

Repo (original): https://github.com/3b1b/manim Repo (community): https://github.com/ManimCommunity/manim

Related Posts

Math-To-Manim: Six AI Agents Turn Math Questions Into Cinematic Animations

The Problem You're a math teacher or science communicator. You have an idea — "animate how Fouri ...

IKEA 3D Model Downloader: The Browser Extension IKEA Should Have Built

Why This Project Exists IKEA has invested heavily in 3D modeling for its product catalog. On the ...