Twelve months ago, I started tracking the price of the same 20 grocery staples across 16 Portland-area grocery stores, armed with nothing but a spreadsheet. This month's report is the 12th. The store list has grown to 19 — down from a peak of 21 last November — after one closure, one acquisition, and five additions along the way. Nearly 4,720 individual prices later, here's what a full year of data says about how Portland grocery prices have shifted over time.

The short version: the average basket eased for a second straight month, down 1.6% to $94.36. But the more interesting story is underneath — potatoes just posted their highest average price of the entire 12-month run, eggs just posted their lowest, and the two are moving in exactly opposite directions for exactly the reasons you'd guess.

New here? Each month, I track the prices of the same 20 grocery staples at stores across town as part of my ongoing Portland Price Tracker project. It's the best local snapshot of how grocery prices are shifting in the Portland market.

A Year in Stores

I’ve spent a year meticulously tracking prices of grocery staples, and my camera roll is filled with photos like these, of various grocery displays at stores around Portland. (Bryan M. Vance/Stumptown Savings)

Before the July numbers: some context on how this project itself has changed. The tracker launched in August 2025 with 16 stores. By November it had grown to 21 — the most it's ever tracked at once — after adding Chuck's Fresh Markets, Costco, and Roth's Fresh Markets in September, Basics Market in October, and Zupan's Markets in November. Since then it's shrunk back to 19: Sheridan Fruit Co. closed for good and dropped out in February, and Basics Market's Hillsdale location was acquired and rebranded as Market of Choice in June. Net change over the year: +3 stores, and a dataset that's meaningfully broader than the one this project started with.

Over that time, I’ve spent dozens of hours in grocery stores, updating an increasingly large Google Sheet, and improving my methodology. I’ve seen some dramatic price changes, and noticed first hand how subtle inflation is. The result is the most comprehensive local database of Portland-area grocery prices.

How July Compared to June

Across the 19 stores tracked in both months, the average 20-item basket fell to $94.36, down $1.50 (1.6%) from June's $95.86.

Almost all of that move traces back to one store and one item. Grocery Outlet's basket dropped 22.5%, by far the largest single-store swing of the month, entirely because vegetable oil came back in stock. In June, the store didn't have vegetable oil in stock, so we tracked the closest available substitute — a smaller canola-olive blend, converted to our standard 48-oz. comparison size — which inflated June's number. That substitute is gone now; July's price reflects the normal product back on the shelf. It's a good reminder of something this tracker runs into periodically: closeout and discount grocers can look artificially expensive (or cheap) in a given month purely because of what happened to be in stock that week, not because prices actually moved. (This is why Grocery Outlet’s trends yo-yo in our tracker.)

Take Grocery Outlet's swing out of the picture and the rest of the panel was fairly quiet. Ten of the other 18 stores got a little cheaper. The biggest upward mover was Chuck's Fresh Markets, with its total basket price up 8.9% — driven almost entirely by russet potatoes, the same item pushing the average higher across the board.

The Portland Price Tracker Runs On Reader Support

Every price in this report was collected by hand — no algorithm, no sponsor, no AI. If you want to see it keep going, become a Savers Club member for $8/month and get complete access to The Vault, the Stumptown Savings Community, seasonal produce guides, a quarterly zine, members-only events, and first access to everything we build next.

How Prices Moved By Group

Budget Champions — Costco, Grocery Outlet, Walmart, and WinCo — fell 7.4% on average, the biggest group move of the month, almost entirely the Grocery Outlet oil correction described above. WinCo continues to barely move month to month (down another 3%) and remains the cheapest store in the tracker by a wide margin — and the most stable.

Conventional Contenders — Albertsons, Fred Meyer, QFC, Safeway, and Trader Joe's — eased 0.8%. Albertsons led the group lower (down 6.3%), while Fred Meyer and QFC both ticked up modestly.

Premium Grocers — Chuck's Fresh Markets, Market of Choice, New Seasons, Roth's Fresh Markets, Whole Foods, and Zupan's Markets — fell 0.4% as a group, but that average hides a real split. Whole Foods (down 9.5%) and Market of Choice (down 6.5%) pulled the group down. On the other side, New Seasons posted the single largest dollar jump of any item at any store this month: russet potatoes went from $7.45 to $12.45, up $5 (+67%). Chuck's Fresh Markets and Roth's Fresh Markets — the panel's two other big upward movers this month, up 8.9% and 8.2% overall — also got hit by the same item: both moved from $3.45 to $4.95 for the identical 5-lb. bag of russet potatoes, a 43% jump, by coincidence.

Specialty & Co-ops — Alberta Co-op, Barbur World Foods, Natural Grocers, and People's Food Co-op — fell 0.7% as a group. Natural Grocers dropped 4.8%, while People's Food Co-op rose 2.5% — its russet potatoes also jumped, from $7.45 to $11.45, one of the largest single-item moves anywhere in the dataset this month.

What Rose, What Fell

Russet potatoes hit a new 12-month high, averaging $5.35 for a 5-lb. bag, up 12.4% from June and now above the previous high of $4.76 set just last month. It's been the most consistent upward trend of any item in the dataset — Aug '25 started at $4.50, and July ‘26 is the first month it's cleared $5.

Yellow onions also hit a new 12-month high, at an average of $1.45/lb., up 6.6% from June and above February's previous high of $1.38/lb. — the third straight month their prices have climbed.

Vegetable oil fell 8.5% to $8.64, largely the Grocery Outlet correction, though it's worth noting oil has been one of the more volatile items in the tracker all year — it ranged from a low of $7.85 to a high of $9.93 over the 12 months.

On the other side: eggs hit a new 12-month low ($2.97, down 1.3% from June) — capping the steadiest, most consistent decline anywhere in this dataset. Eggs opened the tracker at $4.48 in August 2025; a year later they're down more than a third.

Ground beef and chicken breast both eased too (down 6.1% and 7.1%), continuing to give back some of their spring highs.

1 Year In: The Big Picture

With 12 months of data now in hand, a few things stand out that a single month-to-month comparison can't show:

Eggs are the single biggest story of the year. A large dozen of cage-free eggs (or their equivalent) is down from an average of $4.48 to $2.97 — a decline that's been essentially uninterrupted since the tracker started. This coincides with a bigger trend over the past 18 months: a great reset from record-breaking egg prices, and price collusion among some of America’s largest egg producers. 

Sugar and coffee both climbed steadily — sugar from an average of $5.30 for a 4-lb. bag to $7.05 and coffee from an average of $8.82 for a 12-oz. bag to $9.98 across the full 12 months, tracked across whatever store panel existed each month.

Bananas were the flattest item in the entire dataset. They opened at $0.81/lb. in August 2025 and closed July at the same $0.81/lb. — the tightest range of anything we track (never moving more than 6 cents in either direction all year).

For a cleaner apples-to-apples read since the tracker launched, I limited the comparison to the 13 stores with complete data in both August 2025 and July 2026. A few stores have gaps in the earliest months, from before I'd nailed down how to handle items a store doesn't carry — more on that in the Methodology section. On that basis, the average basket is up 3% since the tracker launched, from $80.98 to $83.43. The standout mover is Alberta Co-op, up 18.7% — by far the largest single-store increase in the panel — while Grocery Outlet (down 7%) and QFC (down 6.2%) both got meaningfully cheaper over the same period. 

It’s worth noting, as local co-ops, Alberta and People’s Food don’t benefit from the same subsidies and other market influences that can make food cheaper than it is to produce. That, plus their dedication to sourcing ethically, prioritizing organic and local producers, and paying workers higher wages leads to naturally higher prices. That’s one of the main reasons I group stores by category: It’s not fair to compare those two stores to budget chains like WinCo and Grocery Outlet.

How This Compares to the Official Numbers

It's worth putting this dataset next to the official picture, even if the timing doesn't line up perfectly. The Bureau of Labor Statistics' most recent West Region Consumer Price Index — released July 14 and covering data through June 2026 — shows food-at-home prices (grocery store purchases specifically) up 2.6% over the 12 months ending in June, with all six major grocery categories rising over that span. The broader all-items index for the West region, which includes housing, energy, and everything else, rose 3.2% over the same period. (The BLS won't publish July's regional numbers until Aug. 12 — after this issue goes out — so June is the most current comparison point available.)

My own 20-item basket, on the 13-store common panel described above, rose 3% over roughly the same stretch — close to the official national food-at-home rate, landing between it and the broader all-items number. That's a reasonable sanity check: a hyper-local, 20-item snapshot of Portland-area stores tracking within half a point of the government's regional grocery figure, despite measuring completely different baskets with completely different methods.

One category jumps out in the BLS breakdown: fruits and vegetables rose 7.1% over the year regionally — by far the largest increase of any grocery category, and well ahead of meat/poultry/fish/eggs (+1.9%) or dairy (+1.5%). That lines up with what's showing up in the Portland Price Tracker's own numbers: russet potatoes and yellow onions both hit new 12-month highs this month, and produce broadly has been one of the more volatile parts of the basket all year.

Explore the Data Yourself

The Portland Price Tracker interactive database now holds more than 4,700 data points across a full 12 months and 19 stores. July's numbers are live now — filter by store, filter by item, and see exactly where your grocery dollar goes furthest this month.

Lowest Prices in Portland, July 2026

  • 🥚 Eggs (large, cage-free, dozen): $0.99 — Grocery Outlet

  • 🍌 Bananas: $0.50/lb. — WinCo Foods or Walmart

  • 🧅 Yellow onions: $0.54/lb. — WinCo Foods

  • 🥗 Romaine lettuce: $1.28 — WinCo Foods

  • 🥔 Russet potatoes (5-lb. bag): $1.68 — WinCo Foods

  • 🍞 Whole wheat sandwich bread (20 oz.): $1.48 — WinCo Foods

  • 🐟 Canned tuna (5 oz.): $0.88 — WinCo Foods

  • 🧀 Cheddar cheese (8 oz.): $1.79 — WinCo Foods

  • 🍎 Apples: $0.59/lb. — Chuck's Fresh Markets

  • 🍗 Chicken breasts: $2.52/lb. — WinCo Foods

  • 🍝 Pasta sauce (24 oz.): $1.74 — WinCo Foods

  • 🍝 Spaghetti (16 oz.): $0.98 — WinCo Foods

  • 🌾 All-purpose flour (5 lb.): $2.38 — Walmart or WinCo Foods

  • 🍬 Granulated sugar (4 lb.): $2.99 — Grocery Outlet

  • 🧈 Salted butter (1 lb.): $2.98 — WinCo Foods

  • 🥛 Whole milk (1 gallon): $3.90 — Costco (sold in a larger quantity)

  • 🐮 Ground beef (80/20): $4.99/lb. — Albertsons, Grocery Outlet, or Safeway

  • ☕ Ground coffee (12 oz.): $5.16 — Costco (sold in a larger quantity)

  • 🫒 Vegetable oil (48 oz.): $3.50 — Costco (sold in a larger quantity)

  • 🧻 Toilet paper (12-pack): $3.99 — Grocery Outlet

Methodology

The Portland Price Tracker tracks a fixed basket of 20 commonly purchased grocery items at Portland-area grocery stores once per month. Prices are collected in person or via current weekly online listings (when the store guarantees it honors in-store pricing) and reflect the lowest available price during the tracking week. Prices for July 2026 were collected during the third week of July. Month-over-month figures compare the same 19 stores in both months. Organic items are flagged separately and excluded from conventional basket totals.

When a store doesn't carry an item or a close alternative, we use the average price across all other tracked stores that month as a stand-in, flagged in our database. This currently affects only one item: canned tuna at People's Food Co-op. If a store carries a close alternative, as is the case with People's Food Co-ops vegan alternatives for ground beef and chicken, we standardize the pricing and track it with a note. This approach has been consistent since October 2025; the first two months of tracking (August and September 2025) predate it, which is why a handful of cells at Natural Grocers, Sheridan Fruit Co., and People's Food Co-op are incomplete for those two months specifically — those store-months are excluded from any comparison that depends on them, including the since-launch figures above.

Data analysis was assisted by Claude (Anthropic). All data collection, editing, and reporting is done by me.

The Bottom Line

A year ago, this project was 16 stores and a hunch that Portland grocery prices deserved better tracking than the national headlines were giving them. Twelve months and almost 4,720 data points later, the picture is clearer than any single month could show: eggs are down more than a third, potatoes and onions just hit new highs in the same month, and bananas — somehow — haven't moved. This local basket's 3% rise since the tracker launched lands close to the BLS's own 2.6% regional grocery number, which is about as good a validation as a spreadsheet and 19 store visits a month can get. July itself was a quiet month on the surface (down 1.6%) with one loud exception (Grocery Outlet's oil restock) and one real trend underneath (potatoes climbing for the second month running).

What's the Portland grocery trend from this past year that surprised you most? Let me know in the comments.

You Just Read A Year Of Grocery Data No One Else In Portland Has

19 stores. 20 items. More than 4,700 prices, tracked by hand, every single month for a year. That's not a press release or an algorithm — it's one person with a spreadsheet, checking prices in person so you don't have to guess where your money goes furthest.

This work is funded by readers who become Savers Club members — $8/month, $80/year, or $250 for life.

If a year of data like this is worth something to you, help make sure there's a second one.

$8/month or $80/year · Cancel anytime

See you at the market,
Bryan,
Stumptown Savings

Keep Reading

View more