Short answer / Lab
Subtract the reference gene's Ct from the target's in each sample to get ΔCt, subtract the control's ΔCt from the treated sample's to get ΔΔCt, and the fold change is 2^(−ΔΔCt). That assumes 100% primer efficiency; the Pfaffl ratio uses measured efficiencies. For publication, MIQE 2.0 (2025) recommends efficiency-corrected, per-sample normalised values instead.
When I designed a PCR machine, I spent a tedious amount of time working out how much light got through its FAM, HEX, ROX and Cy5 filters. That's the instrument's end of qPCR. This is the other end: what the numbers mean, and how the usual fold-change formula can overstate a big change by half.
Every well gets a Ct: the cycle at which its fluorescence crosses a threshold. (The MIQE guidelines call it the quantification cycle, Cq. Same number.) The more template a reaction starts with, the sooner it crosses. If the product doubles every cycle, one cycle earlier means twice the starting material. Engineers will recognise an amplifier with a gain of two per stage, and everything below follows from that.
The ΔΔCt method turns those Cts into a fold change in one gene between two conditions. Kenneth Livak and Thomas Schmittgen published it in Methods in 2001 (doi:10.1006/meth.2001.1262), and you'll meet it in almost every lab that runs qPCR. In 2025 the revised MIQE guidelines recommended against relying on it for published results. So I'll do both: ΔΔCt first, then the per-sample method MIQE 2.0 recommends. If you only want the number, the calculator at the end does it.
What goes into the calculation?
Four Ct values go in, each the mean of your technical replicates: the target gene and the reference gene, each measured in the control sample and the treated sample.
The target gene is the one you care about. The reference gene (a housekeeping gene such as GAPDH or ACTB) is one whose expression shouldn't change with the treatment. Think of it as the calibration channel. It corrects for how much RNA went into each well and how well it was reverse transcribed.
A worked example of ΔΔCt
| Sample | Target gene Ct | Reference gene Ct |
|---|---|---|
| Control | 24.0 |
18.0 |
| Treated | 22.5 |
18.2 |
Step 1. ΔCt for each sample. Target Ct minus reference Ct.
- Control:
24.0 − 18.0 = 6.0 - Treated:
22.5 − 18.2 = 4.3
Step 2. ΔΔCt. Treated ΔCt minus control ΔCt: 4.3 − 6.0 = −1.7.
Step 3. Fold change. 2^(−ΔΔCt) = 2^1.7 = 3.25.
The target gene is expressed about 3.2 times higher in the treated sample. A positive ΔΔCt means expression went down: +1 gives 0.5, half the control level.
The most common slip is subtracting the wrong way round in step 2. It's also the nastiest, because the wrong answer looks perfectly reasonable. With the same data it reports 0.31, a threefold fall instead of a threefold rise, and nothing about the number warns you.
If your replicates give ΔΔCt a standard deviation, apply it in the exponent. With 0.25, the range is 2^(1.7 − 0.25) to 2^(1.7 + 0.25), which is 2.73 to 3.86. It isn't symmetric around 3.25, because the scale is exponential.
When is 2^(−ΔΔCt) wrong?
It's wrong when the primers don't double the product every cycle, which is most of the time. The formula assumes 100% efficiency for both the target and the reference. Real primer pairs get close, not exact, and the error compounds once per cycle, like interest.
Michael Pfaffl's ratio, published in Nucleic Acids Research in 2001 (doi:10.1093/nar/29.9.e45), puts the measured efficiencies in. Each Ct difference is control minus treated:
ratio = E_target ^ (Ct_target,control − Ct_target,treated)
/ E_ref ^ (Ct_ref,control − Ct_ref,treated)
E is the amplification factor per cycle: 2.0 at 100% efficiency, 1.92 at 92%. With both at 2.0 the ratio is exactly 2^(−ΔΔCt).
Same data, with the target primers measured at 92% and the reference at 100%:
- Target:
1.92^(24.0 − 22.5) = 1.92^1.5 = 2.66 - Reference:
2.0^(18.0 − 18.2) = 2.0^(−0.2) = 0.87 - Ratio:
2.66 / 0.87 = 3.06
Assuming 100% overstated the change by about 6%, 3.25 against 3.06. Over 1.5 cycles that isn't much. But it grows with every cycle between the two samples. For a gene that moves ten cycles, the same 92% primers make the 100% assumption overstate the change by about half.
How do you measure primer efficiency?
You measure it from the slope of a dilution series run through the same assay. Plot Ct against log10 of the relative input and fit a straight line. The slope converts to efficiency like this.
efficiency = 10^(−1/slope) − 1
| Relative input | log10 input | Mean Ct |
|---|---|---|
| 1 | 0 |
16.10 |
| 0.1 | −1 |
19.55 |
| 0.01 | −2 |
23.00 |
| 0.001 | −3 |
26.45 |
| 0.0001 | −4 |
29.90 |
The slope is −3.45, so efficiency is 10^(1/3.45) − 1 = 0.949, or 94.9%. A slope of −3.32 is 100%.
The original MIQE guidelines (Bustin and colleagues, Clinical Chemistry, 2009, doi:10.1373/clinchem.2008.112797) treat the curve's slope and y-intercept, the efficiency calculated from the slope, the r² and the linear dynamic range as essential information. MIQE 2.0 adds that each dilution should ideally have at least three technical replicates, the series should span four to five orders of magnitude, and the efficiency should come with a confidence interval. The series above spans four.
What does MIQE 2.0 recommend instead of ΔΔCt?
MIQE 2.0 recommends converting each sample to an efficiency-corrected, normalised value and doing the statistics on those.
The revision (Bustin and colleagues, Clinical Chemistry, 2025, doi:10.1093/clinchem/hvaf043) strongly recommends against relying on ΔΔCt. Its reasons:
- averaging Cts within each group hides the variation between biological replicates;
- the method copes poorly with technical replicates and several reference genes;
- when expression changes a lot, the fold difference stays biased by any error in the assumed efficiency.
For each biological sample, then:
- Convert Ct to an efficiency-corrected quantity. Relative to a constant for each assay, which cancels later, a reaction's starting quantity is
E^(−Ct). - Normalise. Divide the target quantity by the reference quantity, using the geometric mean of the reference genes when there are several.
- Compare groups. Do the statistics on these per-sample values. The fold difference is the mean normalised expression of the treated group divided by the mean of the control group.
Here's the same experiment with three biological replicates per group and the same efficiencies (target 92%, reference 100%). The values are scaled so the control mean is 1:
| Sample | Target Ct | Reference Ct | Normalised expression |
|---|---|---|---|
| Control 1 | 24.0 |
18.0 |
1.02 |
| Control 2 | 24.3 |
18.1 |
0.90 |
| Control 3 | 23.8 |
17.9 |
1.08 |
| Treated 1 | 22.5 |
18.2 |
3.11 |
| Treated 2 | 22.8 |
18.3 |
2.74 |
| Treated 3 | 22.2 |
18.1 |
3.53 |
The fold difference is 3.13. Livak on the group means of the same data gives 3.32. The single number matters less than what you now have: six per-sample values to test and put an interval on, so a reader can see how well the biological replicates agree. One averaged number hides that.
Where it goes wrong
These are the checks I'd run before trusting any of the numbers above.
- Is the reference gene stable? Compare its raw Ct across conditions at the same input. If it moves by a cycle or more, it's responding to the treatment, and every result downstream inherits the drift. A calibration channel that drifts is worse than none, because you trust it. The geometric mean of two or three reference genes is the approach Vandesompele and colleagues set out in Genome Biology in 2002 (doi:10.1186/gb-2002-3-7-research0034).
- Do the technical replicates agree? A triplicate spread over more than about half a cycle usually means pipetting. Repeat it before calculating anything. No amount of maths rescues a bad well.
- Are the controls clean? The no-template control shouldn't amplify, or should amplify many cycles after your samples. A no-RT control, the RNA taken through without reverse transcriptase, shows whether genomic DNA is adding to the signal. With SYBR chemistry, a single melt curve peak shows you amplified one product.
- Are the Cts in range? Cts in the high thirties come from a handful of starting copies, and the replicates scatter. It's the same problem every instrument has at the bottom of its range: not enough signal above the noise. MIQE 2.0 asks for each assay's limits of detection and quantification where low expression matters.
Doing it in CCA Labs
We built a qPCR ΔΔCt tool into Bench Tools for the quick check at the bench. Enter the replicate Cts for the four groups and it averages them, works out ΔCt and ΔΔCt, and gives the fold change. Leave both efficiencies at 100% and it uses Livak, with a range propagated from the spread of all four groups. Enter a measured efficiency for either primer pair and it switches to Pfaffl, which gives the ratio without a range. The same tool calculates primer efficiency from a dilution series.
I should be straight about its limits. It averages the group Cts, which is the approach MIQE 2.0 advises against for publication. It's the right tool for "did the knockdown work?" before you plan the next run. For the paper, use the per-sample method above.
Bench Tools also does plate assay standard curves (4PL or linear), assay statistics (Z′, CV, Grubbs outliers, t-test, ANOVA and sample size) and DNA and RNA quantification from A260. The full list is on the all-in-one lab page.
Create your lab to use the calculators alongside your experiments, or see how the rest of the record fits together in ELN vs LIMS.
FAQ / asked about this
Frequently asked questions
- What primer efficiency is acceptable for the ΔΔCt method?
- The MIQE guidelines do not set a pass mark, but a common rule of thumb is 90% to 110%, which is a standard curve slope between about −3.6 and −3.1. The Livak method also assumes the target and reference efficiencies are close to each other. If they differ, use the measured efficiencies, either in the Pfaffl ratio or in efficiency-corrected quantities per sample.
- Should I average Ct values or fold changes across replicates?
- Average technical replicates within a sample. Across biological replicates, MIQE 2.0 advises converting each sample to an efficiency-corrected, normalised expression value and doing the statistics on those per-sample values before averaging each group. Statistical tests on raw Ct values should be avoided, because they are neither efficiency-corrected nor normalised.
- Why do I need a reference gene?
- The reference gene corrects for differences in how much RNA went into each reaction and how well it was reverse transcribed. It only does that if its own expression does not change with the treatment, so check it before relying on it, and use the geometric mean of several reference genes where you can.