What Bootstrap Support on a Phylogenetic Tree Means
7 min read · Updated October 30, 2026
The numbers at the forks of a tree are the most-quoted and least-examined thing on it. They are not probabilities that a grouping is real, and they do not become one at 70, 95 or any other threshold. They measure one specific thing: how consistently the columns of your alignment support that grouping when the columns are resampled.
The difference matters because a branch can be strongly supported by data that barely exist. Here is a case where it is, built so that the true answer is known.
What the bootstrap actually resamples
Felsenstein's bootstrap takes the alignment's columns and draws a new alignment of the same width by sampling columns at random with replacement, so some columns appear twice and others not at all. It rebuilds the tree from that resampled alignment, and repeats — 100 times is the usual published figure. A branch's support is the percentage of those replicate trees that contain the same grouping.
Everything in that procedure is a statement about the columns you supplied. The bootstrap cannot know about a gene you did not include, a substitution model that fits better, or an alignment error that put the wrong residues in the same column. If a systematic error pushes every replicate the same way, the bootstrap reports it as high confidence.
A tree whose true topology is known
Take a 400 bp stretch of a real plasmid as a starting sequence and derive five descendants from it. Three of them (X1, X2, X3) share twelve substitutions; two of them (Y1, Y2) share a different ten. Each sequence then gets five or six private changes of its own. Finally, X1 and X2 — and only those two — share two further substitutions, so the grouping of X1 with X2 rests on exactly two sites out of 400.
That construction gives a true tree: (Y1,Y2) and (X1,X2) are real groupings, and X3 sits outside the X1/X2 pair. The pairwise differences come out as 10 between X1 and X2, 12 between X1 and X3, and 32 to 35 across the X/Y split.
Neighbour-joining on Jukes-Cantor distances with 100 bootstrap replicates recovers exactly that topology, and writes two numbers on it: (Y1,Y2) at 100%, (X1,X2) at 94%. The two competing groupings, (X1,X3) and (X2,X3), score 3% each.
94% support, resting on two columns
Delete those two columns — 2 of the 400, leaving everything else untouched — and rerun. The support for (X1,X2) falls from 94% to 50%, with the two alternatives at 28% and 22%, and the branch length collapses to zero — the three distances within the X group are then exactly equal, so the topology that is still drawn is a tie-break rather than a preference.
So the 94% was true and it was fragile. Nothing about the number told you it rested on half a percent of the alignment: a branch supported by two consistent characters and contradicted by none scores much the same as one supported by fifty, because the bootstrap measures consistency, not weight of evidence.
(Y1,Y2), by contrast, holds at 100% through the same deletion, because ten independent columns support it.
How to read a support value, then
- Below about 70, treat the grouping as unresolved. Most of the time the replicates disagreed, which means the alignment does not settle it.
- Above 70, you have learned that the columns are consistent — not that the clade is real. Systematic error is invisible to this statistic.
- A high value on a very short branch is the pattern to distrust: a short branch means few changes support it, and few consistent changes are enough to score high.
- Low support on a deep branch is common and usually honest. It means the data cannot order events that happened close together in time.
- Compare support across one tree, not between trees. The value depends on the number of columns, so the same clade in a longer alignment scores higher for no new biological reason.
Rooting is not something the bootstrap checks
A tree built this way is unrooted: it states which taxa group together, not which came first. Drawing it requires a root, and midpoint rooting places it at the middle of the longest path between two tips — a geometric convention that is right when rates are roughly equal across the tree and arbitrary when they are not.
Support values belong to the unrooted groupings. Two replicates that agree about every grouping can be drawn with different roots if their branch lengths differ slightly, which is why support is counted over splits of the unrooted tree rather than over the clades you see on the drawing.
If the root matters to your argument, include an outgroup you are confident about and root on it explicitly.
Distances, and what this kind of tree assumes
Neighbour-joining builds the tree from a matrix of pairwise distances, corrected for the substitutions that happened and were overwritten by later ones: Jukes-Cantor for nucleotides, a Poisson correction for protein. Both are the standard first-order corrections; other programs default to more elaborate models, so a tree's distances are only comparable with another program's when the model is the same.
The correction breaks down when sequences are very diverged. Independent random DNA sequences differ at about 75% of sites, which is exactly where Jukes-Cantor stops being able to estimate anything, so a set of sequences near that level cannot produce a meaningful tree no matter how many replicates you run.
Equally, the input must be an alignment. Equal-length rows with no gap characters in them are accepted as given, and if they were never aligned, every distance is a column-by-column comparison of unaligned sequence and the tree is a drawing of nothing.
Frequently asked questions
What is a good bootstrap value?
Convention treats 70 and above as support worth reporting and 95 and above as strong, but neither is a probability that the clade is correct. The value says how consistently the columns of your alignment recover that grouping when resampled. A branch can score 94 on two columns out of 400, which is what makes the convention a starting point rather than an answer.
Does a high bootstrap value mean the tree is right?
No. It means the data are internally consistent about that grouping. Systematic error — a misalignment, a model that does not fit, contamination — pushes every replicate the same way and produces high support for the wrong answer. The bootstrap measures sampling noise in the columns, and nothing else.
Why does my branch have no support value?
Support is only defined for internal branches, and a tree needs at least four sequences before any internal branch exists. The tips themselves carry none, and the branch at the root is a drawing convention rather than a grouping.
How many bootstrap replicates should I run?
100 is the usual published figure and is enough to tell a well-supported branch from an unresolved one. More replicates tighten the estimate of the percentage; they do not add evidence, because every replicate is drawn from the same columns.
Is a neighbour-joining tree good enough to publish?
It depends on the claim. Distance methods are fast, deterministic and fine for showing the structure in a set of closely related sequences. A claim about deep relationships, or one where branch support is the point of the paper, wants a maximum-likelihood or Bayesian analysis with an explicitly fitted substitution model.
Related references
Quick reference for FASTA, FASTQ, GenBank and related formats.
SAM/BAM flags, VCF, BED and GFF/GTF columns and coordinate systems.
Reference table of common cloning and protein expression vectors with backbone size, origin of replication, copy number, selection marker, promoter and fusion tags.
Related tools
Build a neighbour-joining tree with bootstrap support, or open a Newick file somebody sent you.
Align several DNA or protein sequences and view a colored alignment with a consensus.
Align two sequences with Needleman-Wunsch or Smith-Waterman.
Paste a GenBank, RefSeq or UniProt accession and get the FASTA or GenBank record.
See repeats, duplications and inversions that a single best alignment hides.