nbformat
The Jupyter Notebook format
Decision gist · record as of 2026-08-14
Yes. nbformat is the canonical library for notebook format handling in the Jupyter ecosystem, with no known vulnerabilities, low install friction, active maintenance, and permissive licensing. Install it if you need to read, write, or validate Jupyter notebooks programmatically.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Low friction: pure Python wheel, four lightweight runtime dependencies (fastjsonschema, jsonschema, jupyter-core, traitlets).
- Active maintenance with a release 8 days ago and last commit on 2026-08-10.
License · maintenance · safety
permissive license (permissive) — BSD 3-Clause (permissive): you can use, modify, and distribute nbformat freely in commercial and private projects, provided you retain the copyright notice and disclaimer.
last release 2026-08-06 (8 days) · last repo commit 2026-08-10 · 311 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 83,736,749 downloads/mo, #400 on PyPI
Alternatives
Verify before relying
pip install nbformat
import nbformat
nb = nbformat.read('notebook.ipynb', as_version=4)
nbformat.write(nb, open('output.ipynb', 'w'))- Whether the package supports reading/writing all historical notebook format versions or only recent ones.
- Performance characteristics when handling large notebooks or batch processing many files.
What it is and what it does
nbformat is the reference implementation of the Jupyter Notebook format specification, providing Python APIs to read, write, and validate notebook files. It handles the serialization and deserialization of .ipynb files—the JSON-based format used by Jupyter notebooks—and includes a JSON Schema for format validation. The package depends on fastjsonschema for efficient validation by default, with an option to use jsonschema instead via the NBFORMAT_VALIDATOR environment variable.
The library is essential infrastructure for any tool that needs to programmatically work with Jupyter notebooks: converting notebooks to other formats, extracting content, modifying metadata, or validating notebook structure. It has been actively maintained since 2015 and is part of the core Jupyter ecosystem, supporting current Python versions (3.10 through 3.14).
Use it for
- Parse and extract cell content or metadata from .ipynb files for analysis or reporting.
- Programmatically generate or modify Jupyter notebooks without opening the Jupyter UI.
- Validate notebook files against the official Jupyter schema before processing or publishing.
- Convert notebooks to other formats (e.g., HTML, PDF, Markdown) by reading and transforming the notebook structure.
- Build tools that aggregate, merge, or organize multiple notebooks in batch workflows.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
nbformat is the canonical library for notebook format handling in the Jupyter ecosystem, with no known vulnerabilities, low install friction, active maintenance, and permissive licensing. Install it if you need to read, write, or validate Jupyter notebooks programmatically.
Install
nbformat on PyPI
Before you install
Low friction: pure Python wheel, four lightweight runtime dependencies (fastjsonschema, jsonschema, jupyter-core, traitlets). Active maintenance with a release 8 days ago and last commit on 2026-08-10.
Requires Python 3.10 or later.
License in practice
BSD 3-Clause (permissive): you can use, modify, and distribute nbformat freely in commercial and private projects, provided you retain the copyright notice and disclaimer.
Quickstart
pip install nbformat
import nbformat
nb = nbformat.read('notebook.ipynb', as_version=4)
nbformat.write(nb, open('output.ipynb', 'w'))
Verify before relying
- Whether the package supports reading/writing all historical notebook format versions or only recent ones.
- Performance characteristics when handling large notebooks or batch processing many files.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packagesfastjsonschemajsonschemajupyter-coretraitlets |
| Maintenance | Actively maintained 8 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 83,736,749 / month, #400 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersIntended Audience :: Science/ResearchIntended Audience :: System AdministratorsLicense :: OSI Approved :: BSD LicenseProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14 |
Evidence: nbformat-5.11.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “jupyter notebook format parser”
- nbformatnbformat provides Python APIs and the reference implementation for…
- myst-nbSphinx extension that parses and converts Jupyter Notebooks (.ipynb…
- nbsphinxnbsphinx is a Sphinx extension that parses Jupyter Notebook files…
Give your agent the search over MCP, or paste the wish link into any chat.
Similar packages
nbconvert converts Jupyter notebooks (.ipynb files) to static formats including HTML, LaTeX, PDF, Markdown, ReStructuredText, Reveal.js, and executable scripts via command-line or programmatic interface.
Install it if you need to convert notebooks to static formats or automate notebook publishing.
nbtoolbelt provides command-line and library tools for validating, inspecting, cleaning, executing, splitting, and concatenating Jupyter notebooks, plus a specialized tool for creating exercise notebooks with fill-in-the-blank sections.
Install it if you regularly work with multiple notebooks, need to validate or batch-process them, or want to automate notebook-based workflows (especially in…
A pytest plugin that treats Jupyter notebooks as test files, executing each cell and validating that outputs match the stored results in the .ipynb file.
However, note that the project is aging (last release March 2024)—verify compatibility with your current pytest and Jupyter versions before relying on it in new…
Sphinx extension that parses and converts Jupyter Notebooks (.ipynb files) directly into Sphinx documentation, built on the MyST markdown parser.
Jupyter Notebook is a web-based interactive computing environment that lets you create and run code, visualizations, and documentation in a single browser-based interface, supporting multiple programming languages through pluggable kernels.
Install it if you need an interactive notebook environment for exploration, education, or reproducible research.
nbclient executes Jupyter notebooks programmatically in different contexts, including the command line, by running notebook cells and capturing their outputs.