All Resources

RNA-Seq Normalization Calculator

Free

Paste raw counts and gene lengths to get CPM, FPKM, and TPM, computed with the correct formulas so TPM sums to the same total in every sample. Export the normalized table as a CSV.

Raw count matrix

Drag & drop a file or

CSV, TSV, Excel (.xlsx/.xls) - max 5000 rows

6 genes · 3 samples

Unit

Showing TPM. 6 of 6 genes pass the low-count filter (CPM ≥ 1 in ≥ 1 sample).

GeneS1S2S3
TP53383574274330562
BRCA1476557336870
GAPDH540071555655523923
EGFR8849779410615
ACTB407781388076427940
LOWGENE177.300.0090.09
Library size20,29220,36020,211
CPM corrects each sample for its own sequencing depth. TPM normalizes by gene length first and then by depth, so every sample's TPM values sum to the same total, which makes them comparable across samples (Wagner et al., 2012). Filtering out genes with almost no reads before downstream testing improves the false discovery rate.

Depth and Length, the Two Biases Every Count Carries

A raw RNA-sequencing count is not a clean measure of expression, because it is inflated by two technical factors. A sample sequenced to greater depth accumulates more reads for every gene, and a longer gene collects more reads simply because it presents more sequence to fragment and capture. Normalization exists to strip out both effects so the numbers reflect biology rather than library preparation.

The three common units differ in what they correct and in what order. CPM scales by depth alone and is used for filtering and for length-independent comparisons. FPKM, equivalent to RPKM for paired-end data, corrects for depth then length, but because it normalizes depth first, its per-sample total varies. TPM reverses the order, normalizing by length first and depth last, so that every sample sums to exactly one million transcripts.

That fixed total is the reason Wagner et al. (2012) and Li et al. (2010) argued for TPM over FPKM when comparing a gene across samples: equal totals make the values directly comparable as proportions of the transcript pool. This calculator implements the two-step TPM computation exactly, so the TPM column always sums to one million, and reports FPKM and CPM alongside for reference.

One caveat matters for statistics: these units are excellent for reporting and visualization but formal differential-expression testing should run on raw counts with a dedicated model, because methods such as the median of ratios in DESeq2 or the trimmed mean of M-values in edgeR are more robust than simple depth scaling. Once normalized, values flow naturally into the log2 fold change calculator and a heatmap generator. For the full analysis with a proper count model, the bioinformatics analysis service runs it end to end.

A Worked Example: Why TPM Sums to a Constant and FPKM Does Not

Take a tiny four-gene library with raw counts and gene lengths. Because the whole library here is only 2,000 reads, scaling to a per-million basis gives large numbers, but the magnitudes are not the point. Look at the column totals: CPM and TPM each sum to exactly one million, while FPKM sums to only 750,000.

GeneCountLength (bp)CPMFPKMTPM
GeneA5002000250,000125,000166,667
GeneB10001000500,000500,000666,667
GeneC2004000100,00025,00033,333
GeneD3001500150,000100,000133,333
Column total20001,000,000750,0001,000,000

Because the FPKM total drifts with the length composition of the sample, the same gene's FPKM in another sample is measured against a different denominator and cannot be compared directly. TPM fixes the total at one million, so a gene's TPM is a true fraction of the transcript pool and is comparable from sample to sample. Note GeneB: it is the shortest gene yet well covered, so it takes two-thirds of the TPM pool, which is exactly the length effect normalization is meant to expose rather than hide.

Common Mistakes When Normalizing RNA-seq Counts

  • Feeding TPM or FPKM into a differential-expression model. DESeq2 and edgeR expect raw counts and do their own library-size normalization. Handing them TPM or FPKM breaks the count-based statistics and invalidates the results.
  • Comparing FPKM across samples. FPKM totals differ between samples, so a gene's FPKM is not a fixed fraction and cross-sample comparison is biased. Use TPM, whose per-sample total is constant, for that purpose.
  • Comparing CPM between genes of different length. CPM does not divide by length, so within one sample a long gene looks more expressed than an equally transcribed short gene. CPM is for the same gene across samples or for filtering, not for ranking different genes.
  • Using the wrong gene length. Length here means the effective or union exon length, not the full genomic span including introns. Using the genomic span inflates the length of intron-rich genes and distorts their FPKM and TPM.
  • Skipping normalization entirely. Comparing raw counts between libraries sequenced to different depths conflates expression with depth. A gene can look induced simply because its sample had more total reads.

How to Use This Calculator

1

Paste your counts

One row per gene with a label, the raw count, and the gene length in base pairs.

2

Include gene lengths

Lengths are required for FPKM and TPM; without them the tool still reports CPM.

3

Read the normalized values

Get CPM, FPKM, and TPM per gene, with the TPM column summing to one million.

4

Export the table

Export the normalized values as a CSV for visualization or reporting.

Next step

Want a PhD to take it to differential expression?

From raw counts to normalized values, statistics, and publication-ready figures, handled by a PhD statistician.

Our promise: Free pipeline re-run and figure revisions if reviewers push back.

Quote within a few hoursPay only after you approve your quotePhD methodologistReproducible Bioconda or Nextflow pipelinesNDA available on request

Timeline

Most projects deliver in under 2 weeks. We confirm an exact date in your quote.

If reviewers push back

If reviewers question the pipeline, parameters, or figures, we re-run the analysis and revise free.

Confidentiality

NDA available on request before any project discussion. Your data, study design, and manuscript stay private either way.

Want a PhD methodologist to handle the whole project?

Get a complete RNA-sequencing analysis from counts to differential expression by a PhD statistician. Free pipeline re-run and figure revisions if reviewers push back. Pay only after you approve your quote.

Frequently Asked Questions

How do you calculate TPM?

First divide each gene's read count by its length in kilobases to get a rate that reflects reads per unit length. Sum these rates across all genes, then divide each gene's rate by that sum and multiply by one million. The result is transcripts per million. This tool performs the two-step calculation for you and, because the rates are normalized last, the TPM column always sums to one million.

Why is TPM better than RPKM?

RPKM, which is numerically the same as FPKM, normalizes for depth before length, so the sum of RPKM values is not the same from one sample to the next. TPM reverses the order, normalizing for length first, which makes every sample's TPM values sum to the same total of one million. Because the total is fixed, a gene's TPM is a genuine proportion of the transcript pool and is directly comparable across samples, whereas its RPKM is not. That comparability, argued by Wagner and colleagues (2012), is why TPM has largely replaced RPKM.

What is the difference between raw count and TPM?

A raw count is simply the number of reads assigned to a gene, and it confounds real expression with two technical effects: a sample sequenced more deeply gives every gene more reads, and a longer gene collects more reads just for being longer. TPM removes both effects, expressing each gene as its share of a fixed one-million total so values are comparable within and across samples. Use raw counts as the input to statistical testing, and TPM for reporting, plotting, and comparing relative expression.

Are CPM and TPM the same?

No. CPM (counts per million) corrects only for sequencing depth and ignores gene length, so a long gene and a short gene with the same expression level get different CPM values, which means CPM cannot compare different genes within a sample. TPM corrects for both length and depth. They are computed differently and answer different questions; CPM is common for filtering low-count genes, while TPM is the unit for comparing expression levels.

When to use FPKM vs TPM?

Prefer TPM whenever you compare a gene's relative expression across samples, because TPM values sum to the same total in every sample and FPKM values do not. FPKM (and the identical RPKM) still appears because older pipelines and some tools emit it, so you will encounter it in legacy data, but for new analysis and reporting TPM is the better within-sample relative unit. For either one, remember that neither belongs in a differential-expression model, which needs raw counts.

What is the difference between TPM and FPKM?

Both TPM and FPKM correct for sequencing depth and gene length, but in a different order. FPKM divides counts by depth first, then by length, so the sum of FPKM values differs between samples. TPM divides by length first, then by depth, so the TPM values in every sample sum to the same total, one million. That consistent total is why TPM is preferred for comparing the relative expression of a gene across samples.

Why do you need to normalize RNA-seq data?

Raw read counts confound true expression with two technical factors: samples sequenced to greater depth accumulate more reads for every gene, and longer genes collect more reads simply because they are longer. Normalization removes these effects so that counts reflect biology. Without it, a gene can appear more highly expressed merely because its sample was sequenced deeper or because the gene is long.

Is TPM appropriate for differential expression testing?

TPM and FPKM are within-sample relative measures and are ideal for reporting and visualization, but formal differential-expression testing should use raw counts with a dedicated model. Tools such as DESeq2 and edgeR apply their own library-size normalization, for example the median-of-ratios or trimmed mean of M-values, directly to counts, because those methods are more robust to a few highly expressed genes than simple depth scaling.

Related Analysis Tools

Once normalized, compute effect sizes with the log2 fold change calculator, correct significance with the false discovery rate calculator, and visualize expression with the heatmap generator. For the complete RNA-seq pipeline with a proper count model, the bioinformatics analysis service takes raw data to differential expression.

SM

Reviewed by

Dr. Sarah Mitchell

PhD, Biostatistics & Research Methodology

Dr. Sarah Mitchell holds a PhD in Biostatistics from Johns Hopkins Bloomberg School of Public Health and has over 15 years of experience in systematic review methodology and meta-analysis. She has authored or co-authored 40+ peer-reviewed publications in journals including the Journal of Clinical Epidemiology, BMC Medical Research Methodology, and Research Synthesis Methods. A former Cochrane Review Group statistician and current editorial board member of Systematic Reviews, Dr. Mitchell has supervised 200+ evidence synthesis projects across clinical medicine, public health, and social sciences. She reviews all Research Gold tools to ensure statistical accuracy and compliance with Cochrane Handbook and PRISMA 2020 standards.

The Tool Is Free. The Full Analysis of Your Biological Data? We Handle That.

Our PhD statisticians run the complete pipeline: differential expression with multiple-testing correction, survival modelling, dimensionality reduction, and publication-ready figures with a reproducible methods section. Constant pricing, most projects delivered in under two weeks.

Our promise: Free pipeline re-run and figure revisions if reviewers push back.

4.9 / 5 across 1,194+ projectsQuote within a few hoursReproducible Bioconda or Nextflow pipelinesPhD methodologistPay only after you approve your quoteNDA available on request

You Shape What We Build Next