How Many Calories is Roti Canai?

Calorie Counts Mamak Malaysian Food

One roti kosong is about 300 kcal. But nobody eats just one roti kosong with nothing. Add dhal, order a second piece, get a teh tarik, go banjir instead of kosong, and you are easily looking at 600 to 800 kcal before 9am. Here is the full breakdown of every version you can order.

Just want the quick numbers? Grab the roti canai calorie card, or browse the full Malaysian food calorie database.

Roti canai is probably Malaysia's most popular breakfast. It is fast, it is cheap, it is everywhere, and it tastes great at 7am or at 2am. When I was 128kg I was eating it almost every morning. Sometimes twice a day. (I eventually lost over 40kg without giving it up completely.) And I had genuinely no idea what the damage was because I kept telling myself it was just bread.

It is not just bread. The roti dough is laminated with ghee or margarine, cooked on a heavily oiled tava, and then you pour curry all over it. The calories stack quietly. Let me show you exactly where they are coming from.

The baseline: roti kosong alone

Before we get to variations, let us understand what roti canai actually is. A standard roti kosong is made from:

  • All-purpose or atta flour: about 80g of dough per roti. This contributes roughly 210 to 220 kcal and virtually all the carbohydrates.
  • Ghee or margarine: folded into the dough during the stretching process. About 10 to 15g per roti. This is how the layers are created and it contributes 88 to 133 kcal and most of the fat.
  • Oil on the tava: the cooking surface is always greased before each roti. Another 5 to 8g of oil. Another 44 to 71 kcal.
Planta margarine tub Malaysia
Planta Margarine — used in roti canai dough and on the tava
Per 100g699 kcal
Per tablespoon (~15g)105 kcal
In roti dough per piece (10 to 15g)70 to 105 kcal
Extra on tava for cooking (~5 to 8g)35 to 56 kcal
Planta is the margarine of choice at mamak stalls across Malaysia. It is worked into the dough during the stretching process (creates the flaky layers) and also greases the tava before each roti is cooked. The fat is what gives roti canai its texture. It is also where most of the fat calories in a roti come from, at 699 kcal per 100g.
Source: Open Food Facts, barcode 8712566081646 · view product page

Add it up and a plain roti kosong, before any dipping sauce, is about 300 kcal. Singapore's Health Promotion Board measures plain roti prata (same thing, different name) at 298 kcal. Health.family.my measures plain roti canai with dhal at 359 kcal. My own calculation lands at the same place.

The macros on roti kosong: approximately 300 kcal, 5g protein, 13g fat, 41g carbohydrates. Not much protein. A lot of refined carbs and fat.

Every variation: the full table

Here is every common roti canai variation you can order, with calories calculated from the kosong baseline plus what each filling adds. Dipping sauce is listed separately further down because the calories from curry depend on which curry and how much you take.

Roti variation Key addition Calories Protein Fat Carbs
Roti kosong Plain, no filling 300 kcal 5.0g 13.0g 41.0g
Roti telur 1 egg (55g) cracked and folded in 379 kcal 11.3g 18.3g 41.6g
Roti telur bawang Egg + chopped onion (~20g) 386 kcal 11.5g 18.3g 43.0g
Roti telur 2 biji 2 eggs folded in 458 kcal 17.6g 23.6g 42.2g
Roti cheese 1 processed cheese slice (~20g) 368 kcal 8.8g 17.9g 41.0g
Roti telur cheese 1 egg + 1 cheese slice 447 kcal 15.1g 23.2g 41.6g
Roti sardin Canned sardine in tomato sauce (~70g) 397 kcal 17.8g 16.2g 41.5g
Roti pisang Half banana, sliced (~50g) 345 kcal 5.2g 13.0g 52.4g
Roti banjir Flooded with curry (see curry table below) 420 to 500 kcal varies varies varies
Roti tissue Extra thin, with condensed milk and sugar 480 to 560 kcal 4.0g 14.0g 80.0g

A few things worth flagging here. Roti sardin has surprisingly decent protein at 17.8g because canned sardines are lean and high in protein. If you are dieting and eating at the mamak, roti sardin with dhal is actually one of the better choices. Roti tissue is the one to avoid. It is thinner and crispier than regular roti but it is drenched in condensed milk and sugar to get that sweet, caramelised finish. The sugar alone adds 100 to 150 kcal.

What the dipping curry adds

Every roti canai comes with some kind of dipping sauce. The amount you take matters a lot. At a mamak, they pour it from a ladle. One ladle is typically 80 to 100ml. If you go banjir, you are getting 150 to 200ml poured directly onto the roti.

Dipping sauce Per 100ml Standard dip (~80ml) Banjir portion (~180ml)
Dhal (lentil curry) 55 kcal 44 kcal 99 kcal
Chicken curry (with bones) 85 kcal 68 kcal 153 kcal
Fish curry 90 kcal 72 kcal 162 kcal
Mutton curry 105 kcal 84 kcal 189 kcal
Beef curry 100 kcal 80 kcal 180 kcal
Vegetable curry (mixed veg) 60 kcal 48 kcal 108 kcal

The calorie difference between dhal and mutton curry is not enormous for a normal dipping amount: 44 kcal vs 84 kcal. The banjir situation is where it escalates. 180ml of mutton curry on top of your roti adds 189 kcal. Compare that to 99 kcal for the same amount of dhal. If you go banjir every morning and use mutton curry instead of dhal, you are adding an extra 90 kcal per breakfast versus someone eating the same roti with dhal dip. Over a month that is 2,700 kcal, or close to 400g of actual body fat.

The dhal is not the enemy. Dhal is lentils cooked in a small amount of oil with spices. It is relatively low calorie for a curry (55 kcal per 100ml), has some protein, and has fibre. If you are at the mamak and watching your intake, dhal is the right curry to dip into. Not mutton, not the thick coconut-milk-based fish head curry.

What your full mamak breakfast actually costs

People do not go to the mamak and order one thing. They order roti, they order a drink, sometimes they order two rotis. Here is what various common breakfast combinations add up to.

Full breakfast order Total calories Notes
1 roti kosong + dhal + teh O kosong 346 kcal The leanest sensible mamak breakfast you can order
1 roti kosong + dhal + teh tarik 474 kcal Very common order. The teh tarik is 128 kcal.
1 roti telur + dhal + teh tarik 551 kcal Still manageable but you have used 30% of a 1,800 kcal day
1 roti telur + fish curry (banjir) + teh tarik 669 kcal Very common. This is what "just having roti" usually means in practice.
2 roti kosong + dhal + teh tarik 772 kcal Two rotis is extremely common. Most people do not think of this as a big meal.
2 roti telur + chicken curry (banjir) + teh tarik 1,022 kcal This is a full day's deficit in one sitting. Happens more than people realise.
1 roti tissue + Milo ais 680 to 740 kcal Looks like a light snack. It is not.

Look at that second-last row. Two roti telur with chicken curry banjir and a teh tarik. That is over 1,000 kcal. For a lot of people who are targeting 1,600 to 1,800 kcal per day to lose weight, that single breakfast uses 56 to 63% of the entire day's budget. Then they wonder why they are eating "not that much" the rest of the day and still not losing weight.

The two-roti problem

This is worth its own section because it is so common and so underappreciated.

Ordering two rotis feels like a normal thing. One piece of roti canai is quite small. You are hungry. The second one costs two ringgit. You order it without thinking. But that second piece is another 300 kcal minimum, another 44 to 84 kcal of dhal or curry, and all of it in refined carbs and fat with almost no protein and no fibre to keep you full.

If you eat two rotis every morning instead of one, that is an extra 350 to 400 kcal per day. Over a year: 127,750 to 146,000 extra calories. That is the equivalent of 18 to 21kg of body fat consumed purely from the second roti, assuming everything else stays the same.

One roti. That is the discipline. One roti, eat it slowly, let the dhal fill you up, drink your teh O and go.

The protein problem with roti canai

Here is the issue with roti canai as a breakfast for someone trying to lose weight or build muscle: the protein is almost nonexistent.

One roti kosong has 5g of protein. Even roti telur, with a full egg inside, only hits 11g. Compare that to two soft-boiled eggs eaten separately, which give you 12g of protein for only 144 kcal. Or to a can of tuna at 25g of protein for 116 kcal.

Protein is what keeps you full for hours. Carbs and fat from refined flour digest quickly and you are hungry again by 10am. This is why people who eat roti canai every morning often find themselves snacking before lunch, eating a big lunch, and then wondering why they cannot lose weight despite "not eating that much."

If you are eating at the mamak and want more protein, the practical hacks are: order roti telur 2 biji (two eggs in the roti, gives you 17.6g protein), order roti sardin (canned sardines give 17.8g protein), or add a side of boiled egg or a glass of warm soya bean. These additions cost very little in ringgit and make a meaningful difference to how full you stay.

Can you eat roti canai while cutting?

Yes, absolutely. One roti kosong with dhal is 344 kcal. That fits into any reasonable cutting diet. The problem is never one roti kosong. The problem is the habit that surrounds it.

Here is a sustainable mamak breakfast framework for someone on a 1,700 kcal daily target:

  • Order one roti, not two. Set this rule before you sit down and do not negotiate with yourself at the table.
  • Go with dhal, not meat curry. Saves 20 to 40 kcal per dip, and dhal has more fibre and a bit more protein than most meat curries per calorie.
  • Skip banjir. Banjir looks shiok but it doubles your curry intake. Keep it to a dipping portion.
  • Drink teh O kosong or plain water. This alone saves 100 to 130 kcal compared to a teh tarik.
  • Add protein if you can. Two boiled eggs on the side (144 kcal, 12g protein) make this breakfast actually keep you full until lunch.

Following this, a mamak breakfast comes out at roughly 390 to 490 kcal. That is 23 to 29% of a 1,700 kcal day. Completely manageable. The scale can still move even if you eat mamak every morning. You just have to know the rules and follow them.

Quick rule: One roti, dhal, teh O = 344 kcal. One roti, meat curry banjir, teh tarik = 550 to 600 kcal. The food is the same. The order is different. Know your numbers before you sit down.

Quick reference: every combination

For calorie tracking, use these as your reference points. All figures include the roti plus one serving of dipping sauce. No drink included.

Roti type With dhal With chicken curry With mutton curry Banjir (dhal)
Roti kosong 344 kcal 368 kcal 384 kcal 399 kcal
Roti telur 423 kcal 447 kcal 463 kcal 478 kcal
Roti telur bawang 430 kcal 454 kcal 470 kcal 485 kcal
Roti sardin 441 kcal 465 kcal 481 kcal 496 kcal
Roti cheese 412 kcal 436 kcal 452 kcal 467 kcal
Roti tissue (with condensed milk) 480 to 560 kcal (no dipping sauce, sweet topping instead) n/a

Add 128 kcal for a teh tarik. Add 34 kcal for a teh O with sugar. Add 2 kcal for teh O kosong. And if you are ordering a second roti, add the full roti row again. The maths does not lie.

Keep reading

Calorie Counts

Malaysian drinks calorie guide: teh tarik, kopi, Milo and everything else

Teh tarik is 128 kcal. Milo ais is 175 kcal. Air bandung is 185 kcal. Here is every drink at the mamak and kopitiam, with exact numbers.

Calorie Counts

How many calories is nasi lemak?

A basic bungkus is around 556 kcal. Add ayam goreng and a teh tarik at the kopitiam and you are at 1,200 kcal before 9am.

My Journey

128kg to 86kg: how I actually lost the weight

The full story. What failed, what finally worked, and how I still eat the food I love.