Roti john
Non-vegetarian
A split baguette pressed face-down onto a spiced minced beef and egg omelette on the griddle, then loaded with chilli sauce, mayonnaise and ketchup — a night-market favourite.
Roti john is a Malaysian sandwich, ready in about 30 minutes and made with crusty bread / baguette, ground beef and egg. It serves 4 and is rated easy to cook.

- Prep
- 10 min
- Cook
- 20 min
- Total
- 30 min
- Serves
- 4
- Level
- Easy
- Calories
- 635
Method
Step 1
Brown the beef in a dry pan, breaking it up, until cooked. Cool slightly, then mix with the eggs (opens in a new tab), onion (opens in a new tab), curry powder (opens in a new tab), salt and pepper (opens in a new tab).
- 8 min
- medium-high heat
- Frying pan / skillet (opens in a new tab)
Food safety: Minced beef should be cooked through to 71 °C; whole steak pieces can be served pink if seared on all sides.

How it looks · Photo: Skylar Kang on Pexels Step 2
Melt a quarter of the butter (opens in a new tab) on a griddle and pour on a quarter of the egg (opens in a new tab) mixture in a strip the size of the bread.
- 1 min
- medium heat

How it looks · Photo: Muhammad Khawar Nazir on Pexels Step 3
Immediately press a piece of bread, cut side down, onto the egg (opens in a new tab). Cook until the egg is set and stuck to the bread, then flip and toast the crust side briefly. Repeat.
- 10 min
- medium heat
- Griddle / tawa (opens in a new tab)
Food safety: Cook eggs until set if serving young children, pregnant people or anyone vulnerable.
Step 4
Cut into pieces and zigzag with chilli sauce (opens in a new tab), mayonnaise (opens in a new tab) and ketchup (opens in a new tab). Add lettuce (opens in a new tab) and cucumber (opens in a new tab) if you like.
- 2 min
About this dish
- Origin
- Not attributed to one place · Origin disputedClaimed by both Singapore and Malaysia; it is a fixture of Malaysian Ramadan bazaars.Also popular in Malaysia, Singapore
- Dish
- Lunch · Dinner · Snack · Sandwiches · Street food
- Cooking method
- Pan-fried
- Taste
- savoury, sweet & spicy, rich
- Diet
- No nut ingredients · High-proteinWith the listed swaps: Beef-freeWorked out from the ingredients. How labels work
All labels
Non-vegetarian · No nut ingredients · Alcohol-free · Pork-free · High-protein - Good for
- Street food · Child-friendly
- Cook more with
- Crusty bread / baguette · Ground beef · Egg · Onion · Curry powder · Butter
- Techniques
- Pan-frying
Allergens
- Contains: Milkfrom butter
- Contains: Eggsfrom egg, mayonnaise
- Contains: Wheatfrom crusty bread / baguette
- Contains: Glutenfrom crusty bread / baguette
- May contain: Sesamefrom crusty bread / baguette
- May contain: Mustardfrom curry powder, mayonnaise, tomato ketchup
- May contain: Celeryfrom curry powder, tomato ketchup
Based on typical versions of these ingredients and not verified allergen-free. Brands differ and cross-contact happens, so always check labels. For severe allergies, follow your clinician’s advice.
Nutrition
635 kcal per serving
Calculated1 serving ≈ 280 g · recipe makes 4
Where the energy comes from
- Protein 19%
- Carbohydrate 38%
- Fat 43%
| Nutrient | Per serving | Per 100 g* |
|---|---|---|
| Energy | 635 kcal | 227 kcal |
| Protein | 29.5 g | 10.5 g |
| Carbohydrate | 60.3 g | 21.5 g |
| Net carbohydrate | 57.1 g | 20.4 g |
| Sugars | 10 g | 3.6 g |
| Added sugars | — | — |
| Fibre | 3.2 g | 1.1 g |
| Fat | 30.5 g | 10.9 g |
| Saturated fat | 10.7 g | 3.8 g |
| Trans fat | 0.8 g | 0.3 g |
| Cholesterol | 249 mg | 89 mg |
| Sodium | 1409 mg | 503 mg |
| Salt equivalent | 3.5 g | 1.3 g |
Vitamins & minerals per serving
- Potassium
- 484 mg
- Calcium
- 105 mg
- Iron
- 6.5 mg
- Magnesium
- 57 mg
- Vitamin A (RAE)
- 149 µg
- Vitamin C
- 5 mg
- Vitamin D
- 1.1 µg
- Vitamin B12
- 1.8 µg
- Folate (DFE)
- 205 µg
How these numbers were made
- Calculated from USDA FoodData Central (SR Legacy) per-100 g values and the listed quantities.
- *Per 100 g of combined raw ingredients; the cooked dish may weigh more or less.
- Optional ingredients are not included: lettuce, cucumber.
- “—” means the value isn’t known for enough of the ingredients; it is never zero by default.
- Values are estimates for guidance, not for medical dosing. U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2019. fdc.nal.usda.gov.
Good to know
Tips
- Work fast: the bread must go onto the egg while it is still runny so it soaks in.
Common mistakes
- Letting the egg set before the bread goes on — press the bread on immediately so they fuse.
- Too much filling per strip, so the egg stays raw in the middle; spread it thinly.
Serve with
- Cut into chunks and share as a snack.
Storage
- Best eaten hot.
Variations
- Roti john sardin: Made with mashed tinned sardines instead of beef.
Original editorial recipe · FriendsPantry editorial · Not yet independently reviewed · Added · Updated
Sauces, chutneys & dips for this dish
Recipe DNA
How this dish is built
Grouped by each ingredient’s role in the dish. Each band’s width is its share of the dish by weight. Choose a component to see what it does.
What the dish is built around
Main ingredient
- Crusty bread / baguette, 2 baguettes, halved crosswise and split lengthwise400 g
- Ground beef, minced250 g
- Egg4 piece · 200 g
- Butter30 g
- Lettuce (optional)4 leaf · 40 g
- Cucumber, thinly sliced (optional)0.5 piece · 150 g
Masalas in this recipe
Make the masala first, then come back to finish the dish.
Dry spice blend
Everyday curry powder (British-style)
This recipe uses 1 tsp (2.1 g for 4 servings).
Reviews & corrections
Reviews come from signed-in cooks and appear after a moderator checks them. We never show made-up ratings.
You might also like

Curry puffs
Singaporean · 1 h 55 min · 398 kcal
Nasi lemak
Malaysian · 1 h 25 min · 963 kcal
Kaya toast with soft-boiled eggs
Singaporean · 45 min · 517 kcal · Contains egg
Curry laksa
Malaysian · 1 h 5 min · 950 kcal