Every bulk RNA-Seq pipeline needs a spliced aligner, and for the last decade the choice has boiled down to two: STAR (Dobin et al., 2013) and HISAT2 (Kim et al., 2019). Both are actively maintained, both are used in flagship publications, and both handle short-read paired-end data well. So which do you pick?
This article is a practical decision guide, not a re-benchmark. We assume you have short paired-end Illumina reads and a decent reference. We’ll compare on the axes that actually matter in a real project: accuracy, memory, speed, splice-junction discovery, downstream compatibility, and reproducibility.
Short answer
- Use STAR if you have 32 GB+ RAM per job, care about novel splice-junction discovery, or are building a fusion / splice-QTL pipeline.
- Use HISAT2 if you’re on shared HPC with per-user RAM caps, aligning bacterial / non-model species with tight compute, or running a huge cohort where indexing time dominates.
- Either is fine for standard human/mouse bulk RNA-Seq → featureCounts → DESeq2. Pick and stick.
1. Algorithm at a glance
| Aspect | STAR | HISAT2 |
|---|---|---|
| Core algorithm | Suffix array + seed extension | Hierarchical FM-index (global + local) |
| Splice-aware | Yes (two-pass optional) | Yes (single-pass) |
| Multi-threaded index | Yes | Yes |
| Multi-mapper resolution | Custom MAPQ + primary flag | Similar |
| Output | SAM/BAM, wig, tab-separated splice junctions | SAM/BAM, splice sites file |
STAR uses uncompressed suffix arrays for fast seed lookup — that’s where the RAM cost comes from. HISAT2 uses a graph-based FM-index with a two-level hierarchy that lets it fit human in about 8 GB.
2. Building the index
STAR:
STAR --runMode genomeGenerate \
--genomeDir ref/star_index \
--genomeFastaFiles ref/GRCh38.primary_assembly.genome.fa \
--sjdbGTFfile ref/gencode.v46.annotation.gtf \
--sjdbOverhang 100 \
--runThreadN 16
Index size: ~30 GB on disk, ~30 GB RAM at build.
HISAT2:
hisat2_extract_splice_sites.py ref/gencode.v46.annotation.gtf > ref/splice_sites.txt
hisat2_extract_exons.py ref/gencode.v46.annotation.gtf > ref/exons.txt
hisat2-build -p 16 \
--ss ref/splice_sites.txt \
--exon ref/exons.txt \
ref/GRCh38.primary_assembly.genome.fa \
ref/hisat2_index/grch38
Index size: ~8 GB on disk, ~200 GB RAM at build (yes, really — build once on a fat node).
3. Alignment
STAR (recommended flags for typical bulk RNA-Seq):
STAR --runMode alignReads \
--genomeDir ref/star_index \
--sjdbGTFfile ref/gencode.v46.annotation.gtf \
--readFilesIn sample_R1.fastq.gz sample_R2.fastq.gz \
--readFilesCommand zcat \
--outSAMtype BAM SortedByCoordinate \
--twopassMode Basic \
--outSAMstrandField intronMotif \
--outFileNamePrefix bam/sample_ \
--runThreadN 16
HISAT2:
hisat2 -x ref/hisat2_index/grch38 \
-1 sample_R1.fastq.gz -2 sample_R2.fastq.gz \
--dta --rna-strandness RF \
-p 16 -S sample.sam
samtools sort -@ 8 -o bam/sample.bam sample.sam
samtools index bam/sample.bam
The --dta flag emits XS attributes for downstream StringTie transcript assembly. Add --rna-strandness RF for standard TruSeq stranded libraries; drop it for unstranded.
4. What benchmarks say
Multiple community benchmarks — Baruzzo et al. (2017), the SEQC2 consortium, and follow-up work — agree on the same broad picture:
- STAR has a slight edge in splice-junction sensitivity and novel-junction discovery, especially with two-pass mode.
- HISAT2 has a slight edge in speed per CPU-hour and a dramatic edge in RAM footprint.
- Gene-level counts from featureCounts on the two aligners’ BAMs correlate above r = 0.99. Downstream DE calls with DESeq2 or edgeR are essentially identical.
- Both handle circRNA back-splice junctions poorly compared to specialized tools like CIRCexplorer2 or CIRI2.
If your goal is a differential expression table, the choice of aligner does not meaningfully change the biological conclusions of your study.
5. Downstream compatibility
Both produce standard sorted BAMs, so featureCounts, RSeQC, Salmon-in-alignment-mode, and Qualimap all work identically.
Where compatibility matters:
- StringTie works with either, but expects
--dtafrom HISAT2 or--outSAMstrandField intronMotiffrom STAR. - rMATS and MISO for alternative splicing prefer STAR’s splice-junction files.
- Arriba and STAR-Fusion for gene-fusion detection require STAR output specifically.
6. Reproducibility gotchas
- Multi-mappers. STAR’s default caps at 10 secondary alignments per read; HISAT2 defaults to primary-only. If you count multi-mappers with featureCounts (
-M --fraction), the two aligners will diverge. - Soft-clipping. STAR clips more aggressively in two-pass mode. For splice-QTL calling, this improves junction accuracy but reduces read length uniformity.
- Version drift. Both projects push meaningful bug fixes yearly. Pin the version in your
condaenvironment (star=2.7.11b,hisat2=2.2.1).
7. Decision matrix
| Scenario | Recommendation |
|---|---|
| Standard human/mouse bulk RNA-Seq, plenty of RAM | STAR |
| Shared HPC with strict per-job RAM caps | HISAT2 |
| Fusion detection, splice-QTL, novel junctions | STAR (two-pass) |
| Non-model organism, small budget | HISAT2 |
| Very large cohort (500+ samples), throughput-limited | HISAT2 (or Salmon pseudo-alignment) |
| Publishing in a journal that requires the “standard” pipeline | STAR |
| You need transcript-level TPMs, not gene counts | Use Salmon or Kallisto pseudo-alignment instead |
8. When neither is the right tool
If your primary output is transcript-level abundance or you’re dealing with 1000+ samples, skip alignment entirely and use pseudo-alignment (Salmon or Kallisto). It’s 10-50× faster and gives you TPMs directly. See our Kallisto vs Salmon comparison.
For long-read RNA-Seq (PacBio Iso-Seq, Nanopore direct-RNA), forget both — use minimap2 with -ax splice or -ax splice:hq.
Bottom line
The STAR vs HISAT2 debate is much older than it is important. Both are excellent, both are well-maintained, both give you the same DE genes on standard bulk RNA-Seq. Optimize for your compute constraints and downstream tools, pin the version in your workflow, and stop worrying.
Related reading: our end-to-end RNA-Seq guide uses STAR by default; swap in HISAT2 with the commands above and the rest of the pipeline is identical.
FAQ
Q. Is STAR always more accurate than HISAT2?
A. For splice-junction discovery on well-annotated species (human, mouse), STAR is marginally more sensitive at the cost of ~4-5× the memory footprint. For gene-level differential expression, both produce essentially identical DE gene lists. Choose by memory budget, not by accuracy.
Q. How much RAM does STAR need for the human genome?
A. About 30-32 GB peak for the standard GRCh38 index without alt contigs. Add ~5 GB if you enable two-pass mode. HISAT2 needs 8-9 GB for the same reference, which is why it dominates in shared HPC environments with per-job RAM limits.
Q. Can I mix STAR and HISAT2 across samples?
A. You can, but you shouldn't. Inter-aligner differences in soft-clipping and multi-mapper resolution can introduce a small but consistent bias that will show up in your DE results. Stay with one aligner across all samples in a study.
Related in RNA-Seq
Kallisto vs Salmon: Pseudo-Alignment Tools Compared
Two flagship pseudo-alignment quantifiers for RNA-Seq compared on speed, accuracy, and the small but meaningful differences that matter downstream.
Single-Cell RNA-Seq Analysis: Complete Workflow with Seurat
A concise Seurat v5 workflow for droplet single-cell RNA-Seq — QC, normalization, integration, clustering, and marker discovery — with the flags that matter.
How to Use DESeq2 for Differential Expression Analysis
A rigorous walkthrough of the DESeq2 workflow: count matrix prep, dispersion estimation, LFC shrinkage, batch correction, and pitfalls that get past most tutorials.