Cut the bread into 1-inch cubes. Arrange the bread cubes in a greased 9×13 inch baking dish.
In a large bowl, whisk together the eggs, milk, heavy cream, granulated sugar, vanilla extract, and 1 teaspoon of ground cinnamon until well combined. This is your custard.
Pour the custard evenly over the bread cubes in the baking dish. Gently press the bread down to help it absorb the liquid.
Cover the dish tightly with plastic wrap. Refrigerate for at least 8 hours, or overnight.
About 30 minutes before baking, prepare the cinnamon swirl topping. In a small bowl, mix the brown sugar, flour, 1 tablespoon of ground cinnamon, and melted butter until crumbly.
Remove the plastic wrap from the dish. Sprinkle the cinnamon swirl mixture evenly over the top of the soaked bread.
Preheat your oven to 350 degrees Fahrenheit (175 degrees Celsius).
Bake uncovered for 45 to 55 minutes, or until the center is set and the top is golden brown. If the top browns too quickly, loosely cover it with foil for the last 15 minutes.
Let the bake rest for 10 minutes before serving.
If using the glaze, whisk the powdered sugar, milk, and vanilla extract together until smooth. Drizzle over the warm bake before serving.
Notes
Brioche or challah bread works best because their richness prevents the bottom layer from becoming too soggy.
For a richer cinnamon flavor, add 1/2 teaspoon of ground cinnamon to the milk mixture when reheating leftovers.
Serve warm. Leftovers keep well in the refrigerator for up to 3 days and reheat easily in the microwave or oven.