Easy Lebanese Rice Pudding Recipe by Reese Bee Haleb | Brit + Co

Gladys Soriano is the recipe developer, food stylist and food photographer behind the Mediterranean-inspired blog Forks and leaves. Here, she shares authentic Lebanese dishes and recipes inspired by her love of Mediterranean flavors (originally published on Forks and Foliage). Take him away, Gladys!

This Lebanese rice pudding or riz bi haleb is a delicious, flowery version of rice pudding. This traditional recipe was given to me by my mother and it really is the best I’ve ever had!

In Arabic, riz bi haleb is translated as rice in milk. It’s pretty self-explanatory, right? Lebanese rice pudding begins by cooking the rice in milk, then flavoring it with mastic, rose water, and orange blossom water. The result is really dreamy. My mom’s recipe makes the rice pudding extra creamy and rich. It also doesn’t use any cornstarch like most recipes, instead relying on the natural starch in the rice to thicken it up wonderfully. I will never make riz bi haleeb any other way!

What I love about Lebanese rice pudding is its versatility. It’s not too sweet and makes for a delicious breakfast or snack. But sweet enough to be a light dessert!


Lebanese Rice Pudding Ingredients


cooking rice pudding in a sauce pan

1. To start, rinse the rice only once. The key to making cornstarch-free Lebanese rice pudding is not to over-rinse the rice, or you’ll lose a lot of its thickening starch.

2. Combine the rinsed rice, water, milk and heavy cream in a large sauce pan and place over medium heat. Stir for about 10 minutes until the mixture begins to boil.

3. Reduce the heat to a simmer, stirring every couple of minutes to prevent sticking, until the rice is large and can be mashed with a spoon or between your fingers, about 15 minutes.

4. Once the rice is cooked, add the sugar and continue stirring until the rice pudding thickens, about 20-25 minutes. You can test it by leaving a plate in the freezer while you’re making it, then spooning a little pudding onto a cold plate and tilting it. If the pudding runs a little and then stops in its tracks, it’s done. If it continues to work after cooling on the plate, it needs more time to thicken.

5. When the rice pudding thickens, turn off the heat and stir in the powdered mastic, rose water and orange blossom water. If you use whole mastic, put them in a solution with a pinch of salt and grind them to a fine powder with a pestle. You don’t want chunks of mastic in your pudding, as they can be bitter and overpowering in one bite.

How to Serve Lebanese Rice Pudding (Riz Bi Haleb)

rice pudding with rose petals and pistachios

While the rice pudding is still warm, spoon it into small plates or ramekins for individual servings. Or you can transfer it to a single serving dish. Let them cool to room temperature, then cover and refrigerate until fully set and chilled.

No one will judge you if you eat half of it warm. I may or may not be speaking from personal experience.

When you’re ready to serve the Lebanese rice pudding, add crushed pistachios for a delicious, nutty crunch. If you want to take it up a notch, dried rose petals are a dream garnish for riz bi haleeb.

Tips for making the best Lebanese rice pudding

rice pudding tray with spoons

  • Do not rinse the rice more than once. We want to keep the starches in the pudding to make it thick and creamy.
  • Use whole milk. For the creamiest rice pudding, use skim or non-fat milk. (If you’re vegan and/or dairy-free, swap out the milk and heavy cream for your favorite plant-based milk.)
  • Skip recipes that call for cornstarch. Rice is already loaded with starch – no need to add another type of starch.
  • Be patient. Not using cornstarch means the pudding takes a little longer to thicken. But it’s so worth it! The rice slowly absorbs the milk and cream, thickening the mixture to a great consistency and a much tastier rice pudding.
  • Stir frequently. You don’t want the bottom to stick and burn. Stay close and stir it and scrape the bottom every couple of minutes.
  • Don’t miss mastic, rose water and orange blossom water. If you don’t have access to them, I advise you not to take them, as they add a very delicious, subtle flavor to the rice pudding. It really isn’t Lebanese rice pudding without them. If you mandatory skip something, I would say skip mastic. But I say this with hesitation and a heavy heart.


What type of rice is best for rice pudding?

I have found that medium grain rice makes the best rice pudding. You can experiment with different types and see what you like. Short grain rice is starchy, so it makes a soft pudding. Long-grain rice has less starch, so it’s less creamy and firmer.

Should you wash rice when making rice pudding?

Regardless of what you are making, you should always wash the rice. In the case of rice pudding, rinse the rice once to wash away dust and debris. But don’t rinse it more because we need all the starch we can get.

Why is my rice pudding so runny/thick?

Rice pudding means you didn’t cook it long enough. Keep cooking and it will thicken, I promise. If the pudding is too thick, you cooked it too long. Remember that the rice pudding will thicken quite a bit as it cools. It should still have a pourable consistency when done. If it is too thick, put it on medium heat, add milk and stir until it thins out a bit.

Can you make rice pudding with cooked rice?

Yes, you can use leftover rice to make rice pudding, but it won’t have the same consistency. Place the cooked rice in a saucepan, add enough milk and cream to cover, and cook, stirring frequently. Follow the rest of the recipe as is, adjusting the amounts based on how much cooked rice you’re using.

How long does rice pudding last?

Store Lebanese rice pudding in the refrigerator for up to a week.

Did you enjoy reading this Lebanese rice pudding recipe and want to receive our latest recipes straight to your inbox? Subscription our newsletter!


window.REBELMOUSE_STDLIB.loadExternalScript("https://s.skimresources.com/js/58005X1352817.skimlinks.js", function() {




function Vizible(a) { if (!(a instanceof Element)) throw Error("DomUtil: elem is not an element."); const b = getComputedStyle(a); if ("none" === b.display) return !1; if ("visible" !== b.visibility) return !1; if (0.1 > b.opacity) return !1; if ( 0 === a.offsetWidth + a.offsetHeight + a.getBoundingClientRect().height + a.getBoundingClientRect().width ) return !1; const c = { x: a.getBoundingClientRect().left + a.offsetWidth / 2, y: a.getBoundingClientRect().top + a.offsetHeight / 2, }; if (0 > c.x) return !1; if (c.x > (document.documentElement.clientWidth || window.innerWidth)) return !1; if (0 > c.y) return !1; if (c.y > (document.documentElement.clientHeight || window.innerHeight)) return !1; let d = document.elementFromPoint(c.x, c.y); do if (d === a) return !0; while ((d = d.parentNode)); return !1; }

var submenu = document.querySelector(".submenu"); document.querySelectorAll( ".menu_container .list .list__item" ).forEach(function(i){ if (!Vizible(i)) { submenu.appendChild(i); } });



//console.log('testing over tooltip'); const bookmarks = document.querySelectorAll('.like-button:not(.tool_tip_added)'); if(bookmarks && bookmarks.length > 0){ bookmarks.forEach(a => { a.classList.add('tool_tip_added'); const toolTip = document.createElement('div'); toolTip.innerHTML = "

Save your faves — add the posts and recipes you love to your B+C profile!

"; toolTip.classList.add('tool-tip'); a.appendChild(toolTip); }) }



document .querySelectorAll(".scroll-post:not(.share-proc)") .forEach(function (item) { item.classList.add("share-proc"); if (item.querySelector(".widget__head + .widget__body")) { item.querySelector(".widget__head + .widget__body").appendChild( item.querySelector(".widget__shares").cloneNode(true) ); } else { if(item.querySelector(".widget__body + .widget__body")){ item.querySelector(".widget__body + .widget__body").appendChild( item.querySelector(".widget__shares").cloneNode(true) ); } } });



REBELMOUSE_STDLIB.onElementInViewport({ threshold: 400, selector: ".sidebar_sticky_parent", oneTime: true, onIntersect: function(entry){ var element = entry.target; var jsonVal = JSON.stringify({ post_id: currentPostId_s });

var ad_el=element.querySelector(".sidebar_repeat_ad"); ad_el.dataset.targeting = jsonVal; ad_el .classList.add("htlad-Right_Rail_3");

element.insertAdjacentHTML( "afterend", '

' ); } }); window.REBELMOUSE_STDLIB.onElementInViewport({ selector: ".scroll-post .widget", threshold: 50, oneTime: true, onIntersect: function (entry) { var element = entry.target; var elId = element.getAttribute('elid'); if (elId) { var sidebar_ad_div=document.querySelector(".sidebar_sticky_parent:nth-last-child(2) .stick_in_parent"); sidebar_ad_div.innerHTML=""; var jsonVal = JSON.stringify({ post_id: elId }); let ad_div=document.createElement("div"); ad_div.dataset.targeting = jsonVal; ad_div.classList.add('htlad-Right_Rail_3', "advertisement"); sidebar_ad_div.append(ad_div) return; } }, });



//const script = document.createElement("script"); //script.src = "https://player.anyclip.com/anyclip-widget/lre-widget/prod/v1/src/lre.js"; //script.async = true; //script.setAttribute("id", "lre-player-widget"); //script.setAttribute("pubname", "britco"); //script.setAttribute("widgetname", "0011r00001onCeo_1182"); //const holder = document.getElementById("lre-script-holder"); //holder.parentElement.insertBefore(script, holder);

const script = document.createElement("script"); script.src = "https://player.anyclip.com/anyclip-widget/lre-widget/prod/v1/src/lre.js"; script.async = true; script.setAttribute("id", "lre-player-widget"); script.setAttribute("pubname", "britco"); script.setAttribute("widgetname", "0011r00001onCeo_1182"); const holder = document.getElementById("lre-script-holder"); holder.parentElement.insertBefore(script, holder);



function measureElement(entry){ var article = entry.target; if(article.offsetHeight){ article.style.containIntrinsicSize = article.offsetHeight+"px"; article.classList.add("post-measured"); } }

/*window.REBELMOUSE_STDLIB.onElementInViewport({ selector: ".post-splash-custom,.posts-custom", rootMargin: "-100px 0px -100px 0px", onNonIntersect: measureElement, onIntersect: measureElement });*/