In a Pot Full of Vinegar, Chopped Offal Becomes a Rice Dish
When you cook Filipino food, the way vinegar is used keeps surprising you. Adobo (in Japanese), simmered in soy sauce and vinegar. Sinigang, a sour soup. The spicy vinegar served beside grilled chicken. Bopis belongs to the same line. It does not simply cook offal until it is rich; vinegar cuts the odor, the red oil of annatto draws out the appetite, and the whole thing leans toward a plate of white rice.
Bopis is a Filipino dish of finely chopped pork or beef lung and heart, stir-braised with garlic, onion, chili, vinegar and annatto. In the Philippines it is eaten as pulutan, a snack with drinks, and as a main dish over white rice. In the Pampanga context it is sometimes called pulutok, and a drier style with distinct grains is favored.
The hard part outside the Philippines is pork lung. In some places you can ask a butcher or an Asian grocery, but ordinary supermarkets almost never stock it. This recipe takes the authentic route when pork lung is available, and also shows a home version with pork heart and pork shoulder. So that it does not become just a rich pork stir-fry that borrows the name, keep four things at its core: chop finely, boil the vinegar, fry the aromatics in red annatto oil, and cook off moisture so the grains suit white rice.
Among Filipino chopped-pork dishes, sisig is a sizzling-plate dish eaten with browned edges and citrus, while bopis is an offal stir-fry reduced with vinegar and annatto. For a celebration platter, lechon; for charcoal aroma, chicken inasal. Putting them side by side shows how Filipino cooking uses sourness in different ways.
Bopis is a dish name seen across the Philippines. It is sometimes presented as Kapampangan bopis / pulutok, and what they share is that lung and heart are chopped and stir-fried hot and sour. This article uses the spelling "bopis" throughout, as it is easy to search for.
Ingredients (serves 4): If There Is No Lung, Use Heart and Shoulder

If you can get pork lung, use it. If not, build on pork heart and make up the bite with pork shoulder. More liver brings out an iron-like smell, so do not add too much in the home version.
This dish uses pork, fish sauce and soy sauce (some products contain soy and wheat). Offal spoils easily, so simmer it soon after buying, and do not reuse the cutting board and knife that touched raw meat for the cooked ingredients. When reheating, heat all the way through, and do not leave it long at room temperature.
Ingredients and tools that cause hesitation when shopping

Bopis is defined not only by the supermarket meat but by annatto and vinegar. Annatto also works in chicken inasal and lechon, so if you plan to keep cooking Filipino food, it is worth looking for first.
Rice vinegar works, but coconut vinegar gives a rounder sourness and a fermented character that fits Filipino cooking while cutting the offal's smell.
Offal is hard to judge by color alone. If you want to cook with confidence, including reheating, a thermometer removes much of the doubt.
Method: Simmer, Chop, and Reduce with Sourness
Bopis looks like a dish fried fast over strong heat, but in practice the simmering and the chopping decide most of it. Remove the odor, chop finely, properly boil the vinegar, and cook off moisture at the end. Miss these and you get a watery offal stir-fry.
Branching for a Home Kitchen: What to Keep and What to Replace
To reproduce bopis fully you need pork lung, pork heart, coconut vinegar, annatto and small local chilies. Even on days when you cannot gather everything, as long as you do not break the skeleton of the dish, the flavor is enough to say you made bopis.
| Uncertain ingredient | Closer to the original | Realistic substitute | What to keep |
|---|---|---|---|
| Lung | Pork or beef lung | Replace with 200 g pork shoulder | Chop finely and reduce with vinegar |
| Heart | Pork heart | Pork heart first. If none, 250 g chicken hearts | Keep the chew and the offal aroma |
| Red color | Annatto, achiote | Annatto seeds or powder | Paprika alone gives weak aroma |
| Sourness | Coconut vinegar, sugarcane vinegar | Rice vinegar + apple cider vinegar | Boil the vinegar to drive off the edge |
| Heat | Siling labuyo | Green chili, red chili | Do not overdo it in the pot; add at the table |
Without pork lung, the airy offal quality of the original weakens a little. In exchange, the chew of pork heart and the meatiness of shoulder make a home version that suits white rice. What matters is not leaving pork shoulder in big pieces. Chopped to 5 mm dice, vinegar, annatto and onion get into the gaps in the meat and sourness and fat mix in every bite.
Annatto is hard to replace. For color alone paprika powder comes close, but the red-orange that moves into the oil and the earthy aroma are different. If you make chicken inasal, lechon and bopis, you will use up the annatto. If you only try it once, a small packet of powder leaves less left over.
Vinegar changes the flavor depending on how it is boiled. Stir hard right after adding it and the sourness tends to jab at the whole dish. Boil it for about 2 minutes over medium heat without touching it too much, and add liquid after the sharp smell has softened; it cuts the offal smell and gives a sourness that suits white rice.
Why It Goes Wrong: Fix Watery, Smelly or Tough

Bopis failures come from moisture more than from the offal itself. Chopping while steam from the simmering still clings, lowering the heat right after adding vinegar, and leaving too much liquid at the end. When these three pile up, you get a sour but blurry stir-fry.
| Problem | Cause | Fix |
|---|---|---|
| Watery | Moisture after simmering; not enough reduction at the end | Remove the lid and cook off over medium heat until a spatula track remains |
| Smells of offal | Under-simmered, not enough ginger, vinegar not boiled | Simmer another 10 minutes with ginger and bay leaves, then chop |
| Tough | Short boil over strong heat; heart chopped too large | Simmer another 10 minutes over low heat and re-chop to 5 mm dice |
| Too sour | Stirred right after adding vinegar; not boiled enough | Boil for 2 minutes over medium heat; add a pinch of sugar and 2 tbsp water |
| Flat flavor | Thin annatto oil; not enough salt | Add 1 tsp patis, black pepper and citrus at the end |
| Red in color only | Made with paprika powder alone | Make annatto oil and fry the aromatics first |
FoodSafety.gov recommends checking safe cooking temperatures of meat with a thermometer. For pork cuts the guideline is 63°C or higher followed by a rest, and for reheating leftovers 74°C. Bopis is simmered once and then stir-braised, so a cold center rarely remains, but if you are not used to cooking offal, checking with a thermometer is reassuring.
How to Eat and What to Serve: White Rice, Vinegar, a Sour Soup

Bopis is strongly flavored on its own. Spoon it over white rice, drop in a little vinegar from a small bowl partway, and squeeze citrus at the end, and the umami of the offal does not feel heavy. As a snack with drinks, set sliced cucumber, tomato and onion beside it to give the sourness and heat somewhere to go.
For a Filipino menu, serve a small bowl of sinigang. On days you add noodles, keep pancit canton modest, and if you add fried food, a few pieces of lumpiang shanghai are enough. Bopis is already rich, so it is easier to eat if the whole menu is not stacked with fried food and fat.
Unlike turning leftover lechon into sisig-style chopped pork, bopis is finely chopped and reduced from the start. The next day it goes well mixed into garlic rice, and a firmly cooked omelet beside it, rather than a fried egg, softens the heat and sourness.
Storage and Reheating
Refrigerate for up to about 2 days. After it cools, spread it in a shallow container, cover and refrigerate. Stored with lots of onion and citrus, the aroma gets stronger, so if you are making it ahead, add the juice just before eating.
A frying pan is best for reheating. Warm over medium-low heat for 2 minutes, add 2 tsp water and loosen, then finish with 1 minute over medium heat to cook off moisture. In a microwave, 1 1/2 minutes at 600 W, stir, then another 30 seconds. When it is hot through to the center, squeeze a little citrus on top to bring the aroma back.
It can be frozen, but the offal smell and the onion texture come out a little stronger. If you freeze it, spread single portions thin and use within 1 month. After thawing, cook off moisture in a frying pan and finish with citrus instead of vinegar so the sourness does not get too sharp.
Frequently Asked Questions
I cannot get pork lung. Can I still make it?
Yes. Replace the 250 g pork lung with 200 g pork shoulder and keep the 300 g pork heart. The airy texture specific to lung weakens, but if you chop finely and reduce with vinegar and annatto, you still get the direction of bopis. If you also leave out the pork heart, it moves from offal dish toward a sour pork mince.
Is it more authentic with liver?
In a home version, it is easier to eat if you do not overdo it. If you want to add aroma to make up for lung, simmer just 60 g pork or chicken liver, chop to 5 mm dice and add it. Beyond 120 g, the iron-like smell comes forward and the impression becomes liver stir-fry more than bopis sourness.
Can I make it with rice vinegar alone?
Yes. 60 ml rice vinegar alone tends to give a sharp acid, so splitting into 40 ml rice vinegar and 20 ml apple cider vinegar rounds it. In either case, right after adding the vinegar boil it over medium heat for 2 minutes to drive off the sharp smell before adding liquid.
Can I make bopis that is not spicy?
Yes. Reduce the green chilies to 1 and remove the seeds. Do not settle the heat in the pot; put chopped chili and vinegar on the table separately so those who like heat can add it. Removing all heat makes the flavor flat, so keep the black pepper.
It turned too sour after reheating.
Reheating with added vinegar makes the sourness stand out too much. Loosen leftovers with 2 tsp water, warm in a frying pan, and squeeze a little citrus at the end for a better balance. Served over white rice, adding chopped onion or cucumber softens the sourness.











