The Story of Roti John: A Street-Stall Invention That Sticks Egg onto Bread
Some evenings you want something light, but a plain sandwich feels like too little. In the fridge: eggs, ground meat, an onion. There is bread, too. Frying an egg and tucking it between slices would be an ordinary deli-style sandwich. But spread egg and meat across a pan, press the split bread down on top, and suddenly it is a street-stall dish. The egg soaks into the inside of the bread, the aroma of the meat stays in the browned crust, and the moment you cut it you want chili sauce and mayonnaise on top.
Roti John is an egg sandwich loved in Singapore and across the Malay Peninsula. A local loaf or French loaf is split, and a mixture of egg, onion, ground meat, sambal, and more is griddled onto it. What sets it apart from an ordinary omelet sandwich is that the cooked egg is not tucked in afterward; the bread is laid face-down onto the half-set egg so the two become one. That single move lets the bread's white cut surface soak up the spiced meat and egg, leaving the outside crisp and the inside soft.
Singapore's National Library Board describes Roti John as a dish in which minced mutton, onion, and egg are cooked on a local loaf close to a French loaf. There are several stories of its origin. One says a Malay stall met the demand of British customers wanting a hamburger in the 1960s with bread, egg, and meat. Another says it developed for local customers at a stall in Geylang Serai. Another says a stall at Taman Serasi Hawker Centre popularized it in the 1970s. Rather than pinning it on any one of them, it makes more sense in the kitchen to see it as a dish where British-era bread eating, Malay street stalls, and the griddle culture of Indian Muslim cooks mixed together.
This article is a home version built on ingredients you can find at an ordinary supermarket while keeping the feel of a Singapore street stall. The bread is soft baguette or a slim French loaf. The meat is beef by default, though lamb or a beef-pork mix also works. Curry powder and sambal add aroma, and chili sauce, mayonnaise, and cucumber go on the side. Though it is Singaporean like Hainanese chicken rice, this is a very easygoing dish that needs only a knife and a frying pan, and works as a late-night bite or a lunch.
"Roti" is also used in Malay as a word for bread. "John" is often explained as having once been a generic name for Westerners. This article uses the local name, "Roti John."
Ingredients: Get the Eggs, Ground Meat, and Soft Bread Ready First

This makes 4 sandwiches of about 18 cm for 4 people. Locally, short, soft French loaves are common, so a not-too-hard baguette, a soft French loaf, or a slim hot-dog roll works well. If you use a thick-crusted, hard baguette, work about 1 tsp of water into the cut surfaces with your fingers before cooking so the egg soaks in more easily.
Ingredient decisions for a home kitchen
| Ingredient in doubt | Local style | Realistic home choice | Decision |
|---|---|---|---|
| Bread | Short, soft loaf | Soft baguette, hot-dog roll | Choose bread that absorbs egg over a hard baguette |
| Meat | Ground mutton or beef | Ground beef, beef-pork mix | Beef is easiest to handle the first time |
| Heat | Sambal, green chilies | Sambal oelek, chili sauce | For children, add it afterward instead of mixing it into the egg |
| Aroma | Onion, spices, griddle char | Curry powder, garlic, strong browning | Leaving out curry powder drifts toward a deli sandwich |
| Finishing sauces | Chili sauce, tomato sauce, mayo | Sweet chili, ketchup, mayo | Layer sweetness, acidity, and heat a little at a time |
This recipe uses eggs, wheat, beef, and seasonings that may contain soy. Check the labels of the bread, mayonnaise, chili sauce, and sambal. For anyone who dislikes heat, and for children, do not mix sambal into the egg; add it at the table after cooking.
What is worth seeking out
Roti John is not a dish where you order ground meat or eggs online. What is worth looking for is what changes the outline of the flavor: spices, a chili condiment, and a pan that can cook over a wide surface.
Start with curry powder. Roti John is not a curry, but it rounds off the smell of the meat and underpins the street-stall aroma. A little goes a long way, and you can use the rest in Trinidadian doubles or any spiced stir-fry.
If you want to share the heat across a family, serve the sambal on the side. Leftovers go into a sambal substitute or chicken satay.
Roti John is less likely to fail when you can cook it over a wide surface at once. A cast-iron skillet, with the egg spread thin, sticks to the bread more neatly than layering egg in a small frying pan.
Method: Let the Bread Soak Up the Egg, Then Flip
Roti John is more reliable at home if you cook the meat first and then return it to the egg. Some stalls mix raw ground meat into the egg and cook it all at once, but with home heat, the egg tends to set first and the meat cooks unevenly. Cook the meat first, return it to the egg, spread thin on the griddle, and press the bread down. In that order, heat reaches the center and flavor goes into the cut surface of the bread.
You don't have to stick with 18 cm bread from the start. Cutting it to about 12 cm makes it easier to flip. The thinner you spread the egg, the better it sticks. Pour it thick and the omelet sets first and tends to peel off the bread.
Keeping the Local Character: What to Keep and What to Swap

The most important thing in making Roti John is the structure of "egg and meat stuck onto the bread." A sandwich with meat tucked in, or a fried egg tucked in, is also delicious, but it is a different sandwich. The charm of the dish lies in the egg soaking into the cut face of the bread and the browned crust acting like glue.
The kind of meat, on the other hand, is quite flexible. The NLB description gives minced mutton as the base, but modern recipes range through beef, chicken, sardines, and versions with cheese. For a home kitchen, start with ground beef; it balances aroma and doneness. If you like lamb, replace half of the beef with lamb and you move quickly toward the street-stall aroma.
There is no single right sauce either. Sweet tomato sauce, chili sauce, mayonnaise, green chili. At Singapore stalls, sauces are often served alongside the cut Roti John so diners can add heat. At home, a practical split is ketchup and mayo for children, and sweet chili and sambal for adults.
At the same Singapore table, if you want a sour-hot fish dish that goes with rice instead of bread, assam pedas, simmered with tamarind, is a candidate. If Roti John is an egg-and-bread street-stall dish, assam pedas is a more settled home dish, with red broth spooned over white rice.
As a menu item, make it the main of a lunch or late-night meal without the heavy main-dish weight of Hainanese chicken rice. To widen it into a Southeast Asian table, set the curry of roti canai, the sambal of nasi lemak, and the pickled-vegetable feel of banh mi alongside, and the differences among bread dishes become visible.
What Goes Wrong: Fixing Peeling, Sogginess, and Heaviness

| Problem | Cause | Fix |
|---|---|---|
| Egg and meat peel off the bread | The egg had set too much before the bread went on | Lay the bread down while the center of the egg is still moist |
| The cut face is soggy | Moisture remained in the meat mixture | Cook the meat over medium heat and drive off the liquid on the bottom before returning it to the egg |
| The bread burns | The heat is too high, or a sugary sauce was brushed on first | Cook the bread side briefly over medium heat and add sauces at the end |
| The flavor is muddy | Bread and egg dilute the salt | Season both the meat and the egg |
| It feels heavy | Too much mayonnaise or cheese | Add more cucumber, tomato, and lettuce, and drizzle the sauces thinly |
The bread you choose also changes the outcome. Hard baguettes smell wonderful but resist the egg and take more chewing. For the first time, choose bread that is "crisp on the surface when toasted but soft inside." If you use hot-dog rolls, very sweet ones read as a deli bun, so adding a little more chili sauce tightens the flavor.
If you worry about whether the meat is cooked through, cook it thoroughly in step 1. Trying to cook the meat by griddling it for a long time after mixing it with the egg makes the egg tough and dries the bread. In the home version, it is steadier to think of it as: cook the meat safely first, and cook the egg to stick it on.
Storage and Reheating: Wrap It Uncut Overnight

It is best fresh, but if you make it ahead, keep the sauces and raw vegetables separate. Let just the bread and egg-meat cool slightly, wrap each piece in plastic wrap, and refrigerate. Eat by the next day. Left longer, the bread turns damp and the onion smell grows stronger.
For reheating, don't stop at the microwave; the texture comes back better if you don't. Microwave the refrigerated Roti John for 30 seconds at 600 W, preheat a pan over medium-low heat for 1 minute, and cook the bread side 1 minute and the egg side 30 seconds. It scorches easily, so add the sauces after reheating.
For a lunch box, put the mayonnaise and chili sauce in a separate container. Left too long with lettuce or cucumber tucked inside, moisture moves into the bread. If you carry it, cool only the cooked bread and egg-meat, wrap them, and pack the vegetables separately for safety.
FAQ
Can I make it with ground lamb?
Yes. If you like the aroma of lamb, it is a good choice. For the first time, replace half: 125 g ground beef and 125 g ground lamb makes the aroma less strong and easier to eat. If you make it with lamb only, reduce the curry powder to 1 1/2 tsp and add a little more black pepper to pull it together.
Can I mix raw ground meat into the egg and cook it?
You will see that method on local griddles, but for home I recommend cooking the meat first. If the pan area and heat are not enough, only the egg sets and the meat cooks late. Cook the meat first and let the egg's job be to stick to the bread, and failures drop.
Can I make it without curry powder?
You can, but the flavor drifts toward an ordinary egg sandwich. If you have no curry powder, 1/2 tsp cumin, 1/2 tsp coriander, and a little turmeric can stand in. On a day with none of them, use more black pepper and make up the aroma with sambal or chili sauce.
When do I add cheese?
Before drizzling the sauces in step 5, add a small amount of sliced or shredded cheese. If you want to melt it in the pan, at the end of step 4 turn the egg side up, lay the cheese on top, cover, and warm over low heat for 30–40 seconds. Too much makes it heavy, so about 20 g per sandwich is manageable.
What do I serve with it to make a meal?
For a light lunch, cucumber, tomato, and unsweetened milk tea are enough. For dinner, a sour salad or soup keeps it from feeling heavy better than a fried dish such as lumpia Shanghai. To add heat, put sambal in small dishes so each person can adjust.
Sources
- National Library Board Singapore Infopedia, Roti John
- Singaporean and Malaysian Recipes, Roti John (Baguette Omelette Sandwich from Singapore)
- Aussie Beef & Lamb Singapore, Roti John - Beef Omelette Sandwich
- Ayam Brand Singapore, Roti John












