JupyterLite: the Jupyter server, reimplemented as files your browser can serve
Wasm powered Jupyter running in the browser đź’ˇ
At a glance
- What is it?
- JupyterLite is a Wasm powered JupyterLab distribution that runs entirely in the browser, built from JupyterLab components and extensions, offering Pyodide and Xeus Python kernels in Web Workers, storage in IndexedDB or localStorage, and deployment as a cacheable static site with no application server. It is a Project Jupyter Frontends subproject, currently at 0.8.5 stable with a 0.9 alpha alongside.
- Who is it for?
- Use JupyterLite when computing should reach people who cannot install anything, students on locked down machines, tutorial readers, embedded demonstrations inside documentation, since a static site with a Web Worker kernel is the lightest possible delivery of real Python. Use full JupyterLab or Notebook when the work needs host filesystem access, heavy libraries beyond Pyodide's wheel set, or long lived sessions beyond the browser.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The Jupyter server, dissolved into a static site
JupyterLite is a JupyterLab distribution that runs entirely in the browser, built from the ground up using JupyterLab components and extensions, and its reason to exist is stated as a reboot of several attempts at a full static Jupyter distribution without having to start the Python Jupyter Server on the host machine. The goal is a lightweight computing environment accessible in a matter of seconds with a single click, in a web browser, without installing anything. It is part of Project Jupyter's Frontends subproject rather than an outsider imitation, and it works with both the JupyterLab interface and the Jupyter Notebook interface, served from the project's own hosted try pages. The honest caveat sits in the status section, not all features available in JupyterLab and the Classic Notebook will work, but many do.
Two Python kernels, both in Web Workers
Python execution arrives through two kernel projects, both running in a Web Worker so computation does not block the interface. Pyodide, the CPython compiled to WebAssembly with the scientific stack, is provided by the jupyterlite-pyodide-kernel package, and Xeus Python, the C++ based kernel from the xeus family, through jupyterlite-xeus. The split matters because the kernels have different package ecosystems and tradeoffs, and the architecture treats them as swappable components of the distribution rather than baked in choices. Basic session and kernel management allows multiple kernels running at the same time, and Code Consoles are supported for the scratch computation workflow JupyterLab users expect.
Your notebooks live in IndexedDB
Persistence is browser native, users view hosted example notebooks and other files, then edit, save and download from the browser's IndexedDB or localStorage, so the static site gains a private filesystem without any backend. Settings persistence follows the same pattern, covering both JupyterLab and Lite core settings and federated extensions, so a customized environment survives reloads. The storage choice has the usual browser caveats attached, data is per browser profile and can be evicted, but within those limits the editing experience matches what users expect from a notebook, files open, change and save, and can be exported back out as downloads at any time.
Static HTTP, cacheable, embeddable
Deployment is where the design pays off, JupyterLite is served via well-cacheable static HTTP or HTTPS, locally or on most static web hosts, requires no dedicated application server, much less a container orchestrator, and is embeddable within larger applications. Building a custom JupyterLite website with custom extensions and packages is documented as a couple of minutes work through the quickstart deploy guide, and page configuration is fine grained, including reuse of federated JupyterLab extensions. For documentation sites, tutorials and internal tools, the operational surface is a directory of static files behind any CDN, which is as close to zero cost as serving interactive computing gets.
The visualization libraries that actually work
Interactive visualization is called out as supported for altair, bqplot, ipywidgets, matplotlib and plotly, the libraries that make notebook output interactive rather than static images. The demo site's dependency list shows how far this reaches, folium and ipyleaflet for maps, ipycanvas and ipympl for custom and matplotlib drawing, ipycytoscape for graphs, ipyvue and ipyvuetify for Vue based widget sets, seaborn and vega-datasets for statistical work, plus JupyterLab extensions like fasta and geojson viewers, a guided tour and the p5 kernel for creative coding. Each of those running under WebAssembly in a worker is a small compatibilty achievement, and together they are what makes the browser distribution feel like real Jupyter rather than a demo.
Six apps and a bag of remixable packages
The repository is explicitly a collection of packages that can be remixed in a variety of ways to create new applications and distributions, with most packages focused on providing server-like components that run in the browser, managing kernels, files and settings, so existing JupyterLab extensions and plugins work out of the box. The app workspaces make the remix concrete, consoles, edit, lab, notebooks, repl and tree, six prebuilt interfaces for different workflows, from the full lab to a bare REPL. The Python side ships as jupyterlite-core and jupyterlite built with hatch, the TypeScript side is a Yarn workspace monorepo built with jlpm, and typedoc plus a Sphinx pipeline document both halves.
Only two releases supported at a time
The version compatibility table is unusually disciplined, mapping each core release to the bundled JupyterLab and Notebook versions, 0.7.0 with JupyterLab 4.5.0 and Notebook 7.5.0, 0.6.0 with 4.4.3 and 7.4.3, both supported, and everything from 0.1.0 through 0.5.0 explicitly unsupported. The note underneath states the policy, only the last two releases are actively supported. Current activity is brisk, v0.8.4 on 2026-09-22, the v0.9.0a2 alpha on 2026-09-24, v0.8.5 on 2026-09-28, with the last push 2026-09-25. The related section credits the lineage, p5-notebook, jyve, Starboard Notebook, Basthon and the Notebook.link platform built on JupyterLite, the prior art a reboot learns from.
Editorial conclusion
Use JupyterLite when computing should reach people who cannot install anything, students on locked down machines, tutorial readers, embedded demonstrations inside documentation, since a static site with a Web Worker kernel is the lightest possible delivery of real Python. Use full JupyterLab or Notebook when the work needs host filesystem access, heavy libraries beyond Pyodide's wheel set, or long lived sessions beyond the browser. Before building on it, check the version compatibility table, only the last two core releases are supported, verify the libraries you need are among those that work in WebAssembly, and remember the project's own caveat that not all JupyterLab and Classic Notebook features work, though many do.
Frequently asked questions
What is Jupyter Lite?
JupyterLite is a JupyterLab distribution that runs entirely in the browser, built from JupyterLab components and extensions, powered by WebAssembly with Pyodide and Xeus Python kernels in Web Workers. It is a Project Jupyter Frontends subproject requiring no server or installation.
Does JupyterLite execute in the browser?
Yes, execution happens entirely in the browser, with Python kernels such as Pyodide and Xeus Python running in Web Workers, supporting multiple simultaneous kernels and code consoles. Notebooks and files are stored in the browser's IndexedDB or localStorage.
Is Jupyter Lite a static website?
Yes, it is served via well-cacheable static HTTP or HTTPS from local hosting or most static web hosts, with no dedicated application server or container orchestrator required, and it can be embedded within larger applications.
how to use jupyterlite?
Open the hosted try pages for the JupyterLab or Jupyter Notebook interface and start computing immediately, or build your own JupyterLite website with custom extensions and packages in a few minutes following the quickstart deploy guide, then serve the static output from any web host.
What is the difference between JupyterLite and Jupyter Notebook?
Jupyter Notebook requires the Python Jupyter Server on the host machine, while JupyterLite reimplements the server-like components in the browser, managing kernels, files and settings client side with no server. JupyterLite also works with the Notebook 7 interface, but not all JupyterLab and Classic Notebook features are available.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/jupyterlite-jupyterlite)