Caldo Santo, or Puerto Rican Coconut Seafood Soup, is a creamy coconut seafood soup enjoyed in Puerto Rico during Lent. Its silky broth, made with coconut milk, yautía, sofrito, and herbs, is rich and fragrant. Each spoonful reflects Taíno, African, and Spanish influences in a comforting coastal dish.

Caldo Santo, created in the coastal town of Loiza, is typically served during Lent here in Puerto Rico, but it is great year around. The combination of fish, crab, shrimp, and coconut milk has a delicate balance of creamy, sweet, and savory. Each spoonful is a taste of coastal tradition, blending indigenous Taíno, African, and Spanish influences into one nourishing dish. This caldo is delicious with Ceviche, Yellow Rice, Bacalao a la Vizcaina, and Guineos en Escabeche.
For more Puerto Rican-inspired Lent recipes, try Arroz con Pollo, a one-pot meal great for family gatherings. Pan-seared Lamb Chops and Arroz con Habichuelas, Sweet Plantain Lasagna, or Lasaña de Berenjena/Eggplant Lasagna (omit the meat or use ground lamb for either) are also great. Arroz con Gandules is always great at special gatherings and festivities.
Jump To
- Why you'll love this recipe
- Ingredient Notes
- Variations and Substitutions
- Want to make caldo santo lower in carbs or even ketogenic?
- How to make Caldo Santo or Puerto Rican Coconut Seafood Soup
- Top Tip: Use Fresh Coconut Milk-If you Can
- Expert Tips
- Recipe FAQs
- More Soups and Stews Recipes
- 📖 Recipe
- Top Tip: Use Fresh Coconut Milk-If you Can
- Comments
Why you'll love this recipe
- Delicious: This soup has such an outstanding balance of flavors. The sweetness of the coconut complements the sweetness of the crab and shrimp, as well as the savory flavors of the sofrito.
- Creamy: The coconut milk gives the broth a smooth, velvety texture that enhances every bite.
- Traditional and Special: A classic, lesser-known Puerto Rican dish, especially enjoyed during Lent, that showcases cultural heritage with its unique blend of flavors and textures.
- Nourishing: Packed with protein from fish and fiber-rich root vegetables, making it both satisfying and wholesome.
- Adaptable: Works beautifully with different seafood and vegetables, allowing easy customization.
Ingredient Notes
- Coconut milk
- Fish broth
- Achiote oil
- Onions
- Grouper/mero
- Raw shrimp
- Crab meat
- Malanga
- Garlic paste
- Sofrito
- Yautia and plantain
- Seasonings: cumin, Sazon, black pepper, bay leaves
- Calabaza.
- Coconut Milk: The heart of the dish, it creates a rich, creamy broth with a subtle sweetness that balances the seafood’s brininess.
- Fresh Fish (or Seafood like Crab and Shrimp): Provides the main protein and infuses the broth with deep, oceanic flavor.
- Root Vegetables (Yautía, Plantain, or Malanga): Add thickness, natural starch, and a hearty texture to the soup. Malanga especially almost dissolves into the soup, adding to the creaminess of the final product. Not to mention, malanga provides a great amount of nutrition to this soup.
- Sofrito: A mix of garlic, onions, peppers, and herbs that builds the dish’s signature Puerto Rican flavor base.
- Fresh Herbs (Cilantro and Culantro): Enhances the aroma and brings brightness to the creamy, savory broth.
See my recipe card below for a complete list of the ingredients with measurements.
Variations and Substitutions
- Coconut Milk: Traditional Caldo Santo relies on coconut milk for its creamy texture and mild sweetness. If you want a lighter version, use evaporated milk instead. For a dairy-free alternative, try cashew or almond milk, though the flavor will be less rich.
- Fish & Seafood: The classic recipe features white fish, shrimp, or crab, but you can switch it up based on availability. Use salmon for a richer taste, lobster for a luxurious twist, or cod if you prefer a firmer texture. If you don't eat seafood, substitute with chicken for a land-based take.
- Root Vegetables: Yautía and malanga add thickness and body to the broth. If unavailable, try potatoes or cassava (yuca). For a lower-carb option, use cauliflower to create a similar creamy consistency without the starch.
- Sofrito: This base gives the soup its signature depth. If you don’t have a traditional sofrito, blend garlic, onions, bell peppers, and cilantro to make a quick version. If you prefer a smoky note, add roasted red peppers or a pinch of smoked paprika if achiote is unavailable.
Want to make caldo santo lower in carbs or even ketogenic?
Swap out the root vegetables for cauliflower, zucchini, or turnips, and use a high-fat fish like salmon to keep it rich without adding starches.
How to make Caldo Santo or Puerto Rican Coconut Seafood Soup
Here are the step-by-step instructions to make this coconut milk soup
- Saute shrimp shells in a little bit of olive oil. Doing this step infuses the oil with shrimp flavor.
- Once the shrimp shells turns pink, add achiote oil and saute for another minute.
- Remove the shrimp shells from the pot and discard.
- Add onions and adjust the oil if needed. Saute onions until translucent.
- Once the onions are translucent, add the sofrito and garlic paste and cook for about a minute. Sauteeing the sofrito and garlic paste enhances the depth of flavor in the soup.
- Add coconut milk.
- Let the coconut milk come to a simmer to infuse the coconut milk with the flavor of the sofrito.
- Add seasonings and bay leaf. Let cook for about a minute or two.
- While the flavors mingle in the pot, peel and cut your root vegetables: yautia, malanga, and plantain. Place the cut vegetables in a bowl with water to keep them from oxidizing.
- Rinse the root vegetables, drain, and add to the simmering pot.
- Add calabaza. My calabaza was frozen, so I waited to add it, but if you have raw calabaza, add it with the root vegetables. Cook the vegetables for about 10 to 15 minutes. Taste broth and adjust seasoning if needed.
- Add the fish and shrimp. Cook for an additional five to minutes. This process will be very quick since seafood and fish cook relatively quick.
- If your crabmeat is cooked, add the crabmeat right at the very end of cooking. If you buy lump crabmeat (very delicious, but more expensive) do not mix the soup too much so not to break the lumps and save a few as garnish for your plate. If the crabmeat is raw, cook the soup for about five more minutes after adding.
- Test a piece of fish. I stopped cooking it once the fish started flaking, but it still did not fall apart.
Top Tip: Use Fresh Coconut Milk-If you Can
Grating and squeezing a fresh coconut gives the broth a richer flavor.
Expert Tips
- Don’t skip sofrito: it’s the heart of the flavor.
- Cut the root veggies evenly: To cook at the same rate and don’t get mushy.
- Let the broth simmer slowly: To build depth—rush it, and you’ll miss out on flavor.
- Add fish last: So as to not overcook it or fall apart.
- Taste as you go: Coconut milk can mellow things out, so adjust salt and seasonings near the end.
- Use a firm fish: Snapper or grouper—they hold up better in the broth.
- Garnish with fresh cilantro or culantro: Before serving for a pop of freshness.
Recipe FAQs
It’s a traditional Puerto Rican coconut-based seafood soup, often made during Lent or Easter.
Yes, this recipe was made with canned coconut milk, but fresh coconut milk gives a more authentic and rich flavor.
Firm white fish like snapper, grouper, or cod are ideal—they don’t fall apart in the broth.
Yes, but add the fish when reheating so it stays tender.
Not usually, but you can add a little chile or pique if you like heat.
It’s best fresh, but you can freeze the broth without the fish and add fresh fish when reheating.
A side of white rice or tostones works great for soaking up the broth. Add a wedge of avocado and a piece of pan de agua.
More Soups and Stews Recipes
- Puerto Rican Bacalao a la Vizcaina
- Asopao de Pollo, Puerto Rican Chicken and Rice Soup
- Chicken and Chorizo Stew
- Carne Guisada, Puerto Rican Beef Stew
I’d love to hear from you! Did you try this recipe? Leave a review and rating below. Let’s connect on Instagram, and don’t forget to join my weekly email list for fresh new recipes.
📖 Recipe
Caldo Santo, Puerto Rican Coconut Seafood Soup
Equipment
- 1 stock pot
Ingredients
- 2 tablespoon achiote oil
- 1 onion peeled and dice
- 1 tablespoon garlic paste
- 2 tablespoon sofrito
- 1 tablespoon sazon
- 1 teaspoon cumin
- ½ teaspoon black pepper
- 2 cups fish broth
- 2 cans coconut milk 4 cups fresh coconut milk
- 1 malanga or to taste
- 1 yautia or to taste
- 1 plantain or to taste
- 1 cup calabaza
- 1 lbs mero/grouper no skin, no bones, cut into bite-sizes
- 1 lbs shrimp peeled and deveined (save the shells if available to saute at the beginning of the recipe)
- 1 lbs crab meat
Instructions
- Saute shrimp shells in a little bit of olive oil. Doing this step infuses the oil with shrimp flavor.
- Once the shrimp shells turn pink, add achiote oil and saute for another minute.
- Remove the shrimp shells from the pot and discard.
- Add onions and adjust the oil if needed. Saute onions until translucent.
- Once onions are translucent, add sofrito and garlic paste. Cook for about a minute. Sauteeing the sofrito and the garlic paste enhances the depth of flavor in the soup.
- Add coconut milk.
- Let the coconut milk come to a simmer to infuse the coconut milk with the flavor of the sofrito.
- Add seasonings and bay leaf. Let cook for about a minute or two.
- While the flavors mingle in the pot, peel and cut your root vegetables: yautia, malanga, and plantain. Place the cut vegetables in a bowl with water to keep them from oxidizing.
- Rinse the root vegetables, drain, and add to the simmering pot.
- Add calabaza. My calabaza was frozen, so I waited to add it, but if you have raw calabaza, add it with the root vegetables. Cook the vegetables for about 10 to 15 minutes. Taste broth and adjust seasoning if needed.
- Add the fish and shrimp. Cook for an additional five to minutes. This process will be very quick since seafood and fish cook relatively quick.
- If your crabmeat is cooked, add the crabmeat right at the very end of cooking. If you buy lump crabmeat (very delicious, but more expensive) do not mix the soup too much so not to break the lumps and save a few as garnish for your plate. If the crabmeat is raw, cook the soup for about five more minutes after adding.
- Test a piece of fish. I stopped cooking it once the fish started flaking, but it still did not fall apart.
Notes
Top Tip: Use Fresh Coconut Milk-If you Can
Grating and squeezing a fresh coconut gives the broth a richer flavor.- Don’t skip sofrito: it’s the heart of the flavor.
- Cut the root veggies evenly: To cook at the same rate and don’t get mushy.
- Let the broth simmer slowly: To build depth—rush it, and you’ll miss out on flavor.
- Add fish last: So as to not overcook it or fall apart.
- Taste as you go: Coconut milk can mellow things out, so adjust salt and seasonings near the end.
- Use a firm fish: Snapper or grouper—they hold up better in the broth.
- Garnish with fresh cilantro or culantro: Before serving for a pop of freshness.
Zoe Forestier Villegas says
Delicious coconut comfort!!