TPM Normalization, or Transcripts Per Million, is a relative abundance metric that scales RNA-seq read counts by both gene length and sequencing depth to produce values directly comparable across samples. Unlike RPKM or FPKM, TPM normalizes reads to the total sum of all length-normalized transcript counts, ensuring that the sum of all TPM values in a sample always equals one million, which represents a true proportion of the transcriptome.
Glossary
TPM Normalization

What is TPM Normalization?
A normalization method for RNA-seq data that corrects for gene length and sequencing depth, enabling direct comparison of transcript proportions across heterogeneous samples.
The calculation proceeds in two steps: first, raw read counts are divided by the transcript's effective length in kilobases to produce reads per kilobase (RPK); second, all RPK values are summed and divided by one million to create a scaling factor, and each transcript's RPK is divided by this factor. This proportional normalization is critical for differential expression analysis and deep learning model training, as it removes technical artifacts that would otherwise confound cross-sample comparisons in tools like Salmon and Kallisto.
TPM vs RPKM vs FPKM: Key Differences
A technical comparison of the three primary within-sample normalization methods for RNA-seq expression quantification, highlighting their mathematical foundations and suitability for cross-sample analysis.
| Feature | TPM | RPKM | FPKM |
|---|---|---|---|
Full Name | Transcripts Per Million | Reads Per Kilobase per Million mapped reads | Fragments Per Kilobase per Million mapped fragments |
Order of Operations | Length normalization first, then depth scaling | Depth scaling first, then length normalization | Depth scaling first, then length normalization |
Sum of normalized values per sample | Constant (1,000,000) | Variable | Variable |
Cross-sample comparability | |||
Unit of measurement | Transcript molar concentration | Read density | Fragment density |
Handles paired-end reads appropriately | |||
Mathematical basis | Proportional to relative molar concentration | Read count per unit length per unit depth | Fragment count per unit length per unit depth |
Recommended for differential expression |
Key Properties of TPM Normalization
Transcripts Per Million (TPM) is a normalization method that corrects for both gene length and sequencing depth, enabling direct comparison of transcript proportions across heterogeneous samples.
Length-Adjusted Proportionality
TPM normalizes for gene length bias by first dividing raw read counts by the gene's length in kilobases, producing Reads Per Kilobase (RPK). This correction is essential because longer transcripts naturally generate more fragments during sequencing, artificially inflating their apparent expression. Without length normalization, a long, lowly expressed gene could appear more abundant than a short, highly expressed one. The RPK calculation ensures that each transcript's contribution is proportional to its molar concentration rather than its physical length.
Depth-Normalized Scaling Factor
After length correction, TPM applies a sequencing depth normalization by summing all RPK values in a sample and dividing by one million to create a scaling factor. Each gene's RPK is then divided by this factor and multiplied by 10^6. This ensures that the sum of all TPM values in a sample always equals 1,000,000, representing a complete transcriptome proportion. This property makes TPM values directly interpretable as the number of transcripts per million molecules, unlike FPKM or RPKM which do not sum to a constant.
Cross-Sample Comparability
The constant-sum property of TPM enables direct comparison across samples with different sequencing depths. Because each sample's TPM values sum to exactly one million, the proportion of transcripts allocated to each gene is independent of the total number of reads generated. This is critical for differential expression analysis where samples may have been sequenced to varying depths. A TPM of 50 for Gene A in both a 10-million-read sample and a 50-million-read sample indicates the same relative transcript abundance, assuming similar RNA composition.
TPM vs. FPKM/RPKM Distinction
While TPM and FPKM (Fragments Per Kilobase per Million) appear similar, their calculation order differs critically. FPKM normalizes for depth first, then length, resulting in values that do not sum to a constant across samples. This makes FPKM unsuitable for comparing transcript proportions between samples. TPM's order—length normalization first, then depth—produces a proportional measure. For example, a spike-in control added at equal concentration to two samples will yield identical TPM values but different FPKM values if total RNA composition differs.
Effective Length Correction
Modern TPM implementations use effective length rather than total transcript length to account for the fact that RNA-seq fragments cannot map uniformly to transcript ends. Effective length is calculated as the transcript length minus the mean fragment length plus one, correcting for the reduced mappability near transcript boundaries. Tools like Salmon and Kallisto incorporate this correction during pseudoalignment, producing more accurate TPM estimates by modeling the fragment start-site distribution and sequence-specific biases that affect read coverage uniformity.
Compositional Data Constraints
TPM values are compositional data, meaning they represent relative proportions constrained to sum to a constant. This introduces a dependency structure where a genuine increase in one highly expressed gene forces apparent decreases in all others, even if their absolute expression is unchanged. Statistical analyses must account for this using log-ratio transformations such as the centered log-ratio (CLR) or additive log-ratio (ALR) before applying methods like principal component analysis or linear regression that assume unconstrained data.
Frequently Asked Questions
Clear, technically precise answers to the most common questions about Transcripts Per Million normalization for RNA-seq data analysis.
Transcripts Per Million (TPM) is a normalization method for RNA-seq data that corrects for both gene length and sequencing depth, allowing direct comparison of transcript proportions across samples. The process works in three sequential steps: first, raw read counts are divided by the gene length in kilobases to produce reads per kilobase (RPK); second, all RPK values in a sample are summed to calculate a per-sample scaling factor; third, each RPK value is divided by this scaling factor and multiplied by one million. This order of operations—normalizing for length before depth—ensures that the sum of all TPM values in a sample is always one million, making each sample's expression profile a directly comparable proportion. Unlike FPKM (Fragments Per Kilobase per Million), TPM is sample-invariant, meaning the proportion of reads mapping to a given gene is independent of the expression of other genes in the sample.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Master the normalization methods, statistical frameworks, and computational tools that contextualize Transcripts Per Million within the broader RNA-seq quantification ecosystem.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us