napari
n-dimensional array viewer in Python
What it is and what it does
napari is a standalone image viewer and analysis platform built on Qt, vispy, and the scientific Python stack (numpy, scipy, scikit-image). It loads and displays n-dimensional arrays as interactive 2D or 3D slices, supporting six layer types—Image, Labels, Points, Vectors, Shapes, and Surface—each with its own visualization and interactivity model. You can layer multiple data types, adjust properties in real time, and use keyboard shortcuts and mouse functions to interact with the data.
It's designed for researchers and educators who need to browse and annotate large multidimensional datasets without writing custom visualization code. napari runs as a standalone GUI application or can be embedded in Jupyter notebooks and IPython shells, with bidirectional communication between the viewer and Python kernel. The plugin system (via npe2 and napari-plugin-engine) allows extending functionality with custom shortcuts, key bindings, and domain-specific tools.
Use it for:
- Browse and slice 3D microscopy or medical imaging data interactively without writing custom rendering code.
- Annotate segmentation masks, points, or shapes on large multidimensional images for training data.
- Visualize and explore scientific arrays in real time from Jupyter notebooks or IPython shells.
- Build domain-specific image analysis workflows by extending napari with custom plugins and key bindings.
- Compare multiple image layers side-by-side with synchronized navigation and property adjustment.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
napari is an interactive, multi-dimensional image viewer for Python that lets you browse, annotate, and analyze large n-dimensional images through a Qt-based GUI with GPU-accelerated rendering.
Yes, if you work with multidimensional scientific images and want an interactive viewer without building custom GUI code. The active maintenance, permissive license, and low install friction make it a solid choice. Install into a dedicated virtual environment to manage the 36 dependencies cleanly. Not recommended if you need headless batch processing or have minimal GPU/display infrastructure.
Install
napari on PyPI
pip
pip install napariuv
uv add naparipoetry
poetry add napariInstalling napari
Before you install
Low install friction with a wheel distribution. Active maintenance—last commit 2026-08-14, release 31 days ago. Depends on 36 runtime packages including heavy scientific libraries and Qt/GPU rendering; installation time and disk footprint will be substantial but manageable in a dedicated environment.
License in practice
BSD-3-Clause is permissive; you can use, modify, and distribute napari freely in commercial or private projects provided you include the license and copyright notice.
Quickstart
# Install
pip install "napari[all]"
# Interactive use (IPython/Jupyter)
import napari
viewer, layers = napari.imshow(data, channel_axis=1, ndisplay=3)
# Script use
napari.run() # start the event loop
Requires Python >=3.11. Qt backend (PyQt6 or PySide6) must be installed; the [all] extra handles this. GPU rendering via PyOpenGL requires a compatible graphics driver.
Verify before relying
- Whether the 36 runtime dependencies resolve cleanly in all common environments without version conflicts.
- Performance characteristics and memory footprint when working with very large multidimensional datasets.
- Plugin ecosystem maturity and availability of third-party extensions for domain-specific workflows.
- Specific example datasets and workflows supported by the imshow() and run() API.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 36 — app-model, cachey, certifi, dask, imageio, jsonschema, lazy_loader, magicgui, napari-console, napari-plugin-engine, napari-svg, npe2, numpy, pandas, Pillow, pint, platformdirs, psutil, psygnal, pydantic, pygments, pydantic-extra-types, pydantic-settings, PyOpenGL, pywin32, PyYAML, qtpy, scikit-image, scipy, superqt |
| Maintenance | actively maintained — 31 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 189,481/month — #9,927 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: napari-0.8.0-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
napari-consoleAdds an interactive Python console panel to…
permissive · top 15,000 on PyPI
pycat-napariPyCAT-Napari is a napari-based desktop…
permissive · top 15,000 on PyPI
napari-svgNapari-svg is a plugin that exports image data…
permissive · top 15,000 on PyPI
napari-plugin-managerProvides a graphical interface for discovering,…
permissive · top 15,000 on PyPI
vispyVisPy is a GPU-accelerated 2D/3D visualization…
permissive · top 5,000 on PyPI
npe2npe2 is a plugin engine and management system…
permissive · top 15,000 on PyPI
napari-plugin-engineA plugin discovery and hook-calling system for…
permissive · top 15,000 on PyPI
bermudaProvides Rust-accelerated triangulation…
permissive · top 15,000 on PyPI
silxsilx provides Python tools for reading,…
permissive · top 15,000 on PyPI
scikit-imagescikit-image provides algorithms for image…
permissive · top 1,000 on PyPI