Usage
Download statistics for 2026-10-07.
PyPI Download Statistics
| # | napari | npe2 | napari-plugin-manager |
|---|---|---|---|
| Last day | 4020 | 5549 | 2372 |
| Last week | 27882 | 31856 | 14214 |
| Last month | 109640 | 121332 | 47910 |
| Total | 7673533 | 6729122 | 1400411 |
Conda Download Statistics
| # | napari | npe2 | napari-plugin-manager |
|---|---|---|---|
| Total | 290985 | 197178 | 85186 |
| Last version | 797 | 6990 | 23536 |
Bundled App Downloads
| Windows | macOS | Linux |
|---|---|---|
| 16634 | 8612 | 2644 |
Forum Engagement
There are 1458 topics on forum.image.sc with the napari tag.
Total engagement: 938 users.
24 topics active since 2026-04-10 with 37 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-07)
| Name | Value |
|---|---|
| Stars | 2774 |
| Active contributors | 52 |
| Average PR per day | 1.17 |
| Total PRs | 5669 |
| Merged PRs | 4675 |
| PRs closed without merge | 790 |
| Open PRs | 204 |
| Merged PRs since 2026-04-10 | 395 |
| Open PRs since 2026-04-10 | 211 |
| New features since 2026-04-10 | 15 |
| New enhancements since 2026-04-10 | 73 |
| Bug fixes since 2026-04-10 | 83 |
| Issues closed since 2026-04-10 | 190 |
| Issues opened since 2026-04-10 | 204 |
Contributor Activity
Top Contributor Metrics
All Time
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 991 | 867 | 100 | 24 |
| tlambert03 | 664 | 536 | 2 | 126 |
| sofroniewn | 485 | 482 | 0 | 3 |
| psobolewskiPhD | 396 | 286 | 101 | 9 |
| brisvag | 378 | 347 | 24 | 7 |
| jni | 297 | 227 | 69 | 1 |
| Carreau | 274 | 255 | 1 | 18 |
| TimMonko | 260 | 153 | 101 | 6 |
| melissawm | 179 | 62 | 110 | 7 |
| DragaDoncila | 164 | 110 | 31 | 23 |
Since 2026-04-10
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| TimMonko | 107 | 50 | 51 | 6 |
| Czaki | 103 | 69 | 34 | 0 |
| Aniketsy | 91 | 88 | 3 | 0 |
| brisvag | 89 | 84 | 3 | 2 |
| matthiasschabel | 47 | 47 | 0 | 0 |
| psobolewskiPhD | 42 | 37 | 3 | 2 |
| carlosmariorr | 13 | 10 | 2 | 1 |
| ghostiee-11 | 12 | 12 | 0 | 0 |
| jni | 12 | 7 | 5 | 0 |
| jacopoabramo | 9 | 8 | 1 | 0 |
All Time
| PR coauthor | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 6303 | 5841 | 324 | 138 |
| tlambert03 | 5301 | 4456 | 3 | 842 |
| brisvag | 4199 | 3987 | 116 | 96 |
| sofroniewn | 3113 | 3096 | 0 | 17 |
| psobolewskiPhD | 2095 | 1466 | 556 | 73 |
| jni | 1898 | 1623 | 266 | 9 |
| TimMonko | 1895 | 1288 | 553 | 54 |
| andy-sweet | 1606 | 1566 | 38 | 2 |
| pwinston | 1470 | 1470 | 0 | 0 |
| DragaDoncila | 1228 | 952 | 137 | 139 |
Since 2026-04-10
| PR coauthor | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| brisvag | 915 | 880 | 22 | 13 |
| TimMonko | 738 | 437 | 265 | 36 |
| Czaki | 588 | 435 | 150 | 3 |
| Aniketsy | 328 | 317 | 11 | 0 |
| matthiasschabel | 183 | 183 | 0 | 0 |
| psobolewskiPhD | 163 | 155 | 3 | 5 |
| kephale | 102 | 102 | 0 | 0 |
| carlosmariorr | 99 | 92 | 2 | 5 |
| ghostiee-11 | 99 | 99 | 0 | 0 |
| jacopoabramo | 81 | 77 | 4 | 0 |
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 |
| lucyleeow | 108 | 69 | 32 | 7 |
| dalthviz | 107 | 100 | 6 | 1 |
| goanpeca | 99 | 97 | 1 | 1 |
| Aniketsy | 99 | 95 | 4 | 0 |
| dstansby | 98 | 81 | 16 | 1 |
| pwinston | 85 | 85 | 0 | 0 |
Since 2026-04-10
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Aniketsy | 91 | 88 | 3 | 0 |
| matthiasschabel | 47 | 47 | 0 | 0 |
| ghostiee-11 | 12 | 12 | 0 | 0 |
| jacopoabramo | 9 | 8 | 1 | 0 |
| utsab345 | 8 | 8 | 0 | 0 |
| omkar-334 | 7 | 2 | 1 | 4 |
| cmalinmayor | 6 | 5 | 1 | 0 |
| MargotCh | 6 | 6 | 0 | 0 |
| Revathyvenugopal162 | 5 | 5 | 0 | 0 |
| kabilar | 4 | 0 | 4 | 0 |
All Time
| PR reviewer | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| sofroniewn | 4432 | 4424 | 1 | 7 |
| jni | 3739 | 3435 | 282 | 22 |
| Czaki | 3673 | 3369 | 233 | 71 |
| brisvag | 2589 | 2345 | 179 | 65 |
| tlambert03 | 2401 | 2228 | 0 | 173 |
| psobolewskiPhD | 2325 | 1541 | 736 | 48 |
| andy-sweet | 1168 | 1144 | 21 | 3 |
| TimMonko | 1076 | 738 | 294 | 44 |
| DragaDoncila | 918 | 645 | 185 | 88 |
| Carreau | 873 | 842 | 9 | 22 |
Since 2026-04-10
| PR reviewer | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| brisvag | 548 | 449 | 71 | 28 |
| TimMonko | 368 | 256 | 96 | 16 |
| psobolewskiPhD | 336 | 280 | 54 | 2 |
| Czaki | 333 | 295 | 31 | 7 |
| Aniketsy | 174 | 155 | 19 | 0 |
| jacopoabramo | 128 | 122 | 6 | 0 |
| jni | 84 | 62 | 22 | 0 |
| DragaDoncila | 51 | 25 | 13 | 13 |
| willingc | 51 | 37 | 14 | 0 |
| carlosmariorr | 35 | 31 | 4 | 0 |
Plugin Statistics
| Name | Value |
|---|---|
| Plugin count | 678 |
| Total plugin downloads (PyPI) | 65303091 |
| Total plugin downloads (Conda) | 3942317 |
| Plugins above 1500 downloads (last month) | 41 |
| Actively developed plugins (since 2026-04-10) | 188 |
Plugins with more than 1500 downloads last month are considered actively used.
Excluded: skan, PartSeg
Repository Activity
From 2026-09-28 to 2026-10-04
Merged old PRs
- 📗 napari/napari#9182 fix (typing): add typing and fix mypy error in `qt_symbol_combobox.py` by Aniketsy
- 📗 napari/napari#9176 fix(typing): add typing and fix mypy error in `qt_tracks_controls.py` by Aniketsy
- 📗 napari/napari#9218 MAINT: Remove deprecated ScaleBar.unit by MridulS
- 📗 napari/napari#9394 fix(shapes): pick shapes on a fractional slice key by matthiasschabel
- 📗 napari/napari#9407 UI: apply tabular numerals to embedded status bars by matthiasschabel
- 📗 napari/napari#9431 Clean up status for grid/multiple selection by brisvag
- 📗 napari/napari#9458 Fix labeler action by brisvag
- 📗 napari/napari#9460 Fix changing theme with dynamic controls by brisvag
- 📗 napari/napari#9497 Add info in tooltips for projection mode by brisvag
- 📗 napari/napari#9493 Fix surface lighting in async mode by brisvag
- 📗 napari/napari#9505 Remove deprecated `napari.utils.indexing` module by Aniketsy
- 📗 napari/napari#9504 Clarify in `LayerList` docstring when the `changed` event is emitted by Aniketsy
- 📗 napari/napari#9547 TYP: add type hints in `color_manager.py` by Aniketsy
- 📗 napari/napari#9554 TYP: add type hints in `qt_viewer_status_bar.py` by Aniketsy
- 📗 napari/napari#9552 TYP: add type hints in `qt_contour_spinbox.py` by Aniketsy
- 📗 napari/napari#9551 TYP: add type hints in `qt_depiction_control.py` by Aniketsy
- 📗 napari/napari#9550 TYP: add type hints in `_svg.py` by Aniketsy
- 📗 napari/docs#1139 enforce LF line endings by TimMonko
- 📗 napari/napari#9570 Change Qt backend used in type testing from PyQt6 to PySide6 by Czaki
- 📗 napari/docs#1146 Update release notes for 0.9.2 by Czaki
Solved old Issues
- 📗 napari/napari#7614 Deprecate ``changed`` event for layerlist and use ``replaced`` by willingc
- 📗 napari/napari#7865 Command palette: remove reader & writer contributions (result in a tracebacks) by psobolewskiPhD
- 📗 napari/napari#8095 Remove deprecated napari.utils.indexing by psobolewskiPhD
- 📗 napari/napari#8901 Unselectable shape by guiwitz
- 📗 napari/napari#9055 [test-bot] pip install --pre is failing by github-actions[bot]
- 📗 napari/napari#9124 Remove `ScaleBar.unit` by TimMonko
New PRs
- 📗 napari/napari#9587 [pre-commit.ci] pre-commit autoupdate by pre-commit-ci[bot]
- 📖 napari/napari#9586 Rasterize the stroke of thick lines and paths by ghostiee-11
- 📖 napari/napari#9585 Convert translated shapes onto the layer list extent by ghostiee-11
- 📖 napari/napari#9584 Rasterize paths that leave their plane as nD lines by ghostiee-11
- 📖 napari/napari#9583 Rasterize shapes to pixel indices instead of full masks by ghostiee-11
- 📗 napari/napari#9582 Keep reader and writer commands out of the command palette by ghostiee-11
- 📕 napari/napari#9581 fix(points): ignore stale slice responses to prevent IndexError by utsab345
- 📖 napari/napari#9580 Fix Convert to Labels for shapes in 3D view and with rolled axes by ghostiee-11
- 📖 napari/docs#1147 Clarify mouse event properties in the `3D interactivity guide` by Aniketsy
- 📗 napari/npe2#517 ci(dependabot): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 by dependabot[bot]
- 📗 napari/npe2#516 ci(dependabot): bump conda-incubator/setup-miniconda from 4.0.1 to 4.1.0 by dependabot[bot]
- 📖 napari/napari#9596 Expose MultiScaleData class publicly (follow-up) by cmalinmayor
- 📖 napari/napari#9595 Move reporting of synchronization of bot repository to a separate job by Czaki
- 📗 napari/napari#9594 Update `coverage`, `fsspec`, `hypothesis`, `imageio`, `napari-resources`, `pandas`, `platformdirs`, `pytest-rerunfailures`, `tifffile`, `virtualenv`, `wrapt`, `xarray` by napari-bot
- 📖 napari/napari#9593 Add missed directories to circelci cache by Czaki
- 📖 napari/napari#9591 Add native value search in EnumSchemaWidgets to ensure boolean type compatibility by carlosmariorr
- 📖 napari/napari#9590 Add warning icon if experimental setting (especially async) is enabled by brisvag
- 📖 napari/napari#9589 Move autoswap buffers from experimental to advanced settings by brisvag
- 📖 napari/napari#9588 Add parent link to frozen children of eventedmodels by brisvag
- 📗 napari/docs#1150 Update the version switcher for 0.9.2 by Czaki
- 📗 napari/docs#1149 Add missed directories to circelci cache by Czaki
- 📗 napari/docs#1148 Move pre-fetch data step to begin of prep_docs.py by Czaki
- 📖 napari/napari#9603 Add `locked_data_level` as an argument for `Labels` by carlosmariorr
- 📖 napari/napari#9602 chore: remove unused user keymap by jacopoabramo
- 📗 napari/napari#9599 Fix color of labels in colorpicker by brisvag
- 📖 napari/napari#9598 Draw the layer name overlay in the layer's colormap color by ghostiee-11
- 📖 napari/napari#9613 ci(dependabot): bump the actions group across 1 directory with 9 updates by dependabot[bot]
- 📖 napari/napari#9611 Add default font size for the whole viewer by brisvag
- 📖 napari/napari#9607 Improve point projections to cover old out_of_slice use case by brisvag
- 📖 napari/napari#9606 Add testing napari against conda-forge packages using pixi by Czaki
- 📖 napari/napari#9605 Replace mouse_over_canvas with cursor.canvas_position by brisvag
- 📖 napari/docs#1154 Add GitHub source links to directory paths in architecture overview by Aniketsy
- 📖 napari/docs#1153 Update installation instructions for napari by albevier
- 📗 napari/docs#1151 Add missed PRs to 0.9.2 release notes. by Czaki
- 📖 napari/napari#9620 Fix position and clipping of dims slider label widgets by TimMonko
- 📖 napari/napari#9619 Fix font clipping in dock widget titles by TimMonko
- 📗 napari/napari#9618 TYP: annotate `color_kwargs` as dict[str, Any] in color_manager.py by Aniketsy
- 📖 napari/napari#9617 Measure text at render size for even overlay padding by ghostiee-11
- 📖 napari/napari#9616 Make the layer name overlay bold by ghostiee-11
- 📖 napari/napari#9615 Fix a few font sizes by brisvag
- 📖 napari/docs#1155 docs: suggest refined github by jacopoabramo
- 📖 napari/napari#9622 Fix uninitialized path vertices before Shapes triangulation by trissim
- 📖 napari/napari#9621 Fix digits clipped in canvas text when the app uses tabular numerals by ghostiee-11
- 📖 napari/docs#1157 Prefetch only when needed and use persistent cache across runs by TimMonko
- 📖 napari/docs#1156 Redirect old workshop pages to napari.org/workshops by TimMonko
New Issues
- 📗 napari/napari#9597 Color picker text labels are hard to read by TimMonko
- 📖 napari/napari#9592 EnumSchemaWidget of type boolean explodes due to string lookup. by carlosmariorr
- 📖 napari/npe2#518 Allow specifying of plugin window location and tabify in the napari.yaml by cmalinmayor
- 📖 napari/napari#9604 `locked_data_level` missing from `Labels` constructor and `_get_state()` method by carlosmariorr
- 📖 napari/napari#9601 Keep histogram bar color readable against the background by ghostiee-11
- 📖 napari/napari#9600 Color the Points layer name overlay from its face color by ghostiee-11
- 📖 napari/napari#9612 Font size preference does not apply to some parts of the viewer by TimMonko
- 📖 napari/napari#9610 Cleanup references to unused code by jacopoabramo
- 📖 napari/napari#9609 Colormap: Passing list of None vs. a single None by psobolewskiPhD
- 📖 napari/napari#9608 v0.10.0 napari release checklist by brisvag
- 📖 napari/docs#1152 Update docs example using `ChunkLoader` by jacopoabramo
- 📖 napari/napari#9614 Polish the layer name overlay styling by ghostiee-11
- 📖 napari/napari#9623 [test-bot] pip install --pre is failing by github-actions[bot]
Updated old PRs
- 📖 napari/docs#1125 ci(dependabot): bump the github-actions group across 1 directory with 2 updates by dependabot[bot]
- 📖 napari/docs#1135 Typing Guide: Tips and Resources by TimMonko
- 📖 napari/docs#1143 Rumdl: Parse and Format code blocks with ruff by TimMonko
- 📖 napari/napari#5367 Add layer error UI indicator by dalthviz
- 📖 napari/napari#7827 Add grid overlay by brisvag
- 📖 napari/napari#7908 Expose `Viewer.wait_until_idle` to ensure async slicing is done by brisvag
- 📖 napari/napari#8017 2D/3D Crosshair overlay for cursor position by brisvag
- 📖 napari/napari#8667 Use global font size for overlays by brisvag
- 📖 napari/napari#8682 Menu icons by brisvag
- 📖 napari/napari#8854 Add CI check for transitive migrator DAGs in settings migrations by Aniketsy
- 📖 napari/napari#9015 Prepare track columns data by Olusesan
- 📖 napari/napari#9030 Use rotation as camera angle source of truth by brisvag
- 📖 napari/napari#9157 TYP: add type hints in `_layer_delegate.py` by Aniketsy
- 📖 napari/napari#9202 TYP: add type hints in `_vispy/canvas.py` and `base.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#9249 TYP: add type hints in `_nested_list.py` by Aniketsy
- 📖 napari/napari#9253 fix(typing): annotate `napari/utils/key_bindings.py` by jacopoabramo
- 📖 napari/napari#9319 [WIP] The (almost) Everything example by TimMonko
- 📖 napari/napari#9361 Deliver key auto-repeat by default, suppressing only hold-semantics bindings by matthiasschabel
- 📖 napari/napari#9381 chore: remove ChunkLoader dead test code by jacopoabramo
- 📖 napari/napari#9410 fix: merge axis labels per axis to handle `mixed` default cases by Aniketsy
- 📖 napari/napari#9413 feat: add `colorbar` support for `shapes layer` by Aniketsy
- 📖 napari/napari#9428 Refactor cursor and brush models by brisvag
- 📖 napari/napari#9438 Refactor histogram to more closely follow architecture by brisvag
- 📖 napari/napari#9442 Allow individual dimension axes to be locked against navigation by matthiasschabel
- 📖 napari/napari#9462 Keep dock widgets resizable when their widget asks for vertical space by matthiasschabel
- 📖 napari/napari#9465 Fix logger from console 2 by brisvag
- 📖 napari/napari#9474 Use canvas size to estimate scale_bar target size by brisvag
- 📖 napari/napari#9481 Improve disconnect mechanism to work recursively and on psygnal by brisvag
- 📖 napari/napari#9494 Default projection mode to none, and add warnings and tooltips by brisvag
- 📖 napari/napari#9498 Hide projection mode combobox when appropriate by brisvag
- 📖 napari/napari#9506 Palette command history by brisvag
- 📖 napari/napari#9508 Remove unused helper functions and their tests by Aniketsy
- 📖 napari/napari#9511 Settable canvas_ratio for scale bar by brisvag
- 📖 napari/napari#9517 Implement canvas_to_world on the napari side by brisvag
- 📖 napari/napari#9518 Unify triangle intersection logic between shapes and surfaces by brisvag
- 📖 napari/napari#9520 Fix cursor view direction to work with perspective 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#9528 Fix serialization for ViewerModel by brisvag
- 📖 napari/napari#9529 Add `RenamedWarningEmitter` and `DependentEmitter` by Czaki
- 📖 napari/napari#9537 [multiscale, perf] Combine crop and projection in _project_thick_slice to prevent premature materialization. by psobolewskiPhD
- 📖 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#9544 TYP: add type hints in `style_encoding.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#9555 Update tox configuration to simplify testing against other packages by Czaki
- 📖 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#9562 Fix a data listener that writes `data` leaving a finished Shapes draw stuck mid-creation by matthiasschabel
- 📖 napari/napari#9564 Fix `Shapes.data = (data, shape_type)` failing when the shape count changes by matthiasschabel
- 📖 napari/napari#9565 Keep colormap, contrast limits and blending when a tiled image changes tile count by matthiasschabel
- 📖 napari/napari#9568 Show a padlock in each dimension slider row to lock and unlock its axis by matthiasschabel
- 📖 napari/napari#9569 TYP: add type hints in `points.py` by Aniketsy
Updated old Issues
- 📖 napari/napari#8836 `Convert to Labels` raises traceback when `ndisplay=3` by TimMonko
- 📖 napari/napari#6555 Shapes.to_masks() / Shapes.to_labels() yields paths not closed edges for unfilled shapes by Chris-N-K
- 📖 napari/napari#3783 Transformations architecture by jni
- 📖 napari/napari#8821 Display channel name overlay in channel color by saramcardle
- 📖 napari/napari#8241 Improvements to attenuated MIP by jni
- 📖 napari/napari#7939 Shapes edge_width is in layer coords, not screen pixels by psobolewskiPhD
- 📖 napari/napari#9352 [Shapes] traceback moving first vertex of polygon after removing vertexes by psobolewskiPhD
- 📖 napari/napari#9515 [Multiscale, perf] slicing nD zarr arrays even in 2D display over-fetches by psobolewskiPhD
- 📖 napari/napari#8867 Migrate over time to support SPEC 0 for minimum dependencies by willingc
Source data available here.