Quick Recipe Version (TL;DR)
Quick Ingredients
- 2 cups (400 g) glutinous rice (Thai sticky rice)
- 1½ tsp kosher salt, divided
- 3 large shallots, thinly sliced + ¾ cup neutral oil
- 4 scallions, finely sliced + ⅓ cup neutral oil (or reserved shallot oil)
- 2 Chinese sausages (lap cheong), thinly sliced
- ½ cup (40 g) dried shrimp + 1 tsp fish sauce + 1 tsp sugar
- 1 cup julienned daikon radish + ½ cup rice vinegar + ½ cup water + 2 tbsp sugar + 1 tsp salt
- 1 cup pork floss or 1 small chicken breast (200 g)
- Optional: Thai chiles, white pepper, soy sauce or fish sauce
Do This
- 1. Rinse rice until water runs clear; soak 4 hours in cool water with 1 tsp salt. Drain.
- 2. Toss daikon with vinegar, water, sugar, and 1 tsp salt; pickle 30 minutes.
- 3. Fry shallots in ¾ cup oil at 275°F/135°C until pale gold (12–15 min); drain. Reserve ⅓ cup hot oil.
- 4. Make scallion oil: pour reserved ⅓ cup hot oil over scallions + ¼ tsp salt.
- 5. Soak shrimp 15 min, then sauté with 1 tsp oil, fish sauce, and sugar (3 min). Pan-sear lap cheong (3–4 min). Poach chicken 12 min and shred, or use pork floss.
- 6. Steam drained rice in a cloth-lined steamer over boiling water 25–30 min, fluffing once and sprinkling 2 tbsp hot water mid-steam. Bowl up with toppings, scallion oil, pickles, and crispy shallots.
Why You’ll Love This Recipe
- Classic Saigon-style street breakfast made easy for home cooks.
- Beautiful balance: rich scallion oil and sausage, sweet-salty shrimp, bright pickles, and crunchy shallots.
- Flexible toppings: swap pork floss for quick-poached chicken or go vegetarian.
- Make-ahead friendly components for fast assembly in the morning.
Grocery List
- Produce: Shallots, scallions, daikon radish, Thai chiles (optional)
- Dairy: None
- Pantry: Glutinous rice (Thai sticky rice), dried shrimp, Chinese sausages (lap cheong), pork floss (or chicken breast), rice vinegar, sugar, kosher salt, neutral oil, fish sauce (or light soy sauce), white pepper
Full Ingredients
Sticky Rice Base
- 2 cups (400 g) glutinous rice (Thai sweet/sticky rice)
- 1 tsp kosher salt (for soaking)
- ½ tsp kosher salt (to season before steaming)
- 2 tbsp hot water (to sprinkle mid-steam)
- Optional: banana leaf or clean kitchen cloth/cheesecloth for lining the steamer
Crispy Shallots
- 3 large shallots, very thinly sliced (about 1 cup)
- ¾ cup neutral oil (e.g., canola, grapeseed, peanut)
- ¼ tsp kosher salt
Scallion Oil
- 4 scallions, finely sliced (about 1 cup loosely packed)
- ⅓ cup neutral oil (or use ⅓ cup of the hot shallot-frying oil)
- ¼ tsp kosher salt
Dried Shrimp Topping
- ½ cup (40 g) small dried shrimp
- 2 tsp neutral oil
- 1 tsp sugar
- 1 tsp fish sauce (use light soy sauce for a shellfish-free/vegetarian version)
- Pinch ground white or black pepper (optional)
Lap Cheong (Chinese Sausage)
- 2 links (about 120 g) Chinese sausages, thinly sliced on the bias
- 1 tsp neutral oil (only if your pan isn’t nonstick)
Shredded Chicken or Pork Floss
- Option A: 1 cup pork floss (about 45 g) — no cooking needed
- Option B: 1 small boneless, skinless chicken breast (about 200 g), plus 1 tsp kosher salt for poaching water and 1 tsp scallion oil for tossing
Quick Pickled Radish
- 1 cup (120 g) daikon radish, julienned
- ½ cup rice vinegar
- ½ cup water
- 2 tbsp sugar
- 1 tsp kosher salt
To Finish
- Thai chilies, thinly sliced (optional)
- Ground white pepper
- Soy sauce, Maggi seasoning, or fish sauce for drizzling, to taste

Step-by-Step Instructions
Step 1: Rinse and soak the sticky rice
Place the glutinous rice in a bowl and rinse under cold water, swishing with your hand, 4–5 times until the water runs mostly clear. Cover with 2 inches of cool water, stir in 1 tsp salt, and soak for 4 hours (or up to overnight in the refrigerator). Drain thoroughly in a sieve just before steaming and toss with the remaining ½ tsp salt.
Step 2: Make the quick pickled radish
In a small bowl, whisk rice vinegar, water, sugar, and 1 tsp salt until dissolved. Add the julienned daikon, submerging fully. Let sit at room temperature for at least 30 minutes (or refrigerate up to 2 weeks). Drain lightly before serving.
Step 3: Fry the crispy shallots
In a small saucepan, add the sliced shallots and ¾ cup neutral oil. Set over medium-low heat and bring the oil to about 275°F/135°C. Fry gently, stirring occasionally, until the shallots turn pale golden and just start to deepen in color, 12–15 minutes. Immediately strain through a fine mesh sieve set over a heatproof bowl. Spread shallots on paper towels and season with ¼ tsp salt. Reserve ⅓ cup of the hot shallot oil for the scallion oil.
Step 4: Make the scallion oil
Place the sliced scallions in a heatproof bowl with ¼ tsp salt. Carefully pour ⅓ cup of the hot shallot oil over the scallions (oil should be around 275°F/135°C). Stir and let sit 5 minutes to mellow. If you don’t have hot shallot oil, heat ⅓ cup neutral oil until shimmering, then pour over the scallions.
Step 5: Prepare the proteins
For the dried shrimp: Soak in warm water for 15 minutes, drain well. Heat 2 tsp oil in a small skillet over medium heat. Add shrimp and sauté 2 minutes. Stir in sugar and fish sauce; cook 1 minute until glossy. Season with a pinch of pepper if you like.
For the lap cheong: In a nonstick skillet over medium heat, cook the sliced sausages (with 1 tsp oil if needed) until lightly rendered and browned at the edges, 3–4 minutes. Keep warm.
For chicken (if using): Bring a small saucepan of water to a gentle simmer and add 1 tsp salt. Add the chicken breast, reduce heat to low, cover, and poach until just cooked through, 12–14 minutes. Rest 5 minutes, then shred and toss with 1 tsp scallion oil and a pinch of salt. If using pork floss, no cooking is required.
Step 6: Steam the sticky rice
Set up a steamer with at least 1 inch of water; bring to a steady boil over medium-high heat. Line the steamer basket with a banana leaf or a clean damp kitchen towel/cheesecloth. Spread the drained rice in an even layer. Cover and steam over actively boiling water for 25–30 minutes, adding hot water to the pot as needed to maintain steam. At the 15-minute mark, fluff the rice with chopsticks and sprinkle with 2 tbsp hot water to keep it supple. The grains should be tender and sticky but not mushy.
Step 7: Assemble and serve
Divide hot sticky rice into bowls. Spoon 1–2 tbsp scallion oil over each. Top with warm lap cheong, the sweet-savory dried shrimp, and either shredded chicken or a generous tuft of pork floss. Add a small mound of pickled radish. Shower each bowl with a rain of crispy shallots. Finish with sliced Thai chiles, a pinch of white pepper, and a light drizzle of soy sauce, Maggi, or fish sauce to taste. Serve immediately.
Pro Tips
- Rinse thoroughly: clear rinse water prevents gummy rice and helps each grain stay plump and distinct.
- Shallot color matters: pull them when pale gold—they continue to brown off heat.
- Line the steamer: a banana leaf or damp cloth prevents sticking and adds delicate aroma.
- Keep the steam rolling: the water should be at a steady boil the entire time for even cooking.
- Balance is key: a generous spoon of pickles and a drizzle of umami sauce brighten the rich toppings.
Variations
- Vegetarian Xoi Man: Swap lap cheong and dried shrimp for 1 cup soy-braised mushrooms and ½ cup crispy fried tofu. Use light soy sauce in place of fish sauce.
- Saigon street-style deluxe: Add a smear of pâté under the rice and a soft-boiled or fried egg on top. Finish with a dash of Maggi seasoning.
- Char Siu twist: Replace lap cheong with 1 cup chopped char siu (Chinese BBQ pork) warmed in a skillet until lightly caramelized.
Storage & Make-Ahead
Make the crispy shallots (store airtight at room temperature for up to 1 week) and the scallion oil (refrigerate up to 7 days) ahead. Quick pickled radish keeps up to 2 weeks in the fridge. Cooked lap cheong and shrimp topping keep in airtight containers for 3–4 days; rewarm gently. Sticky rice is best fresh but can be refrigerated up to 2 days; reheat by steaming 5–7 minutes or microwave with a damp paper towel in 30-second bursts until hot and soft. Keep crispy elements separate until serving.
Nutrition (per serving)
Approximate: 680 calories; 22 g protein; 88 g carbohydrates; 24 g fat; 3 g fiber; 1120 mg sodium. Values vary based on toppings and sauces used.
