The lid comes off the steamer for the second time and a cloud of steam rolls up. Underneath, the sticky rice has turned glossy, and the white cassava chunks are soft and faintly translucent at the edges. A spoonful of shredded coconut goes on first, then a ribbon of bright green scallion oil, then a handful of fried shallots that crackle as they land. This is xôi sắn, sticky rice steamed with cassava. In Hanoi it is a street-corner food for cold evenings. Every mouthful brings chewy, salted rice, a soft starchy bite of root, and the sweet onion fragrance of the oil.
Winter Steam on a Hanoi Street
Xôi is the Vietnamese word for a dish of steamed sticky rice, and sắn is cassava. In the south, cassava is called khoai mì, so the same dish travels under the name xôi khoai mì. It belongs to a large family. Xôi xéo is made with mung beans, xôi gấc is made with gấc fruit, and xôi bắp uses corn. Xôi sắn is its own dish, defined by those soft chunks of root through the rice.
Rice stretched with cassava
Cassava once stretched the rice pot. In leaner years, families mixed cassava and other roots into their rice to make a meal go further, a habit remembered as cơm độn sắn khoai. That practice is where xôi sắn is usually traced from, though no date or inventor is attached to it. What survives today is a street food. Through Hanoi's cold season, vendors sell it alongside steamed cassava, grilled corn and roasted sweet potatoes. The north wind starts to blow, and people start wanting it.
It is never banquet food. You will almost never see xôi sắn on a restaurant's party menu. It is everyday eating, bought warm on a chilly afternoon or made at home for a cold evening, and it is the kind of plain food people remember long after they have eaten it. It sits comfortably among the other dishes of Vietnam built on sticky rice.
Both names point to the same idea: sticky rice steamed with cassava. In the north it is sắn. In the south it is khoai mì. If you shop at a Vietnamese grocer or search online, try both names.
North and south
The northern bowl, the one cooked here, is finished with scallion oil (mỡ hành), fried shallots and shredded coconut, and many people set a dish of sesame salt (muối vừng) beside it to sharpen each bite. Southern xôi khoai mì comes with a crowd of side dishes. These include lạp xưởng sausage, chà bông pork floss, pâté, egg, soy sauce and chili sauce, and the proportions of rice to cassava change too. At home in the north, the bowl often comes with sliced Vietnamese pork sausage on a separate plate. A sweet version also exists, with sugar stirred through while the rice is hot.
Ingredients (serves 6)

This dish contains cassava and coconut. Pork floss and Vietnamese sausage served alongside contain pork. If you use bottled coconut milk, ready-made pork floss or sausage, read the ingredient labels for allergens.
Equipment
- Steamer: a bamboo steamer over a pot, or a steamer pot
- Muslin cloth or a cloth steaming bag to line the basket
- Large mixing bowl
- Separate bowl for soaking the cassava
- Sharp knife and cutting board
- Small saucepan for frying shallots
- Slotted spoon and a paper-lined plate
- Small heatproof bowl for the scallion oil
- Chopsticks for poking holes in the rice
- Fine grater or julienne peeler for the coconut
Choosing and Substituting
Cassava is the one ingredient that decides the dish. Fresh roots are not easy to find in many countries. Frozen cassava, sold year-round at Southeast Asian grocers and online, is the realistic choice. After thawing, look at it and smell it. If it is watery and sour or shows spoilage, throw it out. Frozen cassava then gets the same treatment as fresh: the long salt-water soak and thorough steaming.
If you find fresh roots, choose ones whose cut ends are white, with no blackened sap streaks and no damage. Short, round roots that feel heavy for their size tend to be starchy and sweet. Cassava comes in sweet and bitter types. The roots sold for eating are mainly the sweet type. The bitter type carries more cyanide and goes to processing. Buy roots sold as food.
| Ingredient | What to keep | What you can swap |
|---|---|---|
| Cassava | Real cassava root in chunks, fresh or frozen | Never tapioca starch or potato starch. Tapioca starch is only the extracted starch, and you lose the chunks entirely. Sweet potato makes a different dish with different flavor and moisture |
| Sticky rice | Glutinous rice | Vietnamese nếp cái hoa vàng is the ideal; Thai glutinous rice works well and is easier to buy |
| Coconut flesh | Fresh, shredded thin | Unsweetened dried coconut works, but it is drier and chewier on top |
| Coconut milk | Plain coconut milk from a can, carton or bottle | Any brand; save the rest of the can for curry or dessert |
| Pandan | Optional | Frozen or dried leaves work; the dish is complete without them |
Method
The work splits into two days. The night before, or in the morning, set the rice and the cassava soaking separately. Both soaks take many hours of waiting with almost nothing to do. On cooking day, make the shallots and scallion oil first, because the frying oil is reused in the rice. The rest is steaming, with one hands-on break in the middle to add the coconut milk.
Raw cassava contains linamarin, a compound that releases hydrogen cyanide. Most of it sits in the peel and the ends of the root. Never eat cassava raw or undercooked, not even a taste. The safe way is to peel thickly, cut off both ends deeply, soak the root in water and change the water, then cook it thoroughly. Throw the soaking water away and never use it for cooking or steaming. Run the extractor fan or open a window while steaming, and keep your face out of the cloud when you lift the lid. Do not eat a large amount on an empty stomach. Give children a small portion to start. Poisoning shows within 30 minutes to 1–2 hours as a burning tongue and throat, headache, dizziness, stomach pain, vomiting and rapid breathing. Severe cases bring loss of consciousness, seizures and stopped breathing. If any of these appear, get medical help immediately.
The rice and cassava sit in water for many hours. Unchanged water turns sour. In warm weather, soak both in the refrigerator, and change the water as often as the steps say.
Put the rice into the steamer only once the water underneath is at a full boil, then poke holes through the surface. Steam reaches the middle of the layer quickly and evenly, so the cassava in the center cooks at the same pace as the cassava at the edges.
When It Goes Wrong
| What you see | Why | What to do |
|---|---|---|
| The rice smells sour after soaking | The water sat too long without changing, or the kitchen was warm | Change the water 2–3 times during the soak; in warm weather soak in the refrigerator |
| Cassava has a hard center after the second steaming | The chunks were too large or the steaming was too short | Keep steaming until the center is soft right through. Never serve cassava with a hard core |
| The rice is wet and pasty | It went in poorly drained, or was packed down with no holes | Drain the rice and cassava well, spread the layer level, and poke holes before steaming |
| The fried shallots are dark and bitter | They stayed in the oil past pale gold and kept cooking off the heat | Lift them out at pale gold next time; a dark batch is best replaced |
| The scallion oil turned olive brown | The scallions cooked too long | Stir for about 5 seconds, then pull off the heat straight away |
| A burning tongue or throat, dizziness or nausea after eating | Cassava that was not peeled, soaked or cooked thoroughly | Stop eating and get medical help immediately |
Serving and Variations

Xôi sắn is a cold-weather food, at its best eaten hot on a chilly evening. At a northern table, set out sesame salt for sprinkling. Add pork floss (ruốc bông) when the rest of the meal is savory, and sliced Vietnamese pork sausage when you want it more filling. Keep every side dish on its own plate rather than mixing it into the rice. It is best eaten the day it is made as a rough guideline, and leftovers can be rewarmed by steaming them again until hot all the way through.
Variations
- Sweet xôi sắn. Stir sugar into the rice while it is still hot from the steamer. For this version, mix the rice with plain cooking oil instead of the shallot frying oil, whose onion aroma comes through strongly.
- Southern table. Keep the northern bowl as it is and surround it with southern sides: lạp xưởng, chà bông, pâté, egg, soy sauce and chili sauce. The meal becomes heartier and saltier, and the rice turns into a base for the sides.
- Pandan. Add the pandan leaves in the second steaming. The rice picks up a sweet, grassy perfume that pairs well with the coconut.
- More coconut. Use more shredded coconut on top for extra chew and sweetness. Keep the coconut milk at the amount in the table so the rice stays sticky.
Frequently Asked Questions
Why steam twice instead of once?
Cassava takes longer to cook than the fillings of other xôi. The first round cooks the rice and starts softening the cassava. During the break, the oil and coconut milk go into hot, open grains. The second round finishes the cassava through to the center and sets the rice glossy and sticky.
Can I shorten the cassava soak?
Plan for the full 8–12 hours with the water changes; the soak is part of what makes the cassava safe. On a day when time is short, soak the cassava at least as long as the rice, and never less. Thorough steaming is still required either way.
How do I know the cassava I bought is the sweet type?
The two types are hard to tell apart by eye. Buy cassava sold as food from a grocer that stocks it for cooking. Frozen cassava from a Southeast Asian shop is the easiest choice. Treat every batch the same way: deep peel, long soak and full steaming.















