A browser-based genealogy tree viewer with full support for FamilySearch GEDCOM 7.0 (and reading GEDCOM 5.5.1).
Files are opened and parsed entirely in the browser: Gedview never uploads your tree and uses no analytics. The only other hosts it contacts are the address you asked it to load a file from and, unless switched off in the settings, hosts of images your file links to (requested without a referrer).
Work in progress.
- GEDCOM 7.0: calendars (
JULIAN,FRENCH_R,HEBREW), dates withPHRASE,FAMC.STAT(disputed links drawn dashed),PEDI,ASSOwith roles (godparents, witnesses), sources withQUAYandDATA/TEXT,EXIDlinks (FamilySearch, Find a Grave, WikiTree),SNOTE, HTML notes, media withCROPandFILE.TRAN, places withMAPandTRAN,NO,SDATE,RESN. - GEDZIP (
.gdz): a tree bundled with its photos. - Julian dates in the traditional Russian notation, "6 (18) April 1889": the recorded date, the new style in brackets (or either style alone).
- Russian and English UI, light and dark themes, full keyboard and screen reader support.
Requires Node.js 22 or newer.
npm install
npm run dev # http://localhost:5173
npm run build # static files in dist/All checks (same as CI):
npx playwright install chromium # once
npm run check:allnpm run fixtures downloads the official FamilySearch test files into
tests/fixtures/gedcom70/ (they are not stored in the repository: their
source repository carries no license). Files are pinned to a commit and
verified by SHA-256.
Visual snapshots are per platform. To regenerate the Linux ones, run the
CI workflow manually with update_snapshots enabled and commit the
linux-snapshots artifact.
/?demoopens a built-in, fictional Sokolov family (no file needed).- UI languages: each
src/i18n/<code>.jsonfile is a language (its name and button label are themeta.nameandmeta.shortkeys); missing keys fall back to English.en.jsonandru.jsonmust have the same keys (checked bynpm test). - Theme (light, dark, system), language and chart settings are stored in
localStorage; the URL hash holds only person ids and what the chart shows (#id=I5&root=I1&level=siblings&up=3&down=2): the selected person, the person the chart counts from, the level of kinship and the generations up and down. - Keys:
/— find a person,Esc— close a panel or the card. On the chart: arrows move between relatives (Up/Down parents and children, Left/Right spouse and siblings),EnterorSpaceselects; the mouse wheel or a pinch zooms, dragging pans.
Live: https://device25.github.io/gedview/ (try ?demo).
Every push to main that passes CI is deployed to GitHub Pages by
.github/workflows/pages.yml. dist/ is a static site with no server side,
so it can also be served from any static host or locally with
npm run preview.
Never add real trees with living people to the repository, tests,
screenshots or issues. For manual testing, put files in private/ or name
them *.private.ged — both are git-ignored.
Trunk-based: short-lived branches, small pull requests, main always green
(protected: linear history, CI required for pull requests). Commits and pull
request titles follow Conventional Commits.
Commits, pull requests, docs and code comments are in English. Dependabot
proposes weekly dependency updates.
Apache License 2.0, see LICENSE. Third-party components are listed in THIRD_PARTY.md. Relationship charts are drawn with the topola library © Przemek Więch (Apache-2.0).