Private poker session tracker: keep the units honest
A deposit can make an account balance look healthier after a losing session. A withdrawal can make a winning month look worse. Neither tells you what happened at the tables.
This private poker session tracker records completed cash and tournament play, then keeps account movements beside the results without counting them as winnings. You can correct a row, separate currencies and export the record yourself. Start with the fictional example if you want to see the arithmetic before entering anything.

Results and money movements · Played time · bb/100 and ROI · Files and corrections
Keep a session ledger in this tab
The tracker starts empty. It does not upload entries or use browser storage. Export JSON before leaving or reloading; there is no automatic recovery. A browser may keep a tab in memory when navigating back, so use Clear ledger on a shared device. Other scripts on the website and browser extensions are outside this tool’s control.
Log completed play blocks without overlapping their time. Use one unit label consistently, such as USD, EUR or HOME-POINTS. Amounts support two decimal places. Unknown hands or big blinds can stay blank.
0 / 1000 records in this tab
Records stay in this tab until you export them.
Totals by unit
Your records
Take your record with you
JSON is the exact editable format for reopening this ledger. CSV is for spreadsheet review and cannot be imported here. CSV labels that resemble formulas receive a visible text: prefix; JSON preserves the original label. Open unfamiliar CSV files as text, and do not enable spreadsheet links or formulas.
Clear every record from this tab? Export first if you want to keep them. This cannot erase files you already downloaded, browser history, or copies outside this page.
One session, two different questions
For a cash session, ask how much went onto the table and how much came back. Include every reload and every partial cash-out. The basic result is returns minus total buy-ins. A game fee paid separately belongs in the cost, but rake already removed from pots is already reflected in the cash-out. Deducting it again understates the result.
Suppose you buy in for 200, reload for 100, and finish with 375 after all pots have settled. You also pay a separate table-time charge of 5. The playing result is 375 − 300 − 5 = 70. If a separately credited reward of 4 arrives, keep it beside that result. It does not turn the cash-game result into 74 for your bb/100 calculation.

Deposits, withdrawals and transfers
Now suppose you deposit 500 and pay a transfer fee of 3. Record a deposit of 500 with a fee of 3. The 500 is funding, while the 3 is a cost of moving funds. Using the cash example above, the adjusted result is 70 + 4 − 3 = 71. It is not 571.
A withdrawal also moves your own capital. Withdrawing 150 after a winning session does not create a 150 loss. An internal transfer moves funds between places already inside your chosen record, such as two wallets you track. Enter it once as an internal transfer; its amount is excluded from both profit and net external funding.
Decide what your record covers before classifying movements. A transfer from an untracked bank account into tracked poker funds is a deposit for this ledger. A move between two tracked accounts is internal. The tracker shows net funding, not a verified account balance: it does not know your opening balances, pending withdrawals or money still on a table.
Choose one fee convention and keep it
For a tournament advertised as 50 + 5, either enter 55 as entry cost and 0 as separate fees, or 50 as entry cost and 5 as separate fees. Both give a total cost of 55. Do not enter 55 and then another 5. Apply the same convention to re-entries and add-ons. A transport charge, meal or tax is outside this tool’s playing-result calculation.
Use settled amounts. An unpaid promise of cashback is not a received reward. A tournament ticket is not cash merely because a lobby shows a face value. Keep non-cash tickets out of money totals until you have a consistent separate record for them. The figures on this page are fictional examples; they are not current HPD offers or rates.
Count the minutes you actually played

A block lasting 210 minutes with 30 minutes completely away from play contains 180 played minutes, or 3 hours. Two tables open for those three hours do not become six hours of your time. A scheduled tournament break only counts as time off if you are not still playing another table.
The tracker subtracts break minutes from elapsed minutes for each record. It then adds those played minutes within each unit group. It does not infer overlap from your date or label. Use non-overlapping blocks and check the total before treating it as time spent.
Several simultaneous tournaments can be one completed tournament block: combine all their entry costs, cash prizes and cash bounties, then enter the actual elapsed time once. For cash, combine simultaneous tables only when the big blind is the same. If you mix stakes or cash with tournaments at the same time, use a consistent allocation of your actual played minutes across the rows. Keep the allocation in your own notes; the per-row hours then describe that allocation, not each table’s full running time.
The tool deliberately does not turn these rows into an automatic hourly-income forecast. You can divide a checked result by checked hours for a retrospective figure, but overlapping entries, unknown hands and one unusually large tournament finish can make a neat average misleading.
Cash bb/100 and tournament ROI answer different questions
Cash results in big blinds per 100 hands
For one fixed-stake cash block, bb/100 = (playing result ÷ big blind) ÷ hands × 100. Here bb means one big blind. It does not mean the larger fixed-limit betting increment.
In the cash example, a 70 result at a 2 big blind is 35 bb. Across 600 hands, that is 35 ÷ 600 × 100 = 5.83 bb/100, rounded to two decimals. Rewards and transfer fees are kept out of this playing measure. Separately paid game fees are included in the playing result under this tracker’s cost convention.
Never average session rates without weighting them. A second block winning 100 at a 5 big blind over 400 hands adds 20 bb. Together the blocks made 55 bb over 1,000 hands: 5.50 bb/100. Adding the money results and dividing by whichever blind is convenient gives the wrong answer.
The summary normalizes each eligible cash block to big blinds, then divides by the hands in those same blocks. A row missing hands or a big blind remains in the money result but is excluded from bb/100. The coverage count tells you how many cash blocks contributed. A rate based on half your record is a rate for that half.
Tournament return on investment
Tournament ROI = (total cash returns − total entry cost) ÷ total entry cost × 100. Entry cost includes entry fees, re-entries and paid add-ons. Cash bounties received belong in returns once. Tournament chips and changing blind levels do not belong in this formula.
Two entries at 50 + 5 cost 110. If the combined returns are 165, profit is 55 and ROI is 55 ÷ 110 × 100 = 50%. The fictional example in the tool uses exactly these totals. If another block costs 220 and returns 110, the combined ROI becomes (165 + 110 − 110 − 220) ÷ (110 + 220) × 100 = −16.67%. The simple average of 50% and −50% would incorrectly say 0%.
A freeroll can have a positive result but an undefined ROI because its entry cost is zero. The tracker displays no standalone ROI for that record. In a combined tournament sample, freeroll prizes still count as returns while paid entries supply the denominator. Keep a separate unit label or separate exported ledger if you want a paid-entry-only sample.
Keep every unit honest

100 USD plus 100 EUR is not a 200 USD result. This tracker never converts currencies, guesses an exchange rate or treats a chip as a dollar. Use the same label for the same unit every time; USD and US-DOLLARS are separate groups here.
For a point-based home game, choose a label such as HOME-POINTS. For unrelated point systems, use different labels. A label is a bookkeeping choice, not evidence that a platform’s chips have monetary value or can be redeemed. Check the relevant platform’s actual rules; the HPD mobile poker guides explain differences between apps and club models.
Record a fee in the currency in which it was charged. If a EUR transfer incurs a USD fee, add the fee as its own USD movement record with amount 0 and the actual fee. Do not subtract USD from EUR. For an exchange between currencies, record the outgoing and incoming amounts in their own unit groups and retain the conversion receipt separately. These entries do not calculate foreign-exchange gain or loss.
Amounts are limited to two decimal places. That is useful for ordinary currency and whole-point records, but it is unsuitable for raw cryptocurrency quantities requiring finer precision. Use a separate ledger designed for those units rather than rounding away the difference.
Make the record portable, then correct it

Export JSON when you finish. Check that the file reached your device, and store it somewhere you control. The file is readable plain text, not an encrypted vault. Anyone with access to it can read the records. Avoid real names, account identifiers and details about other players.
To continue later, choose the JSON file and review the replacement message. A valid import replaces the current ledger only when you press Replace ledger. It does not merge records, which avoids quietly duplicating every session when the same file is imported twice. Export the current tab first if it contains anything you need.
Use Edit on the wrong row, correct the value, and press Save correction. For example, changing the sample cash return from 375 to 365 changes the cash result from 70 to 60. Export a new JSON file afterward. Your old downloaded copy still contains the old value.
CSV is a convenient review copy for a spreadsheet. It is not the recovery format. Formula-like labels are changed to start with text: in the CSV so a label such as =1+1 remains visibly text. The exact label stays in JSON. Spreadsheet behavior varies, so import unfamiliar CSV as text and do not enable external links or formulas.
What “private” means here
The ledger code makes no network requests with your entries and does not use localStorage, sessionStorage, cookies or an account. It holds records in the page’s memory until you explicitly download a file. Blocking browser storage does not stop the arithmetic.
That is a limited design claim, not a guarantee of secrecy. The surrounding website still loads its normal content. Browser extensions, device access, screenshots and other scripts running on the page may expose what you enter. A browser can also restore a previous tab from memory. Clear the ledger when finished, and handle downloaded files as personal records. There is no cloud sync or recovery service.
What to review at the end of the week
Check for missing losing sessions, a reload entered twice, prizes that have not actually arrived, and labels that accidentally split one currency into two groups. Match a few rows against your own receipts or completed-session records. A small sample can describe what happened; it cannot prove a future win rate.
This is a session accounting worksheet, not a bankroll recommendation, a tax return, or a way to verify a club’s ability to pay. HPD’s role and responsibilities explain the site’s informational scope. Use the record to make your own past activity clearer, and keep play within limits you can afford.