How to keep a grocery price book: paper, spreadsheet or app
A price book is a running list of what you paid for the things you buy again. To keep one, pick fifteen to twenty items, and each time you buy one write down seven things: the item, the brand, the size, the price, the price per unit, the store and the date. Then compare each new price with the middle of your recent prices for the same brand and size. That middle is your usual price. A notebook is enough. A spreadsheet does the arithmetic. An app that reads receipts does the typing.
The short version
- Follow the fifteen to twenty things you buy most often. Leave the rest out.
- For each purchase write seven columns: item, brand, size, price, unit price, store, date.
- Unit price is the price divided by the size. It is how two sizes are compared fairly.
- Your usual price is the middle one of your recent prices for the same brand and size.
- When the size changes, the old prices stop being comparable. Compare per unit from then on.
What a price book is, and why it works
Prices move a little at a time, and a package can change size while its shelf price stays put. Memory keeps a rough sense of what things cost and loses the detail. A price book replaces that sense with a record of your own purchases, at your own stores, in the brands and sizes you buy.
It works because one price on its own means little. Five prices for the same thing show what is usual. Once you know what is usual, every new price can be judged. A tag that says "sale" either beats your usual price or it does not, and now you can tell which.
A receipt already prints most of what a price book needs. What a receipt knows that your bank statement does not goes through one receipt line by line.
The seven columns that matter
| Column | What to write | Why it is there |
|---|---|---|
| Item | What it is, in your own words: "ground coffee" | So you can find it again |
| Brand | The brand, or "store brand" | A different brand is a different product |
| Size | The number and the unit: 12 oz, 18 count, 1 gal | Without it, two prices cannot be compared |
| Price | What you paid for one, before tax | It is the figure the shelf tag shows |
| Unit price | The price divided by the size | It is the fair comparison across sizes |
| Store | Where you bought it | The same thing can cost a different amount at each store |
| Date | The day you bought it | So the prices line up in order |
Pick one unit for each item and keep to it: ounces for coffee, count for eggs, pounds for meat and produce, rolls or sheets for paper goods. Ounces of weight and fluid ounces are different units, so do not mix them in one item's history.
Which fifteen to twenty things to follow
Take your last three or four receipts and mark every item that appears on at least two of them. Those are your candidates. Keep the ones that pass three tests:
- You buy it at least once a month.
- You buy the same brand and size most times, or it is sold by weight.
- It is a real part of the bill: coffee, eggs, milk, meat, cooking oil, detergent.
Fifteen to twenty items is few enough to keep up. Following everything fails for two reasons. The log takes long enough that it is easy to give up. And an item you bought once has nothing to be compared with, so its row tells you nothing.
Three ways to keep it
Paper
Use a notebook with one page per item. Write the item and the brand at the top, then one row per purchase: date, store, size, price, unit price. Work out the unit price on your phone's calculator before you write the row. To find your usual price, read the last five rows and take the middle value.
For about ten tracked items in a week's shopping, expect ten to fifteen minutes a week. That is our estimate, so let your first week correct it.
A spreadsheet
Use one sheet with one row per purchase. This layout can be copied as it stands. The stores, brands and prices in it are invented.
| Date | Store | Item | Brand | Size | Unit | Price | Unit price | Key |
|---|---|---|---|---|---|---|---|---|
| 2026-09-05 | Thimbleby Market | Ground coffee | Brindle Roast | 12 | oz | 7.99 | 0.666 | Ground coffee / Brindle Roast / 12 oz |
| 2026-09-19 | Thimbleby Market | Ground coffee | Brindle Roast | 10.5 | oz | 7.99 | 0.761 | Ground coffee / Brindle Roast / 10.5 oz |
| 2026-10-03 | Thimbleby Market | Ground coffee | Brindle Roast | 10.5 | oz | 7.99 | 0.761 | Ground coffee / Brindle Roast / 10.5 oz |
| 2026-10-03 | Thimbleby Market | Eggs, large | Henwick Farm | 12 | count | 4.29 | 0.358 | Eggs, large / Henwick Farm / 12 count |
| 2026-10-06 | Fennimore Co-op | Eggs, large | Henwick Farm | 18 | count | 5.99 | 0.333 | Eggs, large / Henwick Farm / 18 count |
The columns run from A to I, with the headings in row 1. You type the first seven. The last two are formulas, written here for row 2:
Unit price (H2): =G2/E2
Key (I2): =C2&" / "&D2&" / "&E2&" "&F2
The key joins item, brand and size, so that only like is compared with like. On a second sheet, list each key once in column A and put this beside it to get the usual unit price:
=MEDIAN(FILTER(Log!H:H, Log!I:I=A2))
The formula assumes the first sheet is named Log. It takes the middle of every row with that key, so once the log is more than a few months old, move the oldest rows to another sheet to keep the usual price recent. If your spreadsheet program has no FILTER function, sort the log by the Key column and read the middle value of each group by eye. The median is a better "usual" than the average because one sale week does not drag it down.
The two egg rows show what the key protects you from. The 18 count costs less per egg than the 12 count: 33.3 cents against 35.8. That is a fact about two sizes at two stores. It does not mean eggs got cheaper, and with separate keys the sheet will never say so.
Typing ten rows a week takes five to ten minutes by our estimate, and the sheet does the dividing.
An app that reads receipts
An app can fill the same columns from a photo of the receipt. Receipts print the item, the price, the store and the date. Many print the size or the weight. Where a receipt prints no size, a unit price cannot be worked out from the receipt alone. The time this way costs is the photo, plus a look at any line the app got wrong.
Before you trust an app's arrows, check one thing: whether it compares the same brand and size, or treats every bag of coffee as the same coffee.
If you follow twenty things at one or two stores, a notebook or a spreadsheet does the whole job, and an app adds little. An app starts to make sense when you want every line of every receipt kept, or when more than one person does the shopping and nobody wants to type.
Reading the book
Here is one item's history. The store, the brand and the prices are invented. A household buys Brindle Roast ground coffee at Thimbleby Market, and after four months its book has eight rows:
| Date | Size | Price | Per ounce |
|---|---|---|---|
| Jun 6 | 12 oz | $7.49 | 62.4 cents |
| Jun 20 | 12 oz | $7.49 | 62.4 cents |
| Jul 11 | 12 oz | $6.49 | 54.1 cents |
| Jul 25 | 12 oz | $7.49 | 62.4 cents |
| Aug 15 | 12 oz | $7.99 | 66.6 cents |
| Sep 5 | 12 oz | $7.99 | 66.6 cents |
| Sep 19 | 10.5 oz | $7.99 | 76.1 cents |
| Oct 3 | 10.5 oz | $7.99 | 76.1 cents |
The usual price
By the end of July the usual price for the 12 ounce bag is $7.49. Put the four prices in order ($6.49, $7.49, $7.49, $7.49) and the middle is $7.49. The one sale week does not move it.
A real sale, and a tag that only looks like one
On July 11 a tag said "sale" and the price was $6.49, one dollar under the usual $7.49. The book confirms it: that was a real sale.
On August 15 the price went from $7.49 to $7.99 for the same 12 ounce bag. Same brand, same size, 50 cents more. That is a real price rise.
On October 3 a yellow tag said "Special, $7.99". The book shows $7.99 on each of the three rows before it. The tag was true, and the price was the ordinary one.
Why a changed size breaks the comparison
On September 19 the bag went from 12 ounces to 10.5 ounces. The shelf price stayed at $7.99, so a book that followed only the price would show no change at all. Per ounce, the coffee went from 66.6 cents to 76.1 cents, which is 14 percent more.
This is why size has a column of its own. When it changes, do three things. Start a new line of history for the new size, because $7.99 for 12 ounces and $7.99 for 10.5 ounces are the prices of two different products. Compare the two per unit, because that comparison still holds. And write a note on the row, such as "bag now 10.5 oz", so the jump in unit price has its reason beside it.
Two line charts of one invented coffee over eight purchases from June 6 to October 3. The shelf price is $7.49 on three of the first four purchases, with one sale at $6.49 on July 11, then rises to $7.99 on August 15 and stays there. The price per ounce follows it at 62.4 cents, 54.1 cents and 66.6 cents until September 19, when the bag shrinks from 12 ounces to 10.5 ounces. From that day the shelf price is still $7.99 and the price per ounce is 76.1 cents, 14 percent more.
The eight purchases as a table
Brindle Roast ground coffee at Thimbleby Market. The usual price from Jun 6 to Jul 25 is $7.49.
| Date | Bag | Shelf price | Per ounce | Marked on the picture |
|---|---|---|---|---|
| Jun 6 | 12 oz | $7.49 | 62.4 cents | |
| Jun 20 | 12 oz | $7.49 | 62.4 cents | |
| Jul 11 | 12 oz | $6.49 | 54.1 cents | Sale tag. $1.00 under usual. |
| Jul 25 | 12 oz | $7.49 | 62.4 cents | |
| Aug 15 | 12 oz | $7.99 | 66.6 cents | Up 50 cents. Same 12 oz bag. |
| Sep 5 | 12 oz | $7.99 | 66.6 cents | |
| Sep 19 | 10.5 oz | $7.99 | 76.1 cents | Bag goes from 12 oz to 10.5 oz. 66.6 to 76.1 cents per ounce. 14 percent more. |
| Oct 3 | 10.5 oz | $7.99 | 76.1 cents | Tag says Special. Same $7.99. |
Where Krataa fits, and where it does not
Krataa is an iPhone app, in beta, that builds a record like this one from a household's receipts. You photograph a receipt or share a screenshot or a PDF of an online order, and with automatic itemizing turned on Krataa lists every line. Once a thing has been bought on two or more receipts it appears on the Shelf. There the latest price is compared with your usual price, which is the middle price of your other receipts in the last 90 days for the same kind, brand and size. Weighed goods compare per pound. A different size gets a note and never an arrow. How Krataa follows what things cost over time has the detail.
Krataa does not tell you what a store charges today. It knows what your household paid. It does not work out a regular price, and on a receipt line it quotes a sale saving only where the receipt printed one. Between two sizes, kinds or stores you have bought, it shows the price per unit of each, and a card on the Shelf may point out the better buy. It records an item's brand and size only when the receipt prints them. You cannot merge or split items by hand, and a receipt that prints no weight cannot be compared per pound. Discover, the part of Krataa that compares prices between households, shows a price only after five households have added one, so it starts empty. Receipts are kept on Krataa's server, and with itemizing on each one is processed by a provider that the app names on the screen that asks, before anything is sent. Krataa runs on iPhone only and is not on the App Store today.