Qualified name: manim.utils.ipython\_magic.ManimMagic

class ManimMagic(**kwargs)[source]

Bases: IPython.core.magic.Magics

Create a configurable given a config config.

  • config (Config) – If this is empty, default values are used. If config is a Config instance, it will be used to configure the instance.

  • parent (Configurable instance, optional) – The parent Configurable instance of this object.


Subclasses of Configurable must call the __init__() method of Configurable before doing anything else and using super():

class MyConfigurable(Configurable):
    def __init__(self, config=None):
        super(MyConfigurable, self).__init__(config=config)
        # Then any other code you need to finish initialization.

This ensures that instances will be configured properly.




Render Manim scenes contained in IPython cells.



A trait whose value must be an instance of a specified class.


A contextmanager for running a block with our cross validation lock set to True.




A trait whose value must be an instance of a specified class.



manim(line, cell=None, local_ns=None)[source]

Render Manim scenes contained in IPython cells. Works as a line or cell magic.


This line and cell magic works best when used in a JupyterLab environment: while all of the functionality is available for classic Jupyter notebooks as well, it is possible that videos sometimes don’t update on repeated execution of the same cell if the scene name stays the same.

This problem does not occur when using JupyterLab.

Please refer to for more information about JupyterLab and Jupyter notebooks.

Usage in line mode:

%manim [CLI options] MyAwesomeScene

Usage in cell mode:

%%manim [CLI options] MyAwesomeScene

class MyAweseomeScene(Scene):
    def construct(self):

Run %manim --help and %manim render --help for possible command line interface options.


The maximal width of the rendered videos that are displayed in the notebook can be configured via the media_width configuration option. The default is set to 25vw, which is 25% of your current viewport width. To allow the output to become as large as possible, set config.media_width = "100%".


First make sure to put import manim, or even from manim import * in a cell and evaluate it. Then, a typical Jupyter notebook cell for Manim could look as follows:

%%manim -v WARNING --disable_caching -qm BannerExample

config.media_width = "75%"

class BannerExample(Scene):
    def construct(self): = "#ece6e2"
        banner_large = ManimBanner(dark_theme=False).scale(0.7)

Evaluating this cell will render and display the BannerExample scene defined in the body of the cell.


In case you want to hide the red box containing the output progress bar, the progress_bar config option should be set to None. This can also be done by passing --progress_bar None as a CLI flag.