ON THIS DAY ·
Crossing of the Rhine
31 Dec 406 — Vandals, Alans and Sueves cross the frozen Rhine near Mainz. They ravage Gaul for three years and enter Spain in 409. The western frontier will never re-form.
WW2 is free in full, and chapter 1 of every atlas is free. A free account opens 3 more chapters a day. Starter, at $9 a month, opens all 21 with no daily limit — see the plans.

The moment in context
The Huns, mounted nomads advancing west from the steppe, shattered the Gothic world north of the Danube. In 376 perhaps a hundred thousand Goths came to the river seeking admission to the empire. Valens saw an opportunity: settlers could become taxpayers and soldiers. Feeding and settling such a large group was difficult, but Roman officials made the task worse. They diverted provisions and exploited the people left hungry. The Goths revolted.
From Adrianople and the sack of Rome, chapter 10 of The Rise and Fall of Rome, 264 BC – AD 476 (AD 396).
The place: Crossing of the Rhine — map and full story →
Teach this in 5 minutes
- Why it happened — The Huns and Roman choices. Peter Heather gives the Huns a central place in the explanation. Their advance compressed peoples against Roman frontiers within a generation,…
- The turn — Adrianople, 9 August 378. Rome had recovered from lost armies before. At Adrianople the destruction of Valens’s force nevertheless narrowed the choices available to his…
- What it changed — The exposed West. The division of 395 left the east with Constantinople’s fortified approaches and a larger share of imperial revenues—roughly two-thirds by one…
Then ask the room: How did Goths seeking admission in 376 come to sack Rome in 410? Which decisions offered opportunities to change that course? The argued answer is on the chapter page →
The atlas that shows it
THE FREE PRINTABLE STUDY GUIDE
Get the printable study guide for Rome free. I’ll send you a few short letters, then one when a new atlas opens. That’s all. — Paul
NO TRACKING · YOUR ADDRESS IS USED FOR THE DISPATCH AND NOTHING ELSE · UNSUBSCRIBE ANYTIME
