Personal Budgeting Program
This program helps you visualize and track your monthly spending against your predefined budget goals. It started as a personal side project in college, originally written in R — I've since refactored it into a web app using Claude Code so anyone can use it.
There's plenty of room for improvement, so feel free to leave feedback in the section at the bottom of the page. Follow the steps below to get started:
- Pick your budgeting categories.
- Upload a CSV file of your transactions for the month.
- Define your budget for each category.
- (Optional) Define subcategories and their respective budgets.
- Click Run to generate a visual spending report.
Everything runs entirely in your browser — no data is ever sent anywhere.
Analyze a single month of spending. Upload your categorized transactions, set your budget and subcategory budgets, and generate a visual breakdown of where your money went — with comparisons against what you planned to spend.
View example monthly reportCategories
These are the default budget categories. Remove any you don't use, or add new ones.
Or upload a Categories file
Download templateCSV
Expense,Income Housing,Paycheck Groceries,Reimbursement Transportation, Fun, Subscriptions,
Spreadsheet (.xlsx / .xls)
| Expense | Income |
|---|---|
| Housing | Paycheck |
| Groceries | Reimbursement |
| Transportation | |
| Fun | |
| Subscriptions |
List expense categories under Expense and income categories under Income. The columns don't need to be the same length.
Upload Transactions
Upload your monthly transactions file (.csv, .xlsx, .xls formats accepted). Each row is one transaction.
Expected format
Download templateCSV
Amount,Parent Category,Category 2350,Housing,Rent 7,Fun,Coffee/Matcha 2973.11,Paycheck,Company -15,Groceries,Trader Joe's refund 5.59,TP Fund,Shampoo/Conditioner
Spreadsheet (.xlsx / .xls)
| Amount | Parent Category | Category |
|---|---|---|
| 2350 | Housing | Rent |
| 7 | Fun | Coffee/Matcha |
| 2973.11 | Paycheck | Company |
| -15 | Groceries | Trader Joe's refund |
| 5.59 | TP Fund | Shampoo/Conditioner |
- Amount — numeric; negative values represent refunds
- Parent Category — must match one of your defined categories above
- Category — free-text sub-label for the transaction
Budget
Enter a budgeted amount for each expense category. Check Has Subcategories? to add per-subcategory budgets below.
Or upload a Budget file
Download templateCSV
Parent.Category,Budgeted Housing,2577 Groceries,500 Transportation,200
Spreadsheet (.xlsx / .xls)
| Parent.Category | Budgeted |
|---|---|
| Housing | 2577 |
| Groceries | 500 |
| Transportation | 200 |
| Parent Category | Budgeted ($) | Has Subcategories? |
|---|
Upload transactions and fill in all budgeted amounts to enable.
Upload Transactions
Upload your full year of transactions in a single file — month is derived from the Date column. Accepts .csv, .xlsx, or .xls.
Expected format
Download templateCSV
Date,Amount,Parent Category,Category 01/15/2025,2350,Housing,Rent 01/22/2025,45.11,Fun,DoorDash 02/03/2025,2973.11,Paycheck,Goldman
Spreadsheet (.xlsx / .xls)
| Date | Amount | Parent Category | Category |
|---|---|---|---|
| 01/15/2025 | 2350 | Housing | Rent |
| 01/22/2025 | 45.11 | Fun | DoorDash |
| 02/03/2025 | 2973.11 | Paycheck | Goldman |
- Date — MM/DD/YYYY format; used to derive the month
- Amount — numeric; negative values represent refunds
- Parent Category — must match one of your defined categories
- Category — free-text sub-label for the transaction
Account Balances (optional)
You can track the balances of checking and savings accounts here, but this section really shines for investment accounts — there's something satisfying about watching that slow, steady growth over time.
Expected format
Download templateCSV
Month,Account,Amount January,Checking,12515.67 January,Roth IRA,46651.34 February,Roth IRA,54597.27
Spreadsheet (.xlsx / .xls)
| Month | Account | Amount |
|---|---|---|
| January | Checking | 12515.67 |
| January | Roth IRA | 46651.34 |
| February | Roth IRA | 54597.27 |
- Month — full month name (January–December)
- Account — account name (free text)
- Amount — numeric balance
Upload at least one month's transactions to enable.