voila
Voilà turns Jupyter notebooks into standalone web applications
What it is and what it does
Voilà is a Jupyter extension that transforms notebooks into production-ready web applications. Instead of rendering a notebook as static HTML, Voilà runs a Tornado server that gives each user a dedicated kernel, allowing interactive widgets to execute callbacks in real time. By default, it hides notebook source code and blocks arbitrary code execution from the browser, making it suitable for sharing dashboards and applications without exposing implementation details.
The package integrates with both standalone Jupyter servers and JupyterLab (where a preview extension is automatically installed with pip). It depends on core Jupyter infrastructure—jupyter-server, nbconvert, jupyter-client, nbclient, and others—to handle kernel lifecycle, notebook conversion, and WebSocket communication. Users can serve individual notebooks or entire directories, customize ports and options via command line, and build complex applications using widget libraries like ipywidgets and bqplot.
Use it for:
- Deploy a data analysis notebook as a shareable dashboard without exposing code or requiring users to run Jupyter.
- Build an interactive form or calculator from a notebook with widgets, served over HTTP to end users.
- Create a live monitoring or reporting application that updates in real time as users interact with controls.
- Share a scientific or financial model as a web app, allowing non-technical users to adjust parameters and see results.
- Prototype a web application quickly using notebook-based development before moving to a full web framework.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Voilà converts Jupyter notebooks into standalone web applications with live interactive widgets, serving each user a dedicated kernel while stripping source code and preventing arbitrary code execution by default.
Yes. Voilà is actively maintained, has low install friction, and solves a real problem—turning notebooks into web apps without code exposure. It's well-integrated with JupyterLab, has no known vulnerabilities, and supports modern Python versions. Install it if you need to deploy interactive notebooks as standalone applications or dashboards.
Install
voila on PyPI
pip
pip install voilauv
uv add voilapoetry
poetry add voilaInstalling voila
Before you install
Low friction install with a pure-Python wheel. Active maintenance (last commit 2026-08-03) and broad Python support (3.10–3.14). Depends on 8 core Jupyter packages (jupyter-server, nbconvert, jupyter-client, etc.), all standard ecosystem components.
License in practice
BSD-3-Clause permissive license allows commercial and private use with attribution and liability disclaimer. No restrictions on modification or redistribution.
Quickstart
pip install voila
# Serve a notebook as a standalone app:
voila notebook.ipynb
# Or serve a directory:
voila
Requires a Jupyter notebook file (.ipynb) and a working Jupyter kernel environment; interactive widgets must be defined in the notebook itself.
Verify before relying
- Whether the JupyterLab extension auto-installation works reliably across all JupyterLab 3.0+ versions.
- Performance characteristics and scalability limits for concurrent users on a single Voilà instance.
- Compatibility with custom widget libraries beyond those mentioned (ipywidgets, ipyleaflet, ipyvolume, bqplot, ipympl).
Package facts
| License | BSD License Copyright (c) 2018 Voilà contributors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — jupyter-client, jupyter-core, jupyter-server, jupyterlab-server, nbclient, nbconvert, traitlets, websockets |
| Maintenance | actively maintained — 114 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 202,976/month — #9,640 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: voila-0.5.12-py3-none-any.whl
Keywords: Jupyter, JupyterLab, Voila
Tags
More Dynamic Content packages
MarkupSafe provides a text object that escapes…
permissive · top 100 on PyPI
Jinja2Jinja2 is a templating engine that renders…
permissive · top 100 on PyPI
soupsieveSoupsieve is a CSS selector library designed to…
permissive · top 100 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
FlaskFlask is a lightweight WSGI web application…
permissive · top 1,000 on PyPI
MakoMako compiles Python-embedded templates into…
permissive · top 1,000 on PyPI
jupyter-serverJupyter Server provides the backend services,…
permissive · top 1,000 on PyPI
ipywidgetsipywidgets provides interactive HTML widgets…
permissive · top 1,000 on PyPI
ipylabipylab lets you control JupyterLab's interface…
permissive · top 15,000 on PyPI
anywidgetanywidget lets you build custom interactive…
permissive · top 5,000 on PyPI
solaraSolara is a React-style Python framework for…
permissive · top 15,000 on PyPI
solara-uiSolara is a React-style Python framework for…
permissive · top 15,000 on PyPI
solara-serverSolara-server is a Python web framework that…
permissive · top 15,000 on PyPI
jupyterlite-pyodide-kernelProvides a Python kernel for JupyterLite that…
permissive · top 15,000 on PyPI
jupyter-dashJupyter Dash lets you develop and run Plotly…
permissive · top 15,000 on PyPI
pythreejsPythreejs bridges Python and Three.js to render…
permissive · top 15,000 on PyPI