Why this matters
Building a family tree transforms scattered names and dates into a visual narrative of your ancestry. Whether you are a genealogy hobbyist, a student working on a heritage project, or a family historian documenting relatives before stories are lost, the act of structuring relationships visually reveals patterns that lists of names cannot. You notice when three generations share the same first name, when a branch of the family migrated at a specific time, or how many children each generation produced. These patterns are the raw material of family identity.
The challenge with family trees is managing the relational data: who is whose parent, who partnered with whom, and how to position everyone so that generations align horizontally and siblings stay together. A manual diagram in a drawing tool works for small families but collapses under the complexity of four or five generations with multiple partner changes and half-siblings. A dedicated tree maker handles the layout algorithm — it identifies root members (those with no parent), traverses descendants by depth, and assigns each generation to its own row. Partners are displayed beside each other, and children are grouped under their parent couple.
This tool stores the tree as structured JSON data: each person has a name, birth year, optional death year, a parent pointer, and an optional partner pointer. The visualization stacks generations automatically based on depth-first traversal from the root members. You can add members one at a time, link them to parents and partners, and watch the tree reorganize itself. When you delete a person, their children's parent pointer is reset to root so the tree remains intact. The entire structure exports as JSON for backup, sharing, or re-import.
Reference table
| Data field | Purpose | Required |
|---|---|---|
| Name | Display name on the tree node | Yes |
| Birth year | Shown below the name | Yes |
| Death year | Distinguishes living from deceased | No |
| Parent | Links this person to a parent node | No |
| Partner | Displays alongside this person | No |
How to use it
Add family members one at a time with their name, birth year, and optional death year.
Link each person to a parent by selecting from existing members, and optionally assign a partner.
Watch the tree reorganize automatically as you add relationships — generations stack into rows.
Export the completed tree as JSON for backup, sharing, or future editing.
Testing your result
After building a small test tree of three generations, verify that the layout places each generation on its own horizontal row. Check that children appear below their parent and that partners appear side by side. Delete a middle-generation member and confirm their children are reassigned to root rather than disappearing. Export the JSON and inspect it in a text editor to verify that all names, years, and relationship pointers are intact. Re-importing the JSON should reproduce the exact same tree structure, confirming the export is self-contained and complete.
Common mistakes
Forgetting to link a person to a parent, leaving them as an unconnected root node floating in the wrong generation.
Assuming one person can have multiple partners — the current version supports one partner link per person.
Not exporting periodically, which risks losing your work if you accidentally navigate away from the page.
Edge cases and options
Half-siblings are handled by setting each child's parent pointer to the appropriate side of the couple rather than to the partnership itself. If one person has children with two different partners, each child points to the biological parent and the tree renders both branches correctly. The generation depth is calculated by traversing from root members (those with no parent assigned) and grouping descendants by depth. This means if you accidentally create a cycle — person A is parent of B who is parent of C who is parent of A — the traversal would loop infinitely, so avoid circular parent references. The JSON export captures the complete graph structure and can be edited in any text editor if you need to make bulk changes outside the visual interface.
Real-world use cases
A grandparent documenting four generations of family history to share at a reunion, with birth years and partner links for context.
A student creating a family tree project for a social studies class that requires at least three generations with partner information.
An adoptee mapping their known biological and adoptive family branches as separate trees for a personal heritage record.
Frequently asked questions
Q: How are generations calculated?
A: We traverse from root members (those with no parent) and group descendants by depth, so each generation lands on its own row.
Q: Can one person have multiple partners?
A: The current version supports one partner per person. You can add half-siblings by setting their parent to either side.
Q: What happens when I delete someone?
A: Their children's parent pointer is reset to root, so the tree stays intact.
Q: Can I export?
A: Yes — your tree is exported as JSON for backup or re-import.
Q: Is there a limit on tree size?
A: There is no hard limit, but very large trees (over 100 members) may become visually dense. Export to JSON and use a dedicated genealogy application for extensive research projects.
Start using it now
Try the Family Tree Maker tool. See also Org Chart Maker, Mind Map Maker, and Flowchart Maker.