Usage
Download statistics for 2026-07-16.
PyPI Download Statistics
| # | napari | npe2 | napari-plugin-manager |
|---|---|---|---|
| Last day | 6101 | 5590 | 2152 |
| Last week | 42511 | 41266 | 17101 |
| Last month | 157340 | 186464 | 75987 |
| Total | 7251382 | 6285229 | 1216431 |
Conda Download Statistics
| # | napari | npe2 | napari-plugin-manager |
|---|---|---|---|
| Total | 263863 | 177953 | 71180 |
| Last version | 269 | 3000 | 12741 |
Bundled App Downloads
| Windows | macOS | Linux |
|---|---|---|
| 14425 | 7005 | 2054 |
Forum Engagement
There are 1439 topics on forum.image.sc with the napari tag.
Total engagement: 932 users.
492 topics active since 2024-01-01 with 440 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-07-16)
| Name | Value |
|---|---|
| Stars | 2697 |
| Active contributors | 86 |
| Average PR per day | 0.32 |
| Total PRs | 5321 |
| Merged PRs | 4460 |
| PRs closed without merge | 727 |
| Open PRs | 134 |
| Merged PRs since 2024-01-01 | 1371 |
| Open PRs since 2024-01-01 | 294 |
| New features since 2024-01-01 | 55 |
| New enhancements since 2024-01-01 | 198 |
| Bug fixes since 2024-01-01 | 294 |
| Issues closed since 2024-01-01 | 854 |
| Issues opened since 2024-01-01 | 986 |
Contributor Activity
Top Contributor Metrics
All Time
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 933 | 830 | 79 | 24 |
| tlambert03 | 664 | 536 | 2 | 126 |
| sofroniewn | 485 | 482 | 0 | 3 |
| psobolewskiPhD | 378 | 268 | 101 | 9 |
| brisvag | 308 | 282 | 21 | 5 |
| jni | 287 | 220 | 66 | 1 |
| Carreau | 274 | 255 | 1 | 18 |
| TimMonko | 220 | 136 | 81 | 3 |
| melissawm | 179 | 62 | 110 | 7 |
| DragaDoncila | 157 | 109 | 31 | 17 |
Since 2024-01-01
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 496 | 428 | 58 | 10 |
| psobolewskiPhD | 276 | 204 | 65 | 7 |
| TimMonko | 220 | 136 | 81 | 3 |
| brisvag | 167 | 144 | 19 | 4 |
| jni | 114 | 55 | 58 | 1 |
| willingc | 90 | 41 | 38 | 11 |
| melissawm | 80 | 11 | 68 | 1 |
| DragaDoncila | 74 | 31 | 30 | 13 |
| dalthviz | 61 | 57 | 4 | 0 |
| Aniketsy | 56 | 55 | 1 | 0 |
All Time
| PR coauthor | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 6014 | 5640 | 239 | 135 |
| tlambert03 | 5301 | 4456 | 3 | 842 |
| brisvag | 3297 | 3117 | 94 | 86 |
| sofroniewn | 3113 | 3096 | 0 | 17 |
| psobolewskiPhD | 2023 | 1397 | 556 | 70 |
| jni | 1856 | 1593 | 254 | 9 |
| andy-sweet | 1606 | 1566 | 38 | 2 |
| TimMonko | 1522 | 1084 | 406 | 32 |
| pwinston | 1470 | 1470 | 0 | 0 |
| DragaDoncila | 1193 | 945 | 137 | 111 |
Since 2024-01-01
| PR coauthor | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 3298 | 3060 | 173 | 65 |
| brisvag | 1912 | 1737 | 92 | 83 |
| TimMonko | 1521 | 1083 | 406 | 32 |
| psobolewskiPhD | 1396 | 967 | 378 | 51 |
| jni | 728 | 509 | 212 | 7 |
| dalthviz | 638 | 623 | 15 | 0 |
| DragaDoncila | 451 | 242 | 130 | 79 |
| willingc | 414 | 186 | 162 | 66 |
| lucyleeow | 267 | 113 | 152 | 2 |
| melissawm | 238 | 22 | 215 | 1 |
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 |
| dstansby | 98 | 81 | 16 | 1 |
| pwinston | 85 | 85 | 0 | 0 |
| alisterburt | 71 | 70 | 1 | 0 |
Since 2024-01-01
| PR creator | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| dalthviz | 61 | 57 | 4 | 0 |
| Aniketsy | 56 | 55 | 1 | 0 |
| lucyleeow | 48 | 25 | 21 | 2 |
| dstansby | 32 | 26 | 5 | 1 |
| andy-sweet | 15 | 11 | 4 | 0 |
| rahul713rk | 10 | 10 | 0 | 0 |
| cnstt | 9 | 6 | 3 | 0 |
| GenevieveBuckley | 8 | 7 | 1 | 0 |
| lukasz-migas | 6 | 5 | 1 | 0 |
| jacopoabramo | 6 | 6 | 0 | 0 |
All Time
| PR reviewer | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| sofroniewn | 4432 | 4424 | 1 | 7 |
| jni | 3654 | 3363 | 269 | 22 |
| Czaki | 3493 | 3209 | 219 | 65 |
| tlambert03 | 2401 | 2228 | 0 | 173 |
| brisvag | 2150 | 1968 | 130 | 52 |
| psobolewskiPhD | 2133 | 1373 | 714 | 46 |
| andy-sweet | 1168 | 1144 | 21 | 3 |
| TimMonko | 892 | 610 | 247 | 35 |
| DragaDoncila | 880 | 623 | 180 | 77 |
| Carreau | 873 | 842 | 9 | 22 |
Since 2024-01-01
| PR reviewer | Total | napari/napari | napari/docs | napari/npe2 |
|---|---|---|---|---|
| Czaki | 1614 | 1466 | 126 | 22 |
| psobolewskiPhD | 1381 | 927 | 430 | 24 |
| brisvag | 1088 | 938 | 106 | 44 |
| jni | 1041 | 820 | 208 | 13 |
| TimMonko | 891 | 609 | 247 | 35 |
| DragaDoncila | 464 | 306 | 122 | 36 |
| willingc | 387 | 250 | 121 | 16 |
| lucyleeow | 205 | 101 | 102 | 2 |
| melissawm | 175 | 29 | 145 | 1 |
| dalthviz | 122 | 119 | 3 | 0 |
Plugin Statistics
| Name | Value |
|---|---|
| Plugin count | 646 |
| Total plugin downloads (PyPI) | 62845206 |
| Total plugin downloads (Conda) | 3559311 |
| Plugins above 1500 downloads (last month) | 61 |
| Actively developed plugins (since 2024-01-01) | 418 |
Plugins with more than 1500 downloads last month are considered actively used.
Excluded: skan, PartSeg
Repository Activity
From 2026-07-06 to 2026-07-12
Merged old PRs
- 📗 napari/napari#8262 Add floating axes canvas overlay by Modjular
- 📗 napari/napari#8391 Histogram for the Image layer controls and contrast limits popup by TimMonko
- 📗 napari/napari#8636 [Labels, Perf] Refactor painting to use masks and bounding boxes by psobolewskiPhD
- 📗 napari/napari#8658 Add example driving computation from gui by applio
- 📗 napari/docs#1002 Update Theme contribution guidance by TimMonko
- 📗 napari/napari#8936 Fix: napari script runner with multiprocessing by TimMonko
- 📗 napari/napari#9018 [Shapes] When using Shift to draw circle/square, allow shape to grow in direction of mouse drag by psobolewskiPhD
- 📗 napari/napari#9042 Accept `pathlib.Path` in reader and writer plugin utilities by omkar-334
- 📗 napari/napari#9069 make LabelColorMapBase deep-copyable by TeunHuijben
- 📗 napari/napari#9070 Make Wayland XCB/GLX workaround modular for non-NVIDIA GPUs by anwai98
- 📗 napari/napari#9075 Feat: add cellpose-inspired right-click to encircle mask creation interaction mode by tlambert03
- 📗 napari/napari#9078 Theme colors adjustments by brisvag
- 📗 napari/napari#9091 Actually use pride logo by brisvag
- 📗 napari/napari#9108 fix(typing): add typing and fix mypy errors in `qt_range_slider_popup.py` by Aniketsy
- 📗 napari/napari#9107 feat: add metadata submenu to the layers menu by isheikh8492
- 📗 napari/napari#9106 bump numpy to 2.5.0 in mypy constraints to fix `[unused-ignore]` errors by Aniketsy
- 📗 napari/napari#9104 Drop Python 3.10 and implement 3.11+ changes by TimMonko
- 📗 napari/napari#9102 fix(typing): add typing and fix mypy error in `qt_spinbox.py` by Aniketsy
- 📗 napari/napari#9098 fix(typing): add typing and fix mypy errors in `custom_types.py` by Aniketsy
- 📗 napari/napari#9114 Enable clickable links for tips that have URLs by psobolewskiPhD
- 📗 napari/napari#9134 Minimum support for zarr>=3 for builtins by TimMonko
- 📗 napari/napari#9133 Remove `compat.py` (and `StrEnum` export), update imports, and remove case-insens lookup by TimMonko
- 📗 napari/napari#9122 [pre-commit.ci] pre-commit autoupdate by pre-commit-ci[bot]
- 📗 napari/napari#9117 Limit dims scroll to 1 step at a time by brisvag
- 📗 napari/docs#1057 ci(dependabot): bump the github-actions group across 1 directory with 5 updates by dependabot[bot]
- 📗 napari/docs#1056 Add initial release notes for 0.8.0 by Czaki
- 📗 napari/napari#9143 Show active level in Auto entry of multiscale combobox by kephale
- 📗 napari/napari#9142 Use level-0 extent for multiscale bounding box overlay by kephale
- 📗 napari/napari#9141 Fix multiscale _set_view_slice when switching to 3D by kephale
- 📗 napari/napari#9153 Remove `pyautogui` and update failing tests on Windows-Qt6 by TimMonko
- 📗 napari/napari#9152 `QApplication` mouse event to trigger event filter of `test_toggle_menubar` by TimMonko
- 📗 napari/napari#9151 Toggleable `synced` (default) and separated camera views across ndisplay by TimMonko
- 📗 napari/napari#9149 Guard against stale index for layer paint methods by TimMonko
- 📗 napari/napari#9148 Remove `color_dict_to_colormap` by Rupeshhsharma
- 📗 napari/napari#9147 Remove `image_reader_to_layerdata_reader` by Rupeshhsharma
- 📗 napari/napari#9146 Stop using pickle when copying/pasting spatial features of layer by Czaki
- 📗 napari/docs#1059 Feature documentation for image layer histogram by TimMonko
Solved old Issues
- 📗 napari/napari#6761 New labels annotation tool and tensorstore by fjorka
- 📗 napari/napari#5128 Show histogram on top of display range slider by haesleinhuepf
- 📗 napari/napari#2379 Improve performance of fill/undo-fill in large arrays by jni
- 📗 napari/docs#169 PR # on release notes should be links by sofroniewn
- 📗 napari/napari#8363 Ability to auto-fill closed labels when painting by jni
- 📗 napari/napari#8562 [Labels] Polygon tool rasterization speed depends on the size, gets very slow for large arrays by psobolewskiPhD
- 📗 napari/napari#8586 Update reading/reader utilities to use `Path` objects rather than only `str` by DragaDoncila
- 📗 napari/napari#8590 [Labels] Annotating with brush_size >1000 is choppy, >2000 blocks by psobolewskiPhD
- 📗 napari/napari#8843 Add Layers > Metadata contributable submenu by psobolewskiPhD
- 📗 napari/napari#8874 maint: remove vendored StrEnum backport when dropping 3.10 by jacopoabramo
- 📗 napari/napari#8894 [async] Investigate why simple Labels methods fail in script by psobolewskiPhD
- 📗 napari/napari#8939 [dask] Unable to paint in zarr opened via drag and drop as labels by psobolewskiPhD
- 📗 napari/napari#9047 [labels] painting doesn't work for xarray backed labels layer by psobolewskiPhD
- 📗 napari/docs#1049 Video 404 in Quickstart by Yann-P
- 📗 napari/napari#9105 numpy 2.5.0 causes mypy failure by TimMonko
- 📗 napari/napari#9132 Remove `image_reader_to_layerdata_reader` by Aniketsy
- 📗 napari/napari#9131 Remove `color_dict_to_colormap` by Aniketsy
- 📗 napari/napari#9150 The help icons have dissapeared from viewer button popups by TimMonko
New PRs
- 📗 napari/napari#9162 `macos-15` runner instead of `macos-latest` (now `macos-26`) to prevent segfaults by TimMonko
- 📗 napari/napari#9161 Fix: Restore tooltip symbol QSS after #9003 by TimMonko
- 📕 napari/napari#9160 Disable cache for slices access in `TransformChain` by Czaki
- 📗 napari/napari#9158 Update `certifi`, `coverage`, `fsspec`, `hypothesis`, `ipython`, `npe2`, `pillow`, `pydantic-settings`, `pytest`, `pytest-rerunfailures`, `scipy`, `tqdm`, `virtualenv`, `wrapt` by napari-bot
- 📖 napari/napari#9157 fix(typing): add typing and fix mypy errors in `_layer_delegate.py` by Aniketsy
- 📖 napari/napari#9156 Warn instead of fail on PR author check by TimMonko
- 📖 napari/napari#9155 Add CITATION.cff validation and re-order authors (with pre-commit) by TimMonko
- 📗 napari/napari#9154 gitignore various agent related file names by TimMonko
- 📖 napari/npe2#481 ci: [pre-commit.ci] autoupdate by pre-commit-ci[bot]
- 📖 napari/npe2#480 ci(dependabot): bump astral-sh/setup-uv from 8.2.0 to 8.3.0 by dependabot[bot]
- 📗 napari/napari#9187 [shapes] Ensure that Shift while drawing locks the actual aspect ratio by psobolewskiPhD
- 📗 napari/napari#9186 Enh: Selectable text in ConfirmCloseDialog by TimMonko
- 📖 napari/napari#9185 fix(typing): resolve mypy errors for `qt_widget_controls_base` by jacopoabramo
- 📕 napari/napari#9184 Bump `virtualenv>=20.24.7` for min_req tests by TimMonko
- 📖 napari/napari#9183 fix(typing): add typing and fix mypy error in `qt_edge_color.py` by Aniketsy
- 📖 napari/napari#9182 fix (typing): add typing and fix mypy error in `qt_symbol_combobox.py` by Aniketsy
- 📗 napari/napari#9181 Fix: update cached unit scale when layer data dimensionality changes (#9164) by TimMonko
- 📖 napari/napari#9180 fix(typing): add typing and fix mypy error in `qt_current_size_slider.py` by Aniketsy
- 📖 napari/napari#9179 fix(typing): add typing and fix mypy error in `qt_border_color.py` by Aniketsy
- 📖 napari/napari#9178 fix(typing): add typing and fix mypy error in `qt_vectors_controls.py` by Aniketsy
- 📗 napari/napari#9177 Remove method and functions marked for removal in 0.8.0 by Czaki
- 📖 napari/napari#9176 fix(typing): add typing and fix mypy error in `qt_tracks_controls.py` by Aniketsy
- 📗 napari/napari#9175 Add WCAG contrast table to Theme Sample example by TimMonko
- 📖 napari/napari#9174 Add hint for missing qt6-wayland when conda Qt cannot start napari on Wayland by anwai98
- 📖 napari/napari#9173 fix(typing): add typing and fix mypy error in `qt_layer_controls_container.py` by Aniketsy
- 📖 napari/napari#9172 typing: safe removal `qt_image_controls_base.py` from mypy ignore by Aniketsy
- 📖 napari/napari#9171 typing: remove `experimental.qt_poll.py` from mypy ignore by Aniketsy
- 📖 napari/napari#9170 fix(typing): add typing and fix mypy error in `confirm_close_dialog.py` by Aniketsy
- 📖 napari/napari#9169 fix(typing): add typing and fix mypy error in `qt_list_model.py` by Aniketsy
- 📖 napari/napari#9168 fix(typing): add typing and fix mypy error in `qt_layer_model.py` by Aniketsy
- 📖 napari/napari#9167 fix(typing): add typing and fix mypy error in `qt_axis_model.py` by Aniketsy
- 📖 napari/napari#9163 Fix test to work on macos-26 by Czaki
- 📗 napari/docs#1065 Add Camera Guide to explain synced/separate camera modes by TimMonko
- 📗 napari/docs#1064 Fix video relative paths which had extra '..' by jni
- 📗 napari/docs#1063 Add video and fallback image for histogram highlight by jni
- 📗 napari/docs#1062 Update 0.8.0 release notes, add highlight by Czaki
- 📗 napari/docs#1061 Update organization ownership policy by TimMonko
- 📕 napari/docs#1060 docs: document GitHub org owner policy and update governance by TimMonko
- 📗 napari/napari#9191 Clean rest of elements marked as "to remove in 0.8.0" by Czaki
- 📖 napari/docs#1067 Update label name in condition of label trigger build by Czaki
- 📗 napari/docs#1066 Final update of release notes for 0.8.0 by Czaki
New Issues
- 📖 napari/napari#9159 Bermuda Shapes triangulation produces non-equivalent mesh for valid polygon-with-holes by ArneDefauw
- 📖 napari/napari#9190 Deprecation warning in pytest by jni
- 📖 napari/napari#9189 Histogram: Feedback and Follow-ups by TimMonko
- 📖 napari/napari#9188 Async slicing can render `Labels` with stale dtype-dependent direct colormap state by ArneDefauw
- 📖 napari/napari#9166 Add improved error message for qt conda install and Wayland by TimMonko
- 📖 napari/napari#9165 Floating axes canvas overlay follow-ups by TimMonko
- 📗 napari/napari#9164 Problem displaying 3D data in layer that was used for 2D data by rixius
- 📖 napari/napari#9193 Improvements to auto-fill labels by jni
- 📖 napari/napari#9192 flake: test_async_slice_image_on_order_change by jni
Updated old PRs
- 📖 napari/napari#8914 Example: Comparison of messages in napari (notifications, logs, etc) by TimMonko
- 📖 napari/napari#8980 Make label colormaps immutable, layer owns show_selected_label (alternative to #8967) by hinderling
- 📖 napari/napari#9004 Move fragile tests to a separate CI run by Czaki
- 📖 napari/napari#9059 [shapes] Preserve selection when changing ndisplay or slices and avoid stale highlights by psobolewskiPhD
- 📖 napari/napari#9067 Progressive loading for 2D and 3D by kephale
- 📖 napari/napari#9077 Change deploy_docs to use reusable actions by Czaki
- 📖 napari/napari#9110 fix(typing): add typing and fix mypy error in `qt_mode_buttons.py` by Aniketsy
- 📖 napari/napari#9116 Use shared version of label clean workflow by Czaki
- 📖 napari/napari#9119 fix(typing): add typing and fix mypy errors in `qt_dict_table.py` by Aniketsy
- 📖 napari/napari#9123 fix(typing): add typing and fix mypy erorr in `qt_face_color.py` and `qt_widget_controls_base.py` by Aniketsy
- 📖 napari/napari#9126 fix(typing): add typing and fix mypy error in `_base_item_model.py` by Aniketsy
- 📖 napari/napari#9127 fix(typing): add typing and fix mypy error in `_base_item_view.py` by Aniketsy
- 📖 napari/napari#9145 [perf] Use chunk-aware loading for 2d multiscale by psobolewskiPhD
Updated old Issues
- 📖 napari/napari#9128 Double-right-click to zoom *out* by duetduet
- 📖 napari/napari#9050 Exchange matrices are flagged as `Singular matrix` by the napari viewer (and break the viewer) by jo-mueller
- 📖 napari/napari#3796 Interactive feature plot by chili-chiu
- 📖 napari/napari#9088 [plugin, save dialog] ome.tiff matches with .tiff of builtins by psobolewskiPhD
- 📖 napari/napari#9144 `convert_to_uint8` rejects non-native byte order by jiyuuchc
- 📖 napari/napari#5358 Create system for layer controls layout and visuals by isabela-pf
- 📖 napari/napari#8995 Explore an optional in-app guided tour by sdiebolt
- 📖 napari/napari#7072 Multiple unexpected events emitted during multiselection by OnionKiller
- 📖 napari/napari#8821 Display channel name overlay in channel color by saramcardle
Source data available here.