What Is a Good Ct Value in qPCR? Ranges, Context, and When to Worry
A "good" Ct value is one that falls within the linear dynamic range of your assay, is reproducible across replicates (SD < 0.5 Ct), and makes biological sense for the target you're measuring. There is no single universal number. A Ct of 28 for a low-abundance transcription factor is perfectly fine; a Ct of 28 for 18S rRNA means something went wrong with your RNA or your cDNA synthesis. Context is everything.
That said, here are some rough expectations that hold across most experiments on instruments like the QuantStudio 5, CFX96, or LightCycler 480: abundant reference genes (GAPDH, ACTB, 18S) typically come in between Ct 10–20. Moderately expressed genes of interest land around Ct 20–30. Anything above Ct 35 is in the zone where you need to start questioning whether the signal is real — and past Ct 38, you're essentially reading noise in most SYBR Green assays.
What the Ct Value Actually Represents
The Ct (cycle threshold) — also called Cq (quantification cycle) per MISO guidelines — is the fractional PCR cycle at which your fluorescence signal crosses a defined threshold above background. It's inversely proportional to the log of the starting template amount: every ~3.3 Ct difference represents a 10-fold change in input (assuming 100% amplification efficiency).
This means:
- Ct 15 vs. Ct 25: roughly a 1,000-fold difference in starting template
- Ct 20 vs. Ct 23.3: roughly a 10-fold difference
- A 1-Ct shift: approximately a 2-fold difference in template
This logarithmic relationship is why small Ct differences translate to meaningful biological changes, and why replicate consistency matters so much. A standard deviation of 0.5 Ct between triplicates represents roughly a 1.4-fold spread — tolerable but not ideal. Aim for SD < 0.3 Ct when you can, and definitely investigate anything above 0.5.
Expected Ct Ranges by Target Type
Here's what I typically see across mammalian cell line and tissue experiments, using 500 ng–1 µg total RNA input, standard oligo-dT or random hexamer priming, and 1:5 to 1:10 cDNA dilution into the qPCR reaction:
Highly abundant targets (Ct 8–18)
- 18S rRNA: Ct 8–14 (often so abundant you need to dilute cDNA further or it overwhelms multiplex reactions)
- GAPDH: Ct 14–20
- ACTB (β-actin): Ct 14–20
Moderately expressed targets (Ct 18–28)
- Most reference genes in their appropriate tissue: HPRT1, B2M, RPL13A, TBP — typically Ct 20–26
- Well-expressed genes of interest: cytokines in stimulated immune cells, structural proteins in their home tissue
Low-abundance targets (Ct 28–35)
- Transcription factors, signaling molecules in unstimulated cells, many receptor genes
- These are real signals but require tighter technique: fresh cDNA, optimized primer efficiency, careful pipetting
The danger zone (Ct > 35)
- At Ct 35–38, you're amplifying from very few template molecules — maybe 1–10 copies. Stochastic variation dominates. You'll see high replicate scatter and increasing rates of false positives.
- Past Ct 38–40 in SYBR Green assays, you're usually looking at primer-dimer formation, genomic DNA contamination, or nonspecific amplification. Always check the melt curve.
- TaqMan assays are somewhat more forgiving at high Ct values because probe specificity filters out primer-dimer signal, but I'd still treat anything above Ct 37 with skepticism.
No-template controls (NTCs)
- Ideally: no amplification, or Ct undetermined.
- Acceptable in SYBR: Ct ≥ 38–40, if the melt curve shows a distinct peak different from your target (i.e., primer-dimer, typically 5–10°C lower melting temperature).
- Not acceptable: NTC Ct within 5 cycles of your lowest-abundance sample. That gap is your signal-to-noise margin — if it's too narrow, you can't trust the sample data.
When a "Normal" Ct Is Actually a Problem
Raw Ct values are only meaningful in context. Here are scenarios where a seemingly fine number should raise a flag:
Your reference gene shifted across conditions. If GAPDH is Ct 16 in your control and Ct 19 in your treatment, that 8-fold difference will distort every ΔCt calculation. This is one of the most common and underappreciated errors in qPCR experiments. Validate reference gene stability across your experimental conditions using tools like geNorm (Vandesompele et al., 2002) or NormFinder (Andersen et al., 2004). Use at least two reference genes.
Your Ct values don't match your standard curve range. If you built a standard curve from 10-fold serial dilutions covering Ct 15–30, and your unknown samples are coming in at Ct 33, you're extrapolating outside the validated range. The efficiency you calculated doesn't necessarily hold at those extremes.
Replicates are tight but the biology doesn't make sense. Three beautiful replicates at Ct 22 for a gene that should be silenced in your cell type? Check for genomic DNA amplification (run a no-reverse-transcriptase control), pseudogene amplification (common with GAPDH and ACTB primers that span a single exon), or sample mix-ups.
Your Ct values are suspiciously low. A Ct of 8–10 for a standard GOI likely means contamination with PCR product from a previous run (amplicon carryover), especially if your NTCs also show early amplification. This is the qPCR equivalent of a lab emergency — clean everything, use fresh reagents, and physically separate your pre- and post-PCR work areas.
The Math Behind "Fold Change" and Why Ct Ranges Matter for It
The ΔΔCt method (Livak and Schmittgen, 2001) assumes roughly equal amplification efficiency between your target and reference genes, and it works like this:
- ΔCt = Ct(target) − Ct(reference) — for each sample
- ΔΔCt = ΔCt(treated) − ΔCt(control)
- Fold change = 2^(−ΔΔCt)
This is reliable when both primer sets have efficiencies between 90–110% (slope of −3.6 to −3.1 on a log-dilution standard curve). When efficiencies differ substantially, use the Pfaffl method (Pfaffl, 2001), which incorporates the actual efficiency values:
Ratio = (E_target)^(ΔCt_target) / (E_ref)^(ΔCt_ref)
Where E is the efficiency as a factor (e.g., 1.95 for 95% efficiency) and ΔCt is the difference between control and treated for that gene.
The practical implication: if your target gene Ct values are in the 30–35 range while your reference is at Ct 15, you're spanning a huge dynamic range within a single experiment. Small pipetting errors or slight efficiency mismatches get amplified (no pun intended) across that 15–20 cycle gap. In these cases, consider using a reference gene that's closer in abundance to your target, or switch to absolute quantification with a standard curve.
Practical Guidelines for Troubleshooting Ct Values
Ct higher than expected:
- Check RNA quality (A260/280 between 1.8–2.1, RIN > 7 for mammalian samples)
- Check cDNA synthesis: did the reverse transcriptase reaction actually work? Run a known-good primer pair as a positive control.
- Check primer efficiency: run a 5-point, 4-fold serial dilution series and calculate efficiency. If it's below 85%, redesign primers.
- Check for inhibitors: dilute your cDNA 1:5 and 1:10. If the ΔCt between dilutions is less than the expected ~2.3 cycles (for a 5-fold dilution at 100% efficiency), you have inhibition.
Ct lower than expected:
- Rule out contamination: fresh NTCs, wipe down surfaces, check for amplicon carryover.
- Confirm primer specificity via melt curve (single sharp peak) or gel electrophoresis (single band at expected size).
High replicate variability (SD > 0.5 Ct):
- At Ct < 30: this is almost always a pipetting problem. Use a multichannel pipette, ensure proper tip sealing, and mix your master mix thoroughly.
- At Ct > 32: stochastic sampling noise becomes the dominant factor. Increase your input cDNA amount or run more replicates and accept wider confidence intervals.
Stop Agonizing Over the Number — Focus on the Experiment
The single biggest mistake I see is people fixating on whether a Ct of 31 is "okay" in isolation. It depends on your assay, your template, your primers, and your question. A Ct of 31 with an SD of 0.2, clean NTCs, validated primer efficiency of 97%, and a proper melt curve is a solid data point. A Ct of 22 with an SD of 1.5 and no standard curve validation is garbage.
If you want a tool that flags these issues automatically — replicate outliers, efficiency problems, reference gene instability, NTC contamination — upload your data to VoilaPCR and let it run the quality checks so you can focus on the biology.