Enter an address (or drag the pin). The tool geocodes it, pulls your building's
footprint from OpenStreetMap, fits two roof planes to its true orientation, sizes them from the
footprint area, and runs a genuine 8760-hour yield model for your point on real hourly satellite data (anchored to the NASA POWER 20-year norm), with a P50 / P90 band — all modelled
in the browser. The only thing sent anywhere is a coordinate, never your address; block the network and an embedded offline grid takes over. It seeds with a Long Island example until you enter an address.
Drag any panel to nudge it, drag a corner to resize, set tilt and azimuth (real roofs are rarely square to the
compass; the tool handles any angle). Not a quote — the arithmetic you run before trusting one. The exact
proforma.py command for your layout is at the bottom.
This calculator accompanies the write-up First-principles residential solar sizing → — why honest arithmetic beats the configurators, and the full method behind these numbers.
Esri World Imagery, ~0.1 m/px here. Type an address or drag the pin to relocate; the planes auto-fit your building's footprint and orientation. Drag a panel to move it, drag a corner to resize. Tilt and azimuth are sliders (you cannot read tilt from above). Auto-placement is a starting point, not a site survey.
This page sends only a coordinate to any service, never your address or a roof detail. The yield is computed in your browser by a built-in physical model (HDKR anisotropic transposition → ASHRAE incidence-angle loss → PVWatts DC→AC at 14% loss, plus a cell-temperature derate). When the network allows, the top tier is a genuine 8760-hour simulation on one year of real hourly satellite data (Open-Meteo / ERA5), anchored to the NASA POWER 20-year monthly norm, with a P50 / P90 resource band, for . Geocoding, the irradiance fetches, the building footprint, and map tiles are optional public-data calls on that coordinate; if the hourly fetch is blocked it falls back to live NASA POWER 0.5° monthly point data, and if that too is blocked, to an embedded coarse grid — the calculation always runs in-browser from the pin alone.
| What | Source (clickable) | How it's used |
|---|---|---|
| Irradiance + temperature (yield) | NASA POWER climatology — monthly GHI + 2m temp, 0.5° point; the validated P50 energy anchor (active tier: embedded grid) | 3 tiers: 8760 hourly → monthly point → embedded grid |
| Hourly shape (8760 model) | Open-Meteo Archive (ERA5) — one full year of hourly GHI/DHI/DNI + 2m temp, each month rescaled to the NASA POWER 20yr norm (not loaded) | one fetch/location, re-transposed per plane in-browser |
| P50 / P90 resource band | NASA POWER monthly record 2001–latest (interannual CV) + ~4% satellite-model σ (pending) | σtotal=√(CV²+σmeas²); P90=P50·(1−1.28σ) |
| Yield validation | PVGIS v5.2 PVcalc (EU JRC) · NREL PVWatts v8 | model checked vs PVGIS |
| Address → coordinates | OpenStreetMap Nominatim (CORS-enabled) | on submit; degrades to pin |
| Building footprint | OSM Overpass — way(around:30)[building] |
fits planes; optional |
| Tariff (LIPA / PSEG-LI) | OpenEI URDB — "Long Island Power Authority" | default $0.194/kWh; editable |
| Satellite imagery | Esri World Imagery | map tiles, on load |
Assumptions (all editable above or by dragging):
proforma.py --source pvgis run is the bankable check.proforma.py --tou runs the identical model on the CLI.Honest scorecard against commercial solar estimators (Aurora, Helioscope, PVsyst, the configurators). The physics here is now genuinely in their class; the data resolution and the bankable layers are where money still buys more.
Now matched
Still conceded (what a paid report or a site visit adds)
Bottom line: a credible first-pass P50/P90 from one coordinate, free and in your browser. For a contract, still walk the roof and pull a --source pvgis (or paid high-res) cross-check.
Your current layout, as an exact proforma.py run (full pro forma + live tariff):
From github.com/bigbrownjeff/solar-sizing.
Keyless by default (PVGIS); add --api-key for the PVWatts cross-check.
Take the numbers above to installers; make their quote survive contact with this arithmetic. These are starting points, not endorsements:
This tool fetches live NASA POWER 0.5° climatology (the best keyless, CORS-open source) and falls back to an embedded grid offline. For a finer, site-specific, or bankable estimate, these go deeper. Verified reachable 2026-06-25.
Free
proforma.py --source pvgis).proforma.py cross-check).Paid / commercial