Skip to content


Illusionist takes a Jupyter Notebook with a kernel and widgets and exports a static HTML report that maintains the interactivity of the widgets without a live Jupyter kernel.

It does this by pre-calculating and serializing all the possible outputs and it generates a self-contained asset that has no runtime requirements.

A good analogy is the static HTML export of a dynamic web server like Next.JS. A Jupyter Notebook connected to a live kernel is equivalent to a web server and an illusionist report would be the static HTML version of the content. An static site generator pre-renders the content and illusionist pre-calculates the outputs of the widgets.

The main idea of Jupyter Notebooks and Jupyter widgets is to make data closer to the code and data scientists while maintaining interactivity, they do a great job at that. Illusionist maintains the same development workflow Jupyter users are used to by using standard Jupyter tooling such as ipywidgets and nbconvert. No need to import anything in your notebook to generate an interactive report using illusionist, just run one nbconvert command.

The generated assets are easy to deploy, scale and have a big longevity by removing a lot of deployment requirements and dependencies. Like a regular static web page.


$ pip install illusionist


To generate an HTML report:

$ jupyter nbconvert --to illusionist your-notebook.ipynb

To add execute the Notebook and add the widget the metadata to an .ipynb file:

$ jupyter nbconvert --to illusionist-nb --execute your-notebook.ipynb --output=output-notebook.ipynb

Learn more.