← All articles
Guide

Home Inventory Spreadsheet: Template & Limits

A copy-ready column layout for a home inventory spreadsheet, the formulas that flag expiring items, and the three things a spreadsheet genuinely cannot do.

5 min read
读中文版 →
Contents

Most people who search for a home inventory template, build one, and then quietly stop using it within a month. Not because the spreadsheet was bad — because nobody told them where it would break.

This piece comes in two halves. First, a column layout and set of formulas you can copy straight across — that part genuinely works. Then an honest account of the three things a spreadsheet cannot do. You are welcome to use only the first half.

1. Which columns you actually need

Most first attempts have two columns: item name and quantity. Two weeks later you stop updating it.

Only one thing decides whether a spreadsheet survives: how cheap it is to add a row. Fewer columns means less friction, but below a certain point the sheet stops being useful. Ten columns is the sweet spot:

ColumnExampleWhy it earns its place
ItemSoy sauceSo you can search
CategoryCondimentsCounts what you own most of
RoomKitchenLocation, level 1
FurnitureWall cabinetLocation, level 2
ContainerLeft-hand boxLocation, level 3
Quantity2Tells you whether to restock
Purchased2026-08-12Warranty, age
Expires2027-02-01Every formula below depends on it
Unit price12.50Value tracking
NotesGlass bottleOptional

Location is three columns rather than one on purpose.

Written as a single cell — “kitchen wall cabinet left-hand box” — it reads fine, but you cannot filter by room or count how much is in the kitchen. Three columns is the coarsest grain that still sorts. A fourth level is not worth it; you will not remember the path yourself.

2. Making expiry dates flag themselves

This is the most useful part of the article. Assume your data starts on row 2 and the expiry date is in column F.

Days remaining

In the “Days left” column — say column I — put this in cell I2:

=IF(F2="","",F2-TODAY())

Empty expiry dates stay blank; otherwise you get the number of days from today. A negative number means it has already expired.

Plain-English status

In column J, cell J2:

=IF(F2="","",IF(F2<TODAY(),"Expired",IF(F2-TODAY()<=30,"Expiring soon","OK")))

Now the sheet says Expired, Expiring soon or OK, and you never do mental date arithmetic.

Colour, because text alone gets ignored

Select the whole data range — for example A2:J1000 — then:

Home → Conditional Formatting → New Rule → Use a formula to determine which cells to format

First rule, expired in red:

=AND($F2<>"",$F2<TODAY())

Second rule, within 30 days in amber:

=AND($F2<>"",$F2-TODAY()<=30,$F2>=TODAY())

Handy extras

Total items        =COUNTA(A2:A1000)
Total value        =SUM(H2:H1000)
Count in category  =COUNTIF(B2:B1000,"Condiments")

Column H is line total, using =IF(D2="","",D2*G2) — quantity times unit price.

At this point you have a working home inventory spreadsheet.

And honestly: if you own fewer than about 100 things, you are the only person maintaining it, and you mostly do this sitting at a computer, this is enough. You do not need an app. Do not adopt a tool for its own sake.

3. Three things a spreadsheet cannot do

If you have been running one for a few months, you have almost certainly hit all three.

It will never tell you anything unprompted

This is the fundamental one, and there is no way around it.

TODAY() recalculates only while the file is open. With the workbook closed, it knows nothing. So “expiry reminders” in practice means “the days you happen to open the spreadsheet and look” — which is precisely the problem you set out to solve.

A reminder is only useful when it arrives while you are not thinking about it. A spreadsheet cannot do that.

It is not there when you need it most

The place you most often buy a duplicate is standing in a shop aisle. That is not when you open Excel on a desktop.

Excel on a phone works, but typing into a ten-column grid on a phone is hard to sustain. So you stand in the aisle wondering whether you still have a bottle at home, and buy one anyway.

Entry costs too much

Twenty items from one shopping trip means twenty rows, twenty dates, twenty prices. On a first pass through the whole house, the cost is high enough that most people quit on day two.

That is not laziness. Any system that requires manual line-by-line entry will lose to a cheaper path every single time.

4. How an app handles the same three problems

These three are what I eventually built an iOS app around — AllMyThings. Its answers are:

9:41
‹ Back Skip
Recognition result

Amino Acid Shampoo

2 / 5
🧴
Name confidence 68% — this may be the subtitle on the packaging. Worth a check.Rename
Name Amino Acid Shampoo
Category Household · Hair care
Quantity 1 bottle
Location Not placed Choose
Expires 2027-06-30
Paid ¥89.00
2 more to confirm
Confirm · next
One photo fills in the name, category, expiry date and price
  • Entry: point the camera at the item, and the name, category, expiry date and price are filled in. You confirm. Twenty items take a few minutes.
  • Location: room, furniture, container — mapped one-to-one onto the three columns above, and searching an item shows the full path.
  • Reminders: the important one. It notifies you before something expires, without you having to remember it exists.

5. Where to start

The order I would suggest:

  1. Build the sheet above first, even if you only log a single drawer. You will quickly learn whether three-level locations and expiry dates are worth it for you.
  2. Wait until it breaks — usually the moment you are standing in a shop unable to remember what is at home — and only then consider a different tool.

If you have not started logging anything yet, read what I found after logging all 128 things in my home. It solves a different problem from this article, but it is the better starting point.

Keep reading