GEnealogical Data COMmunication
application/octet-stream
Magic Bytes
Offset: 0
30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C
GEnealogical Data COMmunication (GEDCOM) is a specification developed by The Church of Jesus Christ of Latter-day Saints for exchanging genealogical data between different software systems. It serves as the de facto standard for structuring familial relationships, events, and metadata, allowing users to migrate family trees across various genealogy applications and online platforms. While primarily a plain-text format that is safe for storage, historical versions lack strict validation, occasionally leading to interoperability issues between modern applications.
Validation Code
How to validate .ged files in Python
Python
def is_ged(file_path: str) -> bool:
"""Check if file is a valid GED by magic bytes."""
signature = bytes([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C])
with open(file_path, "rb") as f:
return f.read(16) == signature
How to validate .ged files in Node.js
Node.js
function isGED(buffer: Buffer): boolean {
const signature = Buffer.from([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C]);
return buffer.subarray(0, 16).equals(signature);
}
Go
func IsGED(data []byte) bool {
signature := []byte{0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}
if len(data) < 16 {
return false
}
return bytes.Equal(data[:16], signature)
}
API Endpoint
GET
/api/v1/ged
curl https://filesignature.org/api/v1/ged