{"id":20464,"date":"2025-08-22T00:00:00","date_gmt":"2025-08-22T04:00:00","guid":{"rendered":"http:\/\/www.theleangreenbean.com\/?p=20464"},"modified":"2025-08-22T10:05:52","modified_gmt":"2025-08-22T14:05:52","slug":"overnight-french-toast-bake","status":"publish","type":"post","link":"https:\/\/www.theleangreenbean.com\/overnight-french-toast-bake\/","title":{"rendered":"Overnight French Toast Bake"},"content":{"rendered":"\n<p><em>This Overnight French Toast Bake is beginner-friendly and foolproof &#8211; perfect for using up leftover dinner rolls or bread after a holiday meal. Prep the night before, let it sit in the fridge overnight and enjoy it for breakfast in the morning.&nbsp;<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"1020\" src=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-1.jpg\" alt=\"overnight blueberry french toast bake\" class=\"wp-image-43455\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-1.jpg 680w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-1-133x200.jpg 133w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-1-367x550.jpg 367w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><em>*Originally published 11\/2015. Updated 8\/2025*<\/em><\/p>\n\n\n\n<p class=\"has-text-color has-background has-link-color wp-elements-770f6d58fcf72d141039f8f98fb2ff29\" style=\"color:#fffefe;background-color:#52804d\">This overnight baked French toast is the perfect make-ahead breakfast for busy moms hosting brunch or out of town holiday guests! An easy, budget-friendly way to feed a crowd.<\/p>\n\n\n\n<p class=\"has-text-align-left\"><br>Hi Friends!<\/p>\n\n\n\n<p>This post for an overnight French toast bake is perfect for Christmas morning breakfast or as one of your go-to holiday brunch recipes! It actually first came about almost 10 years ago when I was looking for ways to use up my Thanksgiving leftovers. I was in charge of bringing a Costco-sized bag of dinner rolls to Thanksgiving dinner and we had a bunch leftover.<\/p>\n\n\n\n<p>So I diced them up and make a french toast bake. It was perfect because I threw it together the night before, let it sit in the fridge overnight and baked it in the morning.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Best Bread For Overnight French Toast<\/h2>\n\n\n\n<p>The good news is there&#8217;s lots of flexibility here! I often make this with leftover dinner rolls but you could easily use a leftover loaf of Italian or French Bread. Any bread or rolls that can be sliced and cut into cubes that aren&#8217;t too thin will work. You could try brioche or King&#8217;s Hawaiian Bread for a richer-tasting option or sourdough for something slightly less sweet.<\/p>\n\n\n\n<p class=\"has-text-color has-background has-link-color wp-elements-08666e35b7f4c01e0fb59d4a548057e9\" style=\"color:#fbfbfb;background-color:#52804d\">Remember that this recipe actually works best with bread that is slightly stale so feel free to let your loaf sit out for a day or two before making. Stale bread is a bit sturdier than fresh bread and it will hold up well to being soaked in the egg mixture without getting too soggy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Overnight French Toast Bake vs Skillet French Toast<\/h2>\n\n\n\n<p>While both options have their place, an overnight french toast bake is definitely an easier way to feed a crowd. You can easily prep a large quantity AND it can be prepped ahead of time to make the morning easier. <\/p>\n\n\n\n<p>This is also a great option for breakfast before school! Bake one up on Sunday and just cut and reheat a piece all week long. No need to babysit and flip the french toast on the stove while you&#8217;re running around trying to get everything else ready!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Ingredients for Easy Overnight French Toast Bake<\/h2>\n\n\n\n<p>In addition to being able to make this ahead of time, this recipe is also made with just a few simple ingredients, which is a major bonus. You need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bread<\/strong> &#8211; Dinner rolls or other leftover loaf of bread<\/li>\n\n\n\n<li><strong>Eggs and milk<\/strong> &#8211; These are French toast staple ingredients and you&#8217;re making a big pan so you need a lot!<\/li>\n\n\n\n<li><strong>Vanilla and Cinnamon<\/strong> &#8211; To add flavor<\/li>\n\n\n\n<li><strong>Berries<\/strong>&#8211; You can use fresh or frozen. I like blueberries best but mixed berries also work.<\/li>\n\n\n\n<li><strong>Brown sugar<\/strong> &#8211; To make a sweet crust on the top after baking<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What Toppings Go Best with Overnight Baked French Toast?<\/h2>\n\n\n\n<p>Not into blueberries? Try:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cinnamon and sugar &#8211; skip the mix-ins and top with a mixture of cinnamon and sugar<\/li>\n\n\n\n<li>Maple Pecan &#8211; add some chopped pecans instead of blueberries and drizzle with a little cream cheese sweetened with maple syrup<\/li>\n\n\n\n<li>Try mixing in some pumpkin seeds or ground flax for a heart-healthy boost of omega 3 fatty acids<\/li>\n\n\n\n<li>Make an<a href=\"https:\/\/cookieandkate.com\/simple-fruit-compote-recipe\/\" target=\"_blank\" rel=\"noopener\"> easy fruit compote<\/a> for topping or top with diced fresh fruit of your choice<\/li>\n\n\n\n<li>Apple cinnamon &#8211; Add extra cinnamon and stir in some chopped apples and walnuts<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"1020\" src=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-4.jpeg\" alt=\"blueberry french toast bake casserole\" class=\"wp-image-43457\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-4.jpeg 680w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-4-133x200.jpeg 133w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-4-367x550.jpeg 367w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">How To Make Blueberry French Toast Bake Casserole<\/h2>\n\n\n\n<p>To make this recipe you need a 9&#215;13 pan. Line it with parchment paper for easy removal or grease it well.<\/p>\n\n\n\n<p>If your bread isn&#8217;t stale, you can cube it and put it in the oven at 170 degrees F for 15 min or so.<\/p>\n\n\n\n<p>To make the casserole:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cube the bread and put it in a 9&#215;13 pan. <\/li>\n\n\n\n<li>Add the blueberries. <\/li>\n\n\n\n<li>Whisk together eggs, milk, vanilla and cinnamon and pour over the bread. <\/li>\n\n\n\n<li>Use your hands to mix it all up and make sure all the bread is coated. <\/li>\n\n\n\n<li>Cover with saran wrap and press down to flatten and refrigerate overnight.<\/li>\n\n\n\n<li>When ready to bake, remove the saran wrap, sprinkle with brown sugar, bake and serve.<\/li>\n<\/ul>\n\n\n\n<p>If you had extra <a href=\"https:\/\/www.theleangreenbean.com\/fresh-cranberry-sauce\/\">cranberry sauce<\/a>, you could mix some of that in as well!<\/p>\n\n\n\n<p class=\"has-text-color has-background has-link-color wp-elements-43bf353c5902de7c4de4d849bcda2d18\" style=\"color:#fdfbfb;background-color:#52804d\">Mom tip &#8211; For food safety reasons, remember to refrigerate the pan after you mix everything together, until you&#8217;re ready to bake!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Make Ahead Baked French Toast Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Should I cover baked French toast when baking?<\/h3>\n\n\n\n<p>No need to cover unless you add something like chopped nuts on top. If you notice they start to brown, you can cover with foil towards the end.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I make this recie dairy-free?<\/h3>\n\n\n\n<p>Feel free to use any type of plant-based milk in this recipe like soy, almond, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I make a smaller version in a loaf pan?<\/h3>\n\n\n\n<p>Yes! Feel free to cut the recipe in half and bake in a loaf pan!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Should I grease the baking dish for French toast casserole?<\/h3>\n\n\n\n<p>Yes, either line the bottom of the pan with parchment paper or grease well before adding the bread and egg mixture to the pan.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How To Freeze and Reheat Overnight French Toast Bake<\/h2>\n\n\n\n<p>To freeze, let cool completely, then cut into squares and transfer to a freezer-safe bag (we love <a href=\"https:\/\/amzn.to\/4eCxnT5\" target=\"_blank\" rel=\"noopener\">Stasher Bags<\/a> &#8211; aff link). Then freeze until needed. Move to the fridge to defrost and microwave to warm.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Easy Overnight Baked French Toast Recipe<\/h2>\n\n\n\n<p>Here&#8217;s the recipe I use:<\/p>\n\n\n<svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/www.theleangreenbean.com\/overnight-french-toast-bake\/print\/33480\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-33480-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-33480\" data-tr-id=\"33480\" class=\"tasty-recipes tasty-recipes-33480 tasty-recipes-display tasty-recipes-has-image\" data-tasty-recipes-customization=\"primary-color.background-color primary-color.outline-color\">\n\n\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Overnight Baked French Toast<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n\t\t\t<div class=\"tasty-recipes-image\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-3-copy-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"overnight french toast bake\" data-pin-nopin=\"true\" title=\"\">\t\t<\/div>\n\t\t<div class=\"tasty-recipes-buttons\">\n\t\t\t\t<div class=\"tasty-recipes-button-wrap\">\n\t\t\t\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/www.theleangreenbean.com\/overnight-french-toast-bake\/print\/33480\/\" target=\"_blank\" data-tasty-recipes-customization=\"\">\n\t\t\t<svg viewBox=\"0 0 24 24\" class=\"svg-print\" aria-hidden=\"true\"><use xlink:href=\"#tasty-recipes-icon-print\"><\/use><\/svg>\n\t\tPrint Recipe<\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n<\/div>\n\t<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t\t<p><svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\"\tdata-tr-default-rating=\"4.5\"\t>\t\t<span class=\"tasty-recipes-rating\" data-tr-checked=\"1\">\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"50\">\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"9 9 46 42\" width=\"18\" height=\"17\">\t<defs>\t\t<linearGradient id=\"tasty-recipes-clip-10\">\t\t\t<stop offset=\"10%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-20\">\t\t\t<stop offset=\"20%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-30\">\t\t\t<stop offset=\"30%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-40\">\t\t\t<stop offset=\"40%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-50\">\t\t\t<stop offset=\"50%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-60\">\t\t\t<stop offset=\"60%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-70\">\t\t\t<stop offset=\"70%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-80\">\t\t\t<stop offset=\"80%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t\t<linearGradient id=\"tasty-recipes-clip-90\">\t\t\t<stop offset=\"90%\" stop-color=\"currentColor\" \/>\t\t\t<stop stop-opacity=\"var(--tr-star-opacity)\" offset=\"0%\" stop-color=\"currentColor\" \/>\t\t<\/linearGradient>\t<\/defs>\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t5 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"4\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"100\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t4 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"3\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"100\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t3 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"2\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"100\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t2 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"1\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"100\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t1 Star\t\t\t<\/span>\t\t<\/i>\t<\/span><\/span><\/p>\n\t\t\t\t\t\t\t<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\"><span class=\"average\">4.5<\/span> from <span class=\"count\">2<\/span> reviews<\/span><\/p>\n\t\t\t<\/div>\n\n\n\t<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<p>This Overnight Baked French Toast is the perfect recipe to use up leftover dinner rolls after a holiday meal. Prep the night before, let it sit in the fridge overnight and enjoy it for breakfast in the morning.<\/p>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<ul>\n\t\t\t\t\t\t\t<li class=\"prep-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Prep Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">5 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cook-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cook Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cook-time\">1 hour<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"total-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Total Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-total-time\">1 hour 5 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"yield\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Yield:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"9\">9<\/span>x13 pan <span class=\"tasty-recipes-yield-scale\"><span data-amount=\"1\">1<\/span>x<\/span><\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-ingredients\">\n\t\t<div class=\"tasty-recipes-ingredients-header\">\n\t\t\t<div class=\"tasty-recipes-ingredients-clipboard-container\">\n\t\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-container\">\n\t\t\t\t\t\t<span class=\"tasty-recipes-scale-label\">Scale<\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-scale-button tasty-recipes-scale-button-active\" data-amount=\"1\" type=\"button\">1x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"2\" type=\"button\">2x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"3\" type=\"button\">3x<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ul>\n<li><span data-amount=\"10\" data-unit=\"cup\">10 cups<\/span> cubed dinner rolls or bread (approx <span data-amount=\"12\">12<\/span> rolls)*<\/li>\n<li><span data-amount=\"2\" data-unit=\"cup\">2 cups<\/span> fresh or frozen blueberries<\/li>\n<li><span data-amount=\"8\">8<\/span> eggs<\/li>\n<li><span data-amount=\"1.5\" data-unit=\"cup\">1.5 cup<\/span> milk<\/li>\n<li><span data-amount=\"1\" data-unit=\"tbsp\">1 Tbsp<\/span> vanilla extract<\/li>\n<li><span data-amount=\"1\" data-unit=\"tbsp\">1 Tbsp<\/span> cinnamon<\/li>\n<li><span data-amount=\"0.25\" data-unit=\"cup\">1\/4 cup<\/span> brown sugar for sprinkling (optional)<\/li>\n<\/ul>\n<!--INSIDE_INGREDIENTS-->\t\t<\/div>\n\t\t<div class=\"tasty-recipes-cook-mode\">\n\t<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\">\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_696e574fc2640_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\"\n\t\t\t\tdata-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span>\n\t\t<\/label>\n\t\t<label for=\"tasty_recipes_696e574fc2640_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\">\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span>\n\t\t<\/label>\n\t<\/div>\n<\/div>\n\t<\/div>\n\n\t<div class=\"tasty-recipe-instructions\">\n\t\t<div class=\"tasty-recipes-instructions-header\">\n\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n\t\t\t\t\t<\/div>\n\t\t<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ol>\n<li id=\"instruction-step-1\">Cube rolls and place in a 9&#215;13 pan lined with parchment paper.<\/li>\n<li id=\"instruction-step-2\">Add berries.<\/li>\n<li id=\"instruction-step-3\">In a bowl, mix eggs, milk, vanilla and cinnamon with a whisk.<\/li>\n<li id=\"instruction-step-4\">Pour over bread mixture in pan.<\/li>\n<li id=\"instruction-step-5\">Use your hands to make sure all the bread gets covered with the egg mixture.<\/li>\n<li id=\"instruction-step-6\">Cover with saran wrap, press down gently to flatten and place in the fridge overnight.<\/li>\n<li id=\"instruction-step-7\">When ready to bake, sprinkle top with brown sugar if desired.<\/li>\n<li id=\"instruction-step-8\">Bake at 350 degrees for 45 min and serve.<\/li>\n<\/ol>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-notes\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Notes<\/h3>\n\t\t<div class=\"tasty-recipes-notes-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p>*Stale bread works best. Cube and leave your bread out overnight or bake at 170 degrees for 15 minutes before using.<\/p>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\n\n<footer class=\"tasty-recipes-entry-footer\">\n\t<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n\t<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\"><p>Tag <a href=\"https:\/\/www.instagram.com\/theleangreenbean\" target=\"_blank\" rel=\"noreferrer noopener\">@theleangreenbean<\/a> on Instagram<\/p><\/div>\n<\/footer>\n\n\n\n<script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\\\/\\\/www.theleangreenbean.com\\\/wp-admin\\\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":20464};\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}\n\nif ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}\n\nconst elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}\n\ne.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};\n\ndocument.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);\n\n(function(){\n\n\nvar bothEquals = function( d1, d2, D ) {\nvar ret = 0;\nif (d1<=D) {\nret++;\n}\nif (d2<=D) {\nret++;\n}\nreturn ret === 2;\n};\n\nvar frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)\/(d1+d2);if(x===m){if(d1+d2<=D){d1+=d2;n1+=n2;d2=D+1}else if(d1>d2){d2=D+1;}else {d1=D+1;}break}else if(x<m){n2=n1+n2;d2=d1+d2}else{n1=n1+n2;d1=d1+d2}}}if(d1>D){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1\/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-A<5e-8){break;}B=1\/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P\/Q);return[q,sgn*P-q*Q,Q]};\n\n\nwindow.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(\"%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D\"));\n\nwindow.tastyRecipesFormatAmount = function(amount, el) {\nif ( parseFloat( amount ) === parseInt( amount ) ) {\nreturn amount;\n}\nvar roundType = 'frac';\nif (typeof el.dataset.amountShouldRound !== 'undefined') {\nif ('false' !== el.dataset.amountShouldRound) {\nif ( 'number' === el.dataset.amountShouldRound ) {\nroundType = 'number';\n} else if ('frac' === el.dataset.amountShouldRound) {\nroundType = 'frac';\n} else if ('vulgar' === el.dataset.amountShouldRound) {\nroundType = 'vulgar';\n} else {\nroundType = 'integer';\n}\n}\n}\nif ('number' === roundType) {\namount = Number.parseFloat(amount).toPrecision(2);\n} else if ('integer' === roundType) {\namount = Math.round(amount);\n} else if ('frac' === roundType || 'vulgar' === roundType) {\nvar denom = 8;\nif (typeof el.dataset.unit !== 'undefined') {\nvar unit = el.dataset.unit;\nif (['cups','cup','c'].includes(unit)) {\ndenom = 4;\nif (0.125 === amount) {\ndenom = 8;\n}\nif (\"0.1667\" === Number.parseFloat( amount ).toPrecision(4)) {\ndenom = 6;\n}\n}\nif (['tablespoons','tablespoon','tbsp'].includes(unit)) {\ndenom = 2;\n}\nif (['teaspoons','teaspoon','tsp'].includes(unit)) {\ndenom = 8;\n}\n}\nvar amountArray = frac.cont( amount, denom, true );\nvar newAmount = '';\nif ( amountArray[1] !== 0 ) {\nnewAmount = amountArray[1] + '\/' + amountArray[2];\nif ('vulgar' === roundType) {\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {\nnewAmount = vulgar;\n}\n});\n}\n}\nif ( newAmount ) {\nnewAmount = ' ' + newAmount;\n}\nif ( amountArray[0] ) {\nnewAmount = amountArray[0] + newAmount;\n}\namount = newAmount;\n}\nreturn amount;\n};\n\n\nwindow.tastyRecipesUpdatePrintLink = () => {\n\nconst printButton = document.querySelector( '.tasty-recipes-print-button' );\n\n\nif ( ! printButton ) {\nreturn;\n}\n\nconst printURL = new URL( printButton.href );\nconst searchParams = new URLSearchParams( printURL.search );\n\nconst unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );\nconst scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );\n\nlet unit = '';\nlet scale = '';\n\nif ( unitButton ) {\nunit = unitButton.dataset.unitType;\nsearchParams.delete('unit');\nsearchParams.set( 'unit', unit );\n}\n\nif ( scaleButton ) {\nscale = scaleButton.dataset.amount;\nsearchParams.set( 'scale', scale );\n}\n\nconst paramString = searchParams.toString();\nconst newURL = '' === paramString ? printURL.href : printURL.origin + printURL.pathname + '?' + paramString;\nconst printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );\n\nprintLinks.forEach( ( el ) => {\nel.href = newURL;\n});\n\nconst printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );\nprintButtons.forEach( ( el ) => {\nel.href = newURL;\n});\n};\n\n\ndocument.addEventListener( 'DOMContentLoaded', () => {\n\n\nif ( ! window.location.href.includes( '\/print\/' ) ) {\nreturn;\n}\n\nconst searchParams = new URLSearchParams( window.location.search );\n\nconst unit = searchParams.get( 'unit' );\nconst scale = searchParams.get( 'scale' );\n\nif ( unit && ( 'metric' === unit || 'usc' === unit ) ) {\ndocument.querySelector( '.tasty-recipes-convert-button[data-unit-type=\"' + unit + '\"]' ).click();\n}\n\nif ( scale && Number(scale) > 0 ) {\ndocument.querySelector( '.tasty-recipes-scale-button[data-amount=\"' + Number(scale) + '\"]' ).click();\n}\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-scale-button',\nbuttonActiveClass = 'tasty-recipes-scale-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-scale-button');\nif ( ! buttons ) {\nreturn;\n}\n\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\n\n\nvar scalables = recipe.querySelectorAll('span[data-amount]');\nvar buttonAmount = parseFloat( button.dataset.amount );\nscalables.forEach(function(scalable){\nif (typeof scalable.dataset.amountOriginalType === 'undefined'\n&& typeof scalable.dataset.nfOriginal === 'undefined') {\nif (-1 !== scalable.innerText.indexOf('\/')) {\nscalable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== scalable.innerText.indexOf('.')) {\nscalable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== scalable.innerText.indexOf(vulgar)) {\nscalable.dataset.amountOriginalType = 'vulgar';\n}\n});\nif (typeof scalable.dataset.amountOriginalType !== 'undefined') {\nscalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;\n}\n}\nvar amount = parseFloat( scalable.dataset.amount ) * buttonAmount;\namount = window.tastyRecipesFormatAmount(amount, scalable);\nif ( typeof scalable.dataset.unit !== 'undefined' ) {\nif ( ! scalable.classList.contains('nutrifox-quantity') ) {\nif ( ! scalable.classList.contains('nutrifox-second-quantity') ) {\namount += ' ' + scalable.dataset.unit;\n}\n}\n}\nscalable.innerText = amount;\n});\n\nvar nonNumerics = recipe.querySelectorAll('[data-has-non-numeric-amount]');\nnonNumerics.forEach(function(nonNumeric){\nvar indicator = nonNumeric.querySelector('span[data-non-numeric-label]');\nif ( indicator ) {\nnonNumeric.removeChild(indicator);\n}\nif ( 1 !== buttonAmount ) {\nindicator = document.createElement('span');\nindicator.setAttribute('data-non-numeric-label', true);\nvar text = document.createTextNode(' (x' + buttonAmount + ')');\nindicator.appendChild(text);\nnonNumeric.appendChild(indicator);\n}\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\nwindow.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}\n\nconst cookModes = document.querySelectorAll(this.cookModeSelector);\n\nif (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});\n\n\n\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}\n\nthis.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );\n\nsetTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );\n\nconst currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}\n\nthis.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}\n\nconst tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );\n\nthis.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );\n\n},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};\n\nwindow.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );\n\nxhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}\n\nfailure( xhr );\n};\n\nxhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();\n\nfor ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};\n\nwindow.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;\n\nthis.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}\n\nwindow.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );\n\n\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );\n\nif ( ! data.count ) {\nreturn;\n}\n\nconst quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}\n\nconst cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}\n\nif ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}\n\nconst averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}\n\nconst countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}\n\nconst thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}\n\nconst commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}\n\nconst commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}\n\n\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;\n\n\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;\n\nthis.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}\n\nconst previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}\n\nif ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}\n\nconst ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Overnight French Toast Bake FAQs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">How long should overnight French toast soak?<\/h3>\n\n\n\n<p>I find it does best when you soak it for 10-12 hours. You want to give the bread time to absorb the egg but don&#8217;t leave it sitting so long that the bread starts to break down.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to store an overnight french toast bake?<\/h3>\n\n\n\n<p>After baking, store the leftovers in the fridge in an airtight container for up to 4 days. To reheat, you can use the microwave!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Could this be a crockpot French toast bake?<\/h3>\n\n\n\n<p>I haven&#8217;t tried this overnight French toast bake recipe in the crockpot but I think it would work. If you&#8217;re looking specifically for a Crockpot recipe, try:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.suburbansimplicity.com\/slow-cooker-french-toast-casserole\/\" target=\"_blank\" rel=\"noopener\">Easy Slow Cooker French Toast Casserole<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/keytomylime.com\/crockpot-french-toast-casserole-recipe\/\" target=\"_blank\" rel=\"noopener\">Crockpot French Toast Casserole<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/thesaltymarshmallow.com\/crockpot-french-toast-casserole\/\" target=\"_blank\" rel=\"noopener\">Crockpot French Toast Casserole with Glaze<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Could you make an overnight French toast bake with cinnamon rolls?<\/h3>\n\n\n\n<p>Yes! This would be delicious, I think. I would probably not replace more than half the bread with cubed cinnamon rolls, and I would skip the brown sugar sprinkle on top since cinnamon rolls are quite sweet.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"1020\" src=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-2.jpg\" alt=\"overnight french toast bake with blueberries\" class=\"wp-image-43459\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-2.jpg 680w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-2-133x200.jpg 133w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/Overnight-Blueberry-French-Toast-_-Lean-Green-Bean-2-367x550.jpg 367w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Could this be a cream cheese french toast bake?<\/h3>\n\n\n\n<p>If you&#8217;re specifically looking for a cream cheese French toast bake, try one of these:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/lilluna.com\/cream-cheese-french-toast-bake\/\" target=\"_blank\" rel=\"noopener\">French Toast Casserole with Cream Cheese<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sallysbakingaddiction.com\/baked-cream-cheese-french-toast-casserole\/\" target=\"_blank\" rel=\"noopener\">Baked Cream Cheese French Toast Casserole<\/a><\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to serve with overnight French toast bake?<\/h3>\n\n\n\n<p>Need a brunch menu idea? Serve this and let the French toast be the star! Cut into squares in the pan and let everyone serve themselves! Leave out lots of additional toppings like powdered sugar, chopped nuts, syrup, fruit compote and fresh fruit! You could also add easy breakfast sides like scrambled eggs,  sausage or bacon, yogurt and coffee.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does baked French toast need to be refrigerated overnight?<\/h3>\n\n\n\n<p>Yes! After mixing the bread and egg mixture and placing in the pan, be sure to store in the fridge until ready to bake.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Overnight French Toast For A Crowd<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"1500\" src=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/overnight-french-toast-bake.jpg\" alt=\"This Overnight French Toast Bake is perfect for using up leftover dinner rolls or bread after a holiday meal. Prep the night before, let it sit in the fridge overnight and enjoy it for breakfast in the morning.\u00a0\" class=\"wp-image-43460\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/overnight-french-toast-bake.jpg 600w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/overnight-french-toast-bake-80x200.jpg 80w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2015\/11\/overnight-french-toast-bake-220x550.jpg 220w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p>This overnight French Toast Bake is easy, affordable and sure to be a hit for your next brunch, holiday breakfast but can just as easily help out a tired mom on a busy weekday morning. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Easy Breakfasts To Feed A Crowd<\/h2>\n\n\n\n<p>Need more ideas? Try:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.theleangreenbean.com\/blueberry-muffins\/\">Healthy Blueberry Muffins<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.theleangreenbean.com\/egg-waffles\/\">Egg Waffles<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.theleangreenbean.com\/tater-tot-waffles\/\">Tater Tot Waffles<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.theleangreenbean.com\/breakfast-enchilada-casserole\/\">Breakfast Enchilada Casserole<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.theleangreenbean.com\/crepe-kabobs\/\">Crepe Kabobs<\/a><\/li>\n<\/ul>\n\n\n\n<p>Enjoy!<br>&#8211;Lindsay&#8211;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This Overnight French Toast Bake is beginner-friendly and foolproof &#8211; perfect for using up leftover dinner rolls or bread after a holiday meal. Prep the night before, let it sit in the fridge overnight and enjoy it for breakfast in the morning.&nbsp; *Originally published 11\/2015. Updated 8\/2025* This overnight baked French toast is the perfect [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":43461,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[74],"tags":[193,123,135,134],"class_list":{"0":"post-20464","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-breakfast","8":"tag-bread","9":"tag-egg","10":"tag-fruit","11":"tag-milk","12":"entry"},"_links":{"self":[{"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts\/20464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/comments?post=20464"}],"version-history":[{"count":12,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts\/20464\/revisions"}],"predecessor-version":[{"id":78777,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts\/20464\/revisions\/78777"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/media\/43461"}],"wp:attachment":[{"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/media?parent=20464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/categories?post=20464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/tags?post=20464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}