Code and sample files for developers

This page contains links to code and tools that may be of use to software developers. These tools are authored and maintained by third parties and may vary in license, quality, and correctness.

v5.5.1 to v7.0 Conversion Code

Language License Site Notes
C public domain https://github.com/gedcom7code/c-converter Command-line
Java public domain https://github.com/gedcom7code/java-converter Command-line
Web tool https://magikeygedcomconverter.azurewebsites.net/ Website

v7.0 parsers

Language License Site Notes
Javascript public domain https://github.com/gedcom7code/js-parser DOM-style, no validation, with SCHMA handling
Python MIT license https://github.com/DavidMStraub/python-gedcom7 based on regular expressions generated directly from the ABNF grammar via abnf-to-regexp
Go GPL3 https://github.com/funwithbots/go-gedcom Golang package using ABNF grammar for validation
C public domain https://github.com/gedcom7code/c-parser Parses tree and resolves points with syntatic validation
Javascript dual licensed: unlicense and MIT license https://github.com/gedcom7code/js-gedcom DOM-style, full validation, with full SCHMA handling and registry parsing; also supports programmatic creation of GEDCOM files
C# MIT https://github.com/ArmidaleSoftware/gedcom7 GEDCOM 7 parsing, validation, and comparison library

Development Aids

Language License Site Notes
Web tool https://ged-inline.org GEDCOM file validator website
C# MIT https://github.com/ArmidaleSoftware/gedcom7 Compatibility checker command-line tool
Web tool https://magikeygedcomconverter.azurewebsites.net/Compatibility Compatibillity checker website
Web tool https://gedcom7code.github.io/js-gedcom/ GEDCOM file validator website
Web tool https://magikeygedcomconverter.azurewebsites.net/Validate GEDCOM file validator website

Example FamilySearch GEDCOM 7.0 Files

The following files are provided for testing.

File Notes
age.ged This file contains various test cases for AGE payloads.
escapes.ged This file contains @ characters that are doubled only when they appear at the start of a line string.
extension-record.ged This file contains a _LOC record, which is referenced from an individual with a _LOC tag.
lang.ged This file contains many different LANG payloads.
filename-1.ged This file contains many different FILE payloads.
long-url.ged This file contains a URL of a submitter that is very long, to test the ability to parse very long lines.
maximal70.ged This file attempts to exercise all standard tags in various locations, and all standard enumeration values.
maximal70.gdz This FamilySearch GEDZIP 7.0 file attempts to exercise all standard tags in various locations, and all standard enumeration values, and also includes a minimal local audio file.
minimal70.ged This file is the smallest legal FamilySearch GEDCOM 7.0 file.
minimal70.gdz This file is the smallest legal FamilySearch GEDZIP 7.0 file.
notes-1.ged This file contains many different uses of NOTE and SNOTE.
obje-1.ged This file contains many different uses of OBJE records.
remarriage1.ged This file contains a couple who married, divorced, and then later remarried, stored as one family.
remarriage2.ged This file contains a couple who married, divorced, and then later remarried, stored as two separate families.
same-sex-marriage.ged This file contains a same sex marriage.
voidptr.ged This file contains several @VOID@ references.
xref.ged This file contains a number of different cross-reference identifier formats.

Extension Registry

As part of publishing each version of the FamilySearch GEDCOM 7 specification, a set of YAML files are generated describing each structure type, enumeration set, enumeration value, calendar, and month. The format is documented and served at the URIs documented in the specification (e.g., https://gedcom.io/terms/v7/HEAD).

The full set of YAML files, together with some synthesis information such as parsing metadata and lists of all structure types, can be found in the GEDCOM-registries github repository. The GEDCOM-registries repository also hosts YAML files for extensions to the specification, facilitating interoperability beyond the official specification.

Machine-Readable Specification Files

Machine-readable files are automatically generated from the specification, as discussed in a README file. These files include:

File Notes
cardinalities.tsv This tab-separated-values (TSV) file contains (superstructure type, substructure type, cardinality of substructure) triples.
enumerations.tsv This tab-separated-values (TSV) file contains (enumeration set, enumeration value) pairs.
enumerationsets.tsv This tab-separated-values (TSV) file contains (structure type, enmeration set) pairs.
grammar.abnf This file contains all of the ABNF blocks from the specification concatenated into one file.
grammar.gedstruct This file contains all of the blocks from the specification in the structure organization metasyntax concatenated into one file.
payloads.tsv This tab-separated-values (TSV) file contains (structure type, payload type) pairs.
substructures.tsv This tab-separated-values (TSV) file contains (superstructure type, substructure tag, substructure type) triples.
tags This directory contains YAML files for all URI-identified terms defined in the specification, including structure types, enumeration values and sets, calendar identifiers, and month names. The contents of this directory is mirrored into directories in the Extension Registry.

Other Development Tools

Other development, conversions tools and sample files will be posted here as they become available. If you have a FamilySearch GEDCOM 7 tool that we should list, post an announcement of the tool on the GEDCOM Discussions.