Malaysian Flatbread: Roti Canai Recipe

Posted February 17, 2018 by Stephanie

Malaysian Flatbread: Roti Canai Recipe |

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 |

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 |

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!


  1. Nathalie says:

    Hi Stephanie, I love rota prata!!! But can you also put up a recipe for the delicious curry you normally get on the side in Malaysia and Singapore? It’s not complete without it….

    1. Stephanie says:

      hi nathalie!
      yes, will be posting a chicken curry soon!!

      1. Nathalie says:

        Super! And maybe a veggie one also…? :-)

  2. Gina Herrera says:

    he Best recipe ever. Thank you very much. i cannot get the Roti Canai in Riyadh, so i have to make my self with my own curry. My husband LOVE IT!!! thank you 3x..

  3. Emily says:

    OMG! Roti Canai! You have totally made by day

  4. Stephanie says:

    Yum! I’ll need to try this. I miss roti in Malaysia – so much more superior than the ones we have here in Vancouver.

    When you’re “clapping” the roti in your hands, are you passing it back and forth wit the palms of your hands? Or could you elaborate…?

    1. Stephanie says:

      with the roti on the table (or whatever surface you have it on), you just push your palms together, like you’re clapping >_< i think you'll have a better understanding if you watch this video :)

  5. Tine says:

    This food site is better than the other. It’s totally neat and complete.
    Thumbs up…

  6. 2pots2cook says:

    Definitely have to try this one ! Thank you ; pining !

  7. Anon says:

    These look so much like the Msemen that we make in Algeria (they also make them in Morocco and Tunisia). Ours uses semolina flour instead, with some normal plain flour.

  8. My dear husband just made these and cooked a test one – absolutely outstanding and will be having the remainder with your Kari Ayam tonight. Just brilliant, thank you!

  9. cynthia says:

    AHHhhh roti canai!!! Just catching up (clearly) and so in love with how layery and crispy these look. I can’t wait to try.

  10. Suzanne says:

    I love love love this type of bread. Cannot wait to try out this recipe!!!

  11. 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^^

  12. 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 :)

  13. 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; () { hamburger_cross(); }); function hamburger_cross() { if (isClosed == true) { overlay.hide(); trigger.removeClass('is-open'); trigger.addClass('is-closed'); isClosed = false; } else {; trigger.removeClass('is-closed'); trigger.addClass('is-open'); isClosed = true; } } $('[data-toggle="offcanvas"]').click(function () { $('#wrapper').toggleClass('toggled'); }); bindBehavior.subscribe(); });