---
title: How to work out what a GEDCOM file actually contains
slug: work-out-what-a-gedcom-file-actually-contains
description: Someone sent you a .ged and you have no program to open it. Read the version, the producer, the charset, the counts, the custom tags and the people, in order.
tools: [inspect, gedcom-viewer, gedcom-dialect-report, tree-health-score, relationship-calculator]
difficulty: beginner
time: 20 minutes
lastChecked: 2026-09-06
published: 2026-09-02T23:15:28+02:00
---

# How to work out what a GEDCOM file actually contains

A relative emails you a `.ged` file. You have no genealogy program, or you have one and it wants to import the file into your tree before it will show you anything, and you are not ready for that. You want to look first.

Opening it in a text editor gives you thousands of lines like `1 BIRT` and `2 DATE 14 MAR 1904`. That is the format, and it is readable, but not at 40,000 lines.

## What causes it

A GEDCOM uses numbered lines for records and their nested details. Level `0` starts a record. Level `1` belongs to it, and level `2` belongs to the preceding level-1 structure. Tags describe the type of data; cross-references like `@I1@` connect records.

The header at the top declares the producing program, GEDCOM version and, in older versions, character set. It does not provide a reliable people count. File Inspector computes record counts and shows the declarations beside the decoding it used.

## The reading order

```mermaid
flowchart TD
  Q["A .ged file you have not seen before"] --> Q1{"What do you want to know?"}
  Q1 -- "how big, what version, is it damaged" --> A["File Inspector: version, producer, charset, line endings, counts, parse problems"]
  Q1 -- "who is in it" --> B["GEDCOM Viewer: searchable people list, person pages, pedigree, timeline"]
  Q1 -- "what program wrote it and what its quirks are" --> C["Dialect Report: producer, custom tags with samples, dated destination guidance"]
  Q1 -- "how complete and how well sourced" --> D["Tree Health Score: three components with their weights"]
  Q1 -- "how am I related to these people" --> E["Relationship Calculator: kinship term, Ahnentafel, shared ancestors"]
  A --> A1{"Problems: any errors?"}
  A1 -- "yes" --> FIX["Review the findings before choosing a repair"]
  A1 -- "no" --> B
  C --> C1{"Custom tags carrying real data?"}
  C1 -- "yes" --> C2["Read sample values and verify them in a destination test import"]
  C1 -- "no" --> D
  B --> D
  D --> E
```

## The fix

1. Open [File Inspector](/inspect) and drop the file. Nothing is uploaded; the file is parsed in your browser.
2. Read **Header**. **GEDCOM version** identifies `5.5`, `5.5.1` or `7.0`, or reads `unknown` for a missing, malformed or unsupported declaration. **Producer** reports the exporter declaration, such as `AHN (Ahnenblatt) 2.99g`. Compare **Declared charset**, **Decoded as** and actual names. Different labels can reflect aliases or a byte order mark. **Undecodable bytes** above 0 merits investigation. **Line endings** describes terminators, not the file's operating-system history.
3. Read the size line. `fixtures/public/Musterstammbaum.ged` reads `7,175 bytes, 396 lines, 34 records.`
4. Read **Records by type**: `INDI` for people, `FAM` for families, `SOUR` for source records, `NOTE` for note records, `OBJE` for media records and `REPO` for repositories. These counts cover level-0 records. The example has 20 individuals and no source records, but it has 20 inline source citations. Inline notes and media can also exist without separate records.
![The File Inspector header table naming GEDCOM version 5.5.1 and producer AHN (Ahnenblatt) 2.99g, beside a records-by-type table counting 20 INDI and 11 FAM.](/kb/shots/work-out-what-a-gedcom-file-actually-contains-inspector.jpg)
5. Read **Problems**. Zero findings means no parser problem was detected, not full conformance or a complete export. The parser continues through malformed lines. Review errors and encoding findings before trusting the interpretation; the table previews the first 200 rows. See [how to fix a GEDCOM file that will not open](/how-to/fix-a-gedcom-file-that-will-not-open).
6. Open [GEDCOM Viewer](/gedcom-viewer) and drop the same file. The left column shows people with available birth and death years. Use the **Search name or xref** field (labelled **Search people**) and **Sort people**. Search covers the indexed list before the 500-row display cap.
7. Click a person. The right column shows every `NAME` as written with each subtag labelled, every event with date, place, age, cause, citations and notes, the parents with siblings, each spouse family with its children, the notes, and any tag no other section shows.
8. Below the person, read **Pedigree**, with 2 to 5 ancestor generations. Click a populated box to re-root it. The pedigree follows the first `FAMC` and first parent in each spouse slot. Read confidence tooltips for multiple links, missing reciprocal links, sex-role mismatches or cycles.
9. Read the **Timeline**. It orders the person's own events, their marriages, their children's births and their parents' and spouses' deaths, so a life reads as a sequence rather than a list of fields.
10. Open [Dialect Report](/gedcom-dialect-report) and drop the file. Read the **Producer** estimate, confidence and evidence. **File facts** includes people, families, custom tags and `NOTE / SOUR / OBJE` occurrences. Occurrence counts can include nested structures, so do not compare them as if they were Inspector's level-0 record counts.
11. Read **Custom tag inventory** for counts, record types, parent paths and up to three sample values. Use the dated destination guidance to identify fields to check in a test import. A custom tag's presence does not establish that a destination will drop it.
12. Open [Tree Health Score](/tree-health-score). Expand each component to read its weight, arithmetic, rationale and a shortlist of records that lower the score. The score summarizes these checks; it does not measure whether the genealogy is true.
13. Open [Relationship Calculator](/relationship-calculator). Pick a **Home person** and a comparison person. The modes are **Relationship**, **Ahnentafel**, **Shared ancestors** and **Cousin calculator**. Read relationship paths and supporting details in the relevant mode, then check the underlying family links.

## What to check when it worked

- The `INDI` count in File Inspector matches what the sender told you.
- Names look correct under the reported decoder, and **Undecodable bytes** is 0. Matching labels alone cannot detect double encoding.
- **Problems** has no error rows.
- You can find yourself, or a person you know, in [GEDCOM Viewer](/gedcom-viewer), and their dates are what you expect.
- You have identified meaningful custom-tag values to check in the destination before migrating the tree.
- The health score gives you a number to quote back to the sender. `fixtures/public/Musterstammbaum.ged`, a 20-person file, scores 81.73: completeness 91.84%, sourcing 50%, consistency 100%.

## What to do when it did not

**File Inspector shows fewer people than you expected.** Check the sender's export filters and branch selection, then malformed record starts or truncation. If findings support structural recovery, compare its input and recovered counts. Recovery cannot recover people absent from the input.

**Names are unreadable.** Compare encoding, original characters and font support. Run [Encoding Repair](/gedcom-encoding-repair) and read [how to fix garbled characters and accents](/how-to/fix-garbled-characters-and-accents-in-a-gedcom) before accepting proposed changes.

**The producer is unknown.** Inspect `HEAD.SOUR` and the report's evidence. Missing or unrecognized declarations and inconclusive signatures can leave the producer unidentified. You can still read any records the parser and viewer recognize.

**The people list is capped.** Lists over 500 rows render the first 500 and say so. Search filters before the cap, so searching a name finds it in a 40,000-person file.

**A pedigree box says father unknown when you know the father.** Check for missing `FAMC`, family or parent records, missing `HUSB`, or a different first parent family. Use [Broken Link Repair](/broken-link-repair) for absent targets and [Link Reciprocity Checker](/link-reciprocity-checker) for one-way family links.

**You want to know what to research next.** [Research Gap Planner](/research-gap-planner) suggests gaps and research targets from the tree's dates, places and citations. Treat archive and record-set suggestions as leads to verify; available detail depends on the file and coverage.

**The file has people in it who are alive.** Before you forward it to anyone, read [how to remove living people before sharing your family tree](/how-to/remove-living-people-before-sharing-your-family-tree).

## Related

- Spoke: [read a GEDCOM without installing anything](/how-to/read-a-gedcom-without-installing-anything)
- Spoke: [what is a GEDCOM file](/how-to/what-is-a-gedcom-file)
- [How to check a GEDCOM before you import it anywhere](/how-to/check-a-gedcom-before-you-import-it-anywhere)
