Inventory Aging Report
See how old your stock is and which items have stopped moving. Paste your stock list from Excel or open a CSV file: you get stock by age bucket, slow-moving and non-moving stock that may be obsolete, and a report to download. Your data stays in your browser.
Your stock list
One row per stock line: item code, quantity on hand and the date it was received. Unit cost and the last issue date are optional. Use one row per batch or receipt if you track them. A header row is fine.
Check the columns and dates
First rows as read
Age buckets and slow-moving limits
Aging report
| Row | Item | Reason |
|---|
Stock by age
| Age | Lines | Quantity | Value | Share of value |
|---|
Stock by movement
| Status | Lines | Quantity | Value | Share of value |
|---|
Stock lines, oldest first
| Item | Description | Qty | Value | Received | Age (days) | Last issue | Days without movement | Status |
|---|
Your file and figures stay on this device. The page reads them in your browser; nothing is uploaded, sent or saved. Download or print your result before you close the page.
What an inventory aging report shows
An inventory aging report groups the stock you hold by how long it has been in the warehouse: 0 to 30 days, 31 to 60 days and so on. Old stock ties up money and space, and for dated goods it is a sign of expiry risk. This tool also looks at movement: an item can have been received long ago and still be issued every week, while another has not been touched for a year.
What you need
| Column | Needed? | Notes |
|---|---|---|
| Item code | Yes | The same item may appear on several rows, one per batch or receipt. |
| Quantity on hand | Yes | More than 0. Rows with 0 are listed as not included. |
| Date received | Yes | Age is counted from this date. Not after the report date. |
| Last issue date | Optional | Without it, days without movement are counted from the date received. |
| Unit cost | Optional | Needed for values and the share of stock value. |
| Description | Optional | Carried through to the report and the CSV. |
Copy the cells from Excel or Google Sheets and paste them, or save the sheet as CSV UTF-8 and open the file. Excel workbooks (.xlsx) cannot be opened directly. Up to 10,000 rows and 5 MB.
How it is worked out
Age = report date − date received, in whole days.
Days without movement = report date − the later of the date received and the last issue date. Without a last issue date, it is the same as the age.
Status: Active up to 90 days without movement, Slow-moving from 91 to 180 days, No movement after 180 days. Both limits can be changed.
Value = quantity on hand × unit cost. Lines without a unit cost are counted in quantities and left out of the value totals, and the tool says how many.
Average age is weighted by quantity, and also by value when costs are given, so a large old batch counts for more than a single old carton.
A line exactly on a limit belongs to the lower bucket: 30 days old is in 0–30 days. Bucket limits can be changed, for example to 90, 180, 365 for slow-moving spare parts.
Worked example
Eight stock lines on a report date of 1 October 2026. Press Try an example above to load them.
| Item | Received | Age | Last issue | Days without movement | Value | Status |
|---|---|---|---|---|---|---|
| D-415 Spare V-belt | 2025-09-01 | 395 | none | 395 | 216.00 | No movement |
| F-620 Pallet wrap (old type) | 2025-11-20 | 315 | 2026-02-11 | 232 | 760.00 | No movement |
| C-330 Shrink film roll | 2026-03-02 | 213 | 2026-05-20 | 134 | 1,375.00 | Slow-moving |
| G-730 Seal kit | 2026-05-10 | 144 | 2026-06-20 | 103 | 570.00 | Slow-moving |
| A-100 Juice, older batch | 2026-06-15 | 108 | 2026-08-30 | 32 | 135.00 | Active |
| E-500 Label roll | 2026-07-01 | 92 | 2026-09-30 | 1 | 480.00 | Active |
| B-210 Sugar 50 kg bag | 2026-08-10 | 52 | 2026-09-25 | 6 | 2,280.00 | Active |
| A-100 Juice | 2026-09-20 | 11 | 2026-09-29 | 2 | 1,080.00 | Active |
Total stock value is 6,896.00. Slow-moving and non-moving stock is 1,945.00 + 976.00 = 2,921.00, or 42.4% of the value, in 4 of 8 lines. The label roll is 92 days old but was issued yesterday, so it is active. Item A-100 appears twice because each batch has its own date received.
Preparing your list
- Export one row per stock line: item code, quantity on hand and date received. Add unit cost and the last issue date if you have them. If you track batches or receipts, use one row per batch so each has its own date.
- If your system only has a first-in date per item, use it, and remember that the age then belongs to the oldest stock, not to every unit.
- Paste the cells or open a CSV file, check the columns, and choose how dates like 05/01/2026 are written (day first or month first). 2026-01-05, 5-Jan-2026 and Excel date numbers are read either way.
- Set the report date. It starts at today; use the date of your stock export for a past snapshot.
- Rows that cannot be used are listed with the row number and reason, for example a quantity of 0, a date that does not exist such as 31/02/2026, or a date after the report date. They are also in the CSV download, marked “Not included”.
Slow-moving, non-moving and obsolete inventory
The three terms are often mixed up. This tool can measure the first two from dates; the third is a decision. Dead stock is the everyday name for stock that has stopped moving and is unlikely to be used or sold again: it ties up money and space until it is sold off, returned, used elsewhere or written off.
- Slow-moving: still used, but rarely. Here: no issue for more than the slow-moving limit (90 days by default).
- Non-moving: no issue at all for a long time. Here: No movement, more than 180 days by default.
- Obsolete inventory: stock that is not expected to be used or sold again, for example a discontinued product, a part for a machine you no longer have, or packaging with an old design. Dates alone cannot prove this. Non-moving stock is the list to review; someone who knows the items decides what is obsolete.
Obsolete stock usually has to be written down or written off in the accounts. That is a decision for your finance team under the accounting rules you follow; this tool only gives the quantities, values and dates to support it.
What to do with aged and slow-moving stock
- Check that the stock really exists before acting on it: a quick count with the stock count sheet often finds stock that was used but never booked out.
- Look for a use first: another site, a substitute item, or returning it to the supplier.
- Stop reordering items that no longer move, and review their reorder points.
- Decide on write-downs or disposal with your finance team. This tool flags stock for review; it does not decide its value.
Questions
Is my data uploaded?
No. The page reads the pasted text or the file in your browser. Nothing is sent to WarehouseCalc or anyone else, and nothing is stored.
Why are 90 and 180 days the default?
They are common starting points. Fast-moving consumer goods may use 30 and 60 days; spare parts may use 180 and 365. Set the limits that match your stock policy.
How many lines can it handle?
Up to 10,000 rows and 5 MB per file. The oldest 300 lines are shown on the page; the CSV download has all of them.
Does it handle expiry dates?
No. Age is counted from the date received. Expiry depends on each product’s shelf life, so check dated goods against their expiry dates as well.
Related tools
Results are planning aids. See the methodology for how the tools work and their limits.