Nasi Uduk
Fragrant coconut rice cooked with aromatic spices, topped with crispy shallots, boiled eggs, and fresh herbs. This Indonesian comfort classic is naturally vegetarian and utterly satisfying.
- Total time
- 45 min
- Servings
- 4
- Calories
- 487
- Protein
- 12g

Ingredients
8 items — tap to check off
Missing one? Custrd suggests a swap that works.
Open the appInstructions
Step 1
Rinse the jasmine rice in a fine-mesh strainer under cold running water, stirring gently with your hand for 15 seconds, until the water runs almost clear — this removes excess starch so the grains stay separate.
Step 2
Peel the shallots and slice each one lengthwise from root end to tip into 1/8-inch-thick slices, like crispy onion rings; separate the slices by hand as you go.
Step 3
Mince the garlic until the pieces are smaller than a grain of rice, about the size of pencil-tip dots.
Step 4
Mince the ginger until the pieces are smaller than a grain of rice, about the size of pencil-tip dots.
Step 5
Heat 2 tablespoons of oil in a medium saucepan over medium-high heat until it shimmers and slides quickly when you tilt the pan, about 90 seconds.
Step 6
Add the shallot slices and stir once every 10 seconds for about 5 minutes, until they turn golden brown and crispy with darker edges; transfer them with a slotted spoon to a paper-towel-lined plate and sprinkle with a pinch of salt.
Step 7
Add the minced garlic and minced ginger to the same saucepan (oil is still warm) and stir constantly for 30 seconds until the mixture smells strongly fragrant and fills the kitchen with aroma.
Step 8
Add the rinsed rice to the saucepan and stir constantly for 2 minutes until each grain is coated with the aromatic oil and the mixture smells even more fragrant.
Step 9
Pour in the coconut milk and 1 cup of water, then add a pinch of salt — stir once to combine.
Step 10
Bring the mixture to a boil over medium-high heat — you'll hear a steady sizzle and see large bubbles breaking the surface, about 3 minutes.
Step 11
Reduce heat to low, cover the saucepan with a tight-fitting lid, and simmer without lifting the lid for 18 minutes, until all the liquid is absorbed and the rice is tender.
Step 12
Remove the saucepan from heat and let it sit, still covered, for 5 minutes so the rice can finish steaming gently inside the pot.
Step 13
While the rice cooks, fill a small saucepan with water and bring it to a rolling boil over medium-high heat — you'll see large bubbles breaking rapidly at the surface.
Step 14
Gently lower the 4 eggs into the boiling water using a spoon (to avoid cracking) and set a timer for 6 minutes for soft-boiled eggs with jammy runny yolks; if you prefer harder yolks, cook for 8 minutes instead.
Step 15
Transfer the eggs to a bowl of ice water using a slotted spoon and let them sit for 2 minutes to stop the cooking — this prevents the yolk from turning gray.
Step 16
Gently peel each egg under cool running water, starting at the wider end where the air pocket sits; roll it gently against the sink surface to crack the shell all over, then slide off the shell.
Step 17
Fluff the cooked rice with a fork, breaking up any clumps by gently stirring and lifting the rice from the bottom of the saucepan.
Step 18
Divide the fluffy coconut rice among four bowls or plates, making a mound in the center of each.
Step 19
Place one peeled boiled egg on top of each mound of rice, positioning it in the center.
Step 20
Sprinkle the crispy fried shallots over and around the egg in a small pile — they will soften slightly from the rice's warmth but stay crunchy.
Tools you’ll need
- fine-mesh strainer
- cutting board
- chef's knife
- medium saucepan with tight-fitting lid
- small saucepan
- wooden spoon
- slotted spoon
- measuring cups
- fork
- paper towels
- bowl
- timer
Cook smarter
Get matched recipes for what’s in your fridge
Custrd is an iPhone and Android app that finds real recipes from the ingredients you already have. No more grocery-list aspirations. Try it free for 7 days.



