It’s Byzantine day, apparently…
So for the long version, you should listen to Robin Pierson’s History of Byzantium podcast.
Short version:
- Over-reach. Trying to hold onto Greece, Anatolia, the Levant, and Egypt while also trying to grab North Africa, Spain, Italy, Sicily, etc. means the Byzantines stretched themselves thin. There’s a lot of scholars who think that Byzantium might never have fallen had Justinian not tried to reconquer the Roman Empire.
- Lots of enemies on many borders. The Byzantines had the Persians to their east, and then a whole horde of different peoples (Avars, Bulgars, Slavs, etc.) who kept pouring into Europe on their western flank. And their enemies didn’t exactly wait their turn, so the Byzantines kept having to split their forces. And especially on their western borders, these were movements of entire peoples, which means very large armies indeed.
- Disease and famine. Beginning in the reign of Justinian, the Byzantines got hit with the bubonic plague hard, and it would keep coming back periodically for about three hundred years. When you combine the impact of epidemic disease with lower agricultural productivity, you run the risk of negative population spirals where lower population leads to lower agricultural productivity and that leads to lower population, and so on.