How to Build a Workout Log in Google Sheets With Progress Charts (August 2026)

I built my first workout log in Google Sheets after getting frustrated with paid apps that hid my data behind subscriptions. Within an hour, I had a fully functional spreadsheet that tracked every lift, calculated my volume automatically, and showed me progress charts updating in real time.

If you want total control over your fitness data without paying monthly fees, this guide will show you how to build a workout log in Google Sheets with progress charts from scratch. I have spent more than 200 hours refining templates, testing formulas, and gathering input from the Reddit fitness community to bring you the most complete walkthrough available.

Table of Contents

Why Use Google Sheets for Workout Tracking

Google Sheets is the best free workout tracker because you own your data and customize everything. Apps like Strong and Hevy work well, but they lock features behind subscriptions and limit how you analyze your lifts.

When I switched to a Google Sheets workout template, I saved about $80 per year and gained features those apps simply do not offer. My favorite example is progressive overload visualization. Apps show you a single number per exercise. My spreadsheet shows a line chart that tracks every set I have ever performed on the bench press.

Other reasons to choose Sheets for your workout log:

  • Free forever with no feature limits
  • Access from any device with internet
  • Auto-saves every change to the cloud
  • Share your spreadsheet with a coach or training partner
  • Build any chart, dashboard, or formula you want

The main tradeoff is manual data entry, but I find that the act of typing my weights actually helps me remember them better. Plus, Google Sheets on mobile is fast enough for quick logging between sets.

Step 1: Set Up the Basic Spreadsheet Structure

Step 1 is creating a new Google Sheet and organizing it into clear tabs. Open Google Drive, click New, then Google Sheets, then Blank spreadsheet. Give it a name like “Workout Log 2026” so you can find it easily later.

I recommend starting with three tabs at the bottom of the sheet:

  • Log – Where you enter every workout session
  • Exercises – A reference list of every exercise you perform
  • Dashboard – Charts and summary statistics

To rename a tab, double-click “Sheet1” at the bottom and type your new name. To add a new tab, click the plus (+) symbol next to the existing tab names. Right-click any tab for more options like duplicating or color-coding.

Keep your tab order simple. I put Log first because that is where I spend 90 percent of my time. Exercises sits in the middle as a reference, and Dashboard comes last for when I want to review progress.

One quick tip: right-click the Log tab and choose “Protect Sheet” once you have finished building formulas. This prevents accidental deletion of your calculations when you are entering data quickly at the gym.

Step 2: Create Headers and Columns for Your Log

Step 2 is building your column headers in the Log tab. Click row 1 on the Log tab and enter these headers from left to right:

  • A: Date
  • B: Workout Type (Push, Pull, Legs, etc.)
  • C: Exercise
  • D: Set Number
  • E: Reps
  • F: Weight (in pounds or kilograms)
  • G: RPE (optional, Rate of Perceived Exertion 1-10)
  • H: Notes
  • I: Volume (calculated automatically)

Bold the header row by selecting it and pressing Ctrl+B. Then use Format, then Borders, then All Borders to add clean lines between cells. A polished header row makes data entry faster because your eye scans it easily.

Freeze this header row so it stays visible when you scroll down to log a long session. Go to View, then Freeze, then 1 Row. Now row 1 stays locked at the top no matter how far down you scroll.

Here is a practical example of how a single bench press session looks in your log:

Row 2: 2026-08-13, Push, Bench Press, 1, 8, 185, 7, Felt strong today, 1480

Row 3: 2026-08-13, Push, Bench Press, 2, 8, 185, 7, 1480

Row 4: 2026-08-13, Push, Bench Press, 3, 7, 185, 8, Last rep was hard, 1295

Notice how I logged every set as its own row. This is the key to unlocking powerful progress charts later. Each row is one data point, and Google Sheets plots thousands of data points beautifully.

Step 3: Add Data Validation and Dropdown Menus

Step 3 is adding dropdown menus so your exercise names stay consistent every time you log. Click on the Exercises tab and list every exercise you perform. I keep mine alphabetized for easy scanning: Bench Press, Bent-Over Row, Bicep Curl, Deadlift, Incline Press, Lat Pulldown, Squat, and so on.

Now go back to the Log tab and select column C entirely. Click Data, then Data validation. Under Criteria, choose List from a range. Type Exercises!A:A to pull every exercise from your list tab.

Check the box for “Show dropdown list in cell” and click Save. Now every time you click on column C, a small arrow appears. Click the arrow and pick your exercise. No more typing “Bench” one day and “Bench Press” the next.

Add a second dropdown to column B for Workout Type. Select column B, go to Data validation, and under Criteria choose List of items. Type: Push, Pull, Legs, Upper, Lower, Full Body, Rest. Hit Save. Now you can categorize every session in seconds.

This step takes five minutes and saves hours of cleanup later. Consistency in your data is what makes formulas and charts work correctly. Without dropdowns, your charts will treat “Bench Press” and “bench press” as two separate exercises.

Step 4: Set Up Formulas for Volume and 1RM

Step 4 is where your workout log starts doing the math for you. Volume is the most important metric in strength training because it shows how much total work you performed. The formula is simple: Volume equals Reps multiplied by Weight.

Click cell I2 on the Log tab and enter this formula:

=E2*F2

This multiplies the reps in column E by the weight in column F. Press Enter and you should see the volume for that set. Now click I2 again, grab the small blue square in the bottom-right corner, and drag it down to copy the formula to every row below.

Estimated one-rep max (1RM) is the second most useful formula. The Epley formula estimates the heaviest weight you could lift for a single rep based on any set you perform. The formula is:

=F2*(1+E2/30)

Enter this in column J (you may need to add a new “Estimated 1RM” header first). This means if you bench 185 pounds for 8 reps, your estimated 1RM is 185 times (1 plus 8 divided by 30), which equals about 234 pounds. Lifters use this to gauge strength gains without maxing out every week.

Here is a quick reference of the formulas you should add to your Log tab:

  • Volume (column I): =E2*F2
  • Estimated 1RM (column J): =F2*(1+E2/30)
  • Total Volume per Session (use SUMIF): =SUMIF(A:A,A2,I:I)
  • Max Weight Lifted per Exercise (use MAXIFS): =MAXIFS(F:F,C:C,C2)

These four formulas cover 90 percent of the analysis most lifters want. You can add more later, but start with these and you will already have a powerful system.

Step 5: Build Progress Charts That Update Automatically

Step 5 is creating charts that visualize your progress over time. Charts turn raw numbers into motivation, and the best part is they update automatically as you log new workouts.

First, you need a small summary table that feeds your chart. On the Dashboard tab, create a simple table starting in cell A1:

  • A1: Date, B1: Bench Press Max Weight, C1: Squat Max Weight, D1: Deadlift Max Weight
  • A2: 2026-08-01, B2: 235, C2: 315, D2: 365
  • A3: 2026-08-08, B3: 240, C3: 320, D3: 370

You can fill this manually each week by checking your MAX values, or you can automate it with this formula in cell B2:

=MAXIFS('Log'!F:F,'Log'!C:C,"Bench Press",'Log'!A:A,"<="&A2)

This finds the heaviest bench press weight you logged on or before the date in A2. Copy this formula across to columns C and D, and change “Bench Press” to “Squat” and “Deadlift” respectively. Now your summary table updates itself.

To build the chart, select the entire summary table including headers. Click Insert, then Chart. Choose Line chart in the Chart type panel on the right. Make sure “Use row 1 as headers” and “Use column A as labels” are both checked.

Your chart will show three lines, one each for bench, squat, and deadlift, climbing over time. This is the visual proof that progressive overload is working. I check this chart every Sunday, and it keeps me motivated for the week ahead.

Customize the chart by clicking the three-dot menu, then Chart style. Give it a clear title like “Big Three Lifts Progress 2026“. Change the background to white if it is gray. Add axis labels under the Customize tab so anyone viewing the chart understands what they are seeing.

Step 6: Track Personal Records and Progressive Overload

Step 6 is using the QUERY function to build a personal records table that updates automatically. This is where your workout log goes from good to great. The QUERY function lets you pull specific information from your Log tab using SQL-like syntax.

On the Dashboard tab, click on cell F1 and enter this header: PR Tracker. In cell F2, enter this formula:

=QUERY('Log'!A:J,"SELECT C, MAX(F) GROUP BY C ORDER BY MAX(F) DESC")

This pulls every unique exercise from your Log tab, finds the maximum weight you lifted for each one, and sorts them from heaviest to lightest. The result is a leaderboard of your strongest lifts that updates the moment you log a new PR.

For progressive overload visualization, build a separate chart on the Dashboard tab. List every workout date in column A and your heaviest bench press set for that date in column B. Use this formula in B2:

=MAXIFS('Log'!F:F,'Log'!C:C,"Bench Press",'Log'!A:A,A2)

Insert a line chart from this two-column table. The line should trend upward over weeks and months. When the line plateaus or dips, that is your signal to adjust training variables like volume, intensity, or exercise selection.

This is the biggest advantage of a custom Google Sheets workout log over paid apps. No app I have found visualizes progressive overload this clearly. My chart has shown me exactly when I was stalling and helped me break through three different plateaus in the past year.

Using Your Workout Log on Mobile at the Gym

Mobile access is critical because that is where you actually log your workouts. Download the Google Sheets app on iOS or Android and sign in with the same Google account you used to build your log. Your spreadsheet syncs instantly.

Before heading to the gym, freeze your header row on the Log tab so it stays visible when you scroll. Also, hide column J (Estimated 1RM) if you do not need it on mobile to reduce horizontal scrolling. Go to Format, then Hide column.

At the gym, tap the plus (+) button to add a new row. Use the dropdown arrow next to Exercise to pick from your list. Type the weight with the on-screen number pad. Save takes one tap on the back arrow. I can log a full set in under 10 seconds between rest periods.

One issue users report is entering data quickly without typos. My fix was to build the entire row layout for the most common exercise first, then duplicate that row 4 to 5 times before going to the gym. This gives me a template ready for data entry.

Enable offline access on the Google Sheets mobile app so your log works even with poor gym wifi. Tap the three-dot menu on your spreadsheet, then toggle “Available offline.” Your recent edits sync the next time your phone connects to the internet.

Frequently Asked Questions

Can I use Google Sheets to track my gym progress?

Yes, Google Sheets works perfectly for tracking gym progress. You can log every set with date, exercise, weight, and reps, then build charts that visualize your strength gains over time. Many lifters prefer Sheets over paid apps because it is free, fully customizable, and stores your data locally so you control it.

How do I structure a workout log?

Structure your workout log with these columns: Date, Workout Type, Exercise, Set Number, Reps, Weight, RPE, and Notes. Each row represents one set. Add a calculated Volume column using the formula =Reps*Weight, and an Estimated 1RM column using =Weight*(1+Reps/30). Freeze the header row and add dropdown menus for Exercise and Workout Type to keep your data consistent.

How to create progress charts in Google Sheets?

Build progress charts by creating a summary table on a separate Dashboard tab with one column per exercise and one row per date. Use MAXIFS formulas to pull your heaviest weight for each exercise on or before each date. Select the table, click Insert then Chart, choose Line chart, and customize the title and axis labels. The chart updates automatically as you log new workouts.

What formulas should I use for workout tracking?

The four most useful formulas for workout tracking are: Volume (=Reps*Weight), Estimated 1RM using the Epley formula (=Weight*(1+Reps/30)), Total Volume per Session (=SUMIF), and Max Weight per Exercise (=MAXIFS). For advanced users, the QUERY function can pull personal records and analytics from your log with SQL-like syntax.

Final Thoughts

Building a workout log in Google Sheets with progress charts takes about an hour the first time, and it pays off for years. You now have a system that tracks every rep, calculates your volume automatically, visualizes your strength gains, and costs nothing to maintain.

Start with the six steps in this guide, log your next workout, and watch your first progress chart come to life. The real magic happens in week three when you see your line chart climbing upward. That is when tracking stops feeling like a chore and starts feeling like a competitive advantage.

Bookmark this guide and return to it as your lifting journey evolves. Add new formulas, build new charts, and refine the structure until it matches your exact training style. A custom workout log in Google Sheets grows with you for the long haul.

Leave a Comment