Written and maintained by CASRAI Editorial Board
Last updated
Researchers, bioinformaticians, and computational biologists using Bowtie 2 need to align high-throughput sequencing reads to reference genomes rapidly, configure operational preset parameters, resolve multi-mapping alignments, and produce valid Sequence Alignment/Map (SAM) records for downstream variant calling or abundance estimation.
What it is
Bowtie 2 is an open-source, ultrafast, and memory-efficient tool for aligning sequencing reads to long reference sequences. Developed for high-throughput genomics, it maps reads from 50 base pairs up to hundreds or thousands of bases against mammalian, plant, and microbial genomes.
The core computational design of Bowtie 2 combines two strategies. Unlike Bowtie 1 (which only supported ungapped alignments), Bowtie 2 performs fast gapped alignment, accommodating insertions, deletions, and structural variants. It indexes references using a Full-text Minute (FM) index based on the Burrows-Wheeler Transform (BWT). To resolve gapped extensions efficiently, Bowtie 2 couples FM-index seed identification with hardware-accelerated (SIMD) dynamic programming based on the Smith-Waterman algorithm.
Bowtie 2 outputs alignments in Sequence Alignment/Map (SAM) format. Downstream workflows convert and index these records using BAM file structure and indexing tools, or evaluate them across SAM, BAM, and CRAM alignment formats in pipelines like SAMtools and GATK. Bowtie 2 is distributed under the GNU General Public License v3.0 (GPLv3) and runs on Linux, macOS, and Windows.
Who runs it and what it covers
Bowtie 2 was created by Ben Langmead and Steven L. Salzberg, introduced in Nature Methods in 2012, and is maintained by the Ben Langmead Laboratory in the Department of Computer Science and Center for Computational Biology at Johns Hopkins University (JHU). Thread scalability was documented by Langmead et al. in Bioinformatics (2019). The latest release is v2.5.5 (February 2026).
Bowtie 2 handles arbitrary reference sizes using two indexing structures:
- Small Indexes (32-bit): For genomes under ~4 billion nucleotides (4 Gb, including the 3.2 Gb human genome),
bowtie2-buildoutputs a 32-bit index stored in six.bt2files. Alignment typically requires ~3.2 GB of RAM for the human genome. - Large Indexes (64-bit): For assemblies exceeding 4 Gb, the builder outputs 64-bit index files with the
.bt2lextension.
Bowtie 2 accepts FASTQ, FASTA, or raw reads across single-end, paired-end, and mate-pair libraries. In research, it serves as the alignment engine for ChIP-seq, ATAC-seq, resequencing, and microbial profiling in the HUMAnN metagenomic profiling pipeline.
How to search or use it
Running Bowtie 2 in production pipelines follows six core steps from the official documentation:
Step 1: Install and verify Bowtie 2
Install via Bioconda (conda install -c bioconda bowtie2) or official binaries. Verify with bowtie2 --version.
Step 2: Build the FM reference index
Generate the FM-index from a reference FASTA file using bowtie2-build:
bowtie2-build -f genome.fa genome_idx
This creates six index files (genome_idx.1.bt2 through .4.bt2, plus reverse files .rev.1.bt2 and .rev.2.bt2). Genomes over 4 Gb receive the .bt2l extension.
Step 3: Select alignment mode and operational presets
Bowtie 2 provides two alignment paradigms:
- End-to-End Mode (Default): Requires the entire read to align against the reference. Unaligned terminal bases incur penalty deductions.
- Local Mode (
--local): Soft-clips read ends, ignoring unaligned terminal sequences (like adapter remnants) to maximize interior alignment scores.
Bowtie 2 provides eight presets configuring extension effort (-D), re-seeding (-R), seed mismatches (-N), seed length (-L), and interval (-i):
| Preset | Mode | -D | -R | -N | -L | -i |
|---|---|---|---|---|---|---|
--very-fast |
End-to-End | 5 | 1 | 0 | 22 | S,0,2.50 |
--fast |
End-to-End | 10 | 2 | 0 | 22 | S,0,2.50 |
--sensitive |
End-to-End | 15 | 2 | 0 | 22 | S,1,1.15 |
--very-sensitive |
End-to-End | 20 | 3 | 0 | 20 | S,1,0.50 |
--very-fast-local |
Local | 5 | 1 | 0 | 25 | S,1,2.00 |
--fast-local |
Local | 10 | 2 | 0 | 22 | S,1,1.75 |
--sensitive-local |
Local | 15 | 2 | 0 | 20 | S,1,0.75 |
--very-sensitive-local |
Local | 20 | 3 | 0 | 20 | S,1,0.50 |
Step 4: Execute read alignment
Launch alignment with the index prefix and FASTQ reads. Allocate CPU cores with -p / --threads:
# Paired-end alignment
bowtie2 -p 8 --very-sensitive -x genome_idx -1 reads_1.fq -2 reads_2.fq -S output.sam
# Single-end alignment uses -U reads.fq instead of mate pairs
Step 5: Interpret SAM alignment records and scoring tags
Bowtie 2 records metrics via standard SAM fields and optional tags:
AS:i: Numeric alignment score for the reported hit.XS:i: Alignment score for the second-best hit; equal values indicate multi-mapping ambiguity.YS:i: Alignment score of the paired mate.NM:i: Edit distance (mismatches and indels).MAPQ: Phred-scaled mapping quality. High margins betweenAS:iandXS:iyield high MAPQ scores.
Step 6: Diagnose unaligned reads via filter flags
Reads failing to align receive SAM flag 4. Bowtie 2 provides diagnostic reasons in YF:Z:
YF:Z:LN: Read length is shorter than seed mismatches (-N).YF:Z:NS: Ambiguous bases exceed--n-ceillimit.YF:Z:SC: Read score ceiling cannot reach--score-min.YF:Z:QC: Read marked failing quality control in QSEQ format.
Strengths and limits
Bowtie 2 offers clear advantages alongside boundaries that dictate when alternative aligners should be chosen.
Strengths:
- Low RAM Footprint: Indexing human genome data into ~3.2 GB of RAM enables execution on standard computers without high-memory nodes.
- Full Gapped Alignment: Indel and mismatch penalties allow accurate mapping across structural variants.
- Pre-Calibrated Presets: Eight built-in presets allow direct trade-offs between throughput and sensitivity.
- Standardized Output: Direct SAM output ensures compatibility with downstream variant callers and BAM tools.
Limits:
- Unspliced Alignment: Bowtie 2 does not model large eukaryotic splice junctions. Direct alignment of eukaryotic RNA-seq reads across introns requires a splice-aware aligner like the STAR aligner or HISAT2.
- Read Length Focus: Bowtie 2 is optimized for short to intermediate Illumina reads (50–300 bp). Long reads (Nanopore, PacBio HiFi) are better suited to tools like Minimap2.
- Multi-Mapping Tie Breaking: By default, Bowtie 2 reports one alignment per read, selecting among equal top hits pseudo-randomly unless configured with
-kor-a.
Alternatives
Choosing an aligner depends on read length, splicing structure, memory availability, and research objectives:
| Aligner | Target Reads | Index Structure | Human Index RAM | Splice-Aware | Primary Use Cases |
|---|---|---|---|---|---|
| Bowtie 2 | DNA / RNA (50–1,000 bp) | FM-Index (BWT) | ~3.2 GB | No | ChIP-seq, ATAC-seq, microbial genomics |
| BWA-MEM | DNA reads (70 bp – 1 Mb) | FM-Index (BWT) | ~3.5–4.0 GB | No | Whole-genome and exome variant calling |
| STAR | RNA reads | Suffix Array | ~30–32 GB | Yes | RNA-seq expression and splice junctions |
| HISAT2 | RNA / DNA reads | Hierarchical FM-Index | ~4.0–4.5 GB | Yes | Splice-aware RNA-seq on standard hardware |
FAQ
What is the difference between Bowtie 1 and Bowtie 2?
Bowtie 1 was designed for short reads (<50 bp) and does not support gapped alignments. Bowtie 2 aligns reads of arbitrary lengths (from 50 bp to thousands of bases), accommodates insertions and deletions, and supports local soft-clipping.
How does Bowtie 2 handle multi-mapping reads?
By default, Bowtie 2 searches for valid alignments and reports the single best-scoring hit, breaking ties pseudo-randomly. To report up to a set number of alignments, use -k <int>; to report all alignments, specify -a.
What do the AS:i and XS:i SAM tags mean in Bowtie 2?
The AS:i tag records the alignment score of the reported hit. The XS:i tag records the score of the second-best hit. When XS:i equals AS:i, the read maps to multiple loci with equal affinity, lowering mapping quality (MAPQ).
When should you use –local mode instead of –end-to-end mode?
Use default end-to-end mode when full-length read alignment is expected against trimmed libraries. Use --local mode when reads contain adapter sequences or low-quality ends, allowing unaligned ends to be soft-clipped without penalty.
Can Bowtie 2 be used for RNA-seq analysis?
Bowtie 2 is suitable for prokaryotic RNA-seq (which lacks introns) and for aligning reads against pre-built cDNA transcriptome databases. For direct mapping against eukaryotic genomes across introns, a splice-aware aligner like STAR or HISAT2 is required.
Sources
- Bowtie 2 Official Manual. SourceForge and GitHub: https://bowtie-bio.sourceforge.net/bowtie2/manual.shtml (accessed November 9, 2026).
- Langmead, B., & Salzberg, S. L. (2012). Fast gapped-read alignment with Bowtie 2. Nature Methods, 9(4), 357–359. https://doi.org/10.1038/nmeth.1923 (accessed November 9, 2026).
- Langmead, B., Wilks, C., Antonescu, V., & Charles, R. (2019). Scaling read aligners to hundreds of threads on general-purpose processors. Bioinformatics, 35(3), 421–432. https://doi.org/10.1093/bioinformatics/bty648 (accessed November 9, 2026).
- BenLangmead/bowtie2 GitHub Repository and v2.5.5 Release. https://github.com/BenLangmead/bowtie2 (accessed November 9, 2026).







