Skip to content

Repository files navigation

Roman Letters

9,471 Latin and Greek letters from the Roman world, with modern English translations, source provenance, and interactive visualizations.

romanletters.org


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.

What This Is

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.

The Dataset

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

Major Collections

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

Features

Content

  • 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

Analysis (Wyman Thesis)

  • "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

Visualizations

  • 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

Infrastructure

  • 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

Tech Stack

  • 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

Development

# 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.py

The SQLite database at data/roman_letters.db contains all letter data. The Next.js build reads it at build time — no runtime database needed.

Corpus Completeness Audit

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.py

Use --json for machine-readable output or --strict when a CI-style nonzero exit is desired while tracked gaps or untracked DB collections remain.

Data Sources

Latin and Greek texts gathered from:

Links to original scanned editions on the Internet Archive are included for every collection.

A Note on the Translations

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.

Download the Data

DOI

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

Future Work

  • 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

License

Code: MIT License Data and Translations: CC BY 4.0

Credits

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

About

6,211 letters from the late ancient world (97-800 AD) with modern English translations. 3,400+ first-ever English translations. Live at romanletters.org

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages