How to Set ROI Boxes the Same Size Across All Lanes in ImageJ
If your ROI boxes aren't the same size on every lane, your densitometry numbers are meaningless. A box that's 10% taller on lane 3 captures 10% more background — or 10% more signal — and that error propagates straight into your fold-change calculations. Here's how to lock ROI dimensions in ImageJ/Fiji so every lane gets measured with an identical box.
The short version: draw one rectangle, note its pixel dimensions in the ImageJ toolbar, then use Edit > Selection > Specify... to place that exact rectangle on every subsequent lane. Add each to the ROI Manager (Ctrl+T / Cmd+T) before moving on. This takes about 90 seconds for a 10-lane blot once you know the workflow.
Why uniform ROIs matter more than you think
Densitometry in ImageJ measures integrated density — the sum of pixel intensities inside your selection. That value is the product of mean intensity × area. If two lanes have the same band intensity but one ROI is 120×40 pixels and the other is 130×45 pixels, the second measurement is ~17% higher just from the size difference. You'll attribute that to biology when it's geometry.
This matters less if you're using ImageJ's built-in gel analyzer (Analyze > Gels > Select First Lane), because that tool uses lane profiles and peak areas rather than raw integrated density. But plenty of people — reasonably — prefer the rectangle-ROI approach because it gives you direct control over what's included and it plays nicely with background subtraction strategies. If that's you, read on.
The Specify method: one size, every lane
This is the most reliable approach and doesn't require any plugins.
Draw your first ROI. Use the rectangle tool to draw a box around the band in lane 1. Make it tall enough to capture the full band vertically and wide enough to span the lane without overlapping neighbors. Leave a small margin — you want some local background included if you're doing rolling-ball or adjacent-background subtraction later.
Read the dimensions. Look at the ImageJ status bar (bottom of the main window) or go to
Edit > Selection > Specify.... You'll see width and height in pixels. Write these down — say, 80 × 30 px.Add to ROI Manager. Press
T(orCtrl+T) to add this selection to the ROI Manager. Rename it "Lane 1" if you're feeling organized.Place the next ROI with exact dimensions. Go to
Edit > Selection > Specify..., enter the same width (80) and height (30), and check the "Centered" checkbox if you want to position by center point (useful for evenly spaced lanes). Click OK. A new rectangle of exactly 80×30 appears. Drag it over lane 2, then pressTto add it to the ROI Manager.Repeat for all lanes. You don't need to re-open Specify each time. After adding each ROI, just click somewhere near the next lane, open Specify, confirm the dimensions are still 80×30, and click OK. Drag to position, press
T.Measure all at once. In the ROI Manager, click "Deselect" (so nothing is highlighted), then "Measure." You'll get a Results table with integrated density, mean, area, etc. for every lane. The Area column should be identical for all rows — that's your sanity check.
Shortcut for speed: After step 2, you can also just draw a rectangle, then type the dimensions directly into the W: and H: fields on the toolbar (if visible) and press Enter. This works in Fiji but can be finicky in vanilla ImageJ depending on the version.
Using a macro for even faster placement
If you run westerns frequently and always have the same number of lanes, a simple ImageJ macro saves time and eliminates manual error. Here's one that creates 10 equally spaced ROIs of identical size:
// Set these values for your blot
roiWidth = 80;
roiHeight = 30;
startX = 45; // x-coordinate of first lane center
startY = 120; // y-coordinate (band vertical center)
laneSpacing = 95; // pixel distance between lane centers
nLanes = 10;
for (i = 0; i < nLanes; i++) {
x = startX + i * laneSpacing - roiWidth / 2;
y = startY - roiHeight / 2;
makeRectangle(x, y, roiWidth, roiHeight);
roiManager("Add");
roiManager("Select", roiManager("Count") - 1);
roiManager("Rename", "Lane " + (i + 1));
}
Paste this into Plugins > New > Macro, adjust the five parameters at the top for your image, and run it. All 10 ROIs appear in the ROI Manager with identical dimensions. You'll likely need to nudge startX and laneSpacing the first time — open your image, hover over the center of lane 1 to read its x-coordinate from the status bar, then do the same for lane 2 and subtract.
Save the ROI set. In the ROI Manager, go to More > Save... to write a .zip file of all your ROIs. If your blot images are always the same resolution and lane layout (same gel comb, same imager), you can reload this ROI set on the next blot and just verify alignment.
Common mistakes that break your measurements
Mistake 1: Resizing the rectangle by dragging a handle. It's easy to accidentally grab a corner and change the dimensions by a few pixels without noticing. Always confirm with Specify or check the Area column in your results.
Mistake 2: Using ROIs that are too tight around the band. If your box just barely contains the band, any slight misalignment shifts signal outside the ROI in some lanes but not others. Use a box that's generously sized vertically — the extra background gets subtracted anyway if you're doing proper background correction.
Mistake 3: Forgetting that rotation matters. If your gel ran slightly crooked (it happens), lanes on the ends may be vertically offset. A uniform ROI placed at the same y-coordinate across all lanes will miss part of the band on the edge lanes. Either straighten the image first (Image > Transform > Rotate..., use a line along the well bottoms as reference) or adjust y-position per lane while keeping width and height locked.
Mistake 4: Measuring in 8-bit after conversion. If your imager gave you a 16-bit TIFF (65,536 grey levels) and you converted to 8-bit (256 levels) for convenience, you've crushed your dynamic range. Bands that differed by 1.3-fold might now look identical. Always measure on the original bit-depth image.
What about the built-in gel analyzer?
ImageJ's Analyze > Gels tool takes a different approach — you draw a box around the first lane, it duplicates that box width for subsequent lanes, and then it generates intensity profiles that you integrate as peaks. This does enforce uniform lane width, but the height is set by the initial selection and the peak boundaries are drawn manually, which introduces its own variability. The rectangle-ROI method described above gives you more explicit control and a clearer audit trail when reviewers ask how you quantified.
That said, the gel analyzer is fine for quick comparisons. Just be consistent within an experiment.
Tired of manually placing boxes lane by lane? VoilaBlot auto-detects lanes and applies uniform ROIs across your blot — right in the browser, no install, and your image never leaves your machine.
Try VoilaBlot free →The practical takeaway
Lock your ROI dimensions with Specify, add every selection to the ROI Manager before moving on, and verify that the Area column is identical when you measure. If you're doing this more than once a week, write a 10-line macro and save your ROI sets. The actual densitometry math is simple — it's the sloppy inputs that ruin quantification, and non-uniform ROIs are one of the easiest errors to eliminate.