An extension toolkit for Manim — reusable mobjects, geometric computations, and animations to help you build mathematical videos faster.
| 📦 Package |
|
| 🚀 Repository |
|
| ✅ CI & Docs |
|
manim_extensions extends Manim with:
- Chinese formula support — render Chinese characters inside
MathTexviaxelatex/xeCJK - Reusable mobjects — labelled dots, braces and arrows tied to formulas, file trees, motion trails, shadows, 3D vectors, tree diagrams, and more
- Geometry helpers — circle / line / arc intersections and tangent points
- Common animations — typewriting, random / reverse writes, highlights, sweep effects, and extra easing functions
- Bundled toolkits — involute gears, mind maps / timelines / catalog diagrams, compass-and-straightedge constructions, algorithm visualisation, automata, circuits, data structures, meshes, neural networks, physics, Rubik's cube, sequence diagrams, and TikZ integration
| Package | Description |
|---|---|
manim_extensions.algorithm |
Algorithm visualisation helpers |
manim_extensions.animations |
Animations and easing functions (Basic) |
manim_extensions.arabic |
Arabic text support |
manim_extensions.automata |
Automata visualisation helpers |
manim_extensions.chemistry |
Chemistry visualisation (periodic table, molecules) |
manim_extensions.circuit |
Circuit diagram animations |
manim_extensions.compass |
Compass, ruler, pencil, and construction animations |
manim_extensions.data_structures |
Data structure animations |
manim_extensions.economics |
Economics diagrams |
manim_extensions.fontawesome |
Font Awesome icon mobjects |
manim_extensions.gearbox |
Involute gears and racks |
manim_extensions.geometry |
Geometric calculation functions (Basic) |
manim_extensions.machine_learning |
Machine-learning visualisation |
manim_extensions.meshes |
Mesh and geometry visualisation |
manim_extensions.mindmap |
Mind maps, timelines, catalog diagrams |
manim_extensions.mobjects |
Custom mobjects (Basic) |
manim_extensions.physics |
Physics simulation helpers |
manim_extensions.pymunk |
Pymunk physics engine integration |
manim_extensions.qr_codes |
QR code generation |
manim_extensions.rubikscube |
Rubik's Cube animation toolkit |
manim_extensions.sequence_diagram |
Sequence diagram animations |
manim_extensions.svg_animations |
HTML/SVG animation export |
manim_extensions.table |
Animated tables |
manim_extensions.tikz |
TikZ import helpers |
manim_extensions.weighted_line |
Weighted line graphs |
The following third-party Manim plugins are bundled directly as subpackages
inside manim_extensions:
manim-algorithm→manim_extensions.algorithmmanim-arabic→manim_extensions.arabicmanim-automata→manim_extensions.automatamanim-Chemistry→manim_extensions.chemistrymanim-circuit→manim_extensions.circuitmanim-data-structures→manim_extensions.data_structuresmanim_ec→manim_extensions.economicsmanim-fontawesome→manim_extensions.fontawesomemanim-gearbox→manim_extensions.gearboxmanim-meshes→manim_extensions.meshesmanim-ml(ManimML) →manim_extensions.machine_learningmanim-mindmap→manim_extensions.mindmapmanim-physics→manim_extensions.physicsmanim-pymunk→manim_extensions.pymunkmanim-qr-codes→manim_extensions.qr_codesmanim-rubikscube→manim_extensions.rubikscubemanim-sequence-diagram→manim_extensions.sequence_diagrammanim-svg-animations→manim_extensions.svg_animationsmanim-table→manim_extensions.tablemanim-tikz→manim_extensions.tikzmanim-weighted-line→manim_extensions.weighted_line
Installing manim_extensions lets you import them directly from the package
namespace and guarantees compatible versions. See the
documentation for details and
attribution to the original authors.
Full API reference: manim-extensions.readthedocs.io
pip install manim_extensionsRequires Manim Community Edition
(>=0.21). For the Chinese-formula features you also need xelatex with the
xeCJK package installed.
Each bundled module only pulls in what it needs. The base install is
just manim + numpy; heavy or niche dependencies are lazy-imported
and belong to the matching extra:
pip install manim_extensions[all] # every module at once
pip install manim_extensions[automata] # xmltodict
pip install manim_extensions[chemistry] # pandas, xmltodict, requests
pip install manim_extensions[dev] # pytest for running tests
pip install manim_extensions[docs] # sphinx + furo for building docs
pip install manim_extensions[meshes] # trimesh, moderngl
pip install manim_extensions[ml] # matplotlib, scikit-learn, seaborn, tqdm
pip install manim_extensions[physics] # pymunk, shapely
pip install manim_extensions[qr] # segno
pip install manim_extensions[rubikscube] # kociemba
pip install manim_extensions[svg] # svgpathtools
pip install manim_extensions[video] # opencv (VideoMobject)If a feature is used without its extra installed, the error message names
the exact pip install manim_extensions[...] command.
Every vendored module has a same-named extra. The ones below declare no
additional dependencies (they work with the base install) but exist so
that installs can uniformly request manim_extensions[<module>]:
algorithm, arabic, circuit, compass, data_structures,
economics, fontawesome, gearbox, mindmap, sequence_diagram,
table, tikz, weighted_line.
Most of manim_extensions is vendored: source copied from small,
independent upstream Manim extension projects and maintained here as one
coherent, tested whole. The motivations:
- Upstream metadata locks. Some upstream packages declare dependency
ranges that conflict with reality. For example
manim-nerdfont-icons1.0.x pinsmanim>=0.19,<0.20on PyPI even though it works with current manim — it is bundled asmanim_extensions.utils.nerdfontinstead of being a dependency.manim-mobject-svgsimilarly declarespython<3.13; it stays a lazily-imported plugin for that reason. - Integration. Vendoring lets us normalise import style, docstring conventions and CI checks across all modules, fix cross-module bugs in one place, and keep every public name importable from a single package.
- Longevity. Several upstream projects are inactive; vendoring decouples this package from their release cadence.
- Lean installs. Because each module's extra dependencies are
lazy-imported, the base install stays at two packages while every
feature remains a
pip install manim_extensions[...]away.
Every vendored package's upstream repository, sync version and local
patches are tracked in VENDORED.md; patched files carry a
# patched: <reason> marker in their header. Licensing and attribution
are kept per-package in REUSE.toml.


