If you have watched an educational video on YouTube in the past decade, you have almost certainly seen the work of Manim. The distinctive style of Grant Sanderson’s 3Blue1Brown channel — smooth, precisely animated geometric transformations, equations unfolding in real time, and complex mathematical concepts rendered visually intuitive — is powered entirely by this open-source Python library. Manim stands for Mathematical Animation Engine, and it has democratized the creation of world-class mathematical visualizations.
Sanderson originally wrote Manim as a personal tool to produce the animations for his 3Blue1Brown channel, which has grown to over 6 million subscribers. The library’s first public release came in 2019, and it quickly gained traction among educators, students, and content creators who wanted to bring the same visual clarity to their own projects. The fundamental insight behind Manim is that mathematical animations are not illustrations — they are arguments. A well-designed animation can communicate the logic behind a proof or the intuition behind a concept in a way that static diagrams cannot.
The library has evolved significantly since its initial open-source release. The most important development was the emergence of the ManimCommunity fork, which took Sanderson’s original codebase and added comprehensive documentation, a stable release cycle, extensive testing, and dozens of new features. Both versions remain actively maintained, but they now serve different audiences: the original for production work on 3Blue1Brown, and the community edition for everyone else.
How Did Manim Come to Exist and Why Are There Two Versions?
Manim’s origin story is unusual in open source. Grant Sanderson built the first version of Manim entirely for his own use while creating 3Blue1Brown videos. It was never designed to be a general-purpose animation library — it was a personal tool that happened to be open-sourced. The API was documented only by Sanderson’s own usage patterns, and there were no guarantees about stability or backward compatibility.
As the YouTube channel’s popularity grew, so did interest in the tool. Developers began contributing patches and features, but the codebase was not designed for collaborative maintenance. In 2020, the community formed the ManimCommunity organization to create a forked, community-maintained version that could evolve independently from Sanderson’s production needs. This fork received a complete documentation overhaul, a proper renderer architecture, and a semantic versioning scheme.
graph TB
A[Grant Sanderson creates Manim\nfor 3Blue1Brown videos] --> B[2019: First open-source release]
B --> C[Original branch: 3b1b/manim]
B --> D[2020: ManimCommunity fork]
D --> E[MCE: ManimCommunity/manim]
C --> F[Sanderson maintains for\n3Blue1Brown production]
E --> G[Community features:\nDocs, testing, plugins]
E --> H[Stable releases:\nv0.18, v0.19+]
F --> I[Custom patches for\nspecific video needs]| Aspect | 3b1b/manim (Original) | ManimCommunity/manim |
|---|---|---|
| Maintainer | Grant Sanderson | Community maintainers |
| Release cycle | Irregular, production-driven | Regular semantic versions |
| Documentation | Minimal (source code as docs) | Comprehensive guides and API docs |
| Stability | Breaking changes possible | Stable with deprecation warnings |
| Install command | pip install manim (original) | pip install manim (Community) |
| Best for | Following Sanderson’s exact workflow | General use, teaching, learning |
What Can You Create with Manim?
Manim excels at a specific category of animation: precise, programmatic motion of mathematical objects. Its primitive objects — called “Mobjects” — include everything from basic geometric shapes to LaTeX-rendered equations, coordinate systems, function graphs, number lines, and 3D surfaces.
Animations are defined by transforming Mobjects over time: moving a circle, morphing a graph, transforming an equation, or interpolating between two shapes. Manim’s renderer handles the intermediate frames automatically, producing smooth motion with customizable easing functions.
| Feature Category | Examples | Implementation |
|---|---|---|
| Geometric objects | Circles, squares, polygons, arcs | Circle(), Square(), Polygon() |
| Mathematical notation | LaTeX formulas, variable text | Tex(), MathTex(), Text() |
| Graphs and axes | Coordinate systems, function plots | Axes(), Graph(), NumberPlane() |
| 3D scenes | Rotating objects, 3D surfaces | ThreeDScene(), Surface() |
| Camera effects | Zooming, panning, following mobjects | self.camera.frame.move_to() |
| Animation types | Fade, transform, grow, draw border | FadeIn(), Transform(), Create() |
sequenceDiagram
participant Dev as Developer (Python)
participant Manim as Manim Engine
participant FFmpeg as FFmpeg
participant Output as Video File
Dev->>Manim: Define Scene class with construct()
Dev->>Manim: Add mobjects and animations
Manim->>Manim: Render intermediate frames
Manim->>Manim: Apply transformations per frame
Manim->>FFmpeg: Send frame sequence
FFmpeg->>Output: Encode to MP4
Output-->>Dev: Complete animation fileHow Do You Write a Manim Animation?
Manim animations are pure Python code. Every animation begins by creating a class that inherits from Scene and defining its content in a construct method:
from manim import *
class SquareToCircle(Scene):
def construct(self):
square = Square()
self.play(Create(square))
self.play(square.animate.move_to(RIGHT))
self.play(Transform(square, Circle()))
self.wait(1)
This seven-line script creates a complete animation: a square appears, slides to the right, morphs into a circle, and pauses. Executed with manim -pql scene.py SquareToCircle, it renders to a video file with a single terminal command. The -pql flag means “preview quality, low” — suitable for quick iteration — while -pqh produces high-quality output for publication.
What Hardware Do You Need to Run Manim?
| Component | Minimum | Recommended |
|---|---|---|
| CPU | Dual-core processor | Quad-core or better |
| RAM | 4 GB | 8 GB or more |
| GPU | Integrated graphics | Dedicated GPU (for OpenGL renderer) |
| Python | 3.8 | 3.11 or later |
| Storage | 500 MB for library | 5 GB+ for rendered projects |
Manim uses the cairo backend by default, which renders entirely on the CPU. An optional OpenGL backend provides faster rendering and real-time preview but requires a capable GPU. The community edition also supports a plugin system for alternative renderers.
Frequently Asked Questions About Manim
Is Manim Only for Mathematics?
While Manim’s name and heritage are mathematical, its capabilities extend well beyond pure mathematics. Educators and content creators have used Manim for:
- Physics animations: Visualizing fields, forces, and particle motion
- Computer science: Showing algorithm execution, data structure operations
- Engineering: Illustrating circuit diagrams, mechanical systems
- Data visualization: Creating animated charts, graphs, and network diagrams
- Music theory: Animating staff notation, chord progressions, and rhythm patterns
The library’s ability to animate LaTeX-rendered text and mathematical notation makes it particularly powerful for any STEM field, but its object-oriented animation model is general enough for any type of explanatory content.
Manim in Education and Content Creation
Since its open-source release, Manim has driven a revolution in educational content creation on platforms like YouTube. The “3Blue1Brown style” has become a recognizable genre of its own, with thousands of educational channels adopting Manim for their own videos. Universities have integrated Manim into coursework for mathematics communication, and the library has been used in TED-Ed animations, conference presentations, and interactive textbooks.
The ManimCommunity edition has lowered the barrier to entry significantly. The documentation includes a comprehensive tutorial series called “The Quickstart Guide,” example galleries with downloadable source code, and an active Discord community where beginners can get help with their animations.
Further Reading
- ManimCommunity Repository — Community edition source code and installation guide
- 3Blue1Brown on YouTube — Grant Sanderson’s channel showcasing Manim’s full capabilities
- Original Manim Repository (3b1b) — Grant Sanderson’s personal production fork
- Manim Documentation — Official community edition documentation and tutorials
- Manim Examples Gallery — Collection of example animations with source code