SeqBench

How to Calculate Delta Delta Ct (ΔΔCt), With a Worked Example

9 min read · Updated September 24, 2026

The ΔΔCt method turns four sets of Ct values — your gene of interest and a reference gene, each measured in a treated sample and in a control — into a single fold change. The arithmetic is two subtractions and one exponent. What goes wrong is almost never the arithmetic: it is averaging in the wrong place, reading the sign backwards, or applying 2^−ΔΔCt to primers that do not double their product every cycle.

This guide works one realistic triplicate data set through by hand, shows how much the answer moves when the target primers are only 90% efficient, and puts an error bar on the result the way it has to be done — on the Ct scale, not on the fold change.

What a Ct value is, and why ΔΔCt needs two genes

A Ct (or Cq) is the cycle at which a well's fluorescence crosses the detection threshold. In a reaction that doubles its product every cycle, a sample that crosses one cycle earlier started with twice as much template, and one that crosses 3.32 cycles earlier started with ten times as much — log2 of 10 is 3.32. Ct is therefore a logarithm of the starting quantity, read backwards: a lower Ct means more template.

Raw Ct values cannot be compared between samples, because no two wells receive exactly the same amount of cDNA. The ΔΔCt method (Livak and Schmittgen, Methods, 2001) removes that in two steps. First it subtracts a reference gene measured in the same sample, which cancels out how much material went into the well. Then it subtracts the same quantity for a calibrator — usually the untreated control — which expresses the answer as a change relative to that control.

The four inputs, and where to average

Average the technical replicates of each of the four groups first, and do everything after that on the averages. Because Ct is already a logarithm, averaging Ct values is averaging on the log scale, which is where this arithmetic belongs. Computing a fold change from each replicate and then averaging the fold changes gives a different and systematically larger number, because 2^x curves upward: the arithmetic mean of several fold changes is always at least the fold change of their mean ΔΔCt.

  • Target gene, treated sample — the gene you care about, in the condition you changed.
  • Reference gene, treated sample — a housekeeping gene such as GAPDH, ACTB or 18S rRNA, measured on the same cDNA.
  • Target gene, control sample.
  • Reference gene, control sample.

Worked example: a gene induced by treatment

Triplicate Ct values from one plate, with GAPDH as the reference gene, taken through the calculation one line at a time:

  1. Treated, target: 24.10, 24.25, 23.95 → mean 24.100.
  2. Treated, GAPDH: 18.02, 18.10, 17.95 → mean 18.023.
  3. Control, target: 26.40, 26.55, 26.30 → mean 26.417.
  4. Control, GAPDH: 18.05, 17.98, 18.12 → mean 18.050.
  5. ΔCt, treated = 24.100 − 18.023 = 6.077. ΔCt, control = 26.417 − 18.050 = 8.367.
  6. ΔΔCt = ΔCt treated − ΔCt control = 6.077 − 8.367 = −2.290.
  7. Fold change = 2^−ΔΔCt = 2^2.290 = 4.89.

Reading the result: the sign, log2, and the reference gene

ΔΔCt is treated minus control, and a lower Ct means more template, so a negative ΔΔCt is upregulation and a positive one is downregulation. The example's −2.290 means the target crosses the threshold 2.29 cycles earlier in the treated sample once loading is accounted for: a 4.89-fold induction.

The log2 fold change is simply −ΔΔCt — 2.29 here — and it is the number to plot, average and test. Fold change itself is lopsided around 1: a ΔΔCt of +1.5 gives 2^−1.5 = 0.35, which is the same size of effect as a 2.83-fold increase, only downwards, and is often reported as a 2.83-fold decrease (1 ÷ 0.35). On the log2 scale the two are simply +1.5 and −1.5.

Look at the reference gene before believing any of it. Here GAPDH averages 18.023 in the treated sample and 18.050 in the control, 0.03 cycles apart, which is what a reference gene should do. Had the treatment moved GAPDH by a whole cycle, every ΔCt would carry that cycle and the fold change would be off by a factor of two, in a direction the calculation cannot detect. Vandesompele and colleagues (Genome Biology, 2002) recommend normalising to the geometric mean of several validated reference genes for exactly this reason.

When 2^−ΔΔCt is the wrong equation: primer efficiency

2^−ΔΔCt hard-codes an amplification factor of exactly 2 per cycle for both amplicons. Efficiency is measured from a standard curve — a dilution series, with Ct plotted against log10 of the input — as E = 10^(−1/slope). A slope of −3.32 is E = 2.00, or 100%. A slope of −3.59 is E = 1.90, or 90%, which many labs would still accept as a working assay.

When the efficiencies are not both 2, the Pfaffl ratio (Nucleic Acids Research, 2001) replaces the shortcut. Each amplicon is raised to its own efficiency over its own Ct difference: ratio = E_target^(Ct control − Ct treated, for the target) ÷ E_reference^(Ct control − Ct treated, for the reference). There is no single ΔΔCt behind that answer, which is why it must never be put back through 2^−x afterwards.

Rerun the example with the target primers at E = 1.90 and GAPDH at 2.00. The target term is 1.90^(26.417 − 24.100) = 1.90^2.317 = 4.42, the reference term is 2.00^(18.050 − 18.023) = 1.02, and the ratio is 4.34 — against 4.89 from 2^−ΔΔCt. On a difference of only 2.3 cycles the shortcut overstates the induction by 13%, and because the error compounds every cycle, the same pair of efficiencies across a ten-cycle difference would put it out by a factor of about 1.7.

Equal efficiencies are not a free pass either. At E = 1.95 for both amplicons the fold change is 1.95^2.29 = 4.62, not 4.89, because 2^−ΔΔCt assumes the value 2 — not merely that the two amplicons match. SeqBench's ΔΔCt calculator therefore uses Livak's equation only when both efficiencies are exactly 2.0, switches to the Pfaffl ratio otherwise, and prints what Livak would have reported alongside it, so the size of the correction is on the screen rather than hidden.

Error bars: propagate on the Ct scale, convert at the end

Replicate scatter belongs to the Ct values, so the uncertainty has to be carried on that scale and converted only at the end. For each of the four groups take the standard error of the mean — the standard deviation divided by the square root of the number of replicates — and combine the four in quadrature. For the example that is √(0.087² + 0.043² + 0.073² + 0.040²) = 0.128 cycles.

Mapping ±1 standard error through 2^−x gives 2^(2.290 − 0.128) to 2^(2.290 + 0.128): 4.48- to 5.34-fold. The interval is lopsided — 0.41 below 4.89 and 0.45 above — because the exponential stretches the upper side. A symmetric ± written on the fold change itself is wrong on one side.

Technical replicates only measure pipetting and instrument noise; they say nothing about whether the effect would reproduce in another culture or another animal. For a claim about biology, compute ΔΔCt for each biological replicate against the control and test those values, or their log2 fold changes — never the fold changes themselves.

Mistakes that produce a confident wrong fold change

  • Averaging fold changes instead of Ct values. The arithmetic mean of several 2^−ΔΔCt values is at least as large as the fold change of their mean ΔΔCt, and larger whenever the replicates disagree.
  • Typing an efficiency as a percentage. The equation needs the per-cycle fold: 95% efficient is 1.95, not 95.
  • Using a reference gene that responds to the treatment. Check that its Ct is stable across your conditions before trusting any ΔCt built on it.
  • Reading the sign backwards. A negative ΔΔCt is up; a positive one is down.
  • Trusting very late Ct values. Past about 35 cycles a well holds only a handful of template molecules, replicates scatter widely, and a fold change built on them will not reproduce.
  • Comparing ΔCt values across plates without a shared calibrator sample, or with the threshold set independently on each run.
  • Skipping the no-template and no-reverse-transcriptase controls. Primer-dimer and genomic DNA carry-over both produce Ct values that look like expression; a single melt-curve peak and a clean no-RT well are what make a Ct mean what you think it means.

Frequently asked questions

How do you calculate delta delta Ct?

Average the replicate Ct values, subtract the reference gene's Ct from the target's Ct within each sample to get ΔCt, then subtract the control's ΔCt from the treated sample's ΔCt to get ΔΔCt. The fold change is 2^−ΔΔCt when both primer pairs are 100% efficient. In the worked example, ΔCt values of 6.077 (treated) and 8.367 (control) give ΔΔCt = −2.290 and a fold change of 4.89.

What does a negative ΔΔCt mean?

Upregulation. A lower Ct means more template, so when the treated sample's normalised Ct is lower than the control's, ΔΔCt is negative and 2^−ΔΔCt is greater than 1. A positive ΔΔCt means downregulation, with a fold change below 1.

What is the difference between ΔCt and ΔΔCt?

ΔCt is the target's Ct minus the reference gene's Ct within one sample; it corrects for how much cDNA went into that well. ΔΔCt is the treated sample's ΔCt minus the control's ΔCt; it expresses the change relative to a calibrator. ΔCt alone gives expression relative to the reference gene, and ΔΔCt gives the fold change relative to the control.

When should I use the Pfaffl method instead of 2^-ΔΔCt?

Whenever either amplicon's efficiency is measurably different from 100%, and especially when the two differ from each other. 2^−ΔΔCt assumes both double every cycle. With the target at E = 1.90 and the reference at 2.00, the example in this guide gives 4.34-fold by Pfaffl against 4.89-fold by 2^−ΔΔCt.

How do I find my primers' amplification efficiency?

Run a dilution series of template (for example five 10-fold steps), plot Ct against log10 of the input, and convert the slope with E = 10^(−1/slope). A slope of −3.32 gives E = 2.00, or 100%, and −3.59 gives 1.90. Enter efficiency as the per-cycle fold — 1.95 for 95% — not as a percentage.

Should I average fold changes from my biological replicates?

Average on the log scale instead: take the mean of the ΔΔCt or log2 fold-change values and convert once, which gives the geometric mean fold change. An arithmetic mean of fold changes is pulled upward by the largest replicate.

Why is my fold-change error bar asymmetric?

Because the uncertainty is symmetric in ΔΔCt and the fold change is an exponential of it. In the worked example, ±0.128 cycles around a ΔΔCt of −2.290 maps to 4.48- to 5.34-fold around 4.89 — 0.41 below and 0.45 above.

Related references

Related tools

Related guides