↔ Drag a column header to rearrange columns
Current Price is sourced from Twelve Data — real-time for U.S. markets, delayed or last close elsewhere (see Data timing). Prices auto-refresh on open, after each save, and every 2 minutes.
Data timing: real-time pricing applies to U.S. markets only; Australian market data is delayed approximately 20 minutes; all other supported markets update end-of-day (EOD).
Sector uses a built-in table + Twelve Data, cached per ticker so it loads instantly afterward.
Cost Basis is the running total you've invested; Price Paid Per Share = Cost Basis ÷ Shares. Adding a ticker you already hold rolls into that position.
Your holdings are saved in this browser (localStorage) on this device. Use Export to back up your data.
Set a cash-flow target for each year: dividends, interest and crypto rewards received.
Appreciation and realized gains are not counted — these are income goals.
Monthly goals are auto-calculated based on the yearly goal amount.
Balance goal. Set one to anchor this year's target — future years compound from it: (previous goal + that year's contribution goal) × (1 + target return). Left blank, your history sets it automatically: last year's actual ending balance, grown by this year's contribution goal and target return (shown as the suggestion in the box).
Past years show no goal — goals look forward.
Contribution goals. Enter how much you plan to add per year and an optional yearly growth rate, then click Apply — it fills the Contribution Goal column from this year forward, growing each year by that percentage. Your Net Contribution is measured against it: a ✓ in “Contribution Goal Met” means you hit that year's target.
Target return is the annual growth rate used to compound your balance goal forward from year to year.
Actual return rate is your total return for the year (appreciation + income, net of flows) measured against the starting balance.
Net Contribution is what you actually added that year — deposits minus withdrawals — so a year where withdrawals exceed deposits can miss its contribution goal even after adding money.
Your investments are pulled from your portfolio automatically. Add bank cash and other assets (home, vehicles) here.
What you owe: mortgage, loans, credit cards. Update a balance anytime — history is kept for the chart.
Professional PDF reports built from your portfolio data — branded, dated, and ready to file or share. Everything is generated on your device; nothing is uploaded.
| Report | Contents | Best for |
|---|---|---|
| Portfolio Summary | Key stats, total-return breakdown, allocation by sector & holding type, full holdings table with gains and yields. | Monthly snapshot, sharing with an advisor |
| Income Report | Dividends, interest & rewards by month and by sector, top payers, yield & yield-on-cost for the period. | Income investors, retirement planning |
| Performance Report | Monthly total returns vs. your selected benchmarks, yearly investment gains and return rates. | Reviewing strategy, benchmark comparisons |
| Realized Gains (Tax) | Every sale in the period with proceeds, cost basis, realized gain/loss and short/long-term split, plus taxable income received. | Tax season, sharing with your accountant |
| Transactions Statement | Complete dated ledger — buys, sells, deposits, transfers, income — like a brokerage statement. | Record keeping, audits |
Send a structured snapshot of your portfolio to your favorite AI for a second opinion. Foliobright copies the full analysis briefing to your clipboard and opens the assistant — just paste. Your data goes only where you paste it; account names are included, account numbers never exist in Foliobright.
Adding a ticker you already hold in an account adds to that position and keeps a running cost basis. The current price is pulled automatically unless you set it manually.
Non-USD cash converts using the live exchange rate. Same-currency cash in the same account merges into one row.
Buys can be recorded as new deposits (new money) or paid from the account's existing cash.
The purchase cost is deducted from the selected cash balance automatically (converted at the live rate for non-USD cash) and won't count as a new contribution.
Flags a fund (not a fiat balance) as cash-like — e.g. a high-interest cash ETF such as CASH.TO or CSH2 that trades like a stock but functions as cash. It rolls into your Cash allocation instead of Stocks/ETF and stays out of return math.
Its cost basis and returns are tracked like any other holding, but it doesn't count toward your annual contribution goals — it's your employer's money, not yours.
Create an account subtab to group your holdings by where they're held.
Either way the cash is credited to the account and your return % stays accurate — the choice only affects whether it appears in contribution totals.
Record a sale. Shares are removed from the matching holding (average-cost basis) and a realized gain/loss is logged.
Record a dividend, interest payment, or a crypto reward. Dividends & interest accrue as cash. Crypto rewards add coins to the holding as a dated tax lot at a cost basis you choose (defaults to $0), valued live at the current token price — so a later sale is a short/long-term realized gain.
Name, back up, restore, or start a new portfolio. All data is stored in this browser.
Keep several portfolios in your account and switch between them. The active one is marked ●.
Export saves the active portfolio — holdings, transactions, income and snapshots — to a JSON file. Import restores from one.
Clear the locally stored data on this device and start fresh. You'll be prompted to back up first. (Portfolios saved to your account are not affected.)
Choose a new password for your account.
Sign in or create your account to build your portfolio, sync across devices, and get live market data through your subscription.
Shown next to your name and stored on this device
Have a promo code? You can enter it on the checkout page.
You signed up with Google, so there's no password yet. Set one here to also enable email + password sign-in. Google sign-in keeps working either way.
Prices refresh automatically while the app is open — real-time for U.S. markets, ~20-min delayed for Australia, and end-of-day elsewhere. Turn this off to update only when you click ↻ Refresh.
Lines compared against your monthly return (up to 4). Defaults to your country's main index; international benchmarks use US-listed index ETFs.
Your portfolio's return counts dividend income (total return). With this on, benchmark lines add their funds' distributions too, making the comparison like-for-like. Off shows price-only benchmark returns, as indexes are usually quoted in the news.
Choose how Foliobright looks on this device. Applies instantly.
Pick the typeface for the whole app. Applies instantly on this device.
The explanatory flyover boxes that appear when you hover the ⓘ icons and other hints. On by default.
Which one? Import your transaction history for the full experience — performance charts, contribution tracking, and tax reports. Use current holdings for a quick snapshot of what you own today, or if your broker only exports positions and you plan to add transactions manually over time. Tip: keep one method per account (mixing both can double-count).
Use this tab for a transactions / activity import — each row is a buy, sell, or dividend with a date. (For a positions import, use the Current holdings tab — the two are imported differently.) Map the columns and preview before importing. Re-imports are de-duplicated.
Record new cash coming into an account — a contribution such as payroll, a transfer in, or money you're adding. It raises the account's balance, counts toward your contribution goals, and is kept out of performance math, so it never reads as a gain or loss.
Where the money sits. Keep Cash balance for ordinary cash, or a money-market sweep (fixed $1.00) if it's parked there — both stay out of return math. A stablecoin (e.g. USDC, EURC) is recorded as a market-priced holding: you enter a quantity and cost basis, it tracks its peg currency, and foreign-pegged coins show real gain/loss that counts toward returns. All three still group under Cash in your allocation.
Record cash leaving an account (a distribution, spending, or transfer out of the portfolio). Withdrawals reduce that account's cash balance and net against your contributions — they never read as a gain or loss.
A split changes your share count and per-share prices but never the dollars you invested — cost basis stays the same. This is applied to every account holding this ticker, its tax lots, and its buy/sell history.
Move whole positions or specific tax lots between accounts. Transfers are internal — they don't affect returns, contributions, or cost basis.
Swap one token for another inside an account (e.g. ETH → BTC, or USDC → EURC). We sell what you pay with — booking its realized gain/loss — and set the new coin's cost basis to the value you gave up. Pick specific tax lots on the sell side if you want.
Enter today's balance, or back-date it to log history. Each saved balance becomes a point on the net-worth chart; between points the last value carries forward.
Net Worth = Total Assets − Total Liabilities.
Investments come straight from your portfolio (its full monthly value history), so that line is always live — no entry needed.
Non-investment cash (bank/HYSA), other assets (home, vehicles), and liabilities (mortgage, loans, credit cards) are entered here. Update a balance whenever it changes.
Each balance you save is dated, so the chart tracks real history; between updates the last balance carries forward. Back-date an entry to fill in the past.
Chart tips: use the timeframe buttons (1M–ALL) to change the range — anything over 3 years switches the x-axis to years. Click any item in the chart legend to show or hide that series.
Each purchase is a separate tax lot. Edit a date to correct an acquisition date (useful for older positions).