在瀏覽器中的 GEDCOM 工作台:編輯家族樹、以圖表與地圖檢視、使用維護工具清理,並逐人合併其他研究者的檔案。免費,無需帳號 — 您的 fi
AI 翻譯
The GEDCOM workbench in your browser: edit your family tree, see it as charts and maps, clean it with maintenance tools, and merge other researchers' files person by person. Free, no account — your fi
生活風格TypeScript · HTMLGitHub @rodoslovje上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證GED Merge:視覺比較、編輯與合併工具,用於家譜 GEDCOM 檔案
AI 翻譯
GED Merge: visual comparison, edit and merge tool for genealogy GEDCOM files
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A complete GEDCOM editor that runs entirely in your browser.
Edit your family tree, merge a second file into it field by field, and keep the whole file healthy.檢視完整 README ↗Genealogy programs export GEDCOM, but they merge it badly: import a cousin's file and you get duplicate people, two spellings of every village, and dates in a format your file has never used. GED Merge does the opposite — it reshapes the incoming file into your file's conventions, scores every candidate pair, and then shows you both sides of every field so you decide what survives. Nothing is uploaded, and nothing changes until you say so.
This README is for developers. For how to use the app, read the User's Guide above.
Merge — the scored candidate list, and one row per field with the main file on the left, the incoming file on the right, and a Main / Incoming / Both choice wherever they disagree:
Edit — a full editor for the loaded file: names, events, families, notes, sources and media:
Charts — tree, grid, fan, circle, timeline, relationship path, map and printable reports:
Edit — every record in the file: names and alternate names, events and attributes, families and relationships, notes, sources and citations, media with crop tagging, and privacy flags. Unified undo/redo across edits and merge decisions.
Merge — load a second GEDCOM (or a indeks.rodoslovje.si matches CSV), get scored candidate pairs ranked by kinship distance from a start person, and resolve each one field by field. The incoming file is normalized to your file's house style first — date format, place layout, link languages, GEDCOM version — so you are comparing like with like. Saving produces a merged file plus a human-readable change report.
Tools — whole-file maintenance: a health check, a within-file duplicate finder with clustering, bulk normalization, a privacy redactor, and source and place browsers with geocoding.
Charts, maps and reports — eight views of the same tree, all exportable (SVG, PNG, PDF, and PDF split across several sheets for a wall-sized chart), plus Ahnentafel and NGSQ register reports in list or narrative form.
Faithful to your file — the parser keeps a lossless line tree, so tags GED Merge does not understand still round-trip unchanged. Vendor tags from the major programs are recognized rather than discarded.
Bilingual — the entire interface, guide and changelog exist in English and Slovenian.
Your GEDCOM file is never uploaded: parsing, matching, merging, editing, the charts and every tool run on your own device, and the site has no upload endpoint and no API. Two features make network requests, both off by default and both switched on by you:
There is no account, no analytics, no third-party script and no tracking cookie; the fonts are self-hosted. The Privacy Policy names every provider, says what is sent, and lists what the app stores in your browser.
Prerequisites: Node.js 24 or newer (the version CI uses is in .nvmrc; npm ships with it).
npm install # install dependencies
npm run dev # start the Vite dev server, then open the printed localhost URL
There is nothing else to configure — no environment variables, no services, no database. Drop one
of the files in public/samples/ (royal families, US presidents) onto the landing
page to try it without your own data.
| Command | What it does |
|---|---|
npm run dev | Start the Vite dev server. |
npm run build | Type-check (tsc -b) and produce the production bundle in dist/. |
npm run preview | Serve the built dist/ locally. |
npm run typecheck | tsc -b --noEmit. Note: incremental build caching can make this a no-op — prefer npm run build (or tsc -b --force) for a guaranteed full type-check. |
npm run lint | ESLint with --max-warnings 0. |
npm run test | Run the Vitest unit tests once. |
npm run test:watch | Vitest in watch mode. |
npm run test:coverage | Unit tests with the per-directory coverage floors CI enforces. |
npm run test:e2e | Run the Playwright end-to-end tests. |
Run a single unit test file:
npx vitest run src/gedcom/date.test.ts
A browser-only React app. All data stays local.
src/gedcom/types.ts) — two layers: a lossless raw line tree (GedNode,
level/tag/value/children, so nothing is dropped on save) and a typed domain model
(Individual, Family, Dataset) projected on top for matching and the UI.src/worker/) — owns the parse → normalize → match pipeline off the main
thread, communicating via typed messages.src/normalize/) — reshapes an incoming file to the main file's date/place/link
"house style" before comparison.src/match/) — scores candidate pairs 0–100 over weighted fields, and ranks them by
kinship distance from a chosen home person.src/merge/) — applies per-field decisions to produce a merged GedNode[] plus a
change report.src/tools/) — whole-file maintenance (validation, duplicate finder, bulk normalize,
sources, places) as pure functions.src/chart/, src/report/, src/geo/) — pure layout, text and
gazetteer logic with no React in it.src/ui/) — React components. App state lives in src/App.tsx.The build is multi-page: the app (index.html) plus the static, crawlable guide, changelog and
legal pages (guide/, navodila/, changelog/, posodobitve/, privacy/, zasebnost/,
terms/, pogoji/).
Browser support: any current browser. Chrome and Edge additionally get the File System Access API features — a remembered media folder and reopening the file you loaded — where Firefox and Safari use an in-memory fallback.
| Document | What's in it |
|---|---|
| AGENTS.md | Full module map, development workflow, and the CSS token/styling conventions. |
| MATCHING.md | The matching algorithm: pipeline stages, weights, gates, penalties, calibrated thresholds, and how to verify a change to any of them. |
| MAPVIEW.md | Map and geocoding design — providers, caching, the coordinate write-back. |
| IDEAS.md | The backlog: what might come next, and what was deliberately rejected. |
Issues and pull requests are welcome — bug reports especially, since GEDCOM files in the wild vary far more than any test corpus. A GEDCOM snippet that reproduces the problem is worth more than a description, but please redact it first (the app's Tools › Privacy does this) — do not attach a file containing living people.
Before opening a PR:
npm run build && npm run lint && npm run test && npm run test:e2e
CI runs lint, typecheck, the unit suite with coverage floors, and the Playwright suite on every
pull request. All changes reach main through a pull request: direct pushes are refused, and a PR
merges (with a merge commit) only once CI is green. Two house rules worth knowing: user-facing strings change in both src/locales/en.ts
and src/locales/sl.ts in the same commit, and colours and radii come from the design tokens in
src/theme/heritage-pine.css rather than literals. AGENTS.md has the rest.
Regenerate the screenshots above after a UI change with node scripts/screenshots.mjs (with the
dev server running).
The optional online features build on public services, each under its own terms: OpenStreetMap and Nominatim, Overpass, GeoNames, the GOV genealogical gazetteer, Slovenia's GURS registers and map services, and the CARTO, OpenTopoMap, Esri, swisstopo and IGN France tile services. Historical map overlays come from the David Rumsey Map Collection and national mapping agencies. Typeset in IBM Plex.
MIT © Luka Renko. You may use, modify and redistribute the code, including commercially. The GED Merge name and logo are not covered by that grant — see the Terms.
npm run build # → dist/ : a self-contained static site
dist/ can be hosted on any static file server (the live site runs on Caddy behind Cloudflare;
GitHub Pages, Netlify or Vercel work equally well). The app is an installable PWA and works offline
after the first load.
Every green push to main is deployed to the test site on GitHub Pages
(test.gedmerge.com), which is kept out of search engines.
Production is released by hand with the Deploy production workflow:
gh workflow run deploy-production.yml # ship what the test site serves
gh workflow run deploy-production.yml -f ref=2026-10-04 # or a release tag / commit on main
It builds that commit, rsyncs it to the server and tags the release with its date (2026-10-04,
then 2026-10-04.2); rolling back is the same command with an older tag.