# CellProfiler vs QuPath vs ImageJ: which image analysis software should you use?

> CellProfiler, QuPath or ImageJ/Fiji? A fair comparison by job (batch cell measurements, whole slides, general analysis), with a nuclei count step by step.

Published 2026-11-06 by LabCanvas team. https://www.labcanvas.com/blog/cellprofiler-vs-qupath-vs-imagej

![ImageJ 1.54f after counting the synthetic nuclei sample: 70 nuclei outlined in yellow and the Summary window with a count of 70, total area 2845.326 µm² and an average size of 40.648 µm²](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-cover.webp)

Use **CellProfiler** when you need the same per-cell measurements from hundreds or thousands of images (screens, plates, time courses) without clicking through each one. Use **QuPath** for whole slide images and tissue sections: it opens huge slides, detects and classifies cells across them, and keeps everything in a project. Use **ImageJ or Fiji** for everything else: single images and stacks, trying things out, measurements of any kind, materials science, and the widest range of plugins.

All three are free and open source, and they are not rivals so much as tools for different jobs. Many labs use two of them.

> **What you need to follow the example:** ImageJ 1.x or Fiji, and an image of stained nuclei. The example is a synthetic nuclei image (512 × 512 pixels, 0.325 µm per pixel, 16-bit) with 70 nuclei by design, made for practice. Time: 5 minutes in ImageJ.

## The decision table

| | ImageJ / Fiji | CellProfiler | QuPath |
|---|---|---|---|
| Built for | General scientific image analysis | Measuring many images with one pipeline | Whole slide images and tissue (digital pathology) |
| Typical user | Anyone with an image to measure | Cell biologists, screening facilities | Pathologists, tissue biologists |
| Way of working | Menus on one image at a time; macros and scripts to repeat | A pipeline of modules, tested on one image, then run on all | A project of slides; detect, classify, measure, script in Groovy |
| Batch processing | With a macro or script | Built in: its main purpose | Built in: run a script on every image in the project |
| Whole slide images | Possible with plugins, not its strength | Not its focus | Its core: pyramidal slides open and pan smoothly |
| Cell detection | Threshold, watershed, Analyze Particles; StarDist, Cellpose and others as plugins | IdentifyPrimaryObjects (nuclei) and IdentifySecondaryObjects (cells); Cellpose as a plugin | Built-in nucleus detection with cell expansion; StarDist as an extension |
| Machine learning | Trainable Weka Segmentation, Labkit (Fiji) | CellProfiler Analyst for classifying cells | Interactive pixel and object classifiers |
| Beyond cells | Everything: materials, gels, particles, 3D, tracking | Mostly cells and cell-based assays | Mostly tissue |
| Written in | Java | Python | Java |
| Price | Free (ImageJ public domain; Fiji open source) | Free, open source | Free, open source (GPLv3) |
| Paper to cite | Schneider et al. 2012 (ImageJ), Schindelin et al. 2012 (Fiji) | Stirling et al. 2021 (CellProfiler 4) | Bankhead et al. 2017 |

## Pick this if…

- **You have one to a few dozen images, or you are still working out how to analyse them:** ImageJ or Fiji. Every step is visible and reversible, and the menus cover almost any measurement.
- **You have a plate, a screen, or the same assay every week:** CellProfiler. Building the pipeline takes an afternoon; after that, a thousand images cost no more effort than ten, and the pipeline file is your method.
- **You have whole slide scans (.svs, .ndpi, .mrxs and others) or tissue microarrays:** QuPath. It is built for slides that are too large to open in ImageJ as one image.
- **Your cells are crowded, irregular or unstained:** whichever you pick, add a deep-learning segmenter (StarDist or Cellpose). All three can use them, through plugins or extensions.
- **You work on materials, particles, gels or anything that is not a cell:** ImageJ or Fiji. CellProfiler and QuPath are built around cells and tissue.

## The same job in ImageJ: count the nuclei, step by step

Here is the job all three can do, counting nuclei, done in ImageJ with a picture for every step. The commands are the same in plain ImageJ and in Fiji.

### Step 1: Open the image

Click **File › Open…** and choose the TIFF. The line above the image shows **166.40x166.40 microns (512x512); 16-bit**: the scale (0.325 µm per pixel) came with the file, so areas will be in µm².

![ImageJ with the synthetic nuclei image open, its size shown in microns](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-step1-open.webp "Step 1 in ImageJ 1.54f: the synthetic nuclei image open display contrast stretched to see the dim nuclei. The line above it gives the size in microns 1, so the scale is already set.")

### Step 2: Convert to 8-bit

Click **Image › Type › 8-bit**. For counting, 8-bit is enough and keeps the threshold simple. Measure intensities on the original 16-bit file, not on this copy.

![ImageJ nuclei image after conversion to 8-bit](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-step2-8bit.webp "Step 2: Image › Type › 8-bit. The line above the image now reads 8-bit 1.")

### Step 3: Threshold the nuclei

Click **Image › Adjust › Threshold…**. Choose **Otsu**, tick **Dark background** (bright nuclei on a dark background), and check that every nucleus is red. ImageJ sets 96–255 here. Click **Apply**: the image becomes a black-and-white mask.

![ImageJ Threshold window with Otsu and Dark background, nuclei in red](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-step3-threshold.webp "Step 3: Image › Adjust › Threshold with Otsu 1 and Dark background ticked 2; the nuclei are red, 10.28% of the image, range 96–255. Click Apply 3.")

### Step 4: Fill holes and split touching nuclei

Click **Process › Binary › Fill Holes**, then **Process › Binary › Watershed**. Watershed cuts touching round objects apart with a one-pixel line, so a pair of touching nuclei counts as two.

![ImageJ binary mask of the nuclei after Fill Holes and Watershed](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-step4-watershed.webp "Step 4: the mask after Process › Binary › Fill Holes and Watershed: white nuclei on black, touching ones separated 1.")

### Step 5: Analyze Particles

Click **Analyze › Analyze Particles…**. Type **7-Infinity** in **Size (micron^2)** to drop specks smaller than a fifth of a typical nucleus, choose **Show: Outlines**, tick **Display results**, **Clear results** and **Summarize**, and click **OK**.

![ImageJ Analyze Particles dialog with size 7 to Infinity and Summarize ticked](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-step5-analyze-particles.webp "Step 5: Analyze › Analyze Particles with Size 7-Infinity µm² 1, Display results, Clear results and Summarize ticked 2, and Show: Outlines 3.")

### Step 6: Read the count

The **Summary** window gives the answer: **Count 70**, Total Area 2845.326 µm², **Average Size 40.648 µm²**, %Area 10.276. The sample has 70 nuclei by design, so the count is right. Lay the outlines over the image to check that no pair was merged and no nucleus split.

![ImageJ Summary window counting 70 nuclei, with the outlines over the image](https://www.labcanvas.com/blog/imagej/cellprofiler-vs-qupath-vs-imagej-step6-result.webp "Step 6: the 70 nuclei outlined on the original, and the Summary: Count 70 1, Average Size 40.648 µm² 2, 10.276% of the area.")

That is the whole job in ImageJ: six steps, about five minutes the first time. For one image, nothing is faster. For 500 images you would record these steps as a macro (**Plugins › Macros › Record…**) and run it in **Process › Batch › Macro…**, which is where CellProfiler starts to make more sense.

## The same job in CellProfiler

We could not run CellProfiler for this guide, so here are the steps in text, from the CellProfiler module documentation and example pipelines. CellProfiler works on a pipeline: a list of modules that every image goes through.

1. **Load the images.** Drag the image files (or a whole folder) onto the **Images** module. The input modules (**Images**, **Metadata**, **NamesAndTypes**, **Groups**) are always at the top of the pipeline.
2. **Name the channel.** In **NamesAndTypes**, give the nuclear channel a name, for example DNA.
3. **Find the nuclei.** Add **IdentifyPrimaryObjects**: input image DNA, output objects Nuclei. Set **Typical diameter of objects, in pixel units (Min,Max)** (about 10 to 40 pixels for this sample, whose nuclei are around 22 pixels across), whether to discard objects outside that range and objects touching the border, the threshold (strategy Global, method Otsu or Minimum Cross-Entropy), and how to split clumped objects (by shape or by intensity).
4. **Measure and export.** Add **MeasureObjectSizeShape** for the nuclei and **ExportToSpreadsheet** for the tables.
5. **Test, then run.** **Start Test Mode** runs the pipeline on one image and shows the outlines at each step, so you can tune the diameter and threshold. Then **Analyze Images** runs it on every image; the count is a column in the per-image table.

CellProfiler takes longer than ImageJ for one image and much less time for a thousand. The pipeline file (.cppipe) records every setting, which is a good methods record in itself.

## The same job in QuPath

QuPath was not run here either; these are the steps from its documentation and workshop material. QuPath works in projects of images.

1. **Create a project** (**Create project** and choose an empty folder), then **Add images**. When asked, set the image type to **Fluorescence**.
2. **Choose the region.** Draw an annotation around the area to analyse, or create an annotation covering the whole image.
3. **Detect the nuclei.** **Analyze › Cell detection › Cell detection…**: choose the nuclear **Detection channel**, set the **Requested pixel size**, **Background radius**, **Sigma**, **Minimum area** and **Maximum area**, the intensity **Threshold** (raise it if objects appear in the background), keep **Split by shape** ticked to separate touching nuclei, and set **Cell expansion** (0 if you want nuclei only; by default QuPath grows a cell boundary a few µm around each nucleus). Click **Run**.
4. **Read the count.** The number of detections appears in the annotation's measurements; **Measure › Show detection measurements** lists every nucleus with its area and intensities.

For a slide with a million cells, QuPath does this across the whole section; it then lets you train a classifier for positive and negative cells, which is where it shines.

## What each one is not good at

Fair comparisons name the weak points too.

- **ImageJ/Fiji:** repeating an analysis on many images needs a macro; whole slide images are awkward; the menus do not record what you did unless you turn on the recorder; results from one image at a time.
- **CellProfiler:** slower to get going on one image; less suited to exploring or measuring unusual things (a gel, a grain boundary, a line profile); whole slide images are not its focus.
- **QuPath:** built around tissue and slides; for a plate of cultured cells or a materials image, CellProfiler or ImageJ is the more natural fit.

## Pitfalls whichever you choose

- **Different software, different numbers.** Thresholds, filters and splitting differ, so the same image gives slightly different counts and areas. Pick one tool per study and report its settings.
- **Check against your eyes.** Count three to five fields by hand and compare before you trust any automatic count.
- **Tune on representative images.** A pipeline tuned on your best image fails on your worst one. Tune on a few from each condition.
- **Measure intensities on raw data.** In any of the three, measure the original 16-bit image, not an 8-bit or adjusted copy.
- **Cite the right paper and the version.** Each project asks you to cite its paper (see the references).

## Reporting it

> Nuclei were counted in [ImageJ 1.54f / Fiji] ([Otsu] threshold, Fill Holes, Watershed, Analyze Particles with a minimum area of [7 µm²]) on [n] fields per condition at [0.325] µm per pixel.

Or, for the others: "…using a CellProfiler [version] pipeline (IdentifyPrimaryObjects, typical diameter [10–40] pixels, [Otsu] global threshold, declumping by shape); the pipeline file is provided as Supplementary File [1]" or "…using QuPath [version] cell detection on the DAPI channel (threshold [x], cell expansion [0] µm)". Cite Schneider et al. 2012 or Schindelin et al. 2012, Stirling et al. 2021, or Bankhead et al. 2017 accordingly.

## Switch to LabCanvas: when you want the count without installing anything

[LabCanvas Image Analysis](https://www.labcanvas.com/analysis.html) sits beside these three: it runs in the browser, uses ImageJ's names, and gives the count in one click.

1. Click **Open an image** and choose your TIFF (or click the nuclei sample on the start screen).
2. Go to the **Count** tab.
3. Click **Find nuclei** (Otsu, fill holes, watershed and a minimum size in one click), or set them yourself in **Count particles** and click **Count**.
4. Read the Summary row and click **Send to Graphs** to compare conditions.

![Counting nuclei in LabCanvas Image Analysis](https://www.labcanvas.com/analysis-examples/nuclei.webp "Counting nuclei: 70 nuclei counted Otsu threshold, watershed to split touching ones: mean area 40.47 µm², 10.2% of the field.")

On the same synthetic image, **Find nuclei** counts **70 nuclei** (mean area 40.47 µm², 10.2% of the field); ImageJ above counts 70 with an average of 40.648 µm². The areas differ slightly because the outlines are traced with slightly different settings.

Why switch for a quick count:

- **No install, no plugins**: it runs on any computer or tablet, including ones where you cannot install software.
- **Guided instead of a pipeline or macro**: the count, the outlines and the Summary in one panel, with **Batch** for a folder of images.
- **Straight to Graphs** with a methods sentence, and every measurement validated in [more than 4,000 automated tests](https://www.labcanvas.com/image-analysis-validation).

For whole slide images, use QuPath; for screens of thousands of images and deep-learning segmentation, CellProfiler or Fiji; for maker formats such as .czi or .nd2, Fiji (LabCanvas needs them as TIFF first).

[Open Image Analysis](https://www.labcanvas.com/analysis.html): free with a LabCanvas account (downloading files is part of LabCanvas Pro). ImageJ and Fiji are independent open-source projects; LabCanvas is not affiliated with them, nor with CellProfiler or QuPath.

## References

- Bankhead P, Loughrey MB, Fernández JA, Dombrowski Y, McArt DG, Dunne PD, et al. (2017). QuPath: open source software for digital pathology image analysis. *Scientific Reports* 7, 16878. [doi:10.1038/s41598-017-17204-5](https://doi.org/10.1038/s41598-017-17204-5)
- Schindelin J, Arganda-Carreras I, Frise E, et al. (2012). Fiji: an open-source platform for biological-image analysis. *Nature Methods* 9, 676–682. [doi:10.1038/nmeth.2019](https://doi.org/10.1038/nmeth.2019)
- Schneider CA, Rasband WS, Eliceiri KW (2012). NIH Image to ImageJ: 25 years of image analysis. *Nature Methods* 9, 671–675. [doi:10.1038/nmeth.2089](https://doi.org/10.1038/nmeth.2089)
- Stirling DR, Swain-Bowden MJ, Lucas AM, Carpenter AE, Cimini BA, Goodman A (2021). CellProfiler 4: improvements in speed, utility and usability. *BMC Bioinformatics* 22, 433. [doi:10.1186/s12859-021-04344-9](https://doi.org/10.1186/s12859-021-04344-9)

## Frequently asked questions

### Is CellProfiler better than ImageJ?

For measuring thousands of images the same way, usually yes: CellProfiler is built around pipelines of modules that run unattended on whole plates and give per-cell measurements. For exploring a few images, trying different approaches, or work outside cell biology, ImageJ or Fiji is more flexible. Many labs use both.

### What is the difference between QuPath and ImageJ?

QuPath is built for whole slide images and tissue: it opens multi-gigapixel slides, organises them in projects, and detects and classifies cells across a whole section. ImageJ is a general-purpose image analysis program for single images and stacks. For histology slides, QuPath is usually the better start; for everything else, ImageJ or Fiji.

### What is the best software for cell image analysis?

It depends on the job. For high-throughput per-cell measurements, CellProfiler; for whole slide images and tissue sections, QuPath; for general analysis, single images, stacks and anything unusual, Fiji. For crowded or irregular cells, add a deep-learning segmenter such as StarDist or Cellpose, which plug into all three.

### Are CellProfiler, QuPath and ImageJ free?

Yes. All three are free and open source. ImageJ 1.x is public domain; Fiji bundles it with plugins; QuPath is released under the GPLv3; CellProfiler is open source from the Broad Institute.

### Do I need to know programming to use them?

No for the basics. CellProfiler pipelines are built from modules with a point-and-click interface, QuPath has menus and dialogs for cell detection and classification, and ImageJ has menus for everything shown in this guide. Scripting (ImageJ macros, Groovy in QuPath, Python with CellProfiler) helps for automation.

### Is there a simpler option that runs in the browser?

Yes: LabCanvas Image Analysis runs in the browser with ImageJ-style tools and guided assays; see the last section of this guide.

## Related links

- [Fiji vs ImageJ: what is the difference?](https://www.labcanvas.com/blog/fiji-vs-imagej): Which one to download
- [Best ImageJ alternatives](https://www.labcanvas.com/blog/imagej-alternatives): Free, online and desktop tools compared
- [How to count cells in ImageJ](https://www.labcanvas.com/blog/count-cells-imagej): Automatic and manual counting
- [Watershed for touching particles](https://www.labcanvas.com/blog/watershed-touching-particles): When it works and when it cuts wrongly
- [How to cite ImageJ and Fiji](https://www.labcanvas.com/blog/how-to-cite-imagej): With a methods sentence
- [Image Analysis: the complete guide](https://www.labcanvas.com/blog/image-analysis-complete-guide): Every tool in LabCanvas Image Analysis
