Vegan roti John


Like all good dishes, roti John has a great story behind it. According to local legend, when a hawker in Singapore was asked for a hamburger he made the inspired decision to pile egg and meat into a baguette lavishly spread with butter. He named his creation roti John, or ‘John’s bread’, after the puzzled tourist he first served it to. And it truly is an odd concoction, this Singaporean hamburger, with its crisp, eggy filling nestled in soft bread. It also goes well with some Sambal, if you feel so inclined.

Use gluten-free bread.

Prep time: 15 minutes
Cooking time: 20 minutes


  • 2 x 15 cm baguettes (or 2 hot-dog buns)
  • oil or vegan butter, for toasting the bread
  • Sriracha sauce or Sambal, vegan mayonnaise and cucumber slices, to serve


  • 1 teaspoon vegetable oil
  • 1 red onion, finely chopped
  • 2 garlic cloves, finely chopped
  • ½ cup (40 g) soy mince, prepared
  • 2 teaspoons curry powder
  • 2 teaspoons ground cumin
  • ¼ teaspoon salt


  • ½ block (170 g) silken tofu
  • ¼ cup (60 ml) plant milk
  • ¼ cup (30 g) chickpea flour
  • ¼ teaspoon salt
  • pinch of ground turmeric
  • 1 teaspoon cornflour
  • pinch of baking powder
  • black salt, for sprinkling


First make the ‘mince’. Heat the oil in a non-stick frying pan over medium heat, then fry the onion and garlic until fragrant and soft, about 3 minutes. Add the soy mince and spices and continue to fry until the spices are aromatic and the mince looks fluffy and less wet. Season with salt, then tip out into a bowl.

Slice each baguette in half lengthwise, but without cutting it through completely, so you can open it like a book. Spread a thin layer of oil or vegan butter on the inside and toast them in the hot frying pan, then set aside.

For the ‘omelette’, put all the ingredients into a blender or food processor and blend to a smooth batter, then stir in the fried mince mixture.

Set the frying pan over medium heat, greasing it lightly if necessary, then pour in half of the batter. Let the mixture cook, using a spatula to shape it into a rectangle roughly the size of the split-open baguette. Cook until the bottom is set but the top is still runny, about 3 minutes. Place a toasted baguette, split-side down, on top of the omelette. Use a spatula to tuck in any bits of omelette peeking out from under the baguette, then cover the pan and cook for a further 3–5 minutes.

When the ‘omelette’ is completely set, carefully flip it and the baguette over and turn out onto a plate. Drizzle some Sriracha sauce or sambal onto the ‘omelette’, and add a dab of vegan mayo if you like. Tuck in some slices of fresh cucumber, then fold the baguette closed. Repeat with the remaining ‘omelette’ mixture and the second baguette.