bread/recipe/recipes/sides/snacks

Malaysian Flatbread: Roti Canai Recipe

Posted February 17, 2018 by Stephanie

Malaysian Flatbread: Roti Canai Recipe | www.iamafoodblog.com

Have you ever had roti canai? It’s flaky, crispy, and UGH, so good. I eat it on it’s own or with a bit of curry sauce and I’m in heaven. Roti canai is kind of like Indian roti, but not. Essentially, it’s an Indian based flat bread that came about Malaysia, Brunei, Indonesia and Singapore, from the Indian community. It’s also known as roti prata and to be honest, it doesn’t matter what name it has because it’s delicious.

Malaysian Flatbread: Roti Canai Recipe | www.iamafoodblog.com

It’s excellent as a side carb and it’s really easy and fun to make. But, there is one downside to it – it takes an overnight rest to get the dough smooth and elastic. But really, that’s all hands off time so it almost doesn’t really count. All you do is, mix together flour, salt, and water and knead it smooth. Then the dough is rested in oil overnight. The next day, you stretch and fold it and it’s ready to be fried up.

Crispy with layers and layers of flakiness, roti canai is going to be your new flatbread favorite!

Malaysian Flatbread: Roti Canai Recipe | www.iamafoodblog.com

Malaysian Flatbread: Roti Canai Recipe
makes 6 roti


  • 2 – 2 1/2 cups flour
  • 2 teaspoons salt
  • 1 cup room temp water
  • 1/4-1/2 cup canola oil

Whisk together 2 cups of flour and salt. Slowly add in the water and knead until smooth. If dough is too sticky, gradually add in the remaining flour. Divide the dough into 6 equal portions and form into balls. Lightly oil your hands and generously oil the balls of dough, making sure they are generously and evenly coated. Place each ball in its own small bowl, pouring in a bit of oil and turning to make sure it’s coated in oil. Cover each bowl with plastic wrap and let rest overnight.

The next day, using some of the oil from one of the dough balls, generously oil a large rimmed baking sheet. Take the ball and spread on the baking sheet, using the palm of your hand, stretching and pulling into a rectangle shape, until paper thin. Some tears are okay. Lightly flick the surface of the dough with some oil. Fold into a square by taking one edge and folding it into the center. Repeat with remaining edges.

Lightly oil a non-stick pan and cook over medium heat, flipping as necessary, until golden brown and crispy. When you remove it from the pan, briskly clap the roti between your hands –your hands should be perpendicular to the roti, which would be laying flat on a plate or cutting board– by pressing the edges to the middle. This will fluff up the roti and separate the layers. Enjoy hot!

Note: This video shows how to shape roti!

20 Comments

  1. Yacin says:

    These type of bread is quite common and called Msemmen in north africa, especially in morocco, algieria n tunisia.. In morocco we use either plain weat flour or semolina n we fill those breads sometimes with minced meat or veggies or even sweet stuffed. But most common Msemmen is the plain one goes together with Na3na3 morrocan national tea^^

  2. David says:

    Hi Stephanie,
    This recipe is just great. I was wondering if you had tried the version with egg and condensed milk that you can find on Youtube. Thanks!

    1. Stephanie says:

      hi david,
      i haven’t tried that but it sounds really good. is the egg and condensed milk in the dough?

      1. David says:

        Yep. The recipe calls for the egg and the condensed milk to be added to the dough before putting in the fridge. I haven’t tried it either, but I thought it was interesting!

        1. Stephanie says:

          oooh, next time i make some roti, i’ll look it up :)

  3. Dee says:

    Do you need to put the dough in the fridge to rest overnight? Or can just leave on the counter?

    1. Stephanie says:

      hi dee,
      i just leave it out on the counter :)

Leave a Reply

Your email address will not be published. Required fields are marked *

$(function(){ var trigger = $('.hamburger'), overlay = $('.overlay'), isClosed = false; trigger.click(function () { hamburger_cross(); }); function hamburger_cross() { if (isClosed == true) { overlay.hide(); trigger.removeClass('is-open'); trigger.addClass('is-closed'); isClosed = false; } else { overlay.show(); trigger.removeClass('is-closed'); trigger.addClass('is-open'); isClosed = true; } } $('[data-toggle="offcanvas"]').click(function () { $('#wrapper').toggleClass('toggled'); }); bindBehavior.subscribe(); });