Google Sheets is the most flexible bet tracking tool available, and it's free. The only thing standing between you and a fully functional Google Sheets bet tracker is the initial setup. This guide covers everything: columns, formulas, filter views, and the habit that makes it work long-term.
If you just want the finished product without building it yourself, skip to the bottom. But if you want to understand how it works — and how to customise it for your own analysis — start here.
Step 1: Set Up Your Columns
Open a new Google Sheet. In row 1, create these headers in order across columns A through J:
- A — Date. The date the bet was placed. Use YYYY-MM-DD format so sorting works correctly. Example: 2026-04-26.
- B — Sport. NFL, NBA, MLB, NHL, NCAAB, Soccer, Tennis, etc. Keep it consistent — lowercase or capitalised, not both.
- C — Book. The sportsbook. DraftKings, FanDuel, BetMGM, Bovada, BetOnline — whatever you use.
- D — Selection. What you actually bet on. "Lakers ML", "Chiefs -7", "Over 47.5", "LeBron James Over 27.5 pts". Be specific enough that you can reconstruct the bet later.
- E — Market. The type of bet: Moneyline, Spread, Total, Prop, Futures, Parlay. This lets you filter by bet type and find which markets you're profitable in.
- F — Odds. Use American odds format. Positive odds for underdogs (+150), negative for favourites (-110). If your sportsbook shows decimal odds, convert: decimal 1.91 = -110 in American.
- G — Stake ($). The amount wagered. Always enter this as a positive number regardless of odds.
- H — Result. W (Win), L (Loss), P (Push), or Pending. Keep "Pending" for unsettled bets so they show up in your filter views and you remember to update them.
- I — P&L ($). Your profit or loss on this bet. This will be calculated by formula — don't type in this column manually.
- J — Notes. Optional but useful. Record anything relevant: "sharp reverse line movement", "key injury", "line shopped from BetMGM -108 to DK -105", "faded public". This becomes a coaching tool for your future self.
Tip: Freeze row 1 so your headers stay visible as you scroll down. Go to View > Freeze > 1 row.
Step 2: Set Up the P&L Formula
Click cell I2. Paste this formula:
=IF(H2="W", IF(F2>0, G2*(F2/100), G2*(-100/F2)), IF(H2="L", -G2, 0))
Here's what it does:
- If the result (H2) is "W" (Win):
- If the odds (F2) are positive (underdog): profit = Stake × (Odds ÷ 100). A $50 bet at +150 returns $75 profit.
- If the odds (F2) are negative (favourite): profit = Stake × (100 ÷ absolute odds). A $50 bet at -110 returns $45.45 profit.
- If the result is "L" (Loss): P&L = negative Stake. A $50 loss returns -$50.
- If the result is anything else (Push or Pending): P&L = 0. Pushes return your stake, so net P&L is zero.
Once you have the formula in I2, drag it down the entire column to apply it to all rows. In Google Sheets, click the blue dot at the bottom-right of I2 and drag, or double-click it to auto-fill.
Worked example: You bet $100 on a team at -120. They win. The formula calculates $100 × (100 ÷ 120) = $83.33 profit. You bet $75 on a +200 underdog. They win. Formula: $75 × (200 ÷ 100) = $150 profit. They lose: -$75.
Step 3: Add Running Totals and ROI
At the top of your sheet — say in cells L1 through M4 — add a summary block:
- L1: Total Bets | M1:
=COUNTA(A2:A) - L2: Total Staked | M2:
=SUM(G:G) - L3: Net P&L | M3:
=SUM(I:I) - L4: ROI % | M4:
=(SUM(I:I)/SUM(G:G))*100
The ROI formula divides your total net profit by your total amount staked, then multiplies by 100 to give a percentage. This is the most important number on your sheet. A positive number means you're making money. See our full guide to calculating betting ROI for how to interpret different ROI levels.
Format M4 to show two decimal places: Format > Number > Custom number format > 0.00"%".
Step 4: Create Filter Views by Sport and Sportsbook
This is where the spreadsheet starts earning its keep. Filter views let you instantly slice your data without disrupting the underlying sheet.
To create a filter view:
- Click Data in the menu bar.
- Select Filter views > Create new filter view.
- A grey bar appears at the top — give the view a name (e.g., "NFL only").
- Click the filter icon in the column you want to filter. For Sport (column B), uncheck everything except "NFL".
- Close the filter view. It's now saved.
Repeat this for each sport you want to analyse separately, each sportsbook, and each bet type (Market column). You can also create a "Pending bets" view by filtering the Result column to "Pending" — this becomes your daily checklist of unsettled bets.
To switch between views, go to Data > Filter views and select the one you want. To return to the full sheet, select Data > Filter views > None.
Step 5: Keep It Updated — The Habit Is the Hard Part
The spreadsheet is only as good as the data in it. A partially-filled sheet is worse than no sheet at all — it'll show you misleading ROI numbers that don't represent your actual performance.
The habit breaks down at the entry step. You place a bet, don't log it immediately, mean to log it later, and later never comes. Three weeks in, you're six bets behind and the data is dirty.
Two practical tips to maintain the habit:
- Log immediately after placing. Not after the game. Not that night. Right after you place the bet, while your phone is in your hand.
- Set a weekly settlement routine. Every Monday, filter to "Pending" and update results from the previous week. Put it in your calendar. 10 minutes, every week.
Every unsettled bet is noise in your data. Clean data produces clean insights. Dirty data produces false confidence.
Alternative: Skip the Setup Entirely
If the setup above feels like work — it is. There's a faster path.
S2S Bets creates and populates your Google Sheet automatically. Screenshot your bet slip from any sportsbook, and the app reads the bet details and writes the row. Date, sport, book, selection, market, odds, stake — all parsed and logged without typing a single character.
It works with every sportsbook, including offshore books like Bovada and BetOnline that don't have API integrations. Because S2S Bets reads screenshots rather than connecting to sportsbook accounts, there's nothing to link and no limitations on which books are supported.
You get the full flexibility of a Google Sheets bet tracker — all your formulas, your filter views, your custom columns — without the 2-3 minutes of manual entry per bet that kills the habit.
Stop Typing. Start Screenshotting.
S2S Bets logs every bet from your screenshot — directly into your spreadsheet.
Join the Free Beta →No credit card. Works with all sportsbooks including offshore.
Frequently Asked Questions
-
Set up columns for Date, Sport, Sportsbook, Selection, Market, Odds (American), Stake, Result, and P&L. Use the P&L formula to calculate profit automatically from your odds and stake, and add a running ROI calculation in a summary block. Then use filter views to segment your data by sport or sportsbook. See Step 1 through 4 above for the exact setup.
-
Use:
=IF(H2="W", IF(F2>0, G2*(F2/100), G2*(-100/F2)), IF(H2="L", -G2, 0))where F is Odds, G is Stake, and H is Result. This handles both positive American odds (underdogs) and negative American odds (favourites) correctly, and returns zero for pushes or pending bets. -
Use
=(SUM(I:I)/SUM(G:G))*100where I is your P&L column and G is your Stake column. Put this in a summary cell at the top of your sheet. This gives you your total ROI as a percentage. A 3–5% sustained ROI over hundreds of bets is considered excellent for recreational bettors. -
Go to Data > Filter views > Create new filter view. You can then set filter conditions on any column — for example, showing only bets on a specific sport or sportsbook. Each filter view is saved and named separately, so you can switch between your "NFL only" view, your "DraftKings only" view, and your full sheet instantly without disrupting the data.
-
Yes — S2S Bets automates this. You screenshot your bet slip from any sportsbook, and the app parses the bet details and writes the row to your Google Sheet automatically. No typing, no exports. It works with all sportsbooks including offshore books like Bovada and BetOnline. Currently in free beta.