If you have ever visited Brunei, Malaysia or Singapore, high chance you stumbled upon one of these while strolling through a night market. Roti John as it’s called, is a kind of sandwich with a meat-filled omelette inside. They are usually cooked with butter.
When bought, the sandwich is smothered heavily with mayonnaise and chili sauce or ketchup. It’s then sliced to bite-sized pieces and wrapped with brown paper. The shape is quite distinct and you would instantly know it’s Roti John amongst other wrapped food from the night market.
A night market starts around 5 pm and ends at midnight with various stalls selling all different kinds of food. A family would usually never come back home without a Roti John whenever they go to the night market.
In Brunei, it comes in three different sizes. The longest is called Papa John, the medium Mama John and the smallest Baby John. It’s very easy to be made at home and that’s what we’re going to learn how to do today! A keto-fied version of Roti John. You can also easily wrap these up in parchment and save them for a meal later in the day.
Note: Instead of beef, you could use chicken or lamb to change the flavor/macros of this if needed.
Yields 4 servings of Keto Roti John
The Preparation
Bread:
- 2 cups mozzarella cheese
- 3/4 cup almond flour
- 1 tablespoon psyllium husk powder
- 3 tablespoons cream cheese
- 1 large egg
- 1/2 teaspoon salt
- 1/2 teaspoon black pepper
Sandwich:
- 1 tablespoon coconut oil
- 1/2 medium onion, diced
- 1 teaspoon fresh garlic, chopped
- 1/4 teaspoon curry powder
- 1 teaspoon water
- 4 tablespoons ground beef
- salt and pepper, to taste
- 2 1/2 tablespoons butter
- 2 large egg
- 2 tablespoons green onion, chopped
- 2 tablespoons fresh cilantro, chopped
- 2 tablespoons mayonnaise
- 2 tablespoons low-carb ketchup
- 25 grams cucumber
- 50 grams fresh tomatoes, sliced
- 20 grams butter lettuce
The Execution
1. Preheat oven to 400°F. Follow the pizza base recipe for Low Carb Pepperoni Pizza, exclude the Italian seasoning. Divide the dough into two. Shape each dough into a long bun, making sure both will fit on a large pan. Bake for about 30-40 minutes.
2. While waiting, preheat a pan on medium heat. Add in 1 tablespoon coconut oil. Once melted, saute the diced onion. Once the onion turns translucent, add in the chopped garlic. After 1 minute, add in ¼ teaspoon curry powder and 1 teaspoon water. Let the curry powder cook for 2 minutes.
3. Add in 4 tablespoons ground beef and cook until brown. Season with salt and pepper to taste. It should be cooked in such a way you would eat this on its own.
4. When the buns are ready, remove the buns from the oven. Cool both buns on a cooling rack. The buns should deflate a bit.
5. Once the buns become cool enough, slice them horizontally but not completely. Spread about ½ tablespoon of unsalted butter onto both buns.
6. Toast the buttered side of the buns with a pan.
7. In a mixing bowl, crack an egg. Add in about half of the cooked ground beef, 1 tablespoon each green onion and cilantro. Season with a bit of salt and pepper. Mix well.
8. Preheat a large pan on medium heat. Melt 1 tablespoon of unsalted butter. Than, add in the omelette mixture to the pan.
9. Immediately cover the omelette with a bun.
10. When the omelette is cooked (after about 2-3 minutes), flip and toast the bun side until brown.
11. Remove from the pan and spread about 1 tablespoon of mayonnaise and reduced sugar ketchup (or any kinds of sauce) onto the omelette side. Garnish with some sliced cucumber, tomatoes, and lettuce. Repeat steps 7-10 for the other bun.
12. Fold the buns and serve while hot!
This makes a total of 4 servings of Keto Roti John. Each serving comes out to be 587 calories, 48.9g fats, 6.8g net carbs, and 25.3g protein.
| NUTRITION | CALORIES | FAT | CARBS | FIBER | NET CARBS | PROTEIN |
| 2 cup mozzarella cheese | 672 | 50.1 | 4.9 | 0 | 4.9 | 49.7 |
| 3/4 cup almond flour | 486 | 42 | 18.5 | 10.9 | 7.6 | 17.6 |
| 1 tablespoon psyllium husk powder | 56 | 0 | 12.8 | 11.2 | 1.6 | 0 |
| 3 tablespoon cream cheese | 149 | 14.8 | 1.8 | 0 | 1.8 | 2.7 |
| 1 large egg | 79 | 5.2 | 0.4 | 0 | 0.4 | 6.9 |
| 1/2 teaspoon salt | 0 | 0 | 0 | 0 | 0 | 0 |
| 1/2 teaspoon black pepper | 3 | 0 | 0.7 | 0.3 | 0.4 | 0.1 |
| 1 tablespoon coconut oil | 122 | 13.5 | 0 | 0 | 0 | 0 |
| 1/2 medium onion | 19 | 0.1 | 4.4 | 0.8 | 3.6 | 0.6 |
| 1 teaspoon fresh garlic | 4 | 0 | 0.9 | 0.1 | 0.9 | 0.2 |
| 1/4 teaspoon curry powder | 2 | 0.1 | 0.3 | 0.3 | 0 | 0.1 |
| 1 teaspoon water | 0 | 0 | 0 | 0 | 0 | 0 |
| 4 tablespoon ground beef | 144 | 11.4 | 0 | 0 | 0 | 9.7 |
| — salt and pepper | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 1/2 tablespoon butter | 254 | 28.8 | 0 | 0 | 0 | 0.3 |
| 2 large egg | 157 | 10.5 | 0.8 | 0 | 0.8 | 13.8 |
| 2 tablespoon green onion | 4 | 0 | 0.9 | 0.3 | 0.6 | 0.2 |
| 2 tablespoon fresh cilantro | 0 | 0 | 0.1 | 0.1 | 0 | 0 |
| 2 tablespoon mayonnaise | 187 | 20.6 | 0.2 | 0 | 0.2 | 0.3 |
| 2 tablespoon low-carb ketchup | 18 | 0 | 1.9 | 0 | 1.9 | 0 |
| 25 gram cucumber | 4 | 0 | 0.9 | 0.1 | 0.8 | 0.2 |
| 50 gram fresh tomatoes | 9 | 0.1 | 2 | 0.6 | 1.4 | 0.4 |
| 20 gram butter lettuce | 3 | 0 | 0.5 | 0.2 | 0.2 | 0.3 |
| Totals | 2371 | 197.1 | 51.8 | 24.9 | 27 | 103.2 |
| Per Serving (/4) | 593 | 49.3 | 12.9 | 6.2 | 6.7 | 25.8 |

Keto Roti John
Ingredients
Bread
- 2 cup mozzarella cheese
- ¾ cup almond flour
- 1 tablespoon psyllium husk powder
- 3 tablespoon cream cheese
- 1 large egg
- ½ teaspoon salt
- ½ teaspoon black pepper
Sandwich
- 1 tablespoon coconut oil
- ½ medium onion diced
- 1 teaspoon fresh garlic chopped
- ¼ teaspoon curry powder
- 1 teaspoon water
- 4 tablespoon ground beef
- salt and pepper to taste
- 2 ½ tablespoon butter
- 2 large egg
- 2 tablespoon green onion chopped
- 2 tablespoon fresh cilantro chopped
- 2 tablespoon mayonnaise
- 2 tablespoon low-carb ketchup
- 25 gram cucumber
- 50 gram fresh tomatoes sliced
- 20 gram butter lettuce
Instructions
- Preheat oven to 400F. Follow the pizza base recipe for Low Carb Pepperoni Pizza, but exclude the Italian seasoning. Divide the dough into two. Shape each dough into a long bun, making sure both will fit on a large pan. Bake for about 30-40 minutes.
- While waiting, preheat a pan on medium heat. Add in the coconut oil. Once melted, saute the diced onion. Once the onion turns translucent, add in the chopped garlic. After 1 minute, add in the curry powder and water. Let the curry powder cook for 2 minutes.
- Add in ground beef and cook until brown. Season with salt and pepper to taste. It should be cooked in such a way you would eat this on its own.
- When the buns are ready, remove the buns from the oven. Cool both buns on a cooling rack. The buns should deflate a bit.
- Once the buns become cool enough, slice them horizontally but not completely. Spread butter on the buns.
- Toast the buttered side of the buns in the oven.
- In a mixing bowl, crack an egg. Add in about half of the cooked ground beef, green onion, and cilantro. Season with a bit of salt and pepper. Mix well.
- Preheat a large pan over medium heat. Melt some butter. Then, add the omelet mixture to the pan.
- Immediately cover the omelette with a bun.
- When the omelet is cooked (after about 2-3 minutes), flip and toast the bun side until brown.
- Remove from the pan and spread some mayonnaise and reduced sugar ketchup (or any kind of sauce) onto the omelette side. Garnish with some sliced cucumber, tomatoes, and lettuce. Repeat steps 7-10 for the other bun.
- Fold the buns and serve while hot!














well this looks awesome!
Thanks so much Belinda!
well this looks awesome!
Thanks so much Belinda!
Anymore Singapore/Malaysian options?? I visited for 5 months back in 2011, and I miss the food! 🙂
Keep your eyes out – I’ll be posting more soon 🙂
I just made these and it was mostly a success. I was wondering how you got them to rise so much and about how long you made the buns. I fear I may have stretched them out too much because they were a little thin but I was still able to slice them. Any tips would be helpful but all in all this is by far the best keto bread recipe for sandwiches and pizza crust!
Rustin, I am guessing they might just have been thin. I kept them relatively thick so that the air inside would steam and it would help it rise.
I tried the bread recipe last night and it was mostly a success. My only issue was that it came out a little flat and thin unlike the one shown in your picture. How long do you usually make the buns because I think I may have stretched them out too long (almost 9 inches) and is there any trick to get it to raise up a little. I was still able to use it and it tasted great! I would just like to have a bread like substance to make sandwiches because I am constantly on the go.
I’ll make sure I measure next time I make them 🙂
Is it possible to create a big batch of this versatile dough and then freeze or store it for future recipes? Loving how much can be done with it
Hey Brad,
It definitely is, though I would recommend freezing it in a flat state (as if you were making pizza crust). I’ve done it before with pizza crust and it’s worked fine. I just would think that if you froze it in a ball, it may have slight uneven defrosting.
Thanks! Appreciate the quick response.
This was awesome! I got a bit flat dough like everybody else, but you’ve answered that already. Would baking powder help in rising? Thanks!
I didn’t have too much of help with adding baking powder. What you should do is try to form it a bit taller than before if you try making it again. It takes a bit more shape when it can trap steam inside.
What does the Psyllium Husk do? How would it affect the end result if we left it out?
It thickens the mixture up so you can form the bread. If you left it out, it would be a lot sloppier and may not rise very much – giving you a thin loaf.
cant wait to try this recipe!
can i substitute mozzarella with cheddar?
You can, but you may need to add slightly more cheddar. I’ve done the same for the pizza crust, and it comes out a bit soggier, so you may want to watch out for that.
thanks! 🙂
Serving size
The recipe said it was four servings so is that two sandwiches cut in half?
Does it matter what type of mozzarella I use (i.e.: 2%, part skim, or whole fat)? I use Red Mill’s almond flour which is a little clumpy, should I sift it first or does it not matter?
Thinking the bread would be good if going out to Subway.
I used this bread and made a Cubano, and it turned out great.
Really glad to hear it!
This only makes one big loaf but I love this recipe! I have used different cheeses as well and it always turns out great.
Glad to hear Melissa – thank you!
slightly confused with the carb counts. For ex: all eggs have at least .4g of carbs per serving. They just put 0 because it is under .5. Also all mozzarella I have purchased always says that there is 1 carb per 1/4 cup and for cream cheese the lowest carb count I’ve seen is 1g carb per 2tbl/ this looks delicious but I am worried that the carb count may be higher than what is listed. could you explain this? Really loving your recipes and want to try this one
We’re going to be updating all of our nutrition to the USDA standard soon. You’re correct – 0.5g for each egg. The mozzarella is probably slightly less. I use per 100g measurement in nutrition. Same with cream cheese, though at the time of making this recipe we were using Philladelphia’s old recipe. Their new one now has increased carbs (and we can’t find much anything besides organic valley) that has 1. Even some of the organic valley is 2, so I’m assume they’ll be changing soon as well.
I try my best to stay accurate with nutrition based on the packages and USDA nutrition database, but there is always going to be some variation on carb counts. 1-2g at the end of the day shouldn’t “make or break” your diet, though.
What does the psyllium husk powder do?
It gives low carb baked goods a more bead-like texture.
This looks really yummy and a nice idea for a sandwich
Can this bread dough be frozen? My other half does not do Keto so having 4 of these is a problem lol
Yes, you should be able to freeze and re-heat these.
I can confirm it’s really nice and tasty! My buns became smaller though, but when I put the ingredients together, I get more or less the same calories + macros. Not sure why.