People Tree

approved

by Jörg Lortz

Interactive family trees, org charts and timelines from YAML frontmatter — with avatars, inline editing and multiple view modes - This plugin has not been manually reviewed by Obsidian staff.

2 stars282 downloadsUpdated 1mo agoMIT

People Tree — Obsidian Plugin

People Tree Banner

Requirements: Obsidian 1.7.0 or later · Desktop and Mobile · No external dependencies

An interactive family tree, org chart and timeline viewer for Obsidian. All data lives in your vault as plain Markdown notes with YAML frontmatter — no external services, no proprietary formats, no telemetry.

Demo


Screenshots

Tree modeInline editing
TreeDetail
List mode + photo uploadTimeline mode
ListTimeline

Features

  • 4 view modes — Tree (smooth curves), Org Chart (right-angle connectors), Timeline (birth-year axis), List (searchable, sortable table)
  • Drag cards freely — reposition any person card by dragging its header; layout is saved automatically and persists across sessions
  • Drag notes onto the board — drag any Markdown file from Obsidian's file explorer directly into the tree view to add it as a person
  • Avatars / photos — upload an image via drag & drop or native file picker; or point to any file already in your vault
  • Inline editing — edit any field directly in the view; changes are written back to the note's frontmatter immediately; renaming a person also renames the file
  • Add fields — add arbitrary custom fields to a person without leaving the plugin
  • Selection highlighting — click a node to highlight it and all direct connections; everything else dims
  • Zoom & pan — mouse wheel to zoom, drag background to pan (Tree / Org Chart / Timeline)
  • Sortable list — click any column header to sort ascending / descending
  • Sample family — one-click demo dataset to explore all features immediately
  • File explorer icons — person notes get a 👤 badge; notes removed from the board show a dimmed badge
  • Configurable — set your preferred photos folder and person notes folder in Settings

Installation

Option 1 — Community Plugin Store

Search for "People Tree" in Obsidian → Settings → Community plugins.

Option 2 — Manual

  1. Download main.js, manifest.json and styles.css from the latest release.
  2. Copy all three files into your vault under .obsidian/plugins/people-tree/.
  3. In Obsidian: Settings → Community plugins → enable "People Tree".
  4. Click the 👥 icon in the left ribbon, or run "Open" from the command palette.

Safe to install on existing vaults. The plugin never overwrites or deletes existing notes. It only reads notes with type: person in their frontmatter and writes to notes you explicitly interact with.


Getting started

First launch

When no person notes exist yet you see two buttons:

  • + Create first person — creates a blank note, opens it as a card with the name field focused so you can start typing immediately
  • 🎭 Create sample family — generates 8 pre-filled demo contacts (3 generations, including dates, jobs, cities, emails) so you can explore all features right away

Creating persons

1. Toolbar button — Click + Person at the top. A dialog opens where you enter a name and optional birth date. The note is created and linked automatically.

2. From within a person — Expand any card with and click the + button next to Parents or Children. This creates or links the person and updates both notes bidirectionally.

3. Drag from file explorer — Drag any Markdown note from Obsidian's left sidebar directly onto the tree canvas. The plugin adds type: person to its frontmatter and the note appears as a card immediately.

4. Manually — Create a Markdown note anywhere in your vault with type: person in the frontmatter:

---
type: person
name: Jane Doe
born: 15.03.1970
died:
avatar: People/Photos/jane.jpg
parents:
  - John Doe
  - Mary Doe
spouse: Bob Smith
children:
  - Alice Smith
---

Removing vs. deleting

ActionWhat happens
⊖ Remove from treeNote stays in your vault; type: person is hidden internally. The 👤 icon in the file explorer dims. You can re-add the person via + Person → chips shown at the top.
🗑 Delete noteNote is permanently moved to trash. A confirmation dialog is shown first.

Moving cards

  • Drag any card by its header to reposition it freely on the canvas.
  • The new position is saved automatically to the plugin's data file (not the note itself).
  • Click in the toolbar to reset all positions back to the automatic layout.

Frontmatter fields

FieldRequiredDescription
type: personYesMarks the note as a person. Without this the note is ignored.
nameNoDisplay name. Defaults to the file name if omitted. Renaming the name field also renames the file.
bornNoBirth date (any format). Used to place nodes on the Timeline axis.
diedNoDeath date.
avatarNoVault-relative path to an image file.
parentsNoList of parent names. Draws parent → child connection lines.
spouseNoName of spouse/partner. Draws a line between the two nodes.
childrenNoList of children's names.
any other fieldNoShown in the expanded detail panel; editable inline.

Settings

Open Settings → People Tree:

SettingDefaultDescription
Photos folderAttachments/PhotosVault-relative folder where uploaded photos are saved.
Person notes folderPeopleLimit person scan to this folder. Leave empty to search the whole vault.

View modes

🌳 Tree

Classic top-down family tree with smooth Bézier curves connecting parents to children.

🏢 Org Chart

Same layout as Tree, but connections use right-angle elbow lines — useful for hierarchical org structures.

📅 Timeline

Nodes are positioned horizontally by birth year. Useful for spotting generational overlaps. Requires born fields with a 4-digit year.

📋 List

Searchable, sortable table of all persons. Click any column header to sort. Click a cell to edit the value inline.


Adding photos

In List mode: click the 📷 button at the end of any row.

In Tree / Org Chart / Timeline: expand a node with , then click 📷 next to the "Photo" field.

A dialog opens with three options:

  • Drag & drop an image from your file manager onto the drop zone
  • Pick a file using the native file picker (uses the File System Access API — works reliably in Electron)
  • Enter a vault path if the image is already in your vault

The uploaded photo is saved to the configured Photos folder and the avatar path is written to the frontmatter automatically.


Editing data

  • In List mode: click any data cell to edit it inline. Press Enter to save, Esc to cancel.
  • In Tree / Org Chart / Timeline: click on a node to expand the detail panel. Click any field value to edit. Use "+ Add field" to add a custom frontmatter field.
  • Changes are written directly to the note's YAML frontmatter and the view refreshes automatically.
  • Renaming a person (editing the name field) also renames the underlying .md file automatically.

Known Issues / TODO

#IssueStatus
1Long field values are truncated in tree nodes (hover to reveal full text).partial fix
2Timeline mode requires at least 2 persons with a 4-digit year in born.by design
3No mobile-optimised touch controls for zoom/pan yet.todo

Privacy & Security

  • No external network calls. The plugin works fully offline.
  • No telemetry or analytics.
  • All data stays in your vault. Photos are copied into your vault folder; nothing is sent anywhere.
  • Non-destructive by default. The plugin never overwrites existing notes on install or when creating demo contacts. Every destructive operation (delete) requires explicit user confirmation.

Notes

  • The plugin scans all Markdown files in the vault (or the configured folder). Only notes with type: person are included.
  • Relationship lines are drawn only when names match exactly (case-sensitive).
  • Card positions are stored in .obsidian/plugins/people-tree/data.json, not in the notes themselves — your frontmatter stays clean.
  • Photos are stored as binary files in the vault. They are not git-tracked unless you configure git-lfs.

Requirements

Obsidian1.7.0 or later
PlatformDesktop (Windows, macOS, Linux) and Mobile (iOS, Android)
DependenciesNone — fully self-contained

The plugin uses only the official Obsidian API (metadataCache, fileManager.processFrontMatter, vault.createBinary, fileManager.renameFile). No npm packages are bundled at runtime.


Development

git clone https://github.com/juppinger0/obsidian-people-tree
cd obsidian-people-tree
npm install
npm run build        # production build → main.js

Copy main.js, manifest.json and styles.css to .obsidian/plugins/people-tree/ in your vault and reload the plugin in Obsidian.


License

MIT — © Jörg Lortz

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.