Manual for vsearch 2.32.0, the current release. Changes that are not released yet are described in the development manual.
NAME
history — release history of vsearch
DESCRIPTION
This page is the release history of vsearch. It records the new features and the important modifications of each release, and nothing else; see vsearch(1) for the list of commands.
VERSION HISTORY
New features and important modifications of vsearch, most recent first (short-lived or minor bug releases may not be mentioned):
- v2.32.0 released September 17th, 2026
-
Includes the following changes:
- fix:
--gapopen/--gapext*now forbid gaps at the match/merge decision, not only in the alignment score: a*opening penalty forbids that gap class outright, a*extension penalty forbids gaps longer than one, and both apply per sequence (Q/T) and location (L/I/R/E). For instance--gapopen '*LQ'forbids opening left end-gaps in the query, and a bare--gapopen '*'forbids every gap opening, including the terminal gaps used for substring matching. Previously*only lowered the score, so a pair whose best alignment still needed a forbidden gap was reported as a match (issue #602, and a 2016 forum report of internal gaps appearing despite--gapopen '*I'). - fix: stop truncating the
*infinite gap penalty on the SIMD path, so--gapopen/--gapext*forbid gaps on short sequences too, not just on long ones. - fix: stop truncating abundance to 32 bits when writing size annotations.
- fix: stop truncating abundances above 2^32 in the
--sortbysizeand--sortbylengthdecks, where the most abundant sequences sorted to the bottom (;size=4294967297truncated to 1, ranking below;size=100) and “Median abundance:” reported a median of the truncated values. - fix:
--fastq_mergepairswith--fastq_ascii64 and--fastq_qmaxoutbetween 63 and 93 wrote quality symbols outside printable ASCII (byte 127 at qmaxout 63, up to 149 at 93), producing an invalid FASTQ file, and a SIGSEGV in v2.31.0, which indexes a table with the resulting negative char. The sum rule was stated against--fastq_asciiout, which is the one fastq-writing command that does not accept it.--fastq_qminoutwas rejected for the mirror-image reason and is now accepted where the real offset represents it. - fix: the k-mer pre-filter required a target to share more k-mers than it can hold, so a database sequence with less than
wordlength + minwordmatches - 1= 19 nt of distinct k-mer content could not be selected by any query, an exact match included, and the same pair gave opposite answers depending on direction (issue #328). - fix:
--fastx_uniques --strand both --fastqoutmerged a minus-strand member’s quality string positionally against the plus-strand seed, averaging seed position i with member position i instead of seqlen - 1 - i. Output changes versus released binaries for strand-both fastq dereplication. - fix:
--fastx_uniques --fastqouttruncated merged qualities through an irreversible probability round trip: quality 2 came back as 1, and qualities 3, 5, 6, 8, 10 and 17 moved with the abundances (two identical Q10 reads merged to Q10 at abundances 1+1, but to Q9 at 1+2). Present since v2.20.0. - fix:
--selfidnever excluded anything on any chimera path. The gate compared a query part, always shorter than a full-length identical reference, so the length pre-check short-circuited, and an identical reference in the database won every smoothing window and suppressed detection entirely. - fix:
--cluster_unoisesilently ignored a user-supplied--weak_id, overwriting it with 0.90 unconditionally; 0.90 is now a true default. - fix: count
--qsegout,--tsegoutand--fastapairsas output files in the “No output files specified” gates of--allpairs_global,--usearch_global,--search_exactand the--cluster_*commands, so each can be used as the sole output. Same defect and same fix as issue #82. - fix: enforce the documented ranges of option arguments. A negative
--idprefix/--idsuffixcrashed (out-of-bounds read under NDEBUG);--query_cov/--target_covoutside 0.0-1.0 silently made the filter unsatisfiable or inert; negative--maxdiffs,--maxsubs,--maxgaps,--mincols,--maxqsize,--mintsizeand--topnsilently rejected every hit or ignored the option entirely;--maxrejects -1was indistinguishable from not passing the option; and an empty argument such as--id ""was read as zero, accepting every hit. - fix: accept a correctly-rounded underflowing double such as
--fastq_maxee 1e-320, which died with “Illegal option argument” although the manual admits any positive real. Overflow stays rejected. Whetherstrtodeven sets ERANGE on underflow is implementation-defined, so the old rejection also varied with the platform’s libc. - fix:
--fastx_getseqs --label_word ""matched every record. An empty needle gavestd::strstrno exit condition, so the search walked past the end of the header into the zero-filled buffer tail. - fix:
--fastq_filter/--fastx_filtersilently ignored--fastq_truncqualon fasta input instead of rejecting it; the comparison tested< LONG_MIN, which no value satisfies, where!= LONG_MINwas meant. The fatal message has always listed it among the not-accepted options. - fix: a second one-past-the-end abundance read in
--fastx_subsample(random_subsampling), in the priming read before the loop, reached on an empty database. The read inside the loop was guarded by PR #650; this is the one four lines above it. - fix:
--makeudb_usearchwrote a UDB declaring zero sequences and exited 0, then rejected that file itself on every subsequent read with “Invalid UDB file”. Reachable through--minseqlength, not only through an empty input file. - fix: extend the UDB load validation of PR #647 to
--udbinfo, which reads the header through its own path and so accepted both a UDB served from a pipe and an inflated stored sequence count, printing a garbage count and exiting 0. A stored word count larger than the database is now rejected by every reader too: it cannot describe a valid word list, and such slots were never visited while still being reported. - fix:
--udb2fasta,--udbstatsand--udbinfono longer print “WARNING: Wordlength adjusted to N as indicated in UDB file”. None of the three accepts--wordlength, so the warning announced a change to a setting the user had no way of making; for--udbstatsthe report prints the word length two lines later anyway. Search commands, which do have a configured value for the file to override, keep it. - fix: uppercase the reference bases in SAM
MDfields, as the SAMtags grammar requires. A target lowercased by DUST masking producedMD:Z:20a19andMD:Z:20^a19, which disagree with what samtools calmd recomputes for the same alignment, and with the file itself after a BAM round trip. - fix:
--sff_convertread 32 header bytes where the format specifies 31 (the struct carries a trailing padding byte), shifting every later section by one: the reported key sequence lost its first base, and spec-valid files were wrongly rejected whenever31 + flows + keyis a multiple of 8. The per-record offsets re-synchronized through the padding arithmetic, so the fastq output itself was always correct. - fix:
--gzip_decompressno longer disables the transparent read that lets uncompressed standard input through. Feeding plain input to the option died with “incorrect header check” instead of reading it as-is, against zlib 1.3.2 as shipped by FreeBSD. - fix:
--fastq_statssearched past the end of its per-position tables for the first complete EE filtering row. The bound islen_max, as in the pre-refactoring report loop. - fix:
--fastq_eestats2printed “0 reads, max len 0, avg -nan” to--logon empty input, where--outputprinted “0 reads”. - fix: restore one progress line per percent step when standard error is not a terminal. The behaviour added in v2.31.0 was silently reverted when the callers migrated to the progress class, which had been written from the older code.
- fix: warnings now reach the
--logfile. Two of the fifteen warning sites (--sff_convert’s missing index padding, the UDB adjusted-wordlength notice) wrote to standard error and stopped there, and the--rereplicateand sequence-retrieval warnings obeyed--quieton standard error while logging unconditionally. The manual says--quietsuppresses everything “except for warnings and error messages”. - fix:
--chimeras_parents_maxabove 20 was an out-of-bounds heap write, and--iddefoutside 0-4 selected an undefined identity definition, for a caller reaching the engines through the library: both were range-checked in the command-line parser only. Both moved to the shared validator, and theparents_found <= 20assert became a runtime check so it holds under NDEBUG. - fix: reject
-given as both the query and--db. Since--dbgained standard-input support the two readers raced over the same stream and the command silently returned no hits with exit 0 (issue #506). - fix:
--orientagainst a database of fewer than eight sequences gave a bitmap to every one of the 4^wordlength index slots, absent k-mers included, because integer division makes the threshold zero: +512 MB of peak memory and a full SIMD bitmap scan per absent k-mer (0.85 s to 0.25 s on a 4-sequence database). - fix: undefined behaviour at twelve
<cctype>call sites passing a plainchar, reachable wherevercharis signed (x86-64, Windows) through sequence headers carrying UTF-8 or Latin-1. - fix:
--fastq_mergepairsno longer reports two discard reasons that could never occur: “indel errors”, unassigned since it was added in 2017 because an ungapped aligner cannot detect an indel, and “undefined reason”. - fix: the FASTQ offset-warning threshold counted 101 records where the constant and its comment both say 100.
- fix:
--helpnow lists the commands--fastx_getseq,--fastx_getseqsand--fastx_getsubseq, under a new “Sequence retrieval” section, along with the options specific to them (--label,--labels,--label_word,--label_words,--label_field,--label_substr_match,--subseq_start,--subseq_endand--notmatchedfq). The three commands have manual pages but could not be discovered from the help text. - fix:
--helpnow lists the output annotation options--lengthout,--xlengthand--samplewherever it already lists their siblings--sizeoutand--xsize, lists--allow_fewerunder--fastx_subsample, and lists--fastq_qout_max, the last of the twenty-nine options--fastx_uniquesaccepts that appeared nowhere in the help text. - fix: out-of-bounds read in
--fastx_getsubseqwhen--subseq_startexceeds a sequence’s length, in mixed-length files (also affects the--fastqoutpath) (PR #650). - fix: one-past-the-end abundance read in
--fastx_subsample(random_subsampling), reached with--sizeinwhen the last selected read is the last read of the last amplicon (PR #650). - fix: hit-list buffer overflow in clustering with large
--maxaccepts/--maxrejectson small datasets (PR #650). - fix: harden the SFF reader (
--sff_convert) against truncated or corrupt files: inverted clip regions under--sff_clip, flowgram truncation, and overflow guards that were previously compiled out of release builds (PR #650). - fix: bound-check the CIGAR walk in SAM output (
--samout) to prevent out-of-bounds reads on malformed or mismatched alignments (PR #649). - fix: reject non-finite floating-point command-line arguments such as
--sample_pctnan or inf, which previously slipped past range checks (PR #649). - fix: on Windows, load the zlib and bzip2 DLLs with
LOAD_LIBRARY_SEARCH_DEFAULT_DIRSso a plantedzlib1.dll/libbz2.dllin the working directory can no longer be loaded on the first.gz/.bz2input (PR #649). - fix: validate UDB header fields on load (kmerindex entries, kmerindexsize, seqcount, header offsets); corrupt or crafted
.udbfiles are now rejected with “Invalid UDB file” instead of causing out-of-bounds memory access; valid files are unaffected (PR #647). - fix: avoid int overflow when sizing and indexing the
--fastq_eestats2count table with a large--length_cutoffsrange and many--ee_cutoffsvalues (PR #644). - fix: avoid intermittent crashes from terminating in a worker thread on malformed or mismatched input (PR #635, #636).
- fix: data race on the query file position in
--uchime_refwith multiple threads (PR #637). - fix: print FASTA sequences longer than
INT_MAX(about 2 GB, reachable with a raised--maxseqlength) correctly instead of silently truncating them, and reject FASTA/FASTQ headers longer than the int length limit instead of overflowing the query buffer (PR #643). - fix: bound sequence length at the central FASTA/FASTQ reader and lower the
--maxseqlengthhard cap toINT_MAX- 2001 2147481646) to prevent int overflow in the search, cluster and chimera engines (PR #646; refines the 2^32-1 cap from PR #632). - fix: detect write, flush and close errors on output streams; a deferred write failure (full disk, exceeded quota, read-only remount) now aborts with a fatal error instead of silently producing a truncated output file that exits 0 (PR #651).
- fix: duplicated annotation separators (
;) in fastq and fasta headers (issue #271). - fix: shared-kmer counter overflow when aligning very long sequences (about 75 kbp) (PR #630).
- fix: SIMD alignment counters (aligned/matches/mismatches/gaps) could overflow when the alignment path exceeds 65535 columns; over-long sequence pairs are now diverted to the linear-memory aligner, with 64-bit length arithmetic (PR #631).
- fix: handle sequence abundances above 2^31 (
;size=) in storage, filtering and output (including;seqs=and centroid size) and in the library API; the abskew/size-ratio comparison is now exact above 2^53, and--maxseqlengthrejects values above 2^32-1 (PR #632). - fix: commands
--fastq_filter,--fastx_filter,--fastq_eestatsand--fastq_mergepairswriteqminto the log file instead of standard error. - fix: off-by-one in MSA consensus
;length=output (PR #629). - fix: command
--rereplicatewrites its warning to the log file instead of standard error (PR #628). - add: new command
--scramble: randomize the nucleotide order within each fasta or fastq entry, the within-entry counterpart of--shuffle. Useful for building null-model datasets: entry order, headers, lengths, and per-entry nucleotide composition are preserved; fastq quality strings are copied through unchanged. Reproducible with--randseed. The option--scramble_kmerk (1 to 9, default 1) additionally preserves the counts of all words of length k or less, by sampling a uniformly random Eulerian path of each entry’s de Bruijn graph (Altschul-Erickson/uShuffle-style). - add: ten new
--userfieldsoutput fields (issue #548):diffsandmid, which report the quantities--maxdiffsand--midare compared against;qseqandtseq, the full-length query and target sequences;qrowdotsandtrowdots, the aligned segments with a dot at every position identical to the other sequence; andqlor,qhir,tlorandthir, the alignment span in 0-based coordinates. - add: new option
--allow_fewerfor--fastx_subsample, which reads--sample_sizeas an upper bound: take at most N reads, and keep them all when fewer are available. Without it, a subset size larger than the input remains an error, as in usearch. - add: new option
--fastq_solexafor--fastq_convert, which converts Solexa scores (-10 log10(p / (1 - p))) to Phred scores. The two scales share the ASCII offset 64 and nothing else, so a Solexa file was previously rebased and left otherwise untouched: fifteen of the 68 representable symbols came out wrong, and they were exactly the low ones a quality filter acts on. - add: a warning when the quality symbols read contradict
--fastq_ascii. Raising--fastq_qmaxmeans a phred+64 file read at the default offset 33 is no longer stopped by the bound, so vsearch now says so instead. Run--fastq_charsto confirm. - add: a warning when database sequences yield no k-mer for the index (issue #570). Such sequences are absent from the index and are never selected as candidates, so an all-lowercase reference database silently produced empty classifications. Emitted once per run as a summary line, not once per sequence.
- add: a warning when a minimum threshold exceeds its matching maximum (
--minuniquesize/--maxuniquesize,--minseqlength/--maxseqlength). Such a pair selects nothing, and the command used to write an empty output file and exit 0; the empty output stays legal. Also catches the implicit inversion, for instance--maxseqlength 10alone against the default minimum of - add: a warning when
--sampleresolves to an empty sample name, which writes a bare;sample=annotation and yields an OTU table whose first column has no name. - add: a warning when
--gzip_decompressor--bzip2_decompresscontradicts a seekable standard input, where autodetection runs and wins and the asserted format is ignored. On piped standard input the same mistake is already fatal. - add: shell auto-completion scripts for bash, zsh and fish (issue #417), installed by
make installin the standard location for each shell. Completion offers the commands, then only the options the chosen command accepts, values for options taking a fixed set, and filenames filtered by extension. Configure with--disable-completionor--with-bashcompdir=DIRand friends. - add: an online manual, published per command, with the released pages at
/vsearch/and the development pages under/vsearch/dev/.--helpnow points at both. - add: a
--enable-sanitizeconfigure switch that builds the vsearch executable under the address and undefined-behaviour sanitizers, independently of--enable-debug. - add: new command
--fastx_syncpairs. - add: preliminary support for FreeBSD/x86-64 (PR #633, #634).
- add: new option
--centroid_sizeout, which reports the centroid size in the FASTA header after clustering (issue #623). - remove:
--search_exactno longer accepts--lcaoutand--lca_cutoff. It never implemented them, in this tree or upstream: no call to the LCA writer exists on that code path, so the run completed, exited 0, and created no file.--usearch_global, the only command that implements LCA output, is unaffected. - remove: the monolithic
vsearch.1manual page, deprecated since the per-command pages and the online manual took over. - change:
--fastq_qmaxand--fastq_qmaxoutnow default to the highest quality score the offset can represent (93 with--fastq_ascii33, 62 with offset 64) instead of 41. PacBio HiFi reaches Q93 and nanopore basecallers pass Q50, and the old bound rejected those files outright (issues #522, #194 and #609). Pass--fastq_qmax 41for the previous behaviour. - change:
--fasta2fastqand--fastq_mergepairskeep the previous--fastq_qmaxoutdefault of 41, because they generate the score they clamp rather than passing one through:--fasta2fastqhas no input quality, and--fastq_mergepairscaps a computed posterior (two agreeing Q40 bases would otherwise be reported as Q85 instead of Q41). Pass--fastq_qmaxout 93for the unclamped values. - change: the default thread count, and an explicit
--threads 0, now follow the cores this run may actually use, namely the CPU affinity mask and the cgroup CPU quota, instead of the machine’s core count; memory detection is cgroup-aware for the same reason. Inside a Slurm, Docker, podman, Kubernetes or Apptainer confinement vsearch read the host’s figures: a session limited to 50 MB and one core was told it had 500+ GB and 128 cores, and then really did start 128 workers on that one core (issue #584). A virtual machine was already correct and is unaffected. - change:
--fastq_statsnow requires--log, as the manual documents; the report has no other destination. - change:
--fastq_mergepairsnow honours--quietfor its final report on standard error, diverging from the issue #527 resolution, and--logno longer takes that report away from standard error: every other command writes both copies. - change:
--fastq_mergepairsapplies--fastq_maxlenafter quality truncation, as the shared option fragment (“Applied after trimming”) and the discard-reason string (“reads too long (after truncation)”) both already stated. A pair truncated to within--fastq_maxlenis no longer discarded as too long. - change:
--fastx_uniquesnow applies--fastq_qminand--fastq_qmaxto its input. Both were listed among its valid options and neither was enforced, although the command decodes every quality symbol, converts it to an error probability, takes an abundance-weighted mean across the cluster and re-encodes the result. - change:
--derep_prefixnow requires an output option, like--derep_fulllengthand--derep_id. A run with neither--outputnor--ucused to read the input, write nothing, and exit 0. - change:
--fastq_filterand--fastx_filternow reject a*_revoutput given without--reverse, for which the file was never opened: such a run created no file, wrote nothing, and exited 0. - change:
--udb2fasta --sizeoutnow needs--sizeinto reproduce the abundances stored in the UDB, following the convention of every other command. Previously--sizeoutalone overwrote every abundance withsize=1, so the option that asks for the annotation was the one destroying it, and--sizeinhad no effect on this path. - change:
--makeudb_usearchmasks on several threads instead of being forced to one and warning. Only the masking phase is parallel; reading, indexing and writing the UDB remain serial. - change: four commands accept options they already needed.
--cutaccepts--threads(it warns and forces one thread, like every other single-threaded command);--fastx_mask,--fastx_subsampleand--orientaccept--minseqlength/--maxseqlength, whose input was silently capped at the 50000-nt default with no way to raise it;--derep_fulllengthaccepts--label_suffix, like its four sibling dereplication commands; and--fastx_uniquesaccepts--tabbedoutwith fasta input, since none of the six tabbedout columns depends on quality data. - change: the
--sintax --randseedmultithreading warning is removed. The per-query RNG is seeded from a per-query substream, so the classification is reproducible whatever the thread count, exactly as the manual page states. - change: reject
--match/--mismatchoutside -32767..32767 and finite--gapopen/--gapextoutside 0..6553, instead of silently wrapping them to the 16-bit aligner. - improve:
--fastq_filterand--fastx_filterare about 2x faster (552 ms to 282 ms on 300000 records, byte-identical). Most of the gain is in the shared FASTQ reader, so every FASTQ-reading command benefits:--fastq_stats-27%,--fastq_eestats2-15%,--fastq_join-13%,--fastq_convert-13%,--fastx_revcomp-12%,--fastx_subsample-11%,--fastq_chars-11%,--fastx_uniques-8%. - improve:
--fastq_mergepairsis 3.0x faster on one thread and 1.9x on eight, and 3.5x on a non-overlapping pair set, chiefly by indexing its 5-mers directly (1024 possible values) instead of hashing them. - improve:
--search_exactis 1.74x faster at--threads 24and uses 61 MB instead of 3752 MB, by growing the per-thread hit buffer on demand rather than sizing it to the whole database, per strand, per thread. That allocation, not the search, was what made the command slower with more threads. - improve:
--sintaxis 15% to 38% faster depending on how query-heavy the run is: byte-wide hit counters (a sintax count cannot exceed 32, so a 16-bit counter is twice the width it needs) and a block skip over the counters that cannot beat the running best, which is 99.94% of them. - improve:
--udb2fastais 7% to 82% faster and uses 21 MB instead of 1.0 GB on a word length 13 database, by not loading a k-mer index it never reads.--udbstatsno longer sorts the whole k-mer table to print eleven rows and two order statistics (up to -91%), and no longer builds that report when--logis absent and it cannot be printed. - improve:
--makeudb_usearchis 35% faster (4.93 s to 3.18 s on the PR2 reference): parallel masking, and a word-at-a-time scan that expands a bitmapped k-mer 8.6x faster than bit by bit. - improve:
--uchime_denovoand the--uchime*_refcommands are 13% faster: clearing only the live prefix of the match and insert arrays (about 9 rows of the 400 allocated) and wiping each match column once instead of once per overlapping window. - improve:
--fastx_syncpairsexecutes 16% fewer instructions and allocates far less, storing the reverse reads in a chunked arena instead of three separate allocations per record. - improve:
--fastx_getseqs --labelshashes the labels for exact whole-header matching instead of comparing every record with every label: 1.95 billion string comparisons for 10000 labels against 200000 records, 90% of the command’s runtime, and quadratic growth on both axes. - improve: DUST masking skips the start positions that provably cannot score, which is 99.4% of windows on real data.
- improve:
--fastq_eestatscan now process long reads in a memory-efficient way. It is also faster (14-27% in our tests) when processing short reads. - improve: output-open failure messages are harmonized and now include the offending filename (for instance
--alnout,--samout,--uc,--clusters) (PR #652). - improve: building no longer requires
./autogen.shor the autotools; the generated build files are committed and authoritative (maintainer mode disabled), so an ordinary build needs only a C++ compiler and make (PR #648). - improve: recommend
-O3again now that the SIMD-aligner strict-aliasing miscompile (issue #589) is fixed at the root and the-fno-tree-partial-preworkaround is removed (PR #649). - improve: a documentation audit of the whole manual, correcting the per-command pages against measured behaviour: the actual
--minseqlengthdefault (32) for four commands,--derep_prefixaccepting only--strand plus,--borderlineas a sole output option for the uchime commands,--sizeoutpropagating rather than resetting sizes, how alignments against Ns are scored and counted, the OTU-table identifier uniqueness requirement, the cigar(5) example and the SAM run-length exception,--fastq_solexa,--derep_fulllengthmarked deprecated in favour of--fastx_uniques, and the accepted ranges for--match/--mismatchand the gap penalties. - improve: fix double-hyphen rendering of option names in the manual pages and the online HTML documentation, including the vsearch-userfields(7) NAME line.
- improve: cross-platform pseudo-random number generator reproducibility (PR #640).
- improve: documentation (issues #239, #282).
- improve: code testing (new automatic tests in vsearch-tests; PR #638, #641).
- fix:
- v2.31.0 released April 29th, 2026
-
Includes the following changes:
- fix:
--fastx_getseqs --label_wordsout-of-bounds memory issue - fix:
--fastx_getsubseqnow writes non-matching sequences in full (no trimming) - fix: sintax’s tie-breaking mechanism
- fix: limit the scope of decompress options (
--gzip_decompressand--bzip2_decompress) tostdin - fix: option
--samplenow properly truncates at first ‘;’ or blank - fix: option
--wordlengthnow checks for values outside the range 3-15 - fix: option
--fasta_widthnow checks for negative values - fix: option
--maxseqlengthnow checks for null and negative values - change: restore progress indicator when stderr is not a terminal. One line per progress step. This changes behavior present since v1.10.0.
- change:
--fastq_mergepairsnow honors--sizeoutand appends;size=1to merged and not-merged output headers - change:
--fastq_filterand--fastx_filter: now reject out-of-domain values for--fastq_maxee,--fastq_maxee_rate,--fastq_truncee,--fastq_maxlen,--fastq_maxns,--fastq_minlen,--fastq_trunclen,--fastq_trunclen_keep,--fastq_truncqual,--fastq_stripleft, and--fastq_stripright - change: option
--eetabbedoutnow prints EE values with more digits (more precise values) - change:
--fastx_getseqs --label_wordsnow silently skips empty lines - add: online documentation for all
vsearchcommands (https://torognes.github.io/vsearch/) - add: command
--orientnow supports option--hardmask - add: compilation flag
-fno-exceptions - add: static library API for vsearch (contributed by @wasade)
- improve: code refactoring
- improve: code coverage of our test-suite (8,930 active tests)
- fix:
- v2.30.6 released March 27th, 2026
-
Includes the following changes:
- fix: out-of-bound look-ups when printing empty last common ancestor (LCA) results with the
--lcaoutoption. Thanks to user AntoninLCH for reporting this issue, - improve: code refactoring,
- improve: code coverage of our test-suite.
- fix: out-of-bound look-ups when printing empty last common ancestor (LCA) results with the
- v2.30.5 released March 10th, 2026
-
Includes the following changes:
- fix: out-of-bound look-ups when printing alignment rows (commit 2f3d1ef). Thanks to user @gbbio for reporting this issue (#618). This is a regression, introduced in v2.30.1,
- fix: options
--xlengthand--xeewere not removing length and ee attributes as expected (commit 69fccdbc). This is a regression, introduced in v2.30.1, - fix: range checking for the option
--max_unmasked_pct(commit e1a5611505), - add: individual manpages for the commands
--shuffleand--cut, - improve: eliminated 50 clang-tidy warnings,
- improve: code coverage of our test-suite.
- v2.30.4 released January 19th, 2026
- Fixes issue #617. Due to a bug, incorrect scores were reported in the FASTA file headers of some non-chimeric sequences during chimera detection. The non-chimeric status was correct.
- v2.30.3 released January 12th, 2026
- Fixes memory allocation bugs in the chimera detection code that caused a segmentation fault in rare cases (issue #615).
- v2.30.2 released December 12th, 2025
- Fixes two minor issues. Allow a UDB file to be written to a pipe or stdout (issue #599). Correct computation of median cluster size after dereplication (issue #611).
- v2.30.1 released October 3rd, 2025
-
Incorporates many code improvements, more extensive testing, better documentation and some minor bug fixes:
- fix: use-after-free introduced in commit de6c1d8 (Jun 13, 2024),
- fix: (harmless) out-of-bounds memory issue in
--derep_prefix(commit 8a0a508b), - fix: (harmless) memory leak in
--fastx_getseqs --label_field(commit a9c42713), - fix: (harmless) memory leak when using option
--userfields(--allpairs_globalcommit 03b95bcf;--cluster_*commit 2fde5472;--search_exactcommit 45cd56d6;--usearch_globalcommit d83bfee9), - fix: (harmless) valgrind error, use of uninitialized values (commit 8bab2444), also eliminates a pesky compilation warning,
- change: passing a negative value to
--fastq_truncee_rateis now an error (commit a120f371), - change: passing a negative value to
--fastq_minqualis now an error (commit ff5b0c99), - change: passing a non-ASCII symbol to
--join_padgapor--join_padgapqis now an error (commit a708f5b3), - change: when using
--gapopen "*"to forbid gap opening, the penalty is now set to INT_MAX (rather than 1,000). This might change alignment results for users who relied on the old behavior (thanks to Denis Filloux, issue #602, commit 96e9cf9e), - change: when using command
--chimeras_denovo,--tabbedoutor--alnoutcan be the only output files specified (commit d51f0a4), - change: when using command
--chimeras_denovo, option--lengthoutis now accepted (commit 3f55cc6b), - change: when using command
--chimeras_denovo, option--xlengthis now accepted (commit 0fd346cd), - add: compilation option GLIBCXX_DEBUG when compiling for debugging (commit 5cf4a6c1),
- add: official support for clang 20,
- add: initial support for clang 21, initial support for GCC 15,
- add: experimental support for clang 22,
- improve: more accurate line number when reporting illegal characters in fastq headers (commit 539084e9),
- improve: more accurate line number when reporting non-ASCII characters in fastq headers (commit 98a851ed),
- improve: remove checks for unneeded libraries during compilation (commit 249bb5d5),
- improve: code quality (8,536 clang-tidy warnings eliminated),
- improve: documentation and help messages (issue #604),
- improve: complete refactoring and modernization of the command
--fastq_stats, - improve: command
--fastq_statsis now up to twice faster (tested on x86-64), - improve: extensive test-suites for
--fastq_statsand--sff_convert, - improve: code coverage of our test-suite.
- v2.30.0 released February 27th, 2025
- Add options
--n_mismatch,--fastq_minqual, and--fastq_truncee_rate. The--n_mismatchoption will count N’s as mismatches in alignments, which may be useful to get sensible alignments for sequences with lots of N’s. By default N’s are counted as matches. Both the scoring and the counting of matches are affected. The new--fastq_minqualoption for the--fastq_filterand--fastx_filtercommands will discard sequences with any bases with a quality score below the given value. The new--fastq_truncee_rateoption for the same commands will truncate sequences at the first position where the number of expected errors per base is above the given value. - v2.29.4 released February 14th, 2025
- Adjust the window size used for chimera detection down from 64 to 32. The window size was by accident increased from 32 to 64 in version 2.23.0, leading to somewhat fewer chimeras being predicted. In addition, a compiler pragma has been included in align_simd.cc to further protect the compiler from generating wrong code.
- v2.29.3 released February 3rd, 2025
- Released to mitigate a bug that occurs when compiling the
align_simd.ccfile on x86_64 systems with the GNU C++ compiler version 9 or later with the-O3optimization option. It results in incorrect code that may cause bad alignments in some circumstances. We are investigating this issue further, but for now we recommend compiling with the-O2flag. The README.md file and the Dockerfiles have been updated to reflect this. The binaries released with this version will include this fix. - v2.29.2 released December 20th, 2024
- Fix a segmentation fault during clustering when the set of clusters is empty. Initial documentation in markdown format available on GitHub Pages.
- v2.29.1 released October 24th, 2024
- Fix a segmentation fault that could occur during alignment in version 2.29.0, for example with
--uchime_ref. Some improvements to code and documentation. - v2.29.0 released September 26th, 2024
-
Fixes seven bugs (see changelog below), adds initial support for RISC-V architectures, and improves code quality and code testing (1,210 new tests):
- add: experimental support for RISCV64 and other 64-bit little-endian architectures, thanks to Michael R. Crusoe and his fellow Debian developers (issue #566),
- add: official support for clang-19 and gcc 14,
- add: beta support for clang-20,
- remove: unused
--outputoption for command--fastq_stats(issue #572), - fix: bug in
--sintaxwhen selecting the best lineage (only low confidence values below 0.5 were affected) (issue #573), - fix: out-of-bounds error in
--fastq_statswhen processing empty reads (issue #571), - fix: bug in
--cut, patterns with multiple cutting sites were not detected (commit 4c4f9fa), - fix: memory error (segmentation fault) when using
--derep_idand--strand(issue #565), - fix:
--fastq_joinnow obeys--quietand--logoptions (commit 87f968b), - fix:
--fastq_joinquality padding is now also set to Q40 when quality offset is 64 (commit be0bf9b), - fix: (partial)
--fastq_join’s handling of abundance annotations (commit f2bbcb4), - improve: additional safeguards to validate input values and to make sure that they are within acceptable limits. Changes concern options
--abskew(commit a530dd8) and--fastq_maxdiffs(commit 4b254db), - improve: code quality (1.3k+ commits, 6k+ clang-tidy warnings eliminated),
- improve: documentation and help messages (issue #568),
- improve: complete refactoring and modernization of a subset of commands (
--sortbylength,--sortbysize,--shuffle,--rereplicate,--cut,--fastq_join,--fasta2fastq,--fastq_chars), - improve: code coverage of our test-suite for the above-mentioned commands (1,210 new tests, 4,753 in total).
- v2.28.1 released April 26th, 2024
- Fix a segmentation fault that could occur with the blast6out and output_no_hits options.
- v2.28.0 released April 26th, 2024
- The sintax command has been improved in several ways in this version of vsearch. Please note that several details of this algorithm are not clearly described in the preprint, and the implementation in vsearch differs from that in usearch. The former vsearch version did not always choose the most common taxonomic entity over the 100 bootstraps among the database sequences with the highest amount of word similarity to the query. Instead, if several sequences had an equal similarity with the query, the sequence encountered in the earliest bootstrap was chosen. The confidence level was calculated based on this sequence compared to the selected sequences from the other 99 bootstraps. This could lead to a suboptimal choice with a low confidence. In the new version, the most common of the sequences with the highest amount of word similarity across the 100 bootstraps will be selected, and ties will be broken randomly. Another problem with the old implementation was that if several sequences had the same amount of word similarity, the shortest one in the reference database would be chosen, and if they were equally long, the earliest in the database file would be chosen. A new option called sintax_random has now been introduced. This option will randomly select one of the sequences with the highest number of shared words with the query, without considering their length or position. This avoids a bias towards shorter reference sequences. This option is strongly recommended and will probably soon be the default. Furthermore, a ninth taxonomic rank, strain (letter t), is now recognized. The speed of the sintax command has also been significantly improved at least in some cases. Run vsearch with the randseed option and 1 thread to ensure reproducibility of the random choices in the algorithm.
- v2.27.1 released April 6th, 2024
- Fixes the weak_id option and makes searches report weak hits in some cases. Updates the names of the compression libraries to libz.so.1 and libbz2.so.1 on Linux to make them work on common Linux distributions without installing additional packages. README.md has been updated with information about compression libraries on Windows.
- v2.27.0 released January 19th, 2024
- The usearch_global and search_exact commands now support FASTQ files as well as FASTA files as input. This version of vsearch includes clarifications and updates to the manual. Some code has been refactored. Generic Dockerfiles for major Linux distributions have been included. Some warnings from compilers and other tools have been eliminated. The release for Windows will also include DLLs for the two compression libraries.
- v2.26.1 released November 25th, 2023
- No real changes, but the previous version was released without proper updates to the source code.
- v2.26.0 released November 24th, 2023
- Enable the maxseqlength and minseqlength options for the chimera detection commands. When the usearch_global or search_exact commands are used, OTU tables will include samples and OTUs with no matches.
- v2.25.0 released November 10th, 2023
- Allow a given percentage of mismatches between chimeras and parents for the experimental chimeras_denovo command.
- v2.24.0 released October 26th, 2023
- Update documentation. Improve code. Allow up to 20 parents for the undocumented and experimental chimeras_denovo command. Fix compilation warnings for sha1.c. Compile for release (not debug) by default.
- v2.23.0 released July 7th, 2023
- Update documentation. Add citation file. Modernize and improve code. Fix several minor bugs. Fix compilation with GCC 13. Print stats after fastq_mergepairs to log file instead of stderr. Handle sizein option correctly with dbmatched option for usearch_global. Allow maxseqlength option for makeudb_usearch. Fix memory allocation problem with chimera detection. Add lengthout and xlength options. Increase precision for eeout option. Add warning about sintax algorithm, random seed and multiple threads. Refactor chimera detection code. Add undocumented experimental long_chimeras_denovo command. Fix segfault with clustering. Add more references.
- v2.22.1 released September 19th, 2022
- Fix compiler warning.
- v2.22.0 released September 19th, 2022
- Add the derep_smallmem command for dereplication using little memory.
- v2.21.2 released September 12th, 2022
- Fix problems with the lcaout option when using maxaccepts above 1 and either lca_cutoff below 1 or with top_hits_only enabled. Update documentation. Update code to avoid compiler warnings.
- v2.21.1 released January 18th, 2022
- Fix a problem with dereplication of empty input files. Update Altivec code on ppc64le for improved compiler compatibility (vector->__vector).
- v2.21.0 released January 12th, 2022
- Adds the sample, qsegout and tsegout options. Enables the use of UDB databases with uchime_ref.
- v2.20.1 released January 11th, 2022
- Fixes a bug in fastq_mergepair that caused an occasional hang at the end when using multiple threads.
- v2.20.0 released January 10th, 2022
- Added the fastx_uniques command and the fastq_qout_max option for dereplication of FASTQ files. Some code cleaning.
- v2.19.0 released December 21st, 2021
- Added the lcaout and lca_cutoff options to enable the output of last common ancestor (LCA) information about hits when searching. The randseed option was added as a valid option to the sintax command. Code improvements.
- v2.18.0 released August 27th, 2021
- Added the fasta2fastq command. Fixed search bug on ppc64le. Fixed bug with removal of size and ee info in uc files. Fixed compilation errors in some cases. Made some general code improvements. Updated manual.
- v2.17.1 released June 14th, 2021
- Modernized code. Minor changes to help info.
- v2.17.0 released March 29th, 2021
- The fastq_mergepairs command has been changed. It now allows merging of sequences with overlaps as short as 5 bp if the
--fastq_minovlenoption has been adjusted down from the default 10. In addition, much fewer pairs of reads should now be rejected with the reason ‘multiple potential alignments’ as the algorithm for detecting those have been changed. - v2.16.0 released March 22nd, 2021
- Adds the orient command. Handles empty input files properly. Documentation has been updated.
- v2.15.2 released January 26th, 2021
- No real functional changes, but some code and compilation changes. Compiles successfully on macOS running on Apple Silicon (ARMv8). Binaries available. Code updated for C++11. Minor adaptations for Windows compatibility, including the use of the C++ standard library for regular expressions. Minor changes for compatibility with Power8. Switch to C++ header files.
- v2.15.1 released October 28th, 2020
- Fix for dereplication when including reverse complement sequences and headers. Make some extra checks when loading compression libraries and add more diagnostic output about them to the output of the version command. Report an error when fastx_filter is used with FASTA input and options that require FASTQ input. Update manual.
- v2.15.0 released June 19th, 2020
- Update manual and documentation. Turn on notrunclabels option for sintax command by default. Change maxhits 0 to mean unlimited hits, like the default. Allow non-ascii characters in headers, with a warning. Sort centroids and uc too when clusterout_sort specified. Add cluster id to centroids output when clusterout_id specified. Improve error messages when parsing FASTQ files. Add missing fastq_qminout option and fix label_suffix option for fastq_mergepairs. Add derep_id command that dereplicates based on both label and sequence. Remove compilation warnings.
- v2.14.2 released January 28th, 2020
- Fixed some issues with the cut, fastx_revcomp, fastq_convert, fastq_mergepairs, and makeudb_usearch commands. Updated manual.
- v2.14.1 released September 18th, 2019
- Fixed bug with sequences written to file specified with fastaout_rev for commands fastx_filter and fastq_filter.
- v2.14.0 released September 11th, 2019
- Added relabel_self option. Made fasta_width, sizein, sizeout and relabelling options valid for certain commands.
- v2.13.7 released September 2nd, 2019
- Fixed bug in consensus sequence introduced in version 2.13.0.
- v2.13.6 released July 2nd, 2019
- Added info about cut command to output of help command.
- v2.13.5 released July 2nd, 2019
- Added cut command to fragment sequences at restriction sites. Silenced output from the fastq_stats command if quiet option was given. Updated manual.
- v2.13.4 released May 10th, 2019
- Added information about support for gzip- and bzip2-compressed input files to the output of the version command. Adapted source code for compilation on FreeBSD and NetBSD systems.
- v2.13.3 released April 30th, 2019
- Fixed bug in FASTQ parsing introduced in version 2.13.2.
- v2.13.2 released April 30th, 2019
- Fixed bug related to improper handling of newlines on Windows. Allowed option strand plus to uchime_ref for compatibility.
- v2.13.1 released April 26th, 2019
- Minor changes to the allowed options for each command. All commands now allow the log, quiet and threads options. If more than 1 thread is specified for commands that are not multi-threaded, a warning will be issued. Minor changes to the manual.
- v2.13.0 released April 11th, 2019
- Added the
--fastx_getseq,--fastx_getseqsand--fastx_getsubseqcommands to extract sequences from a FASTA or FASTQ file based on their labels. Improved handling of ambiguous nucleotide symbols. Corrected behaviour of--uchime_refcommand with options--selfand--selfid. Strict detection of illegal options for each command. - v2.12.0 released March 19th, 2019
- Take sequence abundance into account when computing consensus sequences or profiles after clustering. Warn when rereplicating sequences without abundance info. Guess offset 33 in more cases with fastq_chars. Stricter checking of option arguments and option combinations.
- v2.11.1 released February 28th, 2019
- Minor change to the handling of the weak_id and id options when using cluster_unoise.
- v2.11.0 released February 13th, 2019
- Added ability to trim and filter paired-end reads using the reverse option with the fastx_filter and fastq_filter commands. Added
--xeeoption to remove ee attributes from FASTA headers. Minor invisible improvement to the progress indicator. - v2.10.4 released January 4th, 2019
- Fixed serious bug in x86_64 SIMD alignment code introduced in version 2.10.3. Added link to BioConda in README. Fixed bug in fastq_stats with sequence length 1. Fixed use of equals symbol in UC files for identical sequences with cluster_fast.
- v2.10.3 released December 19th, 2018
- Ported to Linux on ARMv8 (aarch64). Fixed compilation warning with gcc version 8.1.0 and 8.2.0.
- v2.10.2 released December 10th, 2018
- Fixed bug in sintax with reversed order of domain and kingdom.
- v2.10.1 released December 7th, 2018
- Improved sff_convert command. It will now read several variants of the SFF format. It is also able to read from a pipe. Warnings are given if there are minor problems. Error messages have been improved. Minor speed and memory usage improvements.
- v2.10.0 released December 6th, 2018
- Added the sff_convert command to convert SFF files to FASTQ. Added some additional option argument checks. Fixed segmentation fault bug after some fatal errors when a log file was specified.
- v2.9.1 released October 29th, 2018
- Changed compiler options that select the target cpu and tuning to allow the software to run on any 64-bit x86 system, while tuning for more modern variants. Avoid illegal instruction error on some architectures. Update documentation of rereplicate command.
- v2.9.0 released October 10th, 2018
- Added the fastq_join command.
- v2.8.6 released October 9th, 2018
- Fixed a bug introduced in version 2.8.2 that caused derep_fulllength to include the full FASTA header in its output instead of stopping at the first space (unless the notrunclabels option is in effect).
- v2.8.5 released September 26th, 2018
- Fixed a bug in fastq_eestats2 that caused the values for large lengths to be much too high when the input sequences had varying lengths.
- v2.8.4 released September 3rd, 2018
- Further reduce memory requirements for dereplication when not using the uc option. Fix output during subsampling when quiet or log options are in effect.
- v2.8.3 released August 31st, 2018
- Fix for segmentation fault for
--derep_fulllengthwith--uc. - v2.8.2 released August 21st, 2018
- Fix for wrong placement of semicolons in header lines in some cases when using the sizeout or xsize options. Reduced memory requirements for full-length dereplication in cases with many duplicate sequences. Improved wording of fastq_mergepairs report. Updated manual regarding use of sizein and sizeout with dereplication. Changed a compiler option.
- v2.8.1 released June 22nd, 2018
- Fixes for compilation warnings with GCC 8.
- v2.8.0 released April 24th, 2018
- Added the fastq_maxdiffpct option to the fastq_mergepairs command.
- v2.7.2 released April 20th, 2018
- Added the sintax command for taxonomic classification. Fixed a bug with incorrect FASTA headers of consensus sequences after clustering.
- v2.7.1 released February 16th, 2018
- Fix several bugs on Windows related to large files, use of
-as a file name to mean stdin or stdout, alignment errors, missed kmers and corrupted UDB files. Added documentation of UDB-related commands. - v2.7.0 released February 13th, 2018
- Added commands cluster_unoise, uchime2_denovo and uchime3_denovo contributed by Davide Albanese based on Robert Edgar’s papers. Refactored fasta and fastq print functions as well as code for extraction of abundance and other attributes from the headers.
- v2.6.2 released December 18th, 2017
- Fixed option xsize that was partially inactive for commands uchime_denovo, uchime_ref, and fastx_filter.
- v2.6.1 released December 8th, 2017
- Improved parallelisation of paired end reads merging.
- v2.6.0 released November 10th, 2017
- Rewritten paired-end reads merger with improved accuracy. Decreased default value for fastq_minovlen option from 16 to 10. The default value for the fastq_maxdiffs option is increased from 5 to 10. There are now other more important restrictions that will avoid merging reads that cannot be reliably aligned.
- v2.5.2 released October 30th, 2017
- Fixed bug where
-as an argument to the fastq_eestats2 option was treated literally instead of equivalent to stdin. - v2.5.1 released October 25th, 2017
- Fixed bug with bad default value of 1 instead of 32 for minseqlength when using the makeudb_usearch command.
- v2.5.0 released October 5th, 2017
- Support for UDB database files. New commands: fastq_stripright, fastq_eestats2, makeudb_usearch, udb2fasta, udbinfo, and udbstats. New general option: no_progress. New options minsize and maxsize to fastx_filter. Minor bug fixes, error message improvements and documentation updates.
- v2.4.4 released August 28th, 2017
- Fixed a few minor bugs, improved error messages and updated documentation.
- v2.4.3 released April 6th, 2017
- Fixed bug with progress bar for shuffling. Fixed missing N-lines in UC files with usearch_global, search_exact and allpairs_global when the output_no_hits option was not specified.
- v2.4.2 released March 10th, 2017
- Default value for fastq_minovlen increased to 16 in accordance with help text and for compatibility with usearch. Minor changes for improved accuracy of paired-end read merging.
- v2.4.1 released March 1st, 2017
- Fixed an overflow bug in fastq_stats and fastq_eestats affecting analysis of very large FASTQ files. Fixed maximum memory usage reporting on Windows.
- v2.4.0 released February 8th, 2017
- Added support for Linux on Power8 systems (ppc64le) and Windows on x86_64. Improved detection of pipes when reading FASTA and FASTQ files. Corrected option for specifying output from fastq_eestats command in help text.
- v2.3.4 released December 9th, 2016
- Fixed bug in output of sequence profiles and updated documentation.
- v2.3.3 released December 5th, 2016
- A minor speed improvement.
- v2.3.2 released November 18th, 2016
- Fixed bug where vsearch reported the ordinal number of the target sequence instead of the cluster number in column 2 on H-lines in the uc output file after clustering. For search and alignment commands both usearch and vsearch reports the target sequence number here.
- v2.3.1 released November 16th, 2016
- Fixed bug where
--minwordmatches 0was interpreted as the default minimum word matches for the given word length instead of zero. When used in combination with--maxaccepts 0and--maxrejects 0it will allow complete bypass of kmer-based heuristics. - v2.3.0 released October 10th, 2016
- Allowed zero-length sequences in FASTA and FASTQ files. Added
--fastq_trunclen_keepoption. Fixed bug with output of OTU tables to pipes. - v2.2.0 released October 7th, 2016
- Added OTU table generation options
--biomout,--mothur_shared_outand--otutaboutto the clustering and searching commands. - v2.1.2 released September 28th, 2016
- Fixed incorrect abundance output from fastx_filter and fastq_filter when relabelling.
- v2.1.1 released September 23rd, 2016
- Fixed bugs in output to UC-files. Improved help text and manual.
- v2.1.0 released September 16th, 2016
- New command:
--fastx_filter. New options:--fastq_maxlen,--fastq_truncee. Allow--minwordmatchesdown to 3. - v2.0.5 released September 9th, 2016
- Add options
--fastaout_discardedand--fastqout_discardedto output discarded sequences from subsampling to separate files. Updated manual. - v2.0.4 released September 1st, 2016
- Improved error message for bad FASTQ quality values. Improved manual.
- v2.0.3 released August 2nd, 2016
- Fixed bad compiler options resulting in Illegal instruction errors when running precompiled binaries.
- v2.0.2 released July 5th, 2016
- Avoid warnings when compiling with GCC 6.
- v2.0.1 released June 30th, 2016
- Avoid segmentation fault when masking very long sequences.
- v2.0.0 released June 24th, 2016
- This major new version supports reading from pipes. Two new options are added:
--gzip_decompressand--bzip2_decompress. One of these options must be specified if reading compressed input from a pipe, but are not required when reading from ordinary files. The vsearch header that was previously written to stdout is now written to stderr. This enables piping of results for further processing. The file name-now represents standard input (/dev/stdin) or standard output (/dev/stdout) when reading or writing files, respectively. Code for reading FASTA and FASTQ files has been refactored. - v1.11.2 released June 21st, 2016
- Two bugs were fixed. The first issue was related to the
--query_covoption that used a different coverage definition than the qcov userfield. The coverage is now defined as the fraction of the whole query sequence length that is aligned with matching or mismatching residues in the target. All gaps are ignored. The other issue was related to the consensus sequences produced during clustering when only N’s were present in some positions. Previously these would be converted to A’s in the consensus. The behaviour is changed so that N’s are produced in the consensus, and it should now be more compatible with usearch. - v1.11.1 released April 13th, 2016
- Added strand information in UC file for
--derep_fulllengthand--derep_prefix. Added expected errors (ee) to header of FASTA files specified with--fastaoutand--fastaout_discardedwhen--eeoutor--fastq_eeoutoption is in effect for fastq_filter and fastq_mergepairs. The options--eeoutand--fastq_eeoutare now equivalent. - v1.10.2 released March 18th, 2016
- Fixed a bug causing a segmentation fault when running
--usearch_globalwith an empty query sequence. Also fixed a bug causing imperfect alignments to be reported with an alignment string of=in uc output files. Fixed typos in man file. Fixed fasta/fastq processing code regarding presence or absence of compression library header files. - v1.10.1 released February 23rd, 2016
- Fixed a bug affecting the
--fastq_mergepairscommand causing FASTQ headers to be truncated at first space (despite the bug fix release 1.9.0 of November 12th, 2015). Full headers are now included in the output (no matter if--notrunclabelsis in effect or not). - v1.10.0 released February 11th, 2016
- Parallelized and improved merging of paired-end reads and adjusted some defaults. Removed progress indicator when stderr is not a terminal. Added
--fasta_scoreoption to report chimera scores in FASTA files. Added--rereplicateand--fastq_eestatscommands. Fixed typos. Added relabelling to files produced with--consoutand--profileoptions. - v1.9.10 released January 25th, 2016
- Fixed bug related to masking and lower case database sequences.
- v1.9.9 released January 22nd, 2016
- Adjusted default minimum number of word matches during searches for improved performance.
- v1.9.8 released January 22nd, 2016
- Fixed bug causing segfault when chimera detection is performed on extremely short sequences.
- v1.9.7 released January 12th, 2016
- Masking behaviour is changed somewhat to keep the letter case of the input sequences unchanged when no masking is performed. Masking is now performed also during chimera detection. Documentation updated.
- v1.9.6 released January 8th, 2016
- Fixed bug in aligned sequences produced with
--fastapairsand--userout(qrow, trow) options. - v1.9.5 released December 3rd, 2015
- Fixed bug resulting in inferior chimera detection performance.
- v1.9.4 released December 3rd, 2015
- Fixed incrementation of counter when relabeling dereplicated sequences.
- v1.9.3 released November 19th, 2015
- Workaround for missing x86intrin.h with old compilers.
- v1.9.2 released November 17th, 2015
- Fixed a bug in the computation of some values with
--fastq_stats. - v1.9.1 released November 13th, 2015
- Fixed memory leak and a bug in score computation in
--fastq_mergepairs, and improved speed. - v1.9.0 released November 12th, 2015
- Added the
--fastq_mergepairscommand and associated options. This command has not been tested well yet. Included additional files to avoid dependency of autoconf for compilation. Fixed an error where identifiers in fasta headers were not truncated at tabs, just spaces. Fixed a bug in detection of the file format (FASTA/FASTQ) of a gzip compressed input file. - v1.8.1 released November 2nd, 2015
- Fixes for compatibility with QIIME and older OS X versions.
- v1.8.0 released October 19th, 2015
- Added
--search_exact,--fastx_maskand--fastq_convertcommands. Changed most commands to read FASTQ input files as well as FASTA files. Modified--fastx_revcompand--fastx_subsampleto write FASTQ files. - v1.7.0 released October 14th, 2015
- Add
--relabel_keepoption. - v1.6.1 released October 14th, 2015
- Fix bugs and update manual and help text regarding relabelling. Add all relabelling options to the subsampling command. Add the
--xsizeoption to chimera detection, dereplication and fastq filtering commands. Refactoring of code. - v1.6.0 released October 9th, 2015
- Adds the relabeling options (
--relabel,--relabel_md5and--relabel_sha1) to the shuffle command. Also adds the--xsizeoption to the clustering, dereplication, shuffling and sorting commands. - v1.5.0 released October 7th, 2015
- Introduces the new option
--minwordmatchesthat allows the user to specify the minimum number of matching unique words before a sequence is considered further. New default values for different word lengths are also set. The minimum word length is increased to 7. - v1.4.7 released October 7th, 2015
- Fixes a problem with searching for or clustering sequences with repeats. In this new version, vsearch looks at all words occurring at least once in the sequences in the initial step. Previously only words occurring exactly once were considered. In addition, vsearch now requires at least 10 words to be shared by the sequences, previously only 6 were required. If the query contains less than 10 words, all words must be present for a match. This change seems to lead to slightly reduced recall, but somewhat increased precision, ending up with slightly improved overall accuracy.
- v1.4.6 released October 6th, 2015
- Fix subtle bug in SIMD alignment code that reduced accuracy.
- v1.4.5 released October 6th, 2015
- Fix memory allocation bug when reading long FASTA sequences.
- v1.4.4 released October 3rd, 2015
- Remove debug message.
- v1.4.3 released October 3rd, 2015
- Fix a bug with determining amount of memory on some versions of Apple OS X.
- v1.4.2 released October 2nd, 2015
- Dynamic loading of libraries for reading gzip and bzip2 compressed files if available. Circumvention of missing gzoffset function in zlib 1.2.3 and earlier.
- v1.4.1 released September 29th, 2015
- Inserted public domain MD5 and SHA1 code to eliminate dependency on crypto and openssl libraries and their licensing issues.
- v1.4.0 released September 25th, 2015
- Added
--sizeorderoption. - v1.3.5 released September 17th, 2015
- Minor configuration/makefile changes to compile to native CPU and simplify makefile.
- v1.3.4 released September 16th, 2015
- Fixed compilation problems with zlib and bzip2lib.
- v1.3.3 released September 15th, 2015
- Fixed bug in hexadecimal digits of MD5 and SHA1 digests. Added
--samheaderoption. - v1.3.2 released September 15th, 2015
- Fixed memory leaks. Added
-hshortcut for help. Removed extravin version number. - v1.3.1 released September 14th, 2015
- Several new commands and options. Bug fixes.
- v1.3.0 released September 9th, 2015
- Changed to autotools build system.
- v1.2.0–v1.2.19 released July 6th to September 8th, 2015
- Several new commands and options added. Bugs fixed. Documentation updated.
- v1.1.3 released March 18th, 2015
- Fix more bugs with large datasets.
- v1.1.2 released March 18th, 2015
- Fix bug with large datasets. Fix format of help info.
- v1.1.1 released February 20th, 2015
- Added info about
--logand--quietoptions to help text. - v1.1.0 released February 20th, 2015
- Added the
--quietoption to suppress all output to stdout and stderr except for warnings and fatal errors. Added the--logoption to write messages to a log file. - v1.0.16 released February 19th, 2015
- Integrated patches from Debian for increased compatibility with various architectures.
- v1.0.15 released February 18th, 2015
- Fix bug in calculation of identity metric between sequences when using the MBL definition (
--iddef 3). - v1.0.14 released February 17th, 2015
- Fix a bug where the multiple alignment and consensus sequence computed after clustering ignored the strand of the sequences. Also decreased size of line buffer for reading FASTA files to 1MB again due to excessive stack memory usage.
- v1.0.13 released February 17th, 2015
- Fix a memory allocation problem when computing multiple sequence alignments with the
--msaoutand--consoutoptions, as well as a memory leak. Also increased line buffer for reading FASTA files to 4MB. - v1.0.12 released February 6th, 2015
- Temporarily fixes a problem with long headers in FASTA files.
- v1.0.11 released February 5th, 2015
- Introduces the possibility to output results in SAM format (for clustering, pairwise alignment and searching).
- v1.0.10 released January 23rd, 2015
- Fixes a bug where the
--sizeinoption was ignored and always treated as on, affecting clustering and dereplication commands. - v1.0.9 released January 22nd, 2015
- Fixes a bug in the function sorting sequences by decreasing abundance (
--sortbysize). - v1.0.8 released January 22nd, 2015
-
Introduces several changes and bug fixes:
- a new linear memory aligner for alignment of sequences longer than 5,000 nucleotides,
- a new
--cluster_sizecommand that sorts sequences by decreasing abundance before clustering, - meaning of userfields qlo, qhi, tlo, thi changed for compatibility with usearch,
- new userfields qilo, qihi, tilo, tihi give alignment coordinates ignoring terminal gaps,
- in
--ucoutput files, a perfect alignment is indicated with a=sign, - the option
--cluster_fastnow sorts sequences by decreasing length, then by decreasing abundance and finally by sequence identifier, - default
--maxseqlengthvalue set to 50,000 nucleotides, - fix for bug in alignment in rare cases,
- fix for lack of detection of under- or overflow in SIMD aligner.
- v1.0.7 released December 19th, 2014
- Fixes a bug in the output from chimera detection with the
--uchimeoutoption. - v1.0.6 released December 14th, 2014
- Fixes a memory allocation bug in chimera detection (
--uchime_refoption). - v1.0.5 released December 9th, 2014
- Fixes a minor bug with
--allpairs_globaland--acceptalloptions. - v1.0.4 released December 8th, 2014
- Added
--allpairs_globaloption. Reduce memory requirements slightly and eliminate memory leaks. - v1.0.3 released December 6th, 2014
- Bug fix (now writes help to stdout instead of stderr).
- v1.0.2 released December 6th, 2014
- Bug fixes (ssse3/sse4.1 requirement, memory leak).
- v1.0.1 released December 1st, 2014
- Bug fixes (sortbysize, semicolon after size annotation in headers) and minor changes (labels as secondary sort key for most sorts, treat T and U as identical for dereplication, only output size in
--dbmatchedfile if--sizeoutspecified). - v1.0.0 released November 28th, 2014
- First public release.
SEE ALSO
CITATION
Rognes T, Flouri T, Nichols B, Quince C, Mahé F. (2016) VSEARCH: a versatile open source tool for metagenomics. PeerJ 4:e2584 doi: 10.7717/peerj.2584
REPORTING BUGS
Submit suggestions and bug-reports at https://github.com/torognes/vsearch/issues, send a pull request on https://github.com/torognes/vsearch, or compose a friendly or curmudgeont e-mail to Torbjørn Rognes (torognes@ifi.uio.no).
AVAILABILITY
Source code and binaries are available at https://github.com/torognes/vsearch.
These manual pages are also published online at https://torognes.github.io/vsearch/.
COPYRIGHT
Copyright (C) 2014-2026, Torbjørn Rognes, Frédéric Mahé and Tomás Flouri
All rights reserved.
Contact: Torbjørn Rognes torognes@ifi.uio.no, Department of Informatics, University of Oslo, PO Box 1080 Blindern, NO-0316 Oslo, Norway
This software is dual-licensed and available under a choice of one of two licenses, either under the terms of the GNU General Public License version 3 or the BSD 2-Clause License.
GNU General Public License version 3
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
The BSD 2-Clause License
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
ACKNOWLEDGMENTS
We would like to thank the authors of the following projects for making their source code available:
- vsearch includes code from Google’s CityHash project by Geoff Pike and Jyrki Alakuijala, providing some excellent hash functions available under a MIT license.
- vsearch includes code derived from Tatusov and Lipman’s DUST program that is in the public domain.
- vsearch includes public domain code written by Alexander Peslyak for the MD5 message digest algorithm.
- vsearch includes public domain code written by Steve Reid and others for the SHA1 message digest algorithm.
- vsearch binaries may include code from the zlib library, copyright Jean-Loup Gailly and Mark Adler.
- vsearch binaries may include code from the bzip2 library, copyright Julian R. Seward.