How to make a phylogenetic tree
A phylogenetic tree shows how a set of species, genes or populations descend from common ancestors. Which method you use depends on the data you have, traits, or distances. This guide covers both, and how to build each one in the browser.
Start from the data you actually have
"Phylogenetic tree" is an umbrella term, and the right method follows from your input. There are two common starting points for coursework and small projects:
- A character matrix, each taxon scored for a set of traits (present/absent). This is the classic biology-class exercise, and it's built by parsimony: prefer the tree needing the fewest evolutionary changes.
- A distance matrix, a table of how different every pair of taxa is (percentage sequence difference, genetic distance, or any dissimilarity measure). This is built by a distance method such as neighbour-joining or UPGMA.
Route A, from a character (trait) matrix
Use this when you have organisms scored for observable traits. Open Table, keep the Character matrix tab, list your taxa down the side and traits across the top, and click the cells to mark each trait present (1) or absent (0).
The tree is grouped by shared derived characters, traits inherited from a common ancestor. Include an outgroup so the tree has a root and a direction. The full trait-by-trait walkthrough, including choosing an outgroup and checking the result with parsimony, is on how to make a cladogram; a trait-based tree with the tips aligned is a cladogram, the simplest kind of phylogenetic tree.
Route B, from a distance matrix
Use this when you have pairwise distances rather than traits, for example percentage differences between DNA sequences. Open Table, switch to the Distance matrix tab, and paste your matrix. A square grid or just the lower triangle both work:
| Human | Chimp | Gorilla | Orangutan | |
|---|---|---|---|---|
| Human | 0 | 1.7 | 2.3 | 3.6 |
| Chimp | 1.7 | 0 | 2.4 | 3.7 |
| Gorilla | 2.3 | 2.4 | 0 | 3.8 |
| Orangutan | 3.6 | 3.7 | 3.8 | 0 |
Choose NJ or UPGMA, click Build tree, and the tree appears with branch lengths drawn to scale. Because a distance tree carries branch lengths, it opens in phylogram mode automatically.
Neighbour-joining vs UPGMA
Both turn a distance matrix into a tree, but they make different assumptions:
| Neighbour-joining (NJ) | UPGMA | |
|---|---|---|
| Assumes a constant rate? | No | Yes |
| Tips end level? | No, each lineage ends where its data puts it | Yes, the tree is ultrametric |
| Best when | Lineages evolve at different rates (the usual case) | Rates really are roughly constant, or you want a clock-like look |
Neighbour-joining is the safer default: it recovers the true tree exactly when the distances are additive, and it doesn't assume every lineage changed at the same pace. UPGMA is simpler and produces the neat, level-tipped look of a molecular-clock tree, but it can mislead when rates vary.
Branch lengths and the scale bar
In a phylogenetic tree built from distances, branch length means something: it's the amount of change along that lineage. Long branches are fast-changing or long-isolated; short branches are close relatives. Switch Layout → Tree type between phylogram (to scale) and cladogram (tips aligned, lengths ignored) to see the difference.
A scale bar is drawn automatically in phylogram mode so a reader can measure distances off the figure. Never omit it, without one, branch lengths are unreadable.
Build yours in the browser, no signup, no install.
Open the cladogram makerSupport values
Trees estimated from real data usually carry support values, bootstrap percentages or Bayesian posterior probabilities, that say how well the data back each grouping. If you import a Newick tree (File → Import Newick) that has them, they are read automatically and shown at their nodes. A branch with 95% bootstrap support is well supported; one at 55% is shaky. Toggle them under Style → Support.
Rooting the tree
A tree needs a root to show direction, which way is "back toward the ancestor". The usual method is an outgroup: include a taxon you already know branched off before the rest, then re-root on it. Neighbour-joining produces an unrooted tree, so rooting is a step you add afterward. Select a branch and use the re-root control to place the root there.
Styling for a report or poster
- Ladderize (Layout) sorts branches by clade size for the tidy staircase look of a published figure.
- Align tips (Layout, phylogram mode) lines the labels up and joins each tip to its label with a dotted leader.
- Colour clades, choose a layout, horizontal, vertical or circular, and set fonts and line weight under Style.
- Export a vector SVG for print, a high-resolution PNG, or Newick/NEXUS to carry the tree into other software.