Usage
Download statistics for 2026-10-27.
PyPI Download Statistics
| # | napari | npe2 | napari-plugin-manager |
|---|---|---|---|
| Last day | 5606 | 5521 | 2193 |
| Last week | 30607 | 32501 | 11024 |
| Last month | 119009 | 128657 | 51102 |
| Total | 7753022 | 6813659 | 1432109 |
Conda Download Statistics
| # | napari | npe2 | napari-plugin-manager |
|---|---|---|---|
| Total | 296068 | 201852 | 88873 |
| Last version | 2885 | 1939 | 848 |
Bundled App Downloads
| Windows | macOS | Linux |
|---|---|---|
| 17206 | 9142 | 2753 |
Forum Engagement
There are 1461 topics on forum.image.sc with the napari tag.
Total engagement: 938 users.
22 topics active since 2026-04-30 with 36 users.
Download Maps
GitHub Statistics
Activity Overview
Napari issues activity
Cumulative activity on the repository.
Napari pull requests activity
Cumulative PR activity.
Napari GitHub Stars
Current star count.
Napari Downloads per Day
Daily download form conda
Version downloaded from conda in last 30 days
Basic GitHub Statistics (2026-10-27)
| Name | Value |
|---|---|
| Stars | 2787 |
| Active contributors | 59 |
| Average PR per day | 1.29 |
| Total PRs | 5787 |
| Merged PRs | 4771 |
| PRs closed without merge | 807 |
| Open PRs | 209 |
| Merged PRs since 2026-04-30 | 453 |
| Open PRs since 2026-04-30 | 232 |
| New features since 2026-04-30 | 19 |
| New enhancements since 2026-04-30 | 83 |
| Bug fixes since 2026-04-30 | 109 |
| Issues closed since 2026-04-30 | 195 |
| Issues opened since 2026-04-30 | 214 |
Contributor Activity
Top Contributor Metrics
All Time
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 1013 | 883 | 105 | 25 |
| tlambert03 | 664 | 536 | 2 | 126 |
| sofroniewn | 485 | 482 | 0 | 3 |
| psobolewskiPhD | 403 | 293 | 101 | 9 |
| brisvag | 403 | 365 | 29 | 9 |
| jni | 298 | 227 | 70 | 1 |
| Carreau | 274 | 255 | 1 | 18 |
| TimMonko | 271 | 159 | 106 | 6 |
| melissawm | 179 | 62 | 110 | 7 |
| DragaDoncila | 164 | 110 | 31 | 23 |
Since 2026-04-30
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 118 | 78 | 39 | 1 |
| Aniketsy | 114 | 111 | 3 | 0 |
| brisvag | 112 | 100 | 8 | 4 |
| TimMonko | 103 | 51 | 48 | 4 |
| matthiasschabel | 50 | 50 | 0 | 0 |
| psobolewskiPhD | 45 | 41 | 3 | 1 |
| ghostiee-11 | 17 | 17 | 0 | 0 |
| jni | 13 | 7 | 6 | 0 |
| carlosmariorr | 11 | 8 | 2 | 1 |
| jacopoabramo | 10 | 9 | 1 | 0 |
All Time
| PR coauthor | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 6370 | 5896 | 332 | 142 |
| tlambert03 | 5301 | 4456 | 3 | 842 |
| brisvag | 4730 | 4461 | 160 | 109 |
| sofroniewn | 3113 | 3096 | 0 | 17 |
| psobolewskiPhD | 2109 | 1480 | 556 | 73 |
| TimMonko | 2095 | 1349 | 687 | 59 |
| jni | 1906 | 1623 | 274 | 9 |
| andy-sweet | 1606 | 1566 | 38 | 2 |
| pwinston | 1470 | 1470 | 0 | 0 |
| DragaDoncila | 1228 | 952 | 137 | 139 |
Since 2026-04-30
| PR coauthor | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| brisvag | 1442 | 1352 | 66 | 24 |
| TimMonko | 862 | 457 | 368 | 37 |
| Czaki | 585 | 420 | 158 | 7 |
| Aniketsy | 421 | 410 | 11 | 0 |
| matthiasschabel | 196 | 196 | 0 | 0 |
| psobolewskiPhD | 160 | 153 | 3 | 4 |
| ghostiee-11 | 156 | 156 | 0 | 0 |
| jacopoabramo | 109 | 105 | 4 | 0 |
| kephale | 102 | 102 | 0 | 0 |
| carlosmariorr | 84 | 77 | 2 | 5 |
All Time
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| tlambert03 | 664 | 536 | 2 | 126 |
| sofroniewn | 485 | 482 | 0 | 3 |
| Carreau | 274 | 255 | 1 | 18 |
| andy-sweet | 146 | 140 | 4 | 2 |
| Aniketsy | 125 | 121 | 4 | 0 |
| lucyleeow | 108 | 69 | 32 | 7 |
| dalthviz | 107 | 100 | 6 | 1 |
| goanpeca | 99 | 97 | 1 | 1 |
| dstansby | 98 | 81 | 16 | 1 |
| pwinston | 85 | 85 | 0 | 0 |
Since 2026-04-30
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Aniketsy | 114 | 111 | 3 | 0 |
| matthiasschabel | 50 | 50 | 0 | 0 |
| ghostiee-11 | 17 | 17 | 0 | 0 |
| jacopoabramo | 10 | 9 | 1 | 0 |
| utsab345 | 8 | 8 | 0 | 0 |
| omkar-334 | 7 | 2 | 1 | 4 |
| MargotCh | 6 | 6 | 0 | 0 |
| Revathyvenugopal162 | 5 | 5 | 0 | 0 |
| sdiebolt | 5 | 4 | 1 | 0 |
| lettyz3 | 5 | 5 | 0 | 0 |
All Time
| PR reviewer | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| sofroniewn | 4432 | 4424 | 1 | 7 |
| jni | 3753 | 3441 | 290 | 22 |
| Czaki | 3735 | 3425 | 236 | 74 |
| brisvag | 2801 | 2526 | 200 | 75 |
| tlambert03 | 2401 | 2228 | 0 | 173 |
| psobolewskiPhD | 2383 | 1597 | 738 | 48 |
| andy-sweet | 1168 | 1144 | 21 | 3 |
| TimMonko | 1130 | 767 | 315 | 48 |
| DragaDoncila | 920 | 646 | 185 | 89 |
| Carreau | 873 | 842 | 9 | 22 |
Since 2026-04-30
| PR reviewer | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| brisvag | 705 | 591 | 84 | 30 |
| TimMonko | 376 | 249 | 109 | 18 |
| Czaki | 346 | 302 | 34 | 10 |
| psobolewskiPhD | 332 | 281 | 49 | 2 |
| Aniketsy | 242 | 213 | 29 | 0 |
| jacopoabramo | 148 | 138 | 10 | 0 |
| jni | 98 | 68 | 30 | 0 |
| DragaDoncila | 49 | 25 | 11 | 13 |
| carlosmariorr | 37 | 33 | 4 | 0 |
| ghostiee-11 | 31 | 31 | 0 | 0 |
Plugin Statistics
| Name | Value |
|---|---|
| Plugin count | 692 |
| Total plugin downloads (PyPI) | 65849450 |
| Total plugin downloads (Conda) | 3990755 |
| Plugins above 1500 downloads (last month) | 60 |
| Actively developed plugins (since 2026-04-30) | 197 |
Plugins with more than 1500 downloads last month are considered actively used.
Excluded: skan, PartSeg
Repository Activity
From 2026-10-19 to 2026-10-25
Merged old PRs
- 📗 napari/napari#7827 Add grid overlay by brisvag
- 📗 napari/napari#8017 2D/3D Crosshair overlay for cursor position by brisvag
- 📗 napari/napari#9015 Prepare track columns data by Olusesan
- 📗 napari/docs#1074 Document single-plane projection for points layer by omkar-334
- 📗 napari/napari#9319 The (almost) Everything example by TimMonko
- 📗 napari/napari#9361 Deliver key auto-repeat by default, suppressing only hold-semantics bindings by matthiasschabel
- 📗 napari/napari#9418 Performance [Shapes]: don't draw empty sub-visuals by matthiasschabel
- 📗 napari/docs#1132 Prepare tracks data docs by Olusesan
- 📗 napari/napari#9513 Fix and unify mouse callback generator machinery by brisvag
- 📗 napari/napari#9524 Use global font size for layers by brisvag
- 📗 napari/napari#9526 Allow plugins widgets to specify dock area by brisvag
- 📗 napari/napari#9565 Keep colormap, contrast limits and blending when a tiled image changes tile count by matthiasschabel
- 📗 napari/napari#9564 Fix `Shapes.data = (data, shape_type)` failing when the shape count changes by matthiasschabel
- 📗 napari/napari#9593 Add missed directories to circelci cache by Czaki
- 📗 napari/napari#9620 Fix position and clipping of dims slider label widgets by TimMonko
- 📗 napari/napari#9615 Fix a few font sizes, adjust some padding by brisvag
- 📗 napari/docs#1156 Move past workshop pages to napari.org/workshops by TimMonko
- 📗 napari/napari#9646 Add Grid toggle action by brisvag
- 📗 napari/napari#9656 Make Shapes path and polygon tests deterministic by i-ymka
- 📗 napari/napari#9672 Use mocked plugin manager with sample plugin from npe2 by Czaki
- 📗 napari/napari#9699 Fix polygon lasso error when Enter or Escape ends a drag by matthiasschabel
- 📗 napari/napari#9696 fix: accept None for Cursor.viewbox over an empty grid viewbox by matthiasschabel
- 📗 napari/napari#9707 Add tabify default for plugin widgets by brisvag
- 📗 napari/docs#1165 Add release notes for v0.10.0rc0 by brisvag
- 📗 napari/napari#9727 Apply `QCheckBox.stateChanged` to `QCheckBox.toggled` migration by Czaki
- 📗 napari/napari#9725 Change all `exec_` to `exec` for Qt objects by Czaki
- 📗 napari/napari#9723 Fix the Qt enum usage by Czaki
- 📗 napari/napari#9719 TYP: add type hints in `_proxies.py` , `_migrations.py` , `_fields.py` and `_base.py` by Aniketsy
- 📗 napari/napari#9735 Use vispy text scaling for smooth text calculations by TimMonko
- 📗 napari/napari#9731 fix: timeout of notifications in a stack and after regain of window focus (#9560) by KRiedmiller
- 📗 napari/docs#1169 Add icons to persistent sidebar links by TimMonko
- 📗 napari/docs#1168 Reorganize and spruce up the community pages by TimMonko
- 📗 napari/napari#9738 Fix screenshot with scale!=1 by brisvag
- 📗 napari/napari#9736 Update `certifi`, `hypothesis`, `npe2`, `pillow`, `platformdirs`, `pydantic-settings`, `superqt`, `tifffile`, `virtualenv`, `wrapt` by napari-bot
- 📗 napari/napari#9747 Effectively revert PR #8725 so viewer shows when files are opened from CLI by psobolewskiPhD
- 📗 napari/napari#9746 [perf] Defer the expensive import from scipy.spatial.transform until ndisplay=3 by psobolewskiPhD
- 📗 napari/napari#9742 Use QEnumComboBox for depiction control by Lyinno
- 📗 napari/napari#9749 fix: `axis_labels` is no longer set in the viewer dims after layer creation in `imshow` by FelipeCybis
Solved old Issues
- 📗 napari/napari#4996 Axis Grid/Frame in 3D by manerotoni
- 📗 napari/napari#7960 [Shapes] Random data in Shapes test can cause test failure with triangulation by psobolewskiPhD
- 📗 napari/napari#9276 Auto-repeat: `repeatables` set is not normalised for `action_manager`-sourced shortcuts (str vs KeyBinding) by matthiasschabel
- 📗 napari/napari#9560 Close multiple notifications after delay by KRiedmiller
- 📗 napari/napari#9612 Font size preference does not apply to some parts of the viewer by TimMonko
- 📗 napari/napari#9729 Investigate: when opening image from CLI the "fit" of the canvas is wrong by psobolewskiPhD
- 📗 napari/napari#9745 `axis_labels` from xarray are overridden when using `napari.imshow` by FelipeCybis
- 📗 napari/napari#9741 Vertices in surface layer does not reorder correctly in 3D by FelipeCybis
New PRs
- 📖 napari/napari#9750 [perf] Refactor coarsest level materializer to the slice request by psobolewskiPhD
- 📗 napari/napari#9755 Crosshair Overlay colored lines like scene/canvas axes by TimMonko
- 📖 napari/napari#9753 [pre-commit.ci] pre-commit autoupdate by pre-commit-ci[bot]
- 📗 napari/napari#9752 Fix `canvas_to_world` calculation with grid spacing by TimMonko
- 📗 napari/napari#9751 Fix dims ordering and vertices slicing when only vertex dimensions are displayed by FelipeCybis
- 📗 napari/docs#1172 [pre-commit.ci] pre-commit autoupdate by pre-commit-ci[bot]
- 📖 napari/napari#9767 Raise a clear error for empty layer data by chirag-433
- 📖 napari/napari#9766 Allow private classes to generate private `_add_*` methods by ClementCaporal
- 📗 napari/napari#9765 fix: update return_annotation in create_func to use cls_name rather than cls by ClementCaporal
- 📕 napari/napari#9760 Fix thick slicing with a negative scale by lettyz3
- 📗 napari/napari#9759 fix: preserve thick-slice margins under scale flips by sdiebolt
- 📖 napari/napari#9758 Warn and fall back when a triangulation backend is unavailable by tongwentao
- 📗 napari/docs#1175 Make the nightly link check report its results by lundybernard
- 📖 napari/docs#1173 Missing overlays in docs by brisvag
- 📖 napari/napari#9770 Move package data from MANIFEST.in to pyproject.toml by KallineB
- 📖 napari/napari#9769 chore: remove superseded code by mlaurabs
- 📖 napari/napari#9768 Replace editable axis label in dims slider with read-only label by KallineB
- 📖 napari/napari#9776 Cancel all pending notifications on close of napari main window. by Czaki
- 📖 napari/napari#9775 Set minimum version of pyside6 to 6.8.3 by Czaki
- 📖 napari/napari#9774 Use weakref for qt notification instances by brisvag
- 📖 napari/napari#9773 Use tuple for clims and clims range by brisvag
- 📗 napari/napari#9772 Use pooch mocking machinery to fetch scikit-mage data from our server by Czaki
- 📖 napari/docs#1178 Use data.napari.org for nilearn data for prefetch step by Czaki
- 📖 napari/docs#1177 Typing guide: add code snippets for common patterns and more resources by zelihaguven
- 📗 napari/docs#1176 Mock `exec` in place of `exec_` by Czaki
- 📖 napari/napari#9783 Roll our own MouseEvent by brisvag
- 📖 napari/napari#9782 TYP: add reusable Vector1D/Matrix2D type aliases by Aniketsy
- 📖 napari/napari#9781 Fix cursor position calculation for 2d data in 3d scene by brisvag
- 📖 napari/napari#9780 [perf] Avoid xarray import (pulls in pandas) in ScalarField construction by psobolewskiPhD
- 📖 napari/napari#9779 Apply missing changes of PyQt5 drop by Czaki
- 📖 napari/napari#9778 Refactor brush overlays and deprecate Cursor by brisvag
- 📖 napari/napari#9777 Patch source of nilearn data in test run by Czaki
- 📗 napari/docs#1184 Add Aniket and Jacopo to the core team section by TimMonko
- 📖 napari/docs#1182 Update release notes v0.10.0rc1 by brisvag
- 📖 napari/docs#1181 Drop PyQt5 in docs by Czaki
- 📖 napari/docs#1180 Change linkcheck to use pyqt6 instead of pyqt5 by Czaki
- 📖 napari/napari#9787 Show feature values in Shapes layer tooltip by Rupeshhsharma
- 📖 napari/docs#1185 Proposal: move release notes generation into docs repo by jni
- 📖 napari/napari#9788 ci(deps): bump certifi from 2026.10.18 to 2026.10.19 in /resources by dependabot[bot]
New Issues
- 📖 napari/napari#9756 Segmentation fault in napari 0.9.2 on Ubuntu 20.04 (Qt/Fontconfig rendering) by chuddy-ibk
- 📖 napari/napari#9754 Develop a consistent paradigm for sharing height for side dock widgets by matthiasschabel
- 📗 napari/napari#9764 IndexError when slicing 3D surfaces with extra dimensions in `ndisplay==2` along their spatial axis by FelipeCybis
- 📗 napari/napari#9763 create_func fails for locally defined layer class due to invalid generated return annotation by ClementCaporal
- 📖 napari/napari#9762 Adding zero-sized Image or Labels arrays raises low-level errors by chirag-433
- 📖 napari/napari#9761 Clarify the private method name for`viewer_model.add_*` in create_func by ClementCaporal
- 📗 napari/napari#9757 Negative scale causes blank averaged slices at fractional slice positions by sdiebolt
- 📖 napari/docs#1174 Dead links in the testing guide by lundybernard
- 📖 napari/napari#9771 screenshot tests fail on hidpi display by brisvag
- 📖 napari/docs#1179 Improve linkchecking action by TimMonko
- 📖 napari/napari#9786 `pyrefly` cannot check `pint` types by Aniketsy
- 📖 napari/napari#9785 `Affine` with an integer matrix crashes on integer coordinates by Aniketsy
- 📖 napari/napari#9784 `TransformChain` does not disconnect a transform that gets replaced by Aniketsy
- 📖 napari/docs#1183 Improve exposure of info about camera orientation and handedness by TimMonko
Updated old PRs
- 📖 napari/docs#1157 Prefetch only when needed and use persistent cache across runs by TimMonko
- 📖 napari/napari#8987 Theme inversion by brisvag
- 📖 napari/napari#9051 Start using selection overlay in Points by brisvag
- 📖 napari/napari#9083 Separate tiling from nontiling overlays by brisvag
- 📖 napari/napari#9157 TYP: add type hints in `_layer_delegate.py` by Aniketsy
- 📖 napari/napari#9237 TYP: add type hints in `_testsupport.py` by Aniketsy
- 📖 napari/napari#9241 TYP: add type hints in `_evented_list.py` by Aniketsy
- 📖 napari/napari#9253 fix(typing): annotate `napari/utils/key_bindings.py` by jacopoabramo
- 📖 napari/napari#9438 Refactor histogram to more closely follow architecture by brisvag
- 📖 napari/napari#9465 Fix logger from console 2 by brisvag
- 📖 napari/napari#9481 Improve disconnect mechanism to work recursively and on psygnal by brisvag
- 📖 napari/napari#9498 Hide projection mode combobox when appropriate by brisvag
- 📖 napari/napari#9528 Fix serialization for ViewerModel by brisvag
- 📖 napari/napari#9539 TYP: add type hints in `transforms.py` by Aniketsy
- 📖 napari/napari#9543 TYP: add type hints in `_magicgui.py` by Aniketsy
- 📖 napari/napari#9546 TYP: add type hints in `stack_utils.py` by Aniketsy
- 📖 napari/napari#9549 TYP: add type hints in `_multiscale_data.py` by Aniketsy
- 📖 napari/napari#9556 TYP: add type hints in `_shapes_mouse_bindings.py` by Aniketsy
- 📖 napari/napari#9558 TYP: add type hints in `evented_model.py` by Aniketsy
- 📖 napari/napari#9569 TYP: add type hints in `points.py` by Aniketsy
- 📖 napari/napari#9584 Rasterize paths that leave their plane as nD lines by ghostiee-11
- 📖 napari/napari#9595 Move reporting of synchronization of bot repository to a separate job by Czaki
- 📖 napari/napari#9653 test(examples): rerun example tests on transient network errors by jacopoabramo
- 📖 napari/napari#9659 feat(utils): add open_cached_zarr to cache remote zarr chunks on disk by jacopoabramo
- 📖 napari/napari#9669 Refactor polygon overlay to follow architecture and generalize by brisvag
- 📖 napari/napari#9677 TYP: add type hints in `viewer.py` by Aniketsy
- 📖 napari/napari#9679 TYP: add type hints in `view_layers.py` by Aniketsy
- 📖 napari/napari#9681 Remove mouse_over_canvas (alternative without cursor.canvas_position) by brisvag
- 📖 napari/napari#9693 Fix saving multiscale layers with the built-in writer by lettyz3
- 📖 napari/napari#9701 Add detection of deprecated properties, create warning in EventedModel by Czaki
- 📖 napari/napari#9702 Viewer bounding box overlay by brisvag
- 📖 napari/napari#9716 TYP: add type hints in `geometry.py` and `_typed.py` by Aniketsy
- 📖 napari/napari#9717 TYP: add type hints in `utils/colormaps` by Aniketsy
- 📖 napari/napari#9732 Use mouse event mechanism for status update by brisvag
- 📖 napari/napari#9733 Implement FOV-aware view direction on the napari side by brisvag
- 📖 napari/napari#9739 Properly handle font sizes on rescale by brisvag
Updated old Issues
- 📖 napari/napari#8241 Improvements to attenuated MIP by jni
- 📖 napari/napari#9300 Remove (plausibly) dead code by jacopoabramo
- 📖 napari/napari#9354 `export_figure` crops axis display by jo-mueller
- 📖 napari/napari#9489 Consider allowing slice-based default contrast for numpy arrays by psobolewskiPhD
- 📖 napari/docs#1166 Improve Typing Guide: Tips and Resources by TimMonko
- 📖 napari/napari#9356 Remove `QLineEdit` from the `QtDimSliderWidget` due to `Dims.axis_labels` setter deprecation. by carlosmariorr
- 📖 napari/napari#9464 new histogram breaks when layer controls are floating by Mo-Sc
- 📖 napari/napari#9384 If possible, move MANIFEST.in into pyproject.toml by TimMonko
- 📖 napari/napari#9536 [perf] Audit thumbnail handling code for Image/Labels by psobolewskiPhD
- 📖 napari/napari#8584 Very slow startup of the bundled app on Windows 11 by cnstt
- 📖 napari/napari#8999 Re-think import benchmark and run it more regularly by psobolewskiPhD
Source data available here.