
This Tom Kha recipe delivers the creamy, tangy, and spicy magic of Thailand in a single bowl—just like my first taste at a Bangkok street stall. The secret lies in balancing coconut milk’s richness with lime’s bright acidity and just enough chili heat to wake up your palate.
I’ve perfected this version after years of trial and error, ensuring every spoonful delivers that perfect harmony of flavors.
What makes this soup special is how simple yet transformative the ingredients are: coconut milk, lime juice, galangal (or ginger), lemongrass, and a touch of fish sauce for umami depth. The broth simmers until fragrant, while chicken or tofu adds protein that melts into the velvety sauce.
It’s the kind of dish that feels indulgent yet light, perfect for any night when you crave something comforting yet exciting.
By the time you’re done, you’ll have a steaming bowl of golden coconut soup with tender protein, fragrant herbs, and just the right kick of spice. The aroma alone will transport you to a Thai market, while the first sip delivers that perfect balance of creamy, tangy, and slightly spicy.
This is the recipe I make when I need a taste of home—or just a break from ordinary dinners.
Whether you use chicken, shrimp, or tofu, the technique stays the same: simmer the aromatics, build the broth, and adjust the lime and chili to taste. The best part? Leftovers taste even better the next day as the flavors meld. Let’s bring Thailand to your kitchen!
Ingredients for tom kha
Eight ingredients transform into Thailand’s creamy, zesty coconut-lime soup magic.
| Ingredient | Amount | Notes |
|---|---|---|
| Extra-Firm Tofu 🥜 | 14 oz | Pressed for best texture |
| Coconut Milk 🥥 | 1 ½ cups | Full-fat for creaminess |
| Lime Juice 🍋 | ½ cup | Freshly squeezed preferred |
| Vegetable Stock 💧 | 3 cups | Homemade or quality store-bought |
| Galangal 🌿 | 1 piece | Substitute ginger if unavailable |
| Lemongrass 🌱 | 3 stems | Bruised for maximum flavor |
| Fish Sauce 🍶 | 1 ½ tbsp | Vegetarian alternative (soy sauce) |
| Chili Paste 🌶️ | 1 tbsp | Red curry or sambal oelek |
| Garlic Cloves 🧄 | 4 cloves | Minced for aroma |
| Fresh Cilantro 🌿 | ¼ cup | Chopped for garnish |
| Lime Zest 🍋 | 1 tbsp | Brightens the flavor |
| Sugar 🍚 | 1 tbsp | Balances acidity |
| Vegetable Oil 🫒 | 1 tbsp | For tofu cooking |
| Salt 🧂 | ½ tsp | Enhances all flavors |
| Coconut Cream 🥥 | ½ cup | For extra richness |
The tofu is your protein star here—extra-firm holds up best to the long simmer. Press it for 20 minutes before cooking to squeeze out excess water. Trader Joe’s and Whole Foods carry the best quality, but any grocery store’s organic section works. Galangal? If you can’t find it (it’s the root of ginger’s spicier cousin), ginger works in a pinch—just double the amount. Lemongrass is non-negotiable though—it’s the aromatic backbone. Buy the fresh stalks and bruise them with your palm before adding to the pot.
No fish sauce? Soy sauce or vegetarian fish sauce works perfectly—just remember it’s saltier, so start with half and adjust. Chili paste can be swapped for fresh chili slices if you prefer a cleaner heat. The coconut milk should be full-fat for that velvety texture—canned brands like Thai Kitchen are my go-to. For extra zing, add a splash of rice vinegar at the end. Fresh cilantro is ideal, but dried won’t cut it here—the fresh leaves add that bright, herby finish that makes this dish sing.
This soup tastes even better the next day as the flavors meld—double the batch if you’re anything like me. Keeps for 4 days in the fridge, or freeze portions for 3 months. The tofu absorbs all the coconut flavors beautifully, so don’t skip the pressing step. For serving, I like to garnish with extra lime zest and a sprinkle of crushed peanuts—it adds that crunchy contrast that Thai street food does so well.
Why You’ll Love This Recipe
- One-Pot Magic: I swear by this—just toss everything into a single pot and let the galangal and lime work their alchemy. No fancy techniques, no extra dishes, and the tofu soaks up the creamy coconut stock like a dream.
- Tangy Creamy Bliss: That first sip? Pure satisfaction. The coconut milk’s richness meets the bright zing of lime juice, while the galangal adds a peppery kick that lingers. Honestly, it’s the kind of balance that makes you want to close your eyes and savor it.
- Lunchtime or Leftovers: Make a big batch on Sunday—it reheats beautifully for quick lunches all week. Or serve it over rice for dinner when you’re too tired to plan. My daughter even sneaks bites from the fridge when she thinks I’m not looking.
- Budget-Friendly Flex: Tofu and coconut milk stretch this into four servings without breaking the bank, and vegetable stock keeps it light. Between us, it’s my go-to when I need something nourishing that won’t drain my wallet—or my time.
Step-by-step instructions for Tom Kha soup
This vibrant Thai coconut-lime soup comes together with bold flavors and simple techniques.
Prepare the Aromatics and Press the Tofu
First, press the 14 oz extra-firm tofu for at least 20 minutes—this removes excess water and ensures it absorbs flavors beautifully. Wrap it in a clean kitchen towel, place a heavy object on top, and let it drain while you prep the rest.
Next, bruise the 3 stems lemongrass by gently pounding them with the side of a knife—this releases their fragrant oils. Peel the 1 piece galangal (or ginger if substituting) and cut it into thin slices. Mince the 4 cloves garlic finely for maximum aroma. Here’s where the magic starts—these aromatics form the soul of your soup.
Sauté the Aromatics and Build the Base
Heat the 1 tablespoon vegetable oil in a large pot over medium heat. Add the minced garlic and cook for 30 seconds until fragrant—don’t let it brown or it’ll turn bitter. Add the galangal and lemongrass, cooking for 1 minute until the galangal softens slightly.
Stir in the 1 tablespoon chili paste and cook for 30 seconds to toast its flavors. Pour in the 1.5 cups coconut milk and 3 cups vegetable stock, scraping up any browned bits from the bottom. Add the 1 tablespoon sugar and 0.5 teaspoon salt, then bring to a gentle simmer for 5 minutes—this lets the flavors meld beautifully.
Add the Tofu and Simmer
Gently add the pressed tofu to the simmering broth. It should float near the top—if it sinks, use a spoon to nudge it upward. Simmer uncovered for 8-10 minutes until the tofu is heated through and the broth has reduced slightly, intensifying its flavors.
Here’s the thing—don’t rush this step. The tofu needs time to absorb the coconut-lime essence. You’ll know it’s ready when the broth has a rich, velvety texture and the tofu is warm throughout. Taste and adjust seasoning with more fish sauce if needed—this balances the flavors perfectly.
Finish with Lime and Coconut Cream
Remove the pot from heat and stir in the 0.5 cup lime juice and 1 tablespoon lime zest. The citrus will brighten the soup instantly, cutting through the richness of the coconut. Add the 0.5 cup coconut cream and stir gently—this adds luxurious body without overpowering the other flavors.
For the final touch, stir in the 1.5 tablespoons fish sauce. This is your flavor anchor—it enhances the umami depth while keeping the dish balanced. Let the soup sit for 2-3 minutes off the heat so the lime zest can infuse fully. The aroma alone will transport you to Thailand!
Serve with Fresh Cilantro and Rice
Ladle the soup into bowls and garnish immediately with the 0.25 cup chopped fresh cilantro. The herb adds a fresh contrast to the creamy, spicy broth. Serve with steamed jasmine rice to soak up every last drop of that coconut-lime goodness.
This soup tastes even better the next day as the flavors deepen, but it’s so delicious fresh that you might not wait! The tofu will be tender, the broth velvety, and each spoonful will deliver that perfect balance of heat, tang, and creaminess that makes Tom Kha so irresistible.
Pro Tips For Making Tom Kha
- BLEND THE GALANGAL: Skip the grating—slice it thinly (about 1/8-inch) and smash it with the side of your knife first. This releases the oils without turning your soup into a mushy mess. I learned this the hard way after straining out three batches of galangal pulp.
- PRESS THE TOFU DRY: Wrap the extra-firm tofu in a towel, place a heavy pan on top, and let it sit for 10 minutes. Wet tofu steams instead of sears, and you’ll end up with soggy cubes. Do this right after opening the package—no excuses.
- LOW AND SLOW WITH COCONUT: Once the coconut milk hits the pot, drop the heat to medium-low. Boiling it hard turns the soup greasy and separates the cream. Simmer gently for 10 minutes—it’s the only way to keep that velvety texture.
- RESERVE THAT LIME JUICE: Strain the lime juice through a fine-mesh sieve first to catch seeds and pulp. Add half the juice to the soup, taste, then adjust—you can always add more, but you can’t take it out. (Yes, even if you’re impatient like me.)
Dietary considerations for this recipe
Vegetarian Adaptations
This recipe shines as a vegetarian dish when you swap the traditional protein for extra-firm tofu—I press mine for 20 minutes to remove excess water before cooking. The tofu absorbs the coconut-lime broth beautifully, becoming tender and infused with flavor.
For extra richness, add ½ cup coconut cream at the end, which creates that signature velvety texture. 🥜
Gluten-Free Essentials
Tom Kha is naturally gluten-free, but double-check your fish sauce label—some brands contain wheat. I recommend Red Boat Fish Sauce or a dedicated gluten-free alternative like Annie Chun’s Vegetarian Fish Sauce.
The coconut milk and vegetable stock are also safe choices, ensuring your bowl stays completely gluten-free while packed with flavor.
Dairy-Free Friendly
Since this recipe relies solely on coconut milk and coconut cream, it’s already dairy-free—no substitutions needed! The creamy texture comes entirely from these plant-based ingredients, making it perfect for those avoiding lactose.
For extra depth, I sometimes add a splash of coconut aminos instead of fish sauce, which adds umami without dairy.
Spice Level Control
Adjust the heat to your preference by controlling the chili paste. For a mild version, use just ½ teaspoon of sambal oelek, while 1 tablespoon delivers classic Thai spice. If you love heat, add 1 sliced Thai chili at the end—it keeps the spice fresh and vibrant.
Taste as you go, and remember: the lime juice brightens the heat, balancing the flavors perfectly.
Nut-Free Option
While traditional Tom Kha often includes crushed peanuts as a garnish, you can skip them entirely or substitute with toasted pumpkin seeds for a nut-free crunch. The soup’s creamy, tangy, and spicy profile stands strong on its own—no garnish required.
If you’re avoiding nuts for allergies, always check your chili paste label, as some brands contain trace amounts.
Low-Sodium Boost
To reduce sodium without sacrificing flavor, use low-sodium vegetable stock and cut the fish sauce to 1 tablespoon. Balance the broth with extra lime juice and a pinch of black pepper, which enhances the natural umami.
The coconut milk’s richness will still shine, and the dish remains vibrant and satisfying. 💡
Nutrition facts
Frequently asked questions
What’s the secret to balancing the flavors in this coconut-lime soup?
The magic lies in the three-way balance: creamy coconut milk, bright lime juice, and savory fish sauce. Start with equal parts of each, then taste and adjust—add more lime if it’s too rich, fish sauce if it’s too tangy, or chili for heat. The broth should sing with all three flavors working together, not just one dominating.
Can I make this soup without galangal?
Galangal gives that signature Thai aroma, but ginger works perfectly as a substitute. Use about double the amount (so 2 pieces instead of 1) and add a pinch of citric acid or extra lime juice to mimic galangal’s tangy kick. The soup will still taste amazing—just slightly different.
How do I prevent the tofu from getting soggy?
Press the tofu for 20+ minutes before cooking to remove excess water, then pat it dry with a paper towel. Add it to the simmering broth last (after the aromatics have cooked) and simmer gently for just 8-10 minutes. Overcooking will make it mushy. For extra firmness, pan-fry the tofu first until golden before adding it to the soup.
What’s the best way to store leftovers?
Let the soup cool completely, then transfer to an airtight container. It keeps in the fridge for 4 days—the flavors actually deepen overnight! For longer storage, freeze portions for up to 3 months. Reheat gently on the stove over low heat and add a splash of water or coconut milk if it thickens too much. The tofu stays tender when reheated properly.
Can I use chicken instead of tofu?
Yes! Swap the tofu for 1.5 pounds boneless chicken thighs (they stay juicier than breasts). Simmer the chicken in the broth for 12-15 minutes until fully cooked, then shred or remove before serving. For extra richness, add ½ cup coconut cream at the end. The chicken absorbs all the coconut-lime flavors beautifully.
- Mexican Corn Salad Recipe: Charred, Smoky, and Citrus-Bright Freshness - November 6, 2026
- Cheesecake Bites Recipe: Mini Dessert Perfection in 15 Minutes - November 6, 2026
- Cinnamon Toast Crunch Ice Cream Recipe: Crunchy Cereal Swirls With Creamy Vanilla Base - November 6, 2026