Penny Team Smart saving is a team sport.
Groceries

Aldi vs. Walmart vs. Costco: I Priced the Same 30 Items at All Three

I keep a price book — a boring little spreadsheet where I log what our staples cost at the stores near us. Every few months I run the same 30-item basket through all three of our options: Aldi, Walmart, and Costco. This is the August 2026 run.

Two ground rules before the table, because this is where most store-comparison articles cheat:

Rule 1: Cheapest comparable item at each store. That means store brands almost everywhere — Aldi's house labels, Great Value at Walmart, Kirkland Signature at Costco. Comparing Aldi's store brand to name-brand Cheerios at Walmart isn't a store comparison, it's a brand comparison, and that's a different article.

Rule 2: Everything is normalized to the same quantity. Costco doesn't sell one pound of butter; it sells four. So the Costco column shows the per-unit equivalent — what one pound costs inside the four-pack. Keep that in mind, because it's the whole plot twist of this article.

Prices are what I logged at my stores in the Midwest in August 2026, rounded to the nickel. Yours will differ — regionally, sometimes by a lot — but the pattern has held through every run I've done for three years.

Walmart$82.24Aldi$79.45Costco (per-unit)$70.9
The same 30 items, August 2026. Costco's bar assumes you only buy the quantity you need — which Costco does not allow.

The 30-item basket

Item (quantity) Aldi Walmart Costco*
Milk, whole (1 gal) $2.95 $3.04 $3.15
Eggs, large (1 doz) $2.80 $2.90 $2.55
Butter (1 lb) $3.65 $3.80 $3.25
Cheddar block (1 lb) $4.80 $4.95 $4.15
Greek yogurt (32 oz) $3.85 $3.95 $3.40
Sandwich bread (1 loaf) $1.45 $1.40 $2.25
Flour tortillas (20 ct) $3.30 $3.45 $2.90
White rice (per lb) $1.00 $0.95 $0.70
Spaghetti (1 lb) $0.95 $1.00 $0.85
Old-fashioned oats (per lb) $1.25 $1.30 $0.90
All-purpose flour (5 lb) $2.35 $2.45 $2.05
Sugar (4 lb) $2.90 $3.00 $2.60
Peanut butter (40 oz) $3.95 $4.10 $3.50
Chicken breast (per lb) $2.85 $2.95 $2.60
Ground beef, 80/20 (per lb) $5.50 $5.65 $4.90
Bacon (1 lb) $4.45 $4.60 $4.05
Frozen chicken nuggets (per lb) $2.95 $3.05 $2.55
Canned tuna (5 oz) $0.95 $1.00 $0.90
Bananas (per lb) $0.55 $0.57 $0.50
Apples, gala (per lb) $1.25 $1.35 $1.10
Baby carrots (1 lb) $1.45 $1.50 $1.20
Yellow onions (per lb) $0.85 $0.90 $0.70
Russet potatoes (per lb) $0.55 $0.58 $0.50
Frozen broccoli (per lb) $1.30 $1.35 $1.15
Canned diced tomatoes (14.5 oz) $0.95 $1.00 $0.85
Pasta sauce (24 oz) $1.55 $1.60 $1.40
Cheerios-style oat cereal (per lb) $1.95 $2.05 $1.70
Coffee, ground (per lb) $5.60 $5.85 $4.75
Olive oil (per qt) $8.90 $9.20 $7.60
Dish soap (per qt) $2.65 $2.75 $2.20

*Costco = per-unit equivalent price inside the bulk package.

Real numbers: the basket totals

  • Walmart: $82.24
  • Aldi: $79.45 — about 3% under Walmart
  • Costco (unit-equivalent): $70.90 — about 14% under Walmart
  • Costco (actual register total to obtain all 30 items in their real package sizes): roughly $210–$240

Larger published comparisons land in the same neighborhood: studies have found Aldi runs high-single-digits cheaper than Walmart, and Costco around 20% cheaper per unit. My basket agrees.

So Costco wins? Not so fast.

On paper, Costco beat Aldi on 28 of 30 items. Per unit, Kirkland Signature is genuinely the cheapest label in America for most of this list.

But look at that last line in the box. To walk out of Costco with all 30 items, I can't buy one pound of anything. I'm buying the 4-pack of butter, the 3-pack of pasta sauce, the 12-pound bag of rice. My register total triples, and now three other questions decide whether I actually saved money:

  1. Will you use it before it dies? Rice, oats, and dish soap: yes, obviously. A 3-pound tub of Greek yogurt in a house where one adult eats yogurt: that's a race against a date printed on the lid.
  2. Do you have $220 of grocery cash available this week? Bulk pricing is a loan you make to yourself. Plenty of months, we don't have the liquidity to prepay six weeks of pantry staples, and that's not a character flaw — it's cash flow.
  3. Did you pay to get in the door? A Costco Gold Star membership is $65 a year. On this basket's roughly 11% edge over Aldi, you need to route about $600 of annual spending through Costco just to break even on the card.

Who actually wins each category

Three years of price-book runs, compressed:

  • Dairy, meat, coffee, oil: Costco, by margins big enough to matter. These are also the categories where grocery inflation has bitten hardest — the BLS food-at-home index is up 2.7% over the past year, but beef specifically is up far more — so the bulk discount on proteins is worth real dollars now.
  • Produce for a family that shops weekly: Aldi. Costco produce is fine, but it comes in quantities that assume you're feeding a soccer team. Our Aldi produce loss rate is near zero; our Costco produce loss rate was embarrassing.
  • Bread and anything perishable-and-small: Aldi or Walmart. Costco's two-loaf bread pack is only a deal if you freeze one, and our freezer space is already spoken for.
  • The full one-stop weekly trip: Aldi, and it's not close once you count the register total instead of the unit price.

How to run this comparison yourself (the price-book method)

You don't need my spreadsheet; you need your own, because regional pricing differences are bigger than most national articles admit. The method, so you can replicate it honestly:

  1. Pick 25–30 items you genuinely buy weekly or monthly. Not a fantasy healthy-person basket — your actual repeat purchases. The comparison only matters if it's your food.
  2. Log prices in the same week at each store. Grocery prices move weekly; a basket priced at Store A in March and Store B in May is fiction. I use a notes app in the aisle; it takes maybe 12 extra minutes per trip.
  3. Write down price and size, then normalize. This is the step everyone skips and it invalidates everything. A $2.49 "quart" of dressing versus a $2.29 pint is not a win for the second bottle. Shelf tags' price-per-ounce lines do most of this math for you, but they compare inconsistent units (per ounce here, per pound there) often enough that I re-do it.
  4. Match quality tier, not label prestige. Cheapest comparable store brand at each store — and where a store brand doesn't exist for an item, note it rather than silently substituting the name brand, which quietly pads that store's total.
  5. Re-run it twice a year. Stores reprice constantly, and the "winner" for a category genuinely changes. Costco took the coffee crown from Aldi at my stores only last year.

What about the stores I didn't include? Quick honest notes from occasional runs: Lidl prices like Aldi where it exists (mostly the East Coast). Sam's Club prices like Costco with a cheaper membership. Kroger and the traditional supermarkets lose the staples race by 15–25% but partially claw it back with loss-leader sales and digital coupons — fine for cherry-picking deals, expensive as a default store. And dollar stores look cheap per package but lose badly per ounce on most food; they're a convenience play, not a grocery strategy.

The hybrid that we actually run

We do a monthly Costco run for exactly nine items — rice, oats, butter, cheese, coffee, olive oil, ground beef (split into freezer bags), chicken breast (same), dish soap — and a weekly Aldi trip for everything fresh. Walmart is the fallback for the specific name-brand items my family won't let me swap and for weeks when the budget is genuinely tight and I don't want bulk-size temptation.

That hybrid saves us roughly $25–$35 a month versus all-Walmart, all the time — call it $300–$400 a year for one extra stop a month. Not life-changing. Extremely real.

If you only take one thing from my spreadsheet, take this: the store that's cheapest per unit and the store that's cheapest for your week are often different stores. The unit price is math; the right store is math plus your fridge size, your cash flow, and your family's honest eating habits. Price the basket you actually buy — it takes one trip with your phone's notes app — and let your own table settle it.