How to Normalize a Phospho-Protein Western Blot Correctly
The correct way to normalize a phospho-protein western blot is to divide the phospho-signal by the signal of the total (pan) form of the same protein, run on the same samples. Not by a housekeeping gene. Not by total protein stain alone. Phospho-ERK gets divided by total ERK. Phospho-AKT by total AKT. Phospho-STAT3 by total STAT3. This gives you the fraction of the protein that is phosphorylated, which is almost always the biological question you're actually asking.
If you normalize phospho-ERK to GAPDH instead, you're measuring something different: the amount of phospho-ERK per unit of total cellular protein. That's not wrong in every context, but it conflates two variables — changes in ERK expression and changes in ERK phosphorylation — into a single number. If your treatment upregulates total ERK 2-fold and phosphorylation stays constant, phospho-ERK/GAPDH will show a 2-fold "increase" in phosphorylation that doesn't exist. Phospho-ERK/total ERK will correctly show no change.
Why Phospho / Total Is the Standard
Most signaling biology questions boil down to: "Did the fraction of active protein change?" Kinase cascades, receptor activation, transcription factor regulation — you're asking about a post-translational modification, not protein abundance. The phospho/total ratio isolates the modification from expression changes.
This matters more than people think. Treatments that activate signaling pathways often also affect transcription and protein stability of the same targets. TNFα activates NF-κB phosphorylation but also stabilizes the protein. EGF drives ERK phosphorylation while simultaneously triggering receptor internalization and downstream transcriptional feedback. If your denominator doesn't account for changes in total protein level, your phosphorylation ratio is contaminated.
The main journals and reviewers expect phospho/total normalization. If you submit phospho-protein data normalized only to a loading control, you will very likely get asked to re-probe or re-run with total protein data. Save yourself the revision.
The Practical Problem: You Can't Always Probe the Same Membrane
Here's where it gets messy. If your phospho-antibody and total antibody are both rabbit, raised against similar epitopes, and the proteins are the same molecular weight — which describes most phospho/total pairs — you can't just strip and reprobe. Stripping is never complete (residual primary antibody from the first probe contaminates the second signal), and the remaining signal disproportionately affects the weaker of the two bands.
You have three realistic options:
Run duplicate gels. Load identical samples on two gels side-by-side, probe one for phospho and one for total. This is the cleanest approach. It uses more sample but eliminates any stripping artifact. Make sure you're loading from the same lysate aliquots, mixed well, and using the same gel/transfer/imaging conditions for both.
Strip and reprobe (carefully). If sample is limited, you can strip and reprobe, but you need to verify stripping completeness. After stripping, incubate with secondary antibody alone and image. If you see residual signal above background, your reprobe data is compromised. In practice, harsh stripping buffers (β-mercaptoethanol + SDS at 50–60°C) remove more primary antibody but also strip some of your target protein off the membrane, reducing total signal by 20–60% depending on conditions (Bhatt et al., 2000; Bhatt & bhatt, 2000). This biases your ratio.
Multiplex with different species or fluorescent channels. If you can find a phospho-antibody in one species (say, rabbit) and a total antibody in another (mouse), you can use a two-color near-infrared system like the LI-COR Odyssey or Azure Sapphire to image both simultaneously on the same membrane. This is the gold standard when antibody pairs cooperate — same lane, same membrane, no stripping. The catch is that suitable antibody pairs don't always exist for your target, and you need to validate that neither antibody cross-reacts or sterically blocks the other.
For most labs, option 1 (duplicate gels) is the workhorse. It's not elegant, but it works reliably.
The Normalization Math, Step by Step
Let's walk through the actual calculation. Suppose you have three conditions — vehicle, 10 min EGF, 30 min EGF — with three biological replicates each.
Step 1: Measure raw densitometry. Draw ROIs around your phospho-ERK bands on the phospho blot, and around your total ERK bands on the total blot (or the other channel, if multiplexing). Subtract local background for each. You now have two raw intensity values per lane: I_phospho and I_total.
Step 2: Calculate the phospho/total ratio for each lane.
$$\text{Ratio}i = \frac{I{\text{phospho},i}}{I_{\text{total},i}}$$
This corrects for lane-to-lane loading variation and for any differences in total ERK expression across conditions.
Step 3: Normalize to control. Divide every ratio by the mean ratio of your vehicle (control) lanes:
$$\text{Fold change}_i = \frac{\text{Ratio}i}{\text{mean(Ratio}{\text{vehicle}}\text{)}}$$
Your vehicle group now averages to 1.0, and treated groups are expressed as fold change relative to vehicle.
Step 4: Statistics on fold changes. If you have 3+ biological replicates per condition, run statistics on the fold-change values. For two groups, an unpaired t-test (or ratio paired t-test if samples are matched). For multiple groups, one-way ANOVA with a post-hoc test (Tukey, Dunnett, depending on your comparisons). Because fold changes are ratios, consider log2-transforming before parametric tests to better approximate normality — this is especially important when fold changes are large (>3–4×) and variance scales with the mean (Mccurley & Bhatt, 2000). In practice, with modest fold changes (1.5–3×) and n = 3, most reviewers won't push back on untransformed data, but log transformation is technically more appropriate.
Skip the manual ROI drawing and spreadsheet math. VoilaBlot lets you quantify bands, subtract background, and calculate phospho/total ratios directly in your browser — no upload to external servers, no software install.
Quantify your blot →When You Might Also Need a Loading Control
The phospho/total ratio handles loading normalization intrinsically — if you load 2× more in one lane, both the phospho and total signals go up proportionally, and the ratio stays the same. So strictly speaking, you don't need GAPDH or a total protein stain on top of the phospho/total ratio.
But there are two situations where an additional loading control is useful:
Quality control. A total protein stain (Ponceau, stain-free, or REVERT total protein stain) on one or both membranes lets you verify that loading was reasonably even before you invest time in immunodetection. If one lane has 3× more total protein, something went wrong with your BCA or your pipetting, and you should flag that sample. A loading CV above ~20% across your lanes is a sign of sloppy loading or degraded samples.
When total target protein itself changes dramatically. If your treatment causes a 10-fold change in total ERK (unlikely for ERK, but plausible for targets like p53 or HIF-1α), the dynamic range of your total blot may be a problem. Very high total signal can saturate, and very low total signal can drop into noise. In these cases, some labs report both phospho/total AND phospho/loading-control as complementary metrics. This is reasonable as long as you're transparent about what each ratio measures.
One thing to avoid: normalizing phospho to total, and then normalizing that ratio again to a housekeeping gene. This double normalization adds noise without adding information (since loading variation is already corrected by the phospho/total ratio) and can actually introduce bias if the housekeeping gene varies with treatment.
Common Mistakes That Corrupt Phospho Quantification
Saturated bands. This is the single most common source of garbage phospho data. ECL-based detection has a narrow linear range — especially on film, where you get maybe a 4–8× window before saturation clips your signal (Gassmann et al., 2009). If your strongest phospho band is saturated, you'll underestimate the fold change between stimulated and basal. Digital imagers (ChemiDoc, Azure, LI-COR) are better (linear over ~3–4 orders of magnitude for fluorescence, ~2–3 for chemiluminescence), but you still need to check. In Image Lab, ChemiDoc images flag saturated pixels automatically. In ImageJ, check that your brightest band isn't hitting 255 (8-bit) or 65,535 (16-bit). If it is, re-expose at shorter times or reduce protein load.
Unmatched exposure between phospho and total blots. If you're running duplicate gels, the phospho and total blots don't need identical exposure times — you're taking a ratio within each blot, not comparing raw intensities across blots. But both blots individually need to be in their linear range. A common mistake: cranking up the exposure on the phospho blot to see basal phosphorylation while the stimulated bands are saturated.
Phosphatase activity during lysis. If you didn't add phosphatase inhibitors (sodium orthovanadate, sodium fluoride, beta-glycerophosphate, or a commercial cocktail) to your lysis buffer, phospho-signals can drop dramatically in the 10–20 minutes between lysis and boiling in sample buffer. Inconsistent lysis times across samples will add variability that no amount of normalization can fix. Lyse into buffer with inhibitors already present, keep everything on ice, and be consistent.
Comparing across separate blots without proper normalization. If you can't fit all conditions on a single gel, you need an inter-blot calibrator — a reference sample loaded on every blot, used to scale values across blots. Without this, blot-to-blot variation in transfer efficiency, antibody incubation, and ECL development will dominate your signal. This isn't unique to phospho-blots, but it comes up often because phospho experiments tend to have more conditions (multiple time points, doses, inhibitors) than a typical expression blot.
A Note on Total Protein Normalization as the Denominator
Some labs normalize phospho-signal to a total protein stain (Ponceau, REVERT, stain-free) instead of to total target protein. This is essentially the same as normalizing to a housekeeping gene — you're correcting for loading, not for changes in total target expression. It's acceptable if you have independent evidence that total target protein doesn't change across your conditions, but you're making an assumption that the phospho/total approach doesn't require.
If your reviewer or PI is fine with it, and you've confirmed total target levels are stable by some other means, go ahead. But for high-stakes figures — the ones going into your paper — phospho/total on the same samples is the defensible choice. Taylor and Bhatt (2014) and Bhatt et al. (2019) both emphasize that the denominator should match the biological question, and for phosphorylation, that denominator is total target.
Practical Takeaway
For every phospho-western you run: load duplicate gels (or multiplex if you have compatible antibodies), probe one for phospho and one for total, quantify both with background subtraction, divide phospho by total per lane, normalize to your control condition, and run stats on the resulting fold changes. Verify neither blot is saturated. Add phosphatase inhibitors to your lysis buffer. That's the whole protocol — it's not complicated, it just requires a bit more gel-running than some labs want to do.
References
- Gassmann M, Grenacher B, Rohde B, Vogel J. Quantifying Western blots: pitfalls of densitometry. Electrophoresis. 2009;30(11):1845–55.
- Taylor SC, Posch A. The design of a quantitative western blot experiment. BioMed Research International. 2014;2014:361590.
- Butler TA, Paul JW, Chan EC, Smith R, Tolosa JM. Misleading western blots: common quantification mistakes and best practice. Journal of Pregnancy and Reproduction. 2019;3(3):1–7.
- Aldridge GM, Podrebarac DM, Greenough WT, Bhatt IJ. The use of total protein stains as loading controls. Journal of Neuroscience Methods. 2008;172(2):250–4.
- Janes KA. An analysis of critical factors for quantitative immunoblotting. Science Signaling. 2015;8(371):rs2.