Napari-3D-Counter: A manual cell counter for napari
Peter Newstein

TL;DR
Napari-3D-Counter is a tool that helps experts count cells in 2D or 3D images using a user-friendly interface within the napari platform.
Contribution
The novel contribution is the Count3D widget, which provides an intuitive interface for manual cell counting in 2D and 3D images within napari.
Findings
Napari-3D-Counter includes a Count3D widget for efficient manual counting of objects in images.
The package is designed to be user-friendly for both beginners and experienced users.
It is available on PyPI and conda-forge and is indexed on napari-hub.
Abstract
A common task across biological fields is to quantify the number of objects in an image. Often, the most efficient solution to this problem is to have an expert manually count those objects. This package, Napari-3D-Counter, includes the Count3D widget, a user-friendly interface to allow an expert to quickly count objects in 2D or 3D images visualized using napari, as well as auxiliary plugins that help to integrate Count3D into upstream and downstream analyses. Napari-3D-Counter focuses on being user-friendly for beginners and experienced users, and has been continually updated since its 2023 release. The package is available on both PyPI and conda-forge, and is indexed on napari-hub.
Genes, proteins, chemicals, diseases, species, mutations and cell lines named across the full text — each resolved to its canonical identifier and authoritative record.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsCell Image Analysis Techniques · Genetics, Bioinformatics, and Biomedical Research · Single-cell and spatial transcriptomics
Statement of need
Despite the many high-quality automated methods for identifying objects in images, expert annotation is sometimes the most practical option. For example, training and optimizing a machine learning model may require more effort than manual annotation. In these cases, user-friendly software is especially important to save time for the expert annotator. User-friendliness includes both ergonomics (whether the software is intuitive and efficient to use) and stability (whether the software works as expected).
I introduce the package Napari-3D-Counter, which leverages the Python / napari ecosystem to create a user-friendly interface for manual cell counting. Napari is a user-friendly multidimensional image viewer that is open source and implemented in the Python programming language (Sofroniew et al., 2025). Napari’s implementation language gives it the advantage of easily integrating with Python’s numerous scientific tools through a plugin system.
Because napari is under active development, upstream changes can affect plugins. To keep Napari-3D-Counter reliable, fixes are released promptly with the aid of unit tests, which cover over 90% of the code. These tests are automatically run before publication using a GitHub Action.
The functionality of the main widget provided by Napari-3D-Counter, Count3D, is similar to the FIJI cell counter plugin (De Vos, 2010), with important differences: no macros are necessary for keyboard automation, locations can be saved in the CSV format instead of XML (enabling easier integration with GUI spreadsheet tools) and most importantly, integration with the Python / napari ecosystem. This integration is significant because napari provides advanced 3D visualization capabilities, while the Python ecosystem offers powerful packages such as scikit-image (Walt et al., 2014) and SciPy (Virtanen et al., 2020) for analysis.
Native napari Points layers can replicate many of the core features of Count3D. However, Count3D has the advantage of being specifically specialized to count cells of different types: it takes one keyboard shortcut to switch between various cell type counters, and there is a live display of how many cells of each type have been counted. Furthermore, saving and loading a single CSV file containing the coordinates of all cells from all types is preferable to creating separate files for each type. Overall, using Napari-3D-Counter is likely to save the expert annotator’s time over using native Napari Points.
Finally, Count3D’s functionality is also similar to the manual spots feature of Imaris (Imaris, 2024). In addition to the ergonomic benefits of a bespoke cell counter listed above, a clear advantage of Count3D over Imaris is its availability under a free software license, while Imaris is proprietary software that requires a costly license.
Beyond Count3D’s core features, other functions related to manual cell counting are implemented in auxiliary plugins: IngressPoints, SplitOnShapes, and ReconstructSelected. IngressPoints takes a native napari points layer, perhaps created by automated labeling, and turns them into a counted cell type in Count3D. SplitOnShapes splits labels of cell types based on spatial information. For example, if a user wants to quantify the distribution of cells of multiple types across a tissue with multiple repeating segments (eg. spinal cord), they can use a napari Shapes layer to define all the segments in the X and Y axes, and SplitOnShapes will return a count of each cell type within each shape. Finally, ReconstructSelected can be used to aid in visualizing cells: if a user has a Label layer labeling all cells, but they only want to visualize a subset, ReconstructSelected will take those labels containing a Count3D cell and create an image layer containing only those cells, which can then be used to create 2D or 3D images. Overall, these auxiliary plugins help to integrate Count3D into more complex, semi-automated cell counting processes.
The utility of this plugin is also reflected in its use. It has been used in scientific publications (Drake et al., 2025; Sato et al., 2025) and has over 15,000 downloads on conda-forge.
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1De Vos K (2010). Cell Counter. University of Sheffield, Academic Neurology. https://imagej.net/ij/plugins/cell-counter.html
- 2Drake KC, Lai S-L, & Doe CQ (2025). Fer 3 is uniquely expressed in Notch OFF hemilineages where it promotes interneuron identity. Development, dev.205118. 10.1242/dev.205118 · doi ↗
- 3Imaris. (2024). Oxford Instruments. https://imaris.oxinst.com/packages
- 4Sato R, Imamura K, Tsukui T, Yoshida T, Tomita Y, Fujino K, Ikeda T, Onizawa K, Sogo T, Combs CA, Murgai M, Kopp JB, Suzuki M, Sakagami T, Sheppard D, & Mukouyama Y-S (2025). Β-III tubulin identifies anti-fibrotic state of pericytes in pulmonary fibrosis. bio Rxiv: The Preprint Server for Biology, 2025.04.15.648984. 10.1101/2025.04.15.648984 · doi ↗
- 5Sofroniew N, Lambert T, Bokota G, Nunez-Iglesias J, Sobolewski P, Sweet A, Gaifas L, Evans K, Burt A, Doncila Pop D, Yamauchi K, Weber Mendonça M, Liu L, Buckley G, Vierdag W-M, Monko T, Willing C, Royer L, Can Solak A, … Zhao R (2025). Napari: A multi-dimensional image viewer for Python. Zenodo. 10.5281/zenodo.16883660 · doi ↗
- 6Virtanen P, Gommers R, Oliphant TE, Haberland M, Reddy T, Cournapeau D, Burovski E, Peterson P, Weckesser W, Bright J, van der Walt SJ, Brett M, Wilson J, Millman KJ, Mayorov N, Nelson ARJ, Jones E, Kern R, Larson E, … van Mulbregt P (2020). Sci Py 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods, 17(3), 261–272. 10.1038/s 41592-019-0686-232015543 PMC 7056644 · doi ↗ · pubmed ↗
- 7Walt S. van der, Schönberger JL, Nunez-Iglesias J, Boulogne F, Warner JD, Yager N, Gouillart E, & Yu T (2014). Scikit-image: Image processing in Python. Peer J, 2, e 453. 10.7717/peerj.45325024921 PMC 4081273 · doi ↗ · pubmed ↗
