I spent most of last winter making dense bean salad wrong. Mine came out of the fridge on Tuesday looking exactly the way it looked on Sunday, which sounds like a win until you eat a forkful and realize nothing has happened to it. The beans had not taken on anything. I had been dressing them the way you dress a green salad, light hand, lots of oil, when what beans actually want is acid and time. This version fixes that. It also does something almost none of the viral ones do, which is clear 32 grams of protein per serving without a single piece of chicken or salami in the bowl.
Why the protein number in most bean salads disappoints you
If you have been scrolling these, you have probably noticed the same thing I did. Nearly every recipe promises high protein, and then you scroll to the nutrition box and find 12 grams. Or 19. Or 22, which is closer but still not a lunch that holds you until dinner.
The math is stubborn. Canned beans sit around 6 to 7 grams of protein per 100 grams, and they bring a lot of carbohydrate along for the ride. To reach 30 grams from beans alone you would be eating close to a pound of them per serving, and you would still be dragging your protein-to-calorie ratio down while you did it. The recipes that genuinely hit 30 grams almost all solve it the same way: rotisserie chicken, cubed salami, fried halloumi.
I wanted a vegetarian answer. The one that worked is a full 16 ounce bag of shelled edamame, thawed, folded straight in with the canned beans.
Edamame is a bean, so nothing about the promise breaks. But nutritionally it behaves like a different ingredient entirely. It carries roughly 12 grams of protein per 100 grams, nearly double what canned black beans give you, and about 39 percent of its calories come from protein. That one swap is what lifts the whole bowl over the line. The cubed part-skim mozzarella finishes the job and gives you something to bite that is not a legume.
What goes in the bowl, and what I deliberately left out
Three cans, one bag
Black beans, cannellini beans, and chickpeas make the base. I use half a can of chickpeas rather than a full one, which is a small thing that keeps the carbohydrate load reasonable and the ratio where I want it. Cannellini beans go soft and creamy and soak up dressing better than anything else in the bowl. Black beans hold their shape all week. Chickpeas give you the nutty, slightly firm bite that keeps the texture from turning uniform.
Buy the no-salt-added cans if your store carries them. This is not a fussy preference, and I will show you the sodium numbers further down.
The crunch layer
Red bell pepper, English cucumber, red onion. That is it. Dice everything to roughly the size of a chickpea so no single ingredient dominates a forkful.
You will notice what is missing. No corn, which is the standard addition in the American versions and which costs you carbohydrate for about 2 grams of protein. No tomatoes, because they weep and turn the bottom of your container into soup by Wednesday. No lettuce, obviously, since a salad with no greens is the entire point of the format.
A dressing that is mostly acid
One tablespoon of olive oil for four servings sounds stingy. It is deliberate. The edamame and the mozzarella already bring plenty of fat, and the dressing’s job here is not richness, it is penetration. Red wine vinegar, fresh lemon juice, grated garlic, dried oregano, and Dijon mustard do the actual work. The Dijon emulsifies the whole thing so it clings instead of pooling.
How this dense bean salad comes together

Start with the beans in a fine-mesh strainer under cold running water. Rinse for a full 30 seconds, longer than feels necessary, until the cloudy foam stops appearing. Then shake the strainer hard and walk away for a minute. Wet beans dilute your dressing.

Next, the edamame. Tip the frozen bag into a bowl and run cool water over it for two or three minutes until the pods are bright green and completely thawed. Drain, then pat dry with a clean towel. This is the step people skip and then wonder why the salad tastes watery on day two.

Now the vegetables. Dice the bell pepper, seed and dice the cucumber, mince the red onion. Seeding the cucumber matters more than it sounds like it should, because the seed core is where all the liquid lives.

The dressing goes in a small jar rather than a bowl. Olive oil, red wine vinegar, lemon juice, Dijon, grated garlic, oregano, salt, pepper, red pepper flakes. Seal it and shake hard for a full 20 seconds. You will see it thicken and turn cloudy, which is the mustard doing its job.

Then the toss. Use your biggest bowl, bigger than you think you need, because you are working with close to four pounds of food. Add the beans, the edamame, and the diced vegetables, pour the dressing over the top, and fold with a wide spatula until every bean has a sheen on it. Fold, do not stir. Stirring breaks the cannellini.

Last, the mozzarella and the parsley. Add both, then fold exactly twice more. Any more and the cheese starts to smear instead of staying in distinct cubes. Divide into four airtight containers and give it at least half an hour in the fridge before you eat any of it.
Recipe card

High-Protein Dense Bean Salad
Three canned beans, a full bag of shelled edamame, and cubed mozzarella folded through a lemon Dijon vinaigrette. No cooking, 25 minutes of chopping, and 32 grams of protein in every container.
Ingredients
- 1 can (15 oz / 425 g) no-salt-added black beans, drained and rinsed (about 250 g drained)
- 1 can (15 oz / 425 g) no-salt-added cannellini beans, drained and rinsed (about 250 g drained)
- 120 g no-salt-added chickpeas, drained and rinsed (about half a 15 oz can)
- 1 bag (16 oz / 454 g) frozen shelled edamame, thawed
- 113 g (4 oz) low-moisture part-skim mozzarella, cut into 1/4-inch cubes
- 180 g red bell pepper (about 1 large), finely diced
- 180 g English cucumber (about half a large), seeded and diced
- 70 g red onion (about half a small), finely diced
- 25 g flat-leaf parsley (about 3/4 cup packed), chopped
- 1 tbsp (14 g) extra-virgin olive oil
- 2 tbsp (30 ml) red wine vinegar
- 2 tbsp (30 ml) fresh lemon juice
- 2 tsp (10 g) Dijon mustard
- 3 cloves garlic (9 g), grated
- 1 tsp dried oregano
- 1/2 tsp kosher salt
- 1/2 tsp black pepper
- 1/4 tsp red pepper flakes
Instructions
- Tip the black beans, cannellini beans, and chickpeas into a fine-mesh strainer, rinse under cold running water for a full 30 seconds until the foam disappears, then shake the strainer hard and let them drain while you work.
- Pour the frozen shelled edamame into a bowl, run cool water over them for two to three minutes until they are fully thawed and bright green, then drain and pat dry with a clean towel so they do not water down the dressing.
- Finely dice the red bell pepper, seed and dice the English cucumber, and mince the red onion, keeping every piece roughly the size of a chickpea so each forkful gets all of it.
- In a small jar, combine the olive oil, red wine vinegar, lemon juice, Dijon mustard, grated garlic, oregano, salt, black pepper, and red pepper flakes, then seal and shake for 20 seconds until it thickens and turns cloudy.
- Add the drained beans, edamame, and diced vegetables to your largest bowl, pour the dressing over the top, and fold everything with a wide spatula until every bean carries a sheen.
- Add the cubed mozzarella and chopped parsley, fold twice more so the cheese stays in distinct cubes, then divide into four airtight containers and refrigerate at least 30 minutes before the first serving.
Nutrition (per serving)
- 450Calories
- 32 gProtein
- 48 gCarbs
- 15 gFat
- 17 gFiber
Nutrition information is calculated using ingredient databases and is an estimate. Actual values may vary based on specific ingredients and brands used.
The numbers, including the ones most bean salads skip
Per serving, estimated: 450 calories, 32 grams of protein, 48 grams of carbohydrate, 15 grams of fat, 17 grams of fiber.
Protein accounts for about 28 percent of the calories here, which is the threshold I hold every recipe on this site to. But I want to give you the other number too, because it is the one that usually gets buried. Fat accounts for about 30 percent of calories. That is not from the dressing, which is one tablespoon of oil split four ways. It is from the edamame, which brings roughly 5 grams of fat per 100 grams, and from the mozzarella. It is a reasonable number for a full meal. I would rather print it than let the protein figure quietly do all the talking.
Sodium is where this recipe genuinely separates itself. Using no-salt-added cans and half a teaspoon of kosher salt, a serving lands around 374 milligrams. For reference, a well-regarded high protein bean salad I looked at while researching this comes in at 1,248 milligrams per serving. That is not a knock on the recipe, it is what happens when you use regular canned beans and a salty cheese without compensating elsewhere. Rinsing your beans hard and buying the no-salt cans is most of the difference.
One honest caution about the fiber. Seventeen grams in a single sitting is a lot, more than half the 28 gram daily value in one lunch. If beans are not already a regular part of how you eat, start with a half portion for the first couple of days and let your system adjust. This is a real effect, not a theoretical one, and it is better to know going in.
What I have learned making this four times
Salt the cucumber and drain it. If you are making this on Sunday for a Thursday lunch, toss the diced cucumber with a pinch of salt, let it sit in a strainer for ten minutes, then pat it dry before it goes in. You lose a little crunch and you gain two days of shelf life.
Grate the garlic instead of mincing it. Raw minced garlic in a cold salad turns aggressive by day three. Grated on a microplane, it dissolves into the dressing and stays civil.
The gluten question comes down to one ingredient. Every other component here is naturally gluten free, but Dijon mustard is not universally certified. If that matters in your household, check the label or use a certified brand.
Ways to eat it that are not just a container with a fork
Spoon it over a bed of arugula if you want volume without much else. Fold a portion into a warm whole wheat pita. Scoop it with sturdy tortilla chips as a party dish, which is what I do when I have made a double batch and lost interest in eating it as a meal.
You will also have half a can of chickpeas left over, which is intentional. They go straight into a lemony chickpea lunch built for the fridge, which is the other cold container I rotate through the week.
When I want the same make-ahead rhythm but hot, I air-fry a batch of crisp tofu cubes over brown rice, which leans on the same bag of shelled edamame this salad does.
And on the nights when a cold bowl is the last thing I want, a spoonable legume dinner for colder evenings scratches the same bean itch in a completely different form.
Storing it for the week
Four days in an airtight container in the fridge, and the flavor peaks somewhere around day two. Beans are one of the few things that genuinely improve with marination, because the dressing keeps working its way into them. Stir each portion before you eat it, since the dressing settles.
Do not freeze it. The vegetables collapse and the mozzarella turns rubbery.
Common questions
What is a dense bean salad?
It is a salad built on beans instead of greens, with chopped vegetables, some kind of cheese or protein, and a dressing that marinates into everything over several days. The format was named and popularized by Violet Witchel, who started posting weekly versions as meal prep. Dense refers to the fact that it is substantial enough to be an actual meal rather than a side.
How do you get 30 grams of protein in a dense bean salad?
Canned beans alone will not get you there at a sane portion size. You need a second protein doing real work. Here it is a full bag of shelled edamame plus cubed part-skim mozzarella, which together contribute more protein than all three cans of beans combined.
How long does dense bean salad last in the fridge?
Four days in an airtight container. The vinaigrette base helps, since acid-dressed salads hold better than creamy ones. If yours has tomatoes in it, cut that to three.
What beans work best in a dense bean salad?
A mix of textures beats any single bean. Cannellini for creaminess, black beans for structure, chickpeas for bite. Navy, pinto, or butter beans all substitute cleanly as long as you keep the total weight the same.
Can you make a dense bean salad without chicken or salami?
Yes, and this recipe is the proof. The meat in most versions is there to solve the protein problem, not the flavor problem. Edamame and cheese solve it just as well and keep the whole thing vegetarian.
Why does bean salad taste better the next day?
Beans are porous. They absorb dressing slowly, so a salad that tastes flat and separated an hour after mixing tastes seasoned all the way through after a night in the fridge. Give it at least 30 minutes and preferably overnight.
Make it once and see where day three lands
The thing I keep coming back to with this dense bean salad is that it removes a decision. Four containers, 25 minutes of chopping, and lunch stops being something you think about until Thursday. No reheating, no assembly, no sad desk sandwich.
Make it this weekend and tell me how it tastes on day three, because that is when it is at its best and almost nobody eats it that late. If you swap in a bean I did not use or find a combination that works better, leave a comment. I read every one, and half the tips in this post came from people who made it before you.