Guide

Book Tracking Spreadsheet: Free Template + When an App Is Better

A spreadsheet is the most durable reading log there is: it's a file you own, it works offline, and it will still open in thirty years. Here is a complete design you can build in ten minutes — exact columns, a starter row, the formulas worth adding — followed by an honest accounting of where a sheet struggles and when a dedicated app earns its place.

Reader by a window with coffee — sketching out a book log before building the spreadsheet
Ten minutes of setup buys a reading log you fully own. Photo via Unsplash.

The short version

The template: eleven columns, in this order

Resist the urge to add twenty columns on day one — unused columns are guilt, and guilt kills logs. This set covers nearly every reader; add more only when you feel a real gap. If you're still deciding between a sheet, an app, or a notebook at all, our broader guide on how to track books you've read compares the three systems first.

Col Field Type Why it's here
ATitleTextThe book. Include series info here if you like ("Mistborn #1").
BAuthorTextOne name per cell, "Last, First" if you plan to sort by it.
CISBNTextDisambiguates editions and makes future app imports match cleanly. Format the column as plain text so leading zeros survive.
DFormatList: Print / Ebook / AudioCheap to record, interesting in aggregate.
EStatusList: To Read / Reading / Read / AbandonedThe engine of every count. Keep the values fixed.
FStartedDateOptional, but unlocks pace stats.
GFinishedDatePowers "books read this year." The most important date.
HRatingNumber 1–5Whole or half stars — just be consistent.
IPagesNumberFor yearly page totals.
JGenreTextOne primary genre keeps counting simple.
KNotesTextTwo lines, written the day you finish, worth more than any other cell.

A starter row, so the shape is concrete

Title Author ISBN Format Status Started Finished Rating Pages Genre Notes
Piranesi Clarke, Susanna 9781635575637 Print Read 2026-07-14 2026-07-21 5 272 Fantasy Strange and gentle; the journal structure pays off. Reread candidate.

Use ISO dates (2026-07-21) if you can bear them — they sort correctly as text, they're unambiguous across regions, and every import tool on earth understands them.

Formulas worth adding

Put these on a second sheet (name it Stats) or in a few cells above your header row. Column letters below match the template: Status in E, Finished in G, Rating in H, Pages in I.

Books finished this year

=COUNTIFS(E:E,"Read",G:G,">="&DATE(2026,1,1),G:G,"<="&DATE(2026,12,31))

This is the number every reading app puts on its home screen. Swap the year to get any past year — put the year in a cell and reference it if you want a little dashboard.

Pages read this year

=SUMIFS(I:I,E:E,"Read",G:G,">="&DATE(2026,1,1),G:G,"<="&DATE(2026,12,31))

Average rating

=AVERAGEIF(H:H,">0")

The condition skips blanks and zero cells so unrated to-read rows don't drag the average down.

Nice extras

Setting it up in Google Sheets or Excel

  1. Create the sheet and type the eleven headers into row 1. Bold them.
  2. Freeze row 1 (View → Freeze → 1 row in Sheets; View → Freeze Panes in Excel) so headers stay visible as the log grows.
  3. Add dropdowns for Status and Format. In Sheets: select the column, Data → Data validation → Dropdown, enter the fixed values. In Excel: Data → Data Validation → List. This is what keeps "read" vs "Read" vs "finished" from silently breaking your COUNTIFS.
  4. Format the date columns as dates and the ISBN column as plain text.
  5. Add the Stats formulas on a second tab.
  6. Optional polish: conditional formatting to tint rows by Status, and an Excel Table (Ctrl+T) or Sheets alternating colors for readability.
  7. Sort by Finished descending so the log reads newest-first, like a journal.

Total setup time is about ten minutes. From then on, each book costs you thirty to sixty seconds of typing.

Layout variations worth considering

One long sheet vs a tab per year

Keep everything on one sheet. A tab per year looks tidy but breaks every formula that answers cross-year questions ("have I read this author before?", "how many books since 2020?"), and the Finished column already knows what year each book belongs to. If you like a yearly view, filter or slice — don't split the data.

A separate TBR tab

Some readers prefer to keep the to-read pile out of the main log so it doesn't clutter sorting. That's fine — but then moving a book from "want" to "reading" means cutting and pasting between tabs. The single-sheet Status column handles the same job with one dropdown change, which is why the template keeps it unified.

Decide your DNF policy now

Abandoned books are data: they tell you which authors, genres, or lengths don't work for you. The template's "Abandoned" status exists so you record the DNF instead of deleting the row and pretending the attempt never happened. Add a note about why you bailed — future you, browsing a bookstore, will thank you.

Backups for the backup

A Google Sheet is Google's file until you download it. Once or twice a year, File → Download → CSV and drop the copy wherever your real backups live; in Excel, save an extra copy as CSV alongside the XLSX. CSV is the format every future tool will read, which makes it the right archival shape even if you never leave the sheet.

The honest tradeoffs

Now the part template posts usually skip. A spreadsheet's weaknesses are real, and they compound with library size:

What the sheet wins, decisively: custody (it's a file you hold, no company required), flexibility (any column you can imagine), and longevity (CSV and XLSX will outlive every app in this space).

When an app is the better call

If you mostly want the record and the stats — not the joy of maintaining a system — a dedicated tracker does the spreadsheet's job with the friction removed. That's the case for an app like Leafed:

And the exit stays open in both directions, which is the part that matters if you care enough about custody to have read this far. Leafed imports Goodreads-format CSV — so a spreadsheet whose columns follow that shape (or an actual Goodreads export) loads straight in, mapping titles, authors, ISBNs, shelves, ratings, and read dates. And it exports your full library back to CSV or JSON whenever you want, so returning to a spreadsheet is always one export away. You're never locked in; the sheet becomes your backup format instead of your daily tool.

Leafed reading goals and session stats — the numbers a spreadsheet needs formulas to produce
Goals, sessions, and yearly counts, prebuilt — the same numbers your Stats tab computes, without the formulas.

A reasonable hybrid

Plenty of readers run both: an app for daily logging (because it's frictionless) and a periodic CSV export dropped into a spreadsheet or backup folder (because files are forever). That gets you app-grade convenience and spreadsheet-grade custody, for the cost of a two-minute export a couple of times a year. If you're comparing dedicated apps for that daily-logging role, our guide to reading log apps covers the field.

Related reading

FAQ

What columns should a book tracking spreadsheet have?

Title, Author, ISBN, Format, Status, Started, Finished, Rating, Pages, Genre, Notes — eleven columns, with Status limited to a fixed dropdown list so your formulas count reliably.

How do I count books read this year in Google Sheets or Excel?

With Status in column E and Finished in column G: =COUNTIFS(E:E,"Read",G:G,">="&DATE(2026,1,1),G:G,"<="&DATE(2026,12,31)). Swap in SUMIFS over the Pages column for yearly pages.

Is a spreadsheet or an app better for tracking books?

The sheet wins custody and flexibility; the app wins entry speed, scanning, covers, sessions, and prebuilt stats. If manual entry won't bother you, keep the sheet. If it will, use an app that exports CSV so you keep the custody anyway.

Can I move my spreadsheet into a book tracking app later?

Yes. Leafed imports Goodreads-format CSV, so a matching sheet (or a real Goodreads export) loads in with shelves, ratings, and dates intact — and exports back to CSV or JSON anytime.

Your library, on your device

Leafed is free on iOS and Android — private by default, offline-first, no social feed. Optional sync when you want it.

Or browse more on the Leafed blog · Privacy policy