9,471 Latin and Greek letters from the Roman world, with modern English translations, source provenance, and interactive visualizations.
The first public resource to bring together 70 Roman letter collections spanning from 66 BC to AD 817, with modern English translations for 8,309 letters - including 3,546 translated into English for the first time.
As the Roman Empire fragmented between the 4th and 7th centuries, its communication networks — the web of letters that connected bishops, senators, emperors, and monks across the Mediterranean — slowly fell apart. Cities that had exchanged letters for centuries went silent. The world became smaller.
This project maps that transformation through the letters themselves.
Inspired by Patrick Wyman's doctoral dissertation at USC, "Letters, Mobility, and the Fall of the Roman Empire" (2016), which traced how communication networks frayed as new kingdoms emerged and political instability grew. Wyman's core insight: every letter is a "fossilized moment of movement" — someone had to carry it, on foot or horseback, along a specific road. When you measure the distances these letters traveled and plot them over time, you can watch the Roman world shrink.
| Metric | Value |
|---|---|
| Total letters | 9,471 |
| Collections | 70 |
| Time span | 66 BC-817 AD |
| Modern English translations | 8,309 |
| First-ever English translations | 3,546 |
| Original Latin/Greek text available | 7,748 |
| Source links available | 9,198 |
| People identified | 2,935 |
| Letters with distance data | 4,309 |
| Letters with carrier mentions | 539 |
| Author | Letters | Period | Notable For |
|---|---|---|---|
| Libanius | 837 | 314-393 | Last great pagan rhetorician of Antioch |
| Symmachus | 677 | 365-402 | Last pagan senator's aristocratic network |
| Isidore of Pelusium | 630 | 360-435 | Egyptian monk's moral counsel |
| Cassiodorus | 477 | 506-538 | Ostrogothic state correspondence |
| Gregory the Great | 856 | 590-604 | Pope holding the network together |
| Pliny the Younger | 365 | 97-113 | Roman senator at the empire's height |
| Basil of Caesarea | 325 | 357-378 | Cappadocian Father's pastoral letters |
| Ennodius of Pavia | 297 | 493-521 | Literary bishop in Ostrogothic Italy |
| Augustine | 247 | 386-430 | Bishop of Hippo's theological correspondence |
| Hormisdas | 249 | 514-523 | Pope resolving the Acacian Schism |
| Theodoret of Cyrrhus | 181 | 423-466 | Theologian in Christological controversies |
| Sidonius Apollinaris | 171 | 455-480 | Watching Roman Gaul collapse |
| Synesius of Cyrene | 159 | 394-413 | Philosopher-bishop in collapsing Roman Libya |
| + 57 more collections |
- Individual letter pages — every letter has its own URL with modern translation, source provenance, correction links, and Latin/Greek original where available
- Author profiles — biographies, letter statistics, top correspondents
- Correspondence threads — back-and-forth exchanges between pairs of writers (140+ threads)
- "Fall of Rome in Letters" — 8-chapter scrollytelling narrative on the home page
- "The Shrinking World" — thesis page with D3 regionalization chart showing average letter distance declining over two centuries
- "Wyman Mode" — toggle on map and network to filter to Latin West, 380-630 AD (matching his corpus)
- Hub city profiles — 15 major cities with per-decade connectivity data
- Letter-carrier data — 539 letters with identified carriers (clergy as dominant role)
- Location confidence levels — strong/approximate/unknown per Wyman's methodology
- Interactive network graph — D3.js force-directed graph with sidebar details, collection filter
- Geographic timelapse — animated map with DARE historical tiles showing letter flows across 700 years
- Regionalization chart — average letter distance by decade with Wyman Mode toggle
- Full-text search — Pagefind (Cmd+K, 500K+ words indexed)
- Light/dark theme toggle
- Generated sitemaps for Google Search Console
- JSON-LD structured data on all pages
- Frontend: Next.js 15, Tailwind CSS v4, TypeScript
- Data: SQLite (62MB, read at build time via better-sqlite3)
- Map: MapLibre GL JS with DARE (Digital Atlas of the Roman Empire) tiles
- Visualizations: D3.js (force-directed graph, geographic projection, line charts)
- Search: Pagefind (WASM, client-side)
- Build: Static site generation — 10,000+ pre-rendered routes
# Clone
git clone https://github.com/CraigVG/roman-letters-network.git
cd roman-letters-network
# Install dependencies
cd site && npm install
# Run dev server
npm run dev
# Build static site (generates 10,000+ routes)
NODE_OPTIONS='--max-old-space-size=8192' npm run build
# Generate sitemaps
node scripts/generate-sitemap.js
# Audit corpus completeness targets against the database
python3 scripts/audit_corpus_inventory.pyThe SQLite database at data/roman_letters.db contains all letter data. The Next.js build reads it at build time — no runtime database needed.
The expansion ledger lives at data/corpus_inventory.yaml. It tracks known in-scope collections and candidates against the current database so missing translations, original texts, source links, geocoding, bios, and whole collections are visible before new imports begin.
Run:
python3 scripts/audit_corpus_inventory.pyUse --json for machine-readable output or --strict when a CI-style nonzero exit is desired while tracked gaps or untracked DB collections remain.
Latin and Greek texts gathered from:
- New Advent Church Fathers Library
- The Latin Library
- Tertullian Project
- Perseus Digital Library
- Internet Archive (Patrologia Graeca, MGH, CSEL editions)
- OpenGreekAndLatin / First1KGreek
- CatholicLibrary synchronized patristic texts
- Latin Wikisource (Braulio of Zaragoza)
- MGH Epistolae volumes (Austrasicae, Wisigothicae, Desiderius)
Links to original scanned editions on the Internet Archive are included for every collection.
The modern English translations were produced with the assistance of AI (Claude by Anthropic). They are not peer-reviewed scholarly translations. They aim to make these letters accessible to a general audience — anyone who wants to hear the voices of the Roman world.
Where both a Latin/Greek original and a 19th-century English translation existed, both were used as sources. Each letter page provides access to all available versions, explains the text provenance, and makes missing originals explicit instead of silently omitting them. For the 3,546 letters translated to English for the first time, the modern translation was produced directly from available source text.
We welcome corrections. If you spot a transcription, translation, source-link, or metadata error, use the correction link on each letter page or open a GitHub issue.
The full dataset (SQLite database + CSV exports) is available on multiple platforms:
| Platform | Link |
|---|---|
| Zenodo (DOI, permanent archive) | doi.org/10.5281/zenodo.19142059 |
| GitHub Releases | github.com/CraigVG/roman-letters-network/releases |
| Kaggle | kaggle.com/datasets/craigvandergalien/late-roman-empire-letters-100-800-ad |
| HuggingFace | huggingface.co/datasets/craigvg/roman-letters-network |
| Internet Archive | archive.org/details/roman_letters |
- OCR Phase: Patrologia Graeca volumes 78 and 79 could add 3,000+ Greek letters, especially Isidore of Pelusium and Nilus of Ancyra; PG 52 Chrysostom source-specific imports are now mostly complete and need final reconciliation rather than bulk OCR.
- Quality pass: Greek translation review, especially bulk Isidore translations
- ORBIS integration: Roman road routes instead of straight-line distance arcs
- Political borders animation: Animate the successor kingdom borders on the map timelapse
- Eastern Roman narrative: Expand the scrollytelling with the Eastern Roman Empire's continuation until the Arab invasions
Code: MIT License Data and Translations: CC BY 4.0
Built by Craig Vander Galien. Inspired by Patrick Wyman's doctoral research on the fall of Rome. Modern translations assisted by Claude (Anthropic).
Cite this dataset: Vander Galien, Craig. (2026). Roman Letters: 9,471 Latin and Greek Letters from the Roman World (66 BC-817 AD). Zenodo. https://doi.org/10.5281/zenodo.19142059