Six columns, nothing you won’t fill in, and it works in Google Sheets, Excel, or Numbers. Download it, paste it, or steal the layout - the template is the easy part; the system is what matters.
The short answer
A range log template needs six columns: date, firearm, rounds, ammo, distance, and notes. Download the CSV or paste the headers into Google Sheets or Excel, then add =SUMIF(B:B, "Glock 19", C:C) on a summary tab for a per-firearm lifetime round count. Log one row per firearm per session to keep the totals honest.
| Date | Firearm | Rounds | Ammo | Distance | Notes |
|---|---|---|---|---|---|
| 2026-07-03 | Glock 19 | 150 | Blazer Brass 115gr FMJ | 10 yd | Draw-from-holster reps; one failure to feed around round 90 |
| 2026-06-28 | Ruger 10/22 | 250 | CCI Standard Velocity 40gr | 25 yd | Zeroed the new red dot; final group under an inch |
| 2026-06-21 | Sig P365 | 100 | Federal HST 124gr JHP | 7 yd | Carry ammo function check; zero malfunctions |
One row per firearm per session. Shot two guns on Saturday? Two rows, same date - that’s what keeps the per-gun round counts honest.
Six columns cover everything a range log needs: date, firearm, rounds, ammo, distance, and notes. Every abandoned range log died the same death: too many columns. Temperature, humidity, barometric pressure, mood - great for a load-development notebook, fatal for a habit. These six survive because each one answers a question you will actually ask later.
Turns a pile of rows into a timeline: how often you actually train, how long a zero has held, and how many months that “recent” cleaning really was. Use one format (YYYY-MM-DD sorts correctly everywhere) and log the same day you shoot.
The column the whole log hangs on. Per-gun round counts - the number that drives cleaning, spring replacement, and resale honesty - only work if you name the gun identically every time. “Glock 19” and “G19” are two different guns to a spreadsheet.
The count itself. Count by box, not by memory: arrived with two 50-round boxes, left with 27 loose - that session was 73. Whole numbers only, so the column sums cleanly.
The diagnostic column. When malfunctions show up, the first question is always “what were you feeding it?” It also drives maintenance: steel-cased and rimfire ammo foul faster, and you’ll want to know how many rounds of carry ammo have cycled through the gun.
The progress column. “Shot okay” means nothing later; “kept them all on an index card at 15 yards” is a benchmark you can beat. If a session mixes distances, log the one you spent most of the session at - or split it into two rows.
Everything the other columns can’t hold: malfunctions and the round they happened at, drills you ran, sight adjustments, parts swapped, cleanings. Two honest sentences beat a paragraph you’ll never write. This is the column that makes the log a story instead of a tally.
Import the CSV (File → Import in Google Sheets) or paste the copied headers into row 1 of a blank sheet. Format Date as a date and Rounds as a number, freeze the header row, then add =SUMIF(B:B, "your gun", C:C) on a summary tab for per-firearm lifetime counts. The full walkthrough is below.
Download the CSV and open it directly in Excel or Numbers, or import it into Google Sheets with File → Import. Or skip the file entirely: the copy button above puts the six headers on your clipboard, tab-separated, so one paste into cell A1 lays them out as columns.
Set the Date column to a date format and Rounds to a plain number. Leave everything else as text. Freeze row 1 (View → Freeze) so the headers stay visible as the log grows.
Per-firearm lifetime round count: =SUMIF(B:B, "Glock 19", C:C) - total rounds for that gun across every row. Put one of these per firearm on a small summary tab and the spreadsheet starts answering the question you built it for.
Add the date of the last cleaning next to each summary formula and switch to =SUMIFS(C:C, B:B, "Glock 19", A:A, ">"&E2) - rounds fired since that date. When the number crosses your cleaning interval, that’s your reminder. Manual, but it works.
Resist the tab-per-year urge - one continuous sheet keeps every SUMIF simple and your full history sortable. A range log gets its value from being complete, and 20 years of shooting is still only a few thousand rows.
A shooting log spreadsheet fails at exactly one point: the moment between shooting and logging. The template lives on a laptop; the session happened at the range. So rows get batch-entered from memory weeks later, the counts drift, and drift is fatal to the one thing the log exists to produce - a number you trust. Our guide on how to track rounds fired covers the habits that keep any log alive, spreadsheet or not.
There’s a quieter problem too. A cloud spreadsheet titled “Range Log” - every firearm you own, listed by name - lives on someone else’s server, attached to your identity. That’s a strange place for that document, and it’s the reason Shots Fired was built local-first: the same six columns, logged in seconds at the bench, summed per firearm automatically, with cleaning reminders when a count crosses your interval - and all of it stored on your phone. No account, no cloud. When you want the spreadsheet back, CSV export gives you these exact columns.
Start with the template today - it’s genuinely enough. When entering rows becomes the chore that stops the logging, the app is the same system with the friction removed.
At minimum: date, which firearm, and how many rounds - that’s enough to drive cleaning schedules and lifetime counts. A genuinely useful log adds ammo (for diagnosing malfunctions and tracking carry-ammo cycling), distance (for measuring progress), and free-form notes for malfunctions, drills, and maintenance. That’s the six columns in this template.
Import the CSV from this page (File → Import), or paste the copied headers into row 1 of a blank sheet. Format the Date column as a date, freeze the header row, and add =SUMIF(B:B, "your gun", C:C) on a summary tab for per-firearm lifetime round counts. One row per gun per session from then on.
Yes - print the spreadsheet itself. Open the template in Sheets or Excel, add 20 - 30 empty rows, and print landscape. A clipboard version works fine at the bench; just transfer the rows into the spreadsheet when you get home, because paper can’t sum a round count.
A spreadsheet is free, flexible, and a fine way to start - this template is the honest version of one. An app earns its place on volume: logging takes seconds at the bench instead of a laptop session later, per-gun totals and cleaning reminders happen automatically, and milestones surface on their own. If you find yourself batch-entering three months of receipts, you’ve outgrown the spreadsheet.
A Google Sheet named “Range Log” lives on Google’s servers, tied to your account - a complete list of your firearms included. An offline Excel file stays local but doesn’t follow you to the range. Shots Fired keeps the log on your phone and only your phone: no account, no cloud, no server. Data leaves the device only when you export it yourself.
Yes. Shots Fired exports your full log as CSV whenever you want - the same columns as this template, so it opens straight into Sheets or Excel. Your data stays yours in both directions; the app just does the logging, counting, and reminding in between.
Log a session in seconds, get per-gun round counts and cleaning reminders automatically. Free to start. No account. No cloud.
Download on the App Store