Using RISE and reveal.js slides with Jupyter Notebook 6, Notebook 7, and JupyterLab
Last updated: 2025-11-16
This guide explains how to:
- Install and use RISE in classic Jupyter Notebook 6.
- Use RISE in a Notebook 7 environment via nbclassic.
- Use jupyterlab-rise inside JupyterLab.
- Understand and troubleshoot the separate reveal.js slides export based on
nbconvert.
RISE is a Jupyter notebook extension that turns a live notebook into a reveal.js based slideshow right inside the browser, with code cells that you can still execute during the talk.
The reveal.js exporter from nbconvert instead generates a static HTML slide deck from a notebook.
1. Check what you have installed
In the environment where you plan to present, run:
jupyter notebook --version
jupyter lab --version # optional
python -m pip show rise jupyterlab-rise nbclassic nbconvert
Typical cases:
- Notebook 6.x: classic front end, compatible with
risedirectly. - Notebook 7.x: new front end, old nbextensions do not work. You need nbclassic if you want classic extensions like
rise. - JupyterLab: use jupyterlab-rise, not the classic
risepackage.
2. RISE in Jupyter Notebook 6 (classic)
If you already have Notebook 6, this is the simplest path.
2.1 Install RISE
Using pip:
pip install RISE
Using conda (conda-forge or Anaconda channel):
conda install -c conda-forge rise
# or
conda install anaconda::rise
Recent RISE versions automatically install their Javascript and CSS assets when you install the package, so you usually do not need extra nbextension commands.
The RISE docs note that the manual jupyter-nbextension install step is only required for older releases. citeturn0search9turn0search11
If you want to be explicit, you can still run:
jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix
You can check that the extension is enabled with:
jupyter-nbextension list
Look for a line that mentions rise and enabled. citeturn0search11turn0search15
2.2 Using RISE in Notebook 6
Start classic notebook:
jupyter notebook
Then:
- Open your notebook.
- Go to View -> Cell Toolbar -> Slideshow to turn on the slideshow toolbar. You can now mark cells as
slide,subslide,fragment, etc. citeturn0search0turn0search21 - Look at the toolbar: you should see a button like “Enter/Exit RISE Slideshow” or a projector icon. Click it to enter slideshow mode.
- Use keyboard shortcuts (arrow keys, space, or the reveal.js controls at the bottom right) to navigate your slides.
RISE runs entirely inside the notebook, so you can execute cells live while in slideshow mode. citeturn0search0turn0search22
3. RISE in a Notebook 7 environment
The rise extension from the main RISE repository works only with the classic notebook stack (Notebook 6). It is not compatible with the new Notebook 7 front end. citeturn0search4
If you have Notebook 7 installed, you have two options:
3.1 Use nbclassic to get the classic UI
nbclassic provides the classic Notebook 6 interface as a Jupyter Server extension, side by side with Notebook 7 and JupyterLab. citeturn0search2turn0search10turn0search19
Install it in your environment:
pip install nbclassic
This automatically enables the extension in the Jupyter Server. Then start the classic interface with:
jupyter nbclassic
From this point, the steps in section 2 apply: install rise, check jupyter-nbextension list, and use the RISE button in the classic UI.
3.2 Keep using Notebook 7 without RISE
If you prefer the Notebook 7 front end and do not need RISE inside it, you can still export reveal.js slides using nbconvert (explained below).
For live-code slide decks with RISE in a Notebook 7 setup you should either:
- Use nbclassic + rise.
- Or switch to JupyterLab + jupyterlab-rise.
4. jupyterlab-rise in JupyterLab
For JupyterLab you should use the jupyterlab-rise extension, which is the maintained successor of RISE for the Lab ecosystem. citeturn0search5turn0search12turn0search1turn0search16
4.1 Install jupyterlab-rise
Using pip:
pip install jupyterlab-rise
Using conda:
conda install -c conda-forge jupyterlab_rise
Then restart JupyterLab:
jupyter lab
The extension registers a server extension and a Lab front end plugin. You should see a RISE related command in the command palette and possibly a button or menu entry to start a slideshow, depending on version.
4.2 Using jupyterlab-rise
The basic workflow is similar:
- Create or open a notebook in JupyterLab.
- Mark cells as slides, subslides, etc. via the slideshow cell metadata or the RISE UI.
- Use the RISE command (from the command palette or toolbar) to enter the slideshow.
Behind the scenes it still uses reveal.js for transitions and navigation.
Check the jupyterlab-rise documentation for version specific screenshots and features. citeturn0search5turn0search12
5. Exporting to reveal.js slides with nbconvert
The “Download as reveal.js slides” or “Export Notebook As -> Reveal.js” menu entry in classic Notebook comes from nbconvert, not from RISE.
- RISE is a live slideshow extension inside the notebook.
- The reveal.js exporter from
nbconvertconverts a.ipynbinto an HTML slide deck.
You can use this export directly from the terminal, which is also a good way to debug internal server errors:
jupyter nbconvert MySlides.ipynb --to slides --post serve
This command converts the notebook to reveal.js slides and serves them on a local HTTP server, typically at a URL like
http://127.0.0.1:8000/MySlides.slides.html. citeturn0search3turn0search20
If you want to use a specific reveal.js version hosted on a CDN:
jupyter nbconvert MySlides.ipynb --to slides --reveal-prefix "https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.3.0"
This is useful if your environment does not have reveal.js static files installed locally. citeturn0search3turn0search17
5.1 Fixing “Internal Server Error” when clicking “Export as reveal.js”
If the Notebook menu option gives a 500 Internal Server Error, try the following:
Check the terminal where you launched Jupyter
The full Python traceback usually appears there and will say if the problem is innbconvert, a missing template, or reveal.js paths.Upgrade nbconvert and the notebook package
pip install --upgrade nbconvert notebookOn some setups an old
nbconvertslides template is incompatible with a newer notebook front end.Test from the command line
Run:
jupyter nbconvert MySlides.ipynb --to slidesIf this fails, the problem is purely in
nbconvert, not RISE.Use a CDN reveal-prefix
If the error mentions reveal.js assets that cannot be found, add
--reveal-prefixas shown above so the generated HTML uses hosted reveal.js instead of a local install. citeturn0search3turn0search17Check that the environment is consistent
Sometimes Jupyter is launched from a different Python environment than the one where you installed RISE and nbconvert. Run:
which jupyter jupyter --paths python -m pip show rise nbconvertto make sure everything lives in the same environment.
6. Quick checklist
If you are on Notebook 6 and want RISE inside the notebook:
pip install RISE- Optionally
jupyter-nbextension install rise --py --sys-prefixandenableit. citeturn0search9turn0search11 - Start with
jupyter notebook. - Turn on slideshow toolbar and click the RISE button.
If you are on Notebook 7 and want RISE:
pip install nbclassicpip install RISE- Start with
jupyter nbclassic. - Follow the Notebook 6 steps.
If you are on JupyterLab and want RISE style slides:
pip install jupyterlab-riseorconda install -c conda-forge jupyterlab_rise- Restart JupyterLab.
- Use the jupyterlab-rise commands to start a slideshow.
If you just want HTML reveal.js slides for your website:
- Use
jupyter nbconvert MySlides.ipynb --to slides - Serve or host the generated
.slides.htmlfile. - Use
--reveal-prefixif you prefer a CDN hosted reveal.js.
With this setup you can keep classic RISE behavior for live tutorials and also export static reveal.js decks for your technical blog or conference pages.