PHPackages                             liberu-genealogy/laravel-gedcom - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. liberu-genealogy/laravel-gedcom

ActiveLibrary[Database &amp; ORM](/categories/database)

liberu-genealogy/laravel-gedcom
===============================

A package that converts gedcom files to Eloquent models

v8.3.0(2mo ago)784.5k↓25%482MITPHPPHP &gt;=8.5CI passing

Since Jun 1Pushed 2mo ago2 watchersCompare

[ Source](https://github.com/liberu-genealogy/laravel-gedcom)[ Packagist](https://packagist.org/packages/liberu-genealogy/laravel-gedcom)[ GitHub Sponsors](https://github.com/liberu-genealogy)[ RSS](/packages/liberu-genealogy-laravel-gedcom/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (8)Versions (198)Used By (2)

GEDCOM to Laravel Model
=======================

[](#gedcom-to-laravel-model)

[![Latest Stable Version](https://camo.githubusercontent.com/6f5dabfeeb7711fc10bbb7eb8bf717424c6ea62336b011de35c75c63f98fa9da/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6c69626572752d67656e65616c6f67792f6c61726176656c2d676564636f6d2e737667)](https://camo.githubusercontent.com/6f5dabfeeb7711fc10bbb7eb8bf717424c6ea62336b011de35c75c63f98fa9da/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6c69626572752d67656e65616c6f67792f6c61726176656c2d676564636f6d2e737667)[![Tests](https://github.com/liberu-genealogy/laravel-gedcom/actions/workflows/run-tests.yml/badge.svg)](https://github.com/liberu-genealogy/laravel-gedcom/actions/workflows/run-tests.yml)

liberu-genealogy/laravel-gedcom is a package to parse [GEDCOM](https://en.wikipedia.org/wiki/GEDCOM) files, and import them as Laravel models, inside your Laravel application. It is used by: ()

- laravel-gedcom 5.0+ requires PHP 8.3 (or later).

Installation
------------

[](#installation)

```
composer require liberu-genealogy/laravel-gedcom

```

Usage
-----

[](#usage)

You must create the database schema before doing anything, so run the migrations:

```
php artisan migrate

```

### GEDCOM Files

[](#gedcom-files)

#### via Command Line

[](#via-command-line)

```
php artisan gedcom:import /path/to/your/gedcom/file.ged

```

#### via Facade

[](#via-facade)

```
use FamilyTree365\LaravelGedcom\Facades\GedcomParserFacade;
$filename = '/path/to/your/gedcom/file.ged';
GedcomParserFacade::parse($filename, true);

```

#### via Instantiation

[](#via-instantiation)

```
use \FamilyTree365\LaravelGedcom\Utils\GedcomParser;
$filename = '/path/to/your/gedcom/file.ged';
$parser = new GedcomParser();
$parser->parse($filename, true);

```

### GedcomX Files

[](#gedcomx-files)

#### via Command Line

[](#via-command-line-1)

```
php artisan gedcomx:import /path/to/your/gedcomx/file.json --progress

```

#### via Facade

[](#via-facade-1)

```
use FamilyTree365\LaravelGedcom\Facades\GedcomXParserFacade;
$filename = '/path/to/your/gedcomx/file.json';
GedcomXParserFacade::parse('mysql', $filename, 'import-slug', true);

```

#### via Instantiation

[](#via-instantiation-1)

```
use \FamilyTree365\LaravelGedcom\Utils\GedcomXParser;
$filename = '/path/to/your/gedcomx/file.json';
$parser = new GedcomXParser();
$parser->parse('mysql', $filename, 'import-slug', true);

```

#### Checking if a file is GedcomX

[](#checking-if-a-file-is-gedcomx)

```
use \FamilyTree365\LaravelGedcom\Utils\GedcomXParser;
$filename = '/path/to/your/file.json';
if (GedcomXParser::isGedcomXFile($filename)) {
    // Process as GedcomX file
} else {
    // Process as regular GEDCOM file
}

```

### High-Performance GedcomX (PHP 8.4+ Optimized)

[](#high-performance-gedcomx-php-84-optimized)

For maximum performance with large GedcomX files, use the optimized parser that leverages PHP 8.4 features:

#### via Optimized Command Line

[](#via-optimized-command-line)

```
php artisan gedcomx:import-optimized /path/to/your/gedcomx/file.json --progress --memory-limit=1024 --chunk-size=2000

```

#### via Optimized Instantiation

[](#via-optimized-instantiation)

```
use \FamilyTree365\LaravelGedcom\Utils\GedcomXParserOptimized;
$filename = '/path/to/your/gedcomx/file.json';
$parser = new GedcomXParserOptimized();
$parser->parse('mysql', $filename, 'import-slug', true);

```

#### Performance Features (PHP 8.4+)

[](#performance-features-php-84)

- **🚀 Up to 3x faster processing** using modern PHP features
- **💾 50% less memory usage** with optimized data structures
- **📦 Intelligent batch processing** with automatic chunk sizing
- **🔄 Garbage collection optimization** for large datasets
- **⚡ Match expressions** for faster conditional logic
- **🎯 Typed constants** for better performance
- **📊 Real-time performance metrics** during import

#### Performance Comparison

[](#performance-comparison)

FeatureStandard ParserOptimized Parser (PHP 8.4)Processing Speed1x3x fasterMemory Usage100%50% lessBatch ProcessingFixed 500Dynamic 1000-5000Error HandlingBasicAdvanced with metricsPHP Version8.3+8.4+ onlyDocumentation
-------------

[](#documentation)

### GEDCOM Data Import

[](#gedcom-data-import)

See [GEDCOM\_DATA\_IMPORT.md](GEDCOM_DATA_IMPORT.md) for a comprehensive reference of all GEDCOM tags and data elements imported by this package.

### Database

[](#database)

This package will create the database tables, which map to models.

### `parse()` Method

[](#parse-method)

The `parse()` method takes three parameters, `string $filename`, `bool $progressBar = false`and `string $conn`If you set `$progressBar` to true, a ProgressBar will be output to `php://stdout`, which is useful when you are calling the parser from Artisan commands.

Contributing
------------

[](#contributing)

Pull requests are welcome, as are issues. Feel free to submit any feedback too.

Contributors
------------

[](#contributors)

[ ![](https://camo.githubusercontent.com/83b038e63a9405618160f31e3f4fa1e1616a6dde2ea7bd4fa96acf08e58c7478/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d6c69626572752d67656e65616c6f67792f6c61726176656c2d676564636f6d)](https://github.com/liberu-genealogy/laravel-gedcom/graphs/contributors)License
-------

[](#license)

MIT License (see License.md). This means you must retain the copyright and permission notice is all copies, or substantial portions of this software.

###  Health Score

66

—

FairBetter than 99% of packages

Maintenance87

Actively maintained with recent releases

Popularity41

Moderate usage in the ecosystem

Community29

Small or concentrated contributor base

Maturity92

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 51.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~14 days

Recently: every ~40 days

Total

152

Last Release

64d ago

Major Versions

v3.4.16 → v4.0.02024-03-12

v4.1.3 → v5.0.02025-03-22

v5.0.0 → v6.0.02025-03-22

v6.6.4 → v7.0.02025-09-07

v7.1.1 → v8.0.02026-02-15

PHP version history (5 changes)v3.2.1PHP &gt;=8.0

v3.4.13PHP &gt;=8.2

v4.0.0PHP &gt;=8.3

v6.2.1PHP &gt;=8.4

v8.2.0PHP &gt;=8.5

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/179251?v=4)[Curtis Delicata](/maintainers/curtisdelicata)[@curtisdelicata](https://github.com/curtisdelicata)

---

Top Contributors

[![curtisdelicata](https://avatars.githubusercontent.com/u/179251?v=4)](https://github.com/curtisdelicata "curtisdelicata (286 commits)")[![sweep-ai-deprecated[bot]](https://avatars.githubusercontent.com/in/307814?v=4)](https://github.com/sweep-ai-deprecated[bot] "sweep-ai-deprecated[bot] (128 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (30 commits)")[![jyyblue](https://avatars.githubusercontent.com/u/36446990?v=4)](https://github.com/jyyblue "jyyblue (24 commits)")[![JoshKisb](https://avatars.githubusercontent.com/u/7253780?v=4)](https://github.com/JoshKisb "JoshKisb (19 commits)")[![David-Prelinger](https://avatars.githubusercontent.com/u/53475909?v=4)](https://github.com/David-Prelinger "David-Prelinger (10 commits)")[![heru0502](https://avatars.githubusercontent.com/u/32084622?v=4)](https://github.com/heru0502 "heru0502 (10 commits)")[![delicatacurtis](https://avatars.githubusercontent.com/u/247246500?v=4)](https://github.com/delicatacurtis "delicatacurtis (8 commits)")[![dhavalc-complitech](https://avatars.githubusercontent.com/u/84697514?v=4)](https://github.com/dhavalc-complitech "dhavalc-complitech (7 commits)")[![boscan-alexandru](https://avatars.githubusercontent.com/u/48633332?v=4)](https://github.com/boscan-alexandru "boscan-alexandru (6 commits)")[![Priyank57](https://avatars.githubusercontent.com/u/7858862?v=4)](https://github.com/Priyank57 "Priyank57 (6 commits)")[![afrasiyabhaider](https://avatars.githubusercontent.com/u/25869253?v=4)](https://github.com/afrasiyabhaider "afrasiyabhaider (3 commits)")[![lazyants](https://avatars.githubusercontent.com/u/249065?v=4)](https://github.com/lazyants "lazyants (3 commits)")[![donprecious](https://avatars.githubusercontent.com/u/35138070?v=4)](https://github.com/donprecious "donprecious (2 commits)")[![SweetRewenge](https://avatars.githubusercontent.com/u/23315053?v=4)](https://github.com/SweetRewenge "SweetRewenge (2 commits)")[![suman-openweb](https://avatars.githubusercontent.com/u/31888909?v=4)](https://github.com/suman-openweb "suman-openweb (2 commits)")[![sulemaanhamza](https://avatars.githubusercontent.com/u/39214679?v=4)](https://github.com/sulemaanhamza "sulemaanhamza (1 commits)")[![leanhhoaivui](https://avatars.githubusercontent.com/u/68700924?v=4)](https://github.com/leanhhoaivui "leanhhoaivui (1 commits)")[![webstar1027](https://avatars.githubusercontent.com/u/32419290?v=4)](https://github.com/webstar1027 "webstar1027 (1 commits)")[![SeneTeam](https://avatars.githubusercontent.com/u/87410617?v=4)](https://github.com/SeneTeam "SeneTeam (1 commits)")

---

Tags

gedcomgedcom-parsergedcom-parsinggenealogygenealogy-applicationlaravellaravel11phpphp8

###  Code Quality

TestsPHPUnit

Static AnalysisRector

### Embed Badge

![Health badge](/badges/liberu-genealogy-laravel-gedcom/health.svg)

```
[![Health](https://phpackages.com/badges/liberu-genealogy-laravel-gedcom/health.svg)](https://phpackages.com/packages/liberu-genealogy-laravel-gedcom)
```

###  Alternatives

[cybercog/laravel-love

Make Laravel Eloquent models reactable with any type of emotions in a minutes!

1.2k302.7k1](/packages/cybercog-laravel-love)[cviebrock/eloquent-taggable

Easy ability to tag your Eloquent models in Laravel.

567694.8k3](/packages/cviebrock-eloquent-taggable)[clickbar/laravel-magellan

This package provides functionality for working with the postgis extension in Laravel.

423715.4k1](/packages/clickbar-laravel-magellan)[genealabs/laravel-pivot-events

This package introduces new eloquent events for sync(), attach(), detach() or updateExistingPivot() methods on BelongsToMany relation.

1404.9M8](/packages/genealabs-laravel-pivot-events)[reedware/laravel-relation-joins

Adds the ability to join on a relationship by name.

2121.2M13](/packages/reedware-laravel-relation-joins)[aglipanci/laravel-eloquent-case

Adds CASE statement support to Laravel Query Builder.

115157.2k](/packages/aglipanci-laravel-eloquent-case)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
