Bowtie 2

Fast and sensitive read alignment

Bowtie 2 is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. Bowtie 2 indexes the genome with an FM Index to keep its memory footprint small: for the human genome, its memory footprint is typically around 3.2 GB. Bowtie 2 supports gapped, local, and paired-end alignment modes. Open Source Software

Site Map

Latest Release

Bowtie2 2.3.3 09/06/17 

Please cite: Langmead B, Salzberg S. Fast gapped-read alignment with Bowtie 2. Nature Methods. 2012, 9:357-359.


Related Tools

Bowtie: Ultrafast short read alignment
Crossbow: Genotyping, cloud computing
Myrna: Cloud, differential gene expression
Tophat: RNA-Seq splice junction mapper
Cufflinks: Isoform assembly, quantitation
Lighter: Fast error correction


Consider using Illumina's iGenomes collection. Each iGenomes archive contains pre-built Bowtie 2 and Bowtie indexes.

H. sapiens, UCSC hg18 3.5 GB
 or: part 1 (1.5 GB), part 2 (651 MB), part 3 (1.5 GB)
H. sapiens, UCSC hg19 3.5 GB
 or: part 1 (1.5 GB), part 2 (650 MB), part 3 (1.5 GB)
H. sapiens, NCBI GRCh38 3.5 GB
M. musculus, UCSC mm10 3.2 GB
 or: part 1 (1.3 GB), part 2 (600 MB), part 3 (1.3 GB)
M. musculus, UCSC mm9 3.2 GB
 or: part 1 (1.3 GB), part 2 (593 MB), part 3 (1.3 GB)
R. norvegicus, UCSC rn4 3.1 GB
 or: part 1 (1.3 GB), part 2 (580 MB), part 3 (1.3 GB)

Some unzip programs cannot handle archives >2 GB. If you have problems downloading or unzipping a >2 GB index, try downloading in parts.

Related publications


Related links

Version 2.3.3 - September 06, 2017

From this release forward prepackaged bowtie2 binaries are now statically linked to the zlib compression library and, the recommended threading library, TBB. Users who rely on prepackaged builds are no longer required to have these packages pre-installed. As a result of the aforementioned changes legacy packages have been discontinued.

  • bowtie2-build now supports gzip-compressed FASTA inputs
  • New --xeq parameter for bowtie2 disambiguates the 'M' CIGAR flag. When specified, matches are indicated with the = operation and mismatches with X
  • Fixed a possible infinite loop during parallel index building due to the compiler optimizing away a loop condition
  • Added --soft-clipped-unmapped-tlen parameter for bowtie2 that ignores soft-clipped bases when calculating template length (TLEN)
  • Added support for multi-line sequences in FASTA read inputs
  • Expanded explanation of MD:Z field in manual
  • Fixed a crashing bug when output is redirected to a pipe
  • Fixed ambiguity in the SEED alignment policy that sometimes caused -N parameter to be ignored

Version 2.3.2 - May 05, 2017

  • Now reports MREVERSE SAM flag for unaligned end when only one end of a pair aligns
  • Fixed issue where first character of some read names was omitted from SAM output when using tabbed input formats
  • Added --sam-no-qname-trunc option, which causes entire read name, including spaces, to be written to SAM output. This violates SAM specification, but can be useful in applications that immediately postprocess the SAM.
  • Fixed compilation error caused by pointer comparison issue in aligner_result.cpp
  • Removed termcap and readline dependencies introduced in v2.3.1
  • Fixed compilation issues caused by gzbuffer function when compiling with zlib v1.2.3.5 and earlier. Users compiling against these libraries will use the zlib default buffer size of 8Kb when decompressing read files.
  • Fixed issue that would cause Bowtie 2 hang when aligning FASTA inputs with more than one thread

Version 2.3.1 - Mar 03, 2017

Please note that as of this release Bowtie 2 now has dependencies on zlib and readline libraries. Make sure that all dependencies are met before attempting to build from source.

  • Added native support for gzipped read files. The wrapper script is no longer responsible for decompression. This simplifies the wrapper and improves speed and thread scalability for gzipped inputs.
  • Fixed a bug that caused bowtie2-build to crash when the first FASTA sequence contains all Ns.
  • Add support for interleaved FASTQ format -—interleaved.
  • Empty FASTQ inputs would yield an error in Bowtie 2 2.3.0, whereas previous versions would simply align 0 reads and report the SAM header as usual. This version returns to the pre-2.3.0 behavior, resolving a compatibility issue between TopHat2 and Bowtie 2 2.3.0.
  • Fixed a bug whereby combining -—un-conc with -k or -a would cause bowtie2 to print duplicate reads in one or both of the --un-conc* output files, causing the ends to be misaligned.
  • The default --score-min for --local mode is now 'G,20,8'. That was the stated default in the documentation for a while, but the actual default was 'G,0,10' for many versions. Now the default matches the documentation and, we find, yields more accurate alignments than 'G,0,10'

Version 2.3.0 - Dec 13, 2016

This is a major release with some larger and many smaller changes. These notes emphasize the large changes. See commit history for details.

  • Code related to read parsing was completely rewritten to improve scalability to many threads. In short, the critical section is simpler and parses input reads in batches rather than one at a time. The improvement applies to all read formats.
  • TBB is now the default threading library. We consistently found TBB to give superior thread scaling. It is widely available and widely installed. That said, we are also preserving a "legacy" version of Bowtie that, like previous releases, does not use TBB. To compile Bowtie source in legacy mode use NO_TBB=1. To use legacy binaries, download the appropriate binary archive with "legacy" in the name.
  • Bowtie now uses a queue-based lock rather than a spin or heavyweight lock. We find this gives superior thread scaling; we saw an order-of-magnitude throughput improvements at 120 threads in one experiment, for example.
  • Unnecessary thread synchronization removed
  • Fixed issue with parsing FASTA records with greater-than symbol in the name
  • Now detects and reports inconsistencies between --score-min and --ma
  • Changed default for --bmaxdivn to yield better memory footprint and running time when building an index with many threads

Bowtie2 developers note

As of Nov 2015 we had to fix the bowtie2 github repo and relabel the entire history. Developers and contributors should re-clone the bowtie2 github repo from this current state.

Version 2.2.9 - Apr 22, 2016

  • Fixed the multiple threads issue for the bowtie2-build.
  • Fixed a TBB related build issue impacting TBB v4.4.

Version 2.2.8 - Mar 10, 2016

  • Various website updates.
  • Fixed the bowtie2-build issue that made TBB compilation fail.
  • Fixed the static build for Win32 platform.

Version 2.2.7 - Feb 10, 2016

  • Added a parallel index build option: bowtie2-build --threads <# threads>.
  • Fixed an issue whereby IUPAC codes (other than A/C/G/T/N) in reads were converted to As. Now all non-A/C/G/T characters in reads become Ns.
  • Fixed some compilation issues, including for the Intel C++ Compiler.
  • Removed debugging code that could impede performance for many alignment threads.
  • Fixed a few typos in documentation.

Version 2.2.6 - Jul 22, 2015

  • Switched to a stable sort to avoid some potential reproducibility confusions.
  • Added 'install' target for *nix platforms.
  • Added the Intel TBB option which provides in most situations a better performance output. TBB is not present by default in the current build but can be added by compiling the source code with WITH_TBB=1 option.
  • Fixed a bug that caused seed lenght to be dependent of the -L and -N parameters order.
  • Fixed a bug that caused --local followed by -N to reset seed lenght to 22 which is actually the default value for global.
  • Enable compilation on FreeBDS and clang, although gmake port is still required.
  • Fixed an issue that made bowtie2 compilation process to fail on Snow Leopard.

Version 2.2.5 - Mar 9, 2015

  • Fixed some situations where incorrectly we could detect a Mavericks platform.
  • Fixed some manual issues including some HTML bad formating.
  • Make sure the wrapper correctly identifies the platform under OSX.
  • Fixed --rg/--rg-id options where included spaces were incorrectly treated.
  • Various documentation fixes added by contributors.
  • Fixed the incorrect behavior where parameter file names may contain spaces.
  • Fixed bugs related with the presence of spaces in the path where bowtie binaries are stored.
  • Improved exception handling for missformated quality values.
  • Improved redundancy checks by correctly account for soft clipping.

Lighter released

  • Lighter is an extremely fast and memory-efficient program for correcting sequencing errors in DNA sequencing data. For details on how error correction can help improve the speed and accuracy of downstream analysis tools, see the paper in Genome Biology. Source and software available at GitHub
  • .