How this calculator works
My reasoning and methods, then every fixed number the calculator uses and where it comes from.
Open the calculator →Read this alongside the tool, or come back to it when a result surprises you.The core comparison
The calculator treats rooftop solar as a long-term use of cash and asks one question: over your horizon, does buying the system beat investing the same money? It's closer to prepaying a bill than to buying a bond: bond interest is usually taxed, avoided bills aren't.
The cash side grows the system's price at your expected return, with tax on the gains. The solar side is the electricity you no longer buy, reinvested each year at the same after-tax return. What an EV saves on gasoline is shown separately.
The headline measures:
- Payback: the year your savings, added up as they arrive, cover the cost. It doesn't depend on the return you enter.
- Equivalent return: the steady yearly yield on the system's cost that its bill savings pay over exactly your analysis window, counting the system as worth $0 at the end. Avoided bills aren't taxed, so compare it straight against your after-tax return.
- Cost of doing nothing: the rising bills you'd keep paying without solar, including charging an EV from the grid, never gasoline.
Electricity savings grow with your utility escalation rate (which includes inflation), gasoline with a separate fuel outlook. Panels lose a little output each year, a battery a little more. All dollars are future (nominal) dollars.
What this is not
This is capital budgeting: money out now against costs avoided later. It isn't depreciation, book income or simple ROI, which ignores when savings arrive. The system's resale value is left out of the return and looked at separately under Home equity. It models an owner-occupied cash purchase only: no financing, no rental or business tax treatment.
Capture: the heart of the estimate
Solar earns full value only for the energy you use or store. The rest is exported, at retail, at a low net-billing rate, or for nothing. Everything comes from one yearly energy ledger that counts each kWh once:
- production = used as produced + sent to the battery + exported
- your load = used as produced + given back by the battery + still bought from the grid
The rooftop calculator fills the ledger hour by hour. It takes five homes with your usage pattern, simulated by NLR's ResStock from real housing in your area, scales them to your yearly use, and runs them through 180 days of real weather, 15 a month, with each hour's production from NLR PVWatts for your roof direction. Each hour the panels serve the house first, the surplus fills the battery, the battery covers the evening and night until it's empty, and what's left is exported. So a small array under a large always-on load is used almost whole, and a large array over a small daytime load exports most of itself.
Battery losses, and energy thrown away because it can't be exported, are worth $0. What the house still needs is bought from the grid, and that figure, not "usage minus production", is the electricity you're still buying.
The balcony calculator runs on the same hourly ledger, with production for steep panels of its own. Its differences are listed at the end of the fixed values.
Your own meter data
With a Green Button file the calculator runs on your home's own year instead: every real day, hour by hour, paired with the production of the matching day in your area's typical weather, with the battery's charge carried from day to day. If the file has readings every 15 minutes (or any part of an hour), solar use is counted reading by reading: hourly averages hide the minutes a home draws less than the panels make, and overstated a kit's use by 13% on one real year. Months the file doesn't cover come from the typical homes. If you already have solar, what those panels supplied directly is estimated hour by hour and held to what they made less what was sent back. On 50 real homes' full years, savings landed within half a percent of an exact calculation, with or without a battery, and within about 1% with an existing array. The file is read in your browser and goes nowhere.
If you already have solar
Adding panels or a battery is a decision about the next check, not the one already written. Under The solar you already own, savings become value(existing + new) − value(existing only), two runs of the same ledger, and the cost is the new invoice alone. There's no field for what the old system cost: it's sunk.
The usage field changes meaning here. A bill from a house with panels shows only what the utility delivered; solar used as it was made never crossed the meter. So the field asks for that delivered figure and works out the real use. If you also enter what you sent back, it's arithmetic: use = bought + produced − sent back. Without it, the calculator finds the household whose modelled purchases match your bill. Don't enter bought minus sent back: that's neither your use nor your bill.
Both runs share one household, so the new project's value depends on how the old system is credited. On net billing or zero export, the old panels already cover much of midday, so new panels earn only the use they add, often well under their output. That's when a battery or a daytime load like an EV charging at noon changes the answer.
Two things the calculator also states on screen:
- A retrofit battery is one shared house pack charging from either array's surplus. Under retail net metering, storing the old array's surplus trades a retail-value export for a retail-value import and loses the round trip. A pack charging only from the new array isn't modelled.
- On retail net metering, if the house still buys power, new panels earn close to retail whatever their own tariff, because each kWh they supply frees an old kWh to export at retail, unless an export limit curtails the new array.
How exported solar is credited
Your location sets your utility's usual rule for new systems, which you can change. For PG&E and SCE customers on net billing, the credit is the utility's published price for each hour (see below).
- Net metering, at or near retail. Each exported kWh earns about your retail rate, up to what you still buy over the year: a kWh sent at noon offsets one drawn at night. A battery changes resilience more than dollars here, since storing a kWh means not exporting one already worth retail, and the round trip loses some. This is California's legacy NEM 1 / NEM 2 and still common across the US. Production beyond your use is paid a low yearly true-up rate.
- Net billing, at a lower set rate. Exports earn less than retail while what you buy costs full retail, so using or storing your solar is worth far more than exporting it. This is California's NEM 3 (Net Billing Tariff) and many newer programs. The default is $0.06/kWh, explained below.
- Zero export. Nothing goes to the grid; what can't be used or stored is thrown away. Used where interconnection is limited, or to protect a legacy tariff on a separate system.
The $0.06/kWh export-credit default
For net billing the calculator fills in $0.06/kWh, which you can change. It's a production-weighted yearly average: each hour's export value weighted by how much of a typical system's exports land in that hour. Without a battery most exports land at low-value middays, which is why serious estimates fall in the $0.05–0.08/kWh band.
- First-year export values at the three California utilities have run about 4.6–8.2¢/kWh (SDG&E low, PG&E high), averaging near 6.7¢, so $0.06 is slightly conservative.
- Independent write-ups of NEM 3 cite a blended $0.05–0.08/kWh for a no-battery home system.
- PG&E and SCE customers don't use it: their exports are priced at the utility's hourly price, from under a cent at spring middays to around $1/kWh on August evenings, and a battery may sell into those hours. It's low if you get the ACC Plus adder (about $0.009/kWh, or $0.036 for CARE/FERA, fixed for nine years).
- It isn't the "value of solar." Grid-value studies put that 2–3× higher (Berkeley Lab's 2025 review: about $0.13–0.18/kWh). This field is what a utility actually credits.
Sources: PG&E's Energy Export Credit value sheets (hourly data at pge.com/eecvalues), SDG&E's export-pricing files, both from the CPUC's Avoided Cost Calculator. Elsewhere, look for your state's value-of-solar study or your utility's avoided-cost schedule (DSIRE lists state policies). Background: Berkeley Lab's A Review of Value of Solar Studies and One Year In: Tracking the Impacts of NEM 3.0.
Household savings vs. car savings
Solar's yearly saving reads straight off the ledger: solar used as produced × its rate, plus what the battery gives back × its rate, plus exports × their credit.
The car is valued separately, never at the price of gas. Its yearly need is miles ÷ MPGe × 33.7 kWh (the EPA's energy in a gallon of gasoline). Solar that charges it is priced like any other solar: at the electricity it replaces. Whether an electric car beats a gas car is a different question, so the gas saving, (miles ÷ MPG) gallons × your gas price less the cost of charging, is its own line.
A car's kWh are added to your household usage unless you check "This car already charges at home", which tells the calculator they're already in your bill's number. Either way they're timed on their own: from the panels while the sun is up by default (the rest in the cheapest night hours), overnight, or as soon as it's plugged in.
Time-of-use rates
For PG&E, LADWP, APS, SRP and NV Energy the calculator starts on the plan new solar customers there actually get, priced for every month and hour: prices from the Utility Rate Database, hours from each utility's tariff. You can pick another published plan, set your own summer and winter prices, or use one peak and one off-peak price all year.
Each kWh is priced at its hour: solar used as it's made, battery output, and what you still buy. So a battery and a west-facing roof earn their value in the hours they actually move. Your bill without solar is priced from when the house uses power, so turning the roof can't change the cost of doing nothing. Exports are priced by the hour too: at retail under net metering, at PG&E's or SCE's published price under California net billing.
On the escalation rate
I set a likely-conservative 5% a year. The last 10 years ran about 6.75% a year by my calculation. Starting in 2027, PG&E is asking for steady yearly increases; analyses of the filing project about 8% in 2027 (to ~38.4¢/kWh) and about 6.1% a year through 2030 (to ~42¢/kWh). Enter what you can defend from your own bill history.
Under the hood: fixed values and modeling choices
Hour by hour — how much solar you use or store
Battery
Prices
Not modelled
The balcony calculator
Exports & tariff mechanics
EV & gasoline
Financial engine
Home-equity lens: would a sale make you whole?
This premium lives here only. Don't add it to the equivalent return, which already sets resale to $0; that would double-count it, especially with a longer analysis window.
Defaults
Location & the panel-spec production estimate
Without a quote, the calculator estimates first-year production from panel count, wattage and location. The 14 locations are real coordinates, one per major US solar market. Each was run through the NLR PVWatts v8 API with standard modules and PVWatts' default 14% system loss, at eight tilts and eight directions: 896 runs, saved as a table. The roof model reads the 20° tilt, a typical pitch. Between the eight directions it follows a smooth curve through the measured points; a cosine over-penalizes east and west roofs, which still collect diffuse skylight. Each direction has its own monthly shares, so a Seattle winter isn't treated like a Miami one.
This sets how much a roof produces in a year; the hourly ledger sets when. A west roof makes less than a south one but more of it near the evening peak. Anywhere else is approximated by the nearest of the 14 points, and local microclimates can differ. For a real number, run PVWatts for your address or get a quote and choose "I have a quote".
Planning for future electricity use
Sizing solar to last year's bill assumes your use stays flat, which is usually wrong: electrification and solar tend to arrive together. You can add expected loads so the shortfall reflects where you're heading. The presets are mid-range starting points that vary widely with climate, equipment and habits: heat-pump water heater ~1,200 kWh/yr replacing gas (real-world reports cluster 900–1,500; DOE's category average ~2,195); heat-pump space heating 2,500 / 4,000 / 7,000 kWh/yr for mild / moderate / cold climates (whole-house figures run 3,000–8,500); induction range ~500; electric dryer ~600; pool pump ~2,500 (single-speed; variable-speed 50–70% less); spa ~1,800. Always-on machines use the draw and hours you enter. For gas replacements the calculator adds the new electricity but doesn't credit the gas you stop buying, so your real cost is better than shown.
The stress test
The stress test re-runs the whole model with one assumption made worse at a time, ordered by impact, and shows the new verdict. These are deliberate bad cases, not forecasts; the last row stacks them all, which is meant to be unlikely. If the answer survives that, I trust it. The headline gives the lowest rate escalation at which solar still wins, so you can see how much slack you have.
Rates → fixed fees: solar only offsets the per-kWh part of a bill, so a utility moving charges into a fixed monthly fee erodes savings even as bills rise. PG&E did this in 2026 (~$24/month Base Services Charge). Battery end of life: the one equipment failure modelled (inverter warranties now run ~25 years). The calculator takes whichever is cheaper over the remaining years: replace the battery or run without it. The default failure year (12) and the 2026 replacement price are harsh on purpose and adjustable. It doesn't price losing backup power, so cheaper isn't automatically better.
The "Our future" lens: carbon & social value
Carbon payback compares the CO₂ to make the system with the grid emissions it offsets. Manufacturing is estimated at ~1,600 kg CO₂e per kW for a typical mostly-China-made system (module, inverter, racking; ≈45 gCO₂/kWh over its life, consistent with NLR's life-cycle harmonization and IEA PVPS Task 12), or ~1,000 kg/kW if made on a low-carbon grid; both editable. Each year's offset is your production (degraded) × your grid's carbon intensity, from EPA eGRID2023 for each market's subregion (average, not marginal), editable. The grid gets cleaner each year, so later years offset less: 2.5% a year by default, close to the US average's recent fall (0.855 lb CO₂/kWh in 2021 to 0.81 in 2023, EIA), and editable. On a very clean grid the system may never pay back its carbon, and the lens shows that. The equivalents use EPA figures: ~2,500 miles in an average gas car per tonne, and 8.887 kg CO₂ per gallon of gasoline (~113 gallons per tonne).
Social value puts a dollar figure on the climate part only: lifetime tonnes avoided × the U.S. federal social cost of carbon, set on a slider (default ~$190; from near zero, through the 2021 federal ~$51 and EPA's 2023 ~$190, to $300+ in lower-discount-rate academic work). It's value to society, not money you receive, and it leaves out health damages from coal and gas, which are real.
The lens turns green when carbon payback falls inside your horizon, which it nearly always does; the lifetime figure is the point. The Resilience lens turns green when your system includes a battery.
These are planning estimates, not a guarantee or financial advice. Rates, incentives, taxes, degradation and interconnection rules vary; check the details of any quote before relying on these numbers.