{"id":12690,"date":"2025-06-13T00:30:00","date_gmt":"2025-06-13T04:30:00","guid":{"rendered":"http:\/\/www.theleangreenbean.com\/?p=12690"},"modified":"2025-06-16T15:06:28","modified_gmt":"2025-06-16T19:06:28","slug":"blueberry-muffins","status":"publish","type":"post","link":"https:\/\/www.theleangreenbean.com\/blueberry-muffins\/","title":{"rendered":"Healthy Blueberry Muffins"},"content":{"rendered":"\n<p><em>These healthy blueberry muffins are lightly sweetened and bursting with flavor. They&#8217;re kid-friendly and make a great breakfast or snack! Plus they freeze well!<\/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\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-3.jpg\" alt=\"quick and easy low sugar blueberry muffins\" class=\"wp-image-67605\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-3.jpg 680w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-3-133x200.jpg 133w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-3-367x550.jpg 367w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\"><span style=\"color: #ff0000;\"><em>*Originally published 6\/2014. Updated 5\/2025*<\/em><\/span><\/p>\n\n\n\n<p>Hi Friends!<\/p>\n\n\n\n<p>I&#8217;ve been making these healthy blueberry muffins for 10+ years now and they&#8217;re still a favorite of mine. This particular recipe was originally a small-batch recipe that made about 7 muffins and I recently re-tested it to make a full batch of 12 muffins with just a few little tweaks.<\/p>\n\n\n\n<p>So if you haven&#8217;t tried them yet, now is the perfect time, especially since blueberry season is almost here.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Blueberry Muffins &#8211; Easy &amp; Quick!<\/h2>\n\n\n\n<p>When it comes to baking, muffin recipes like this are the absolute best for beginners. You just need one bowl, do a little pouring, a little mixing and stick them in the muffin. <\/p>\n\n\n\n<p>You can do it ahead of time so you have them ready for the week or they&#8217;re quick enough and easy enough to whip up a batch on a weekday morning.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Are these low sugar blueberry muffins?<\/h2>\n\n\n\n<p>Yes! Compared to most muffins, these are relatively low in sugar. I use white sugar but you could substitute maple syrup if you&#8217;d like.<\/p>\n\n\n\n<p>I like to rely on the natural sweetness of the blueberries with just a small amount of added sugar. Plus adding a sprinkle of sugar on top before baking really helps carry the sweetness into each bite, allowing you to use less sugar in the recipe.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">One Bowl Blueberry Muffins Ingredients<\/h2>\n\n\n\n<p>You don&#8217;t need any fancy ingredients to make these muffins. In fact, you likely have almost everything you need already in your pantry including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oil &#8211; I use avocado oil<\/li>\n\n\n\n<li>Egg<\/li>\n\n\n\n<li>Yogurt &#8211; I use plain Greek yogurt but plain regular yogurt or even vanilla yogurt will work<\/li>\n\n\n\n<li>Vanilla extract<\/li>\n\n\n\n<li>Maple syrup &#8211; you can swap white sugar if you prefer<\/li>\n\n\n\n<li>Milk<\/li>\n\n\n\n<li>Baking powder, baking soda, cinnamon<\/li>\n\n\n\n<li>Blueberries &#8211; fresh or frozen<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How To Make Moist and Fluffy Blueberry Muffins<\/h2>\n\n\n\n<p>To make these muffins just follow a few simple steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mix the yogurt, eggs, oil, milk, vanilla and sugar.<\/li>\n\n\n\n<li>Add the flour, baking powder, baking soda, cinnamon and stir to just combine.<\/li>\n\n\n\n<li>Toss the blueberries in 1 -2 tsp flour to coat, then add and mix gently to combine.<\/li>\n\n\n\n<li>Scoop into muffin tins, sprinkle the tops with blueberries and a pinch of sugar and bake!<\/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\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-6.jpg\" alt=\"one bowl blueberry muffins\" class=\"wp-image-67607\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-6.jpg 680w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-6-133x200.jpg 133w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-6-367x550.jpg 367w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Blueberry Muffins Variations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Blueberry Muffins Made with Buttermilk<\/h3>\n\n\n\n<p>I&#8217;ve found that a lot of people are looking for muffin recipes made specifically with buttermilk. While this recipe doesn&#8217;t call for buttermilk, it uses plain Greek yogurt which is similar. If you don&#8217;t have yogurt, you can swap in one cup of buttermilk. <\/p>\n\n\n\n<p>Don&#8217;t have buttermilk? It&#8217;s so easy to make your own &#8211; just add a splash of vinegar to a cup of milk and let it sit for 5 minutes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Streusel For Blueberry Muffins<\/h3>\n\n\n\n<p>Let&#8217;s talk about them. They&#8217;re big &amp; fluffy, packed with blueberries and not overly sweet. In these blueberry muffins, yogurt is used to keep the blueberry muffins moist. And I always add a sprinkle of sugar on top because it&#8217;s a quick and easy way to add a little sweetness in every bite. However, you could also add a streusel topping. It&#8217;s a little bit more work but mixing some cold butter, brown sugar and oats together and sprinkling on top would be delightful!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Blueberry Muffins with Frozen Blueberries &#8211; Should I thaw frozen blueberries before baking?<\/h3>\n\n\n\n<p>If you don&#8217;t have fresh blueberries, you can use frozen. Be sure to always toss blueberries in about a teaspoon of flour before mixing into the batter. If you pick blueberries in the summer, or even when you see them on sale at the store, stock up and freeze them. They&#8217;re great for baking!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Blueberry Muffins Protein &#8211; Can I add protein powder to blueberry muffins?<\/h3>\n\n\n\n<p>These muffins do get a boost of protein from the Greek yogurt but if you wanted to add some additional protein, you could add a scoop or two of protein powder to the batter before mixing in the flour. Adding protein powder can dry out the muffins so I would start with one scoop and if it&#8217;s not noticeable, add another scoop the next time.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Best Fluffy Blueberry Muffins Recipe<\/h2>\n\n\n\n<p>Here&#8217;s the recipe:<\/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\/blueberry-muffins\/print\/33925\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-33925-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-33925\" data-tr-id=\"33925\" class=\"tasty-recipes tasty-recipes-33925 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\">Healthy Blueberry Muffins<\/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\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-3-copy-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"healthy blueberry muffins\" 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\/blueberry-muffins\/print\/33925\/\" 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.8\"\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=\"80\">\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.8<\/span> from <span class=\"count\">15<\/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 class=\"summary\"><em>These Blueberry Muffins are lightly sweetened and bursting with flavor. They&#8217;re kid-friendly and make a great breakfast or snack!<\/em><\/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=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <a data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\" href=\"https:\/\/www.theleangreenbean.com\/about-me\/\">Lindsay<\/a><\/li>\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 min<\/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\">25 min<\/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\">30 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\">Makes <span data-amount=\"12\">12<\/span> muffins <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=\"0.33333333333333\" data-unit=\"cup\">1\/3 cup<\/span> oil<\/li>\n<li><span data-amount=\"0.25\" data-unit=\"cup\">1\/4 cup<\/span> milk<\/li>\n<li><span data-amount=\"2\">2<\/span> eggs<\/li>\n<li><span data-amount=\"1\" data-unit=\"cup\">1 cup<\/span> plain Greek yogurt\u00a0<\/li>\n<li><span data-amount=\"2\" data-unit=\"teaspoon\">2 teaspoons<\/span> vanilla extract<\/li>\n<li><span data-amount=\"0.33333333333333\" data-unit=\"cup\">1\/3 cup<\/span> sugar + <span data-amount=\"2\" data-unit=\"tsp\">2 tsp<\/span> for sprinkling<\/li>\n<li><span data-amount=\"1.5\" data-unit=\"cup\">1.5 cups<\/span> white whole wheat flour<\/li>\n<li><span data-amount=\"2\" data-unit=\"teaspoon\">2 teaspoons<\/span> baking powder<\/li>\n<li><span data-amount=\"0.5\" data-unit=\"teaspoon\">1\/2 teaspoon<\/span> baking soda<\/li>\n<li><span data-amount=\"2\" data-unit=\"teaspoon\">2 teaspoons<\/span> cinnamon<\/li>\n<li><span data-amount=\"0.25\" data-unit=\"tsp\">1\/4 tsp<\/span> salt<\/li>\n<li><span data-amount=\"1.25\" data-unit=\"cup\">1.25 cups<\/span> fresh blueberries (or frozen) + 1 tsp flour<\/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_696e57aaf29e2_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_696e57aaf29e2_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 class=\"simple-recipe-instructions\">\n<li id=\"instruction-step-1\">Preheat oven to 375 degrees F.<\/li>\n<li id=\"instruction-step-2\">In a large bowl, mix together oil, milk, eggs, yogurt, vanilla and sugar until well combined.<\/li>\n<li id=\"instruction-step-3\">Add flour, baking powder, baking soda, cinnamon and salt and stir until just combined.<\/li>\n<li id=\"instruction-step-4\">Toss 1 cup berries in 1 tsp flour to coat, then gently mix in berries.<\/li>\n<li id=\"instruction-step-5\">Scoop in greased or lined muffin tins.\u00a0<\/li>\n<li id=\"instruction-step-6\">Lightly press remaining 1\/4 cup berries into the top of the muffins and sprinkle lightly with sugar.<\/li>\n<li id=\"instruction-step-7\">Bake for 16-18 minutes or until a toothpick inserted into the center comes out clean<\/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>Feel free to use frozen blueberries instead &#8211; no need to thaw before baking!<\/p>\n<p>You can use a gluten-free 1:1 flour blend to make these muffins gluten-free.<\/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\":12690};\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<div class=\"endeasyrecipe\" style=\"display: none;\" title=\"style002\">3.2.2708<\/div>\n\n\n\n<p>Saving a few blueberries to press into the top of each one makes them look extra fancy&#8230;and sprinkling with just a pinch of sugar on top is crucial, in my opinion!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Healthy Blueberry Muffins FAQs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What makes blueberry muffins moist and fluffy?<\/h3>\n\n\n\n<p>Including yogurt and baking soda helps make these muffins light and fluffy. The acid in the yogurt, especially Greek yogurt reacts with baking soda and creates carbon dioxide which helps the muffins rise.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What&#8217;s the difference between using milk and buttermilk in muffins?<\/h3>\n\n\n\n<p>Buttermilk (and Greek yogurt) are more acidic and will help make muffins taller and fluffier than just using regular milk.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Are blueberry muffins healthy?<\/h3>\n\n\n\n<p>As always, it depends on the ingredients but I consider this muffin recipe to be fairly healthy. It uses Greek yogurt and hemp hearts which add protein, plus white whole wheat flour to add some fiber. It&#8217;s also fairly low in added sugar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How do I make blueberry muffins vegan without eggs?<\/h3>\n\n\n\n<p>You can try replacing eggs in muffin recipes with flax eggs. Here&#8217;s <a href=\"https:\/\/minimalistbaker.com\/how-to-make-a-flax-egg\/\" target=\"_blank\" rel=\"noopener\">how to make a flax egg<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What type of flour is best for blueberry muffins?<\/h3>\n\n\n\n<p>I like white whole wheat flour. It has the benefits of wheat flour but it&#8217;s lighter and has a more mild flavor. You could also try replacing some of the flour with almond flour.<\/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\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-9.jpg\" alt=\"healthy blueberry muffins with Greek yogurt\" class=\"wp-image-67608\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-9.jpg 680w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-9-133x200.jpg 133w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/Healthy-Blueberry-Muffins-_-The-Lean-Green-Bean-9-367x550.jpg 367w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Can I freeze blueberry muffins for later?<\/h3>\n\n\n\n<p>Yes, just cool completely and place in a freezer-safe bag. Thaw on the counter or in the microwave when ready to eat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I make these blueberry muffins gluten-free?<\/h3>\n\n\n\n<p>Yes! To make these muffins gluten-free swap the white whole wheat flour for a 1:1 gluten-free flour blend. I like <a href=\"https:\/\/shop.kingarthurbaking.com\/items\/gluten-free-measure-for-measure-flour?srsltid=AfmBOooCTnRz7qJrFy_fKm3nkt8HO6CkK54KBTT4aji5Heb26v8rN-5Q\" target=\"_blank\" rel=\"noopener\">King Arthur Measure for Measure<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to store blueberry muffins?<\/h3>\n\n\n\n<p>Store in an airtight container on the counter for a couple of days. If keeping longer than that I would store in the fridge to prevent spoilage. <\/p>\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=\"600\" height=\"1500\" src=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/blueberry-muffins.jpg\" alt=\"These healthy blueberry muffins are lightly sweetened and bursting with flavor. They&#039;re kid-friendly and make a great breakfast or snack! Plus they freeze well!\" class=\"wp-image-67609\" title=\"\" srcset=\"https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/blueberry-muffins.jpg 600w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/blueberry-muffins-80x200.jpg 80w, https:\/\/www.theleangreenbean.com\/wp-content\/uploads\/2018\/06\/blueberry-muffins-220x550.jpg 220w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Healthy Muffin Recipes<\/h2>\n\n\n\n<p>Looking for more muffins? You can find all my <a href=\"https:\/\/www.theleangreenbean.com\/category\/healthy-muffins-bars\/\">healthy muffins and bars recipes here<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you&#8217;re looking specifically for cornbread muffins with blueberries, you can use my <a href=\"https:\/\/www.theleangreenbean.com\/cranberry-corn-muffins\/\" target=\"_blank\" rel=\"noopener\">Cranberry Corn Muffins<\/a> and swap blueberries and bam! Corn muffins with blueberries!<\/li>\n\n\n\n<li>If you want paleo blueberry muffins, try these <a href=\"https:\/\/www.fitmittenkitchen.com\/almond-flour-blueberry-muffins\/\" target=\"_blank\" rel=\"noopener\">Almond Flour Blueberry Muffins<\/a> from my friend Ashley at Fit Mitten Kitchen.<\/li>\n\n\n\n<li>Want vegan blueberry muffins? Try The <a href=\"https:\/\/jessicainthekitchen.com\/the-best-vegan-blueberry-muffins\/\" target=\"_blank\" rel=\"noopener\">Best Vegan Blueberry Muffins<\/a> from Jessica in the Kitchen or these <a href=\"https:\/\/www.eatingbirdfood.com\/vegan-blueberry-muffins\/\" target=\"_blank\" rel=\"noopener\">Vegan Blueberry Muffins<\/a> from Eating Bird Food.<\/li>\n<\/ul>\n\n\n\n<p>Enjoy!<br>&#8211;Lindsay&#8211;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>These healthy blueberry muffins are lightly sweetened and bursting with flavor. They&#8217;re kid-friendly and make a great breakfast or snack! Plus they freeze well! *Originally published 6\/2014. Updated 5\/2025* Hi Friends! I&#8217;ve been making these healthy blueberry muffins for 10+ years now and they&#8217;re still a favorite of mine. This particular recipe was originally a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":67604,"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":[77,74,254,73],"tags":[194,123,133,209,160,201],"class_list":{"0":"post-12690","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-baking","8":"category-breakfast","9":"category-healthy-muffins-bars","10":"category-snack","11":"tag-blueberries","12":"tag-egg","13":"tag-oats","14":"tag-sugar","15":"tag-white-whole-wheat-flour","16":"tag-yogurt","17":"entry"},"_links":{"self":[{"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts\/12690","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=12690"}],"version-history":[{"count":18,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts\/12690\/revisions"}],"predecessor-version":[{"id":68104,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/posts\/12690\/revisions\/68104"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/media\/67604"}],"wp:attachment":[{"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/media?parent=12690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/categories?post=12690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.theleangreenbean.com\/wp-json\/wp\/v2\/tags?post=12690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}