<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Solar Panel Cost by State in 2026: Real Prices &amp; Payback on SolarCostData — 2026 Energy Cost, Savings &amp; Tax-Credit Calculators</title>
    <link>https://solarcostdata.com/solar-panel-cost/</link>
    <description>Recent content in Solar Panel Cost by State in 2026: Real Prices &amp; Payback on SolarCostData — 2026 Energy Cost, Savings &amp; Tax-Credit Calculators</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 25 Sep 2026 00:00:00 +0300</lastBuildDate>
    <atom:link href="https://solarcostdata.com/solar-panel-cost/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Solar Panel Cost in Hawaii: $3.39/W, 8.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/hawaii/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:15 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/hawaii/</guid>
      <description>&lt;p&gt;Everything below uses Hawaii&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (48.0¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,550 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;446.40&#34; data-exact=&#34;446.40000000000003&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Hawaii&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;48.0&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 13.5¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;13.50&#34; data-exact=&#34;13.5&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Hawaii PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1395&#34; data-exact=&#34;1395.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.39&#34; data-exact=&#34;3.39&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Alaska: $2.80/W, 21.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/alaska/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:14 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/alaska/</guid>
      <description>&lt;p&gt;Everything below uses Alaska&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (28.8¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;880 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;152.22&#34; data-exact=&#34;152.2224&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Alaska&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;28.83&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Avoided-cost credit — 7.2¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;7.21&#34; data-exact=&#34;7.2075&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Alaska PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;792&#34; data-exact=&#34;792.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.80&#34; data-exact=&#34;2.8&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in California: $2.47/W, 9.7-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/california/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:14 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/california/</guid>
      <description>&lt;p&gt;Everything below uses California&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (33.6¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,610 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;324.67&#34; data-exact=&#34;324.67260000000005&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with California&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;33.61&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 6.5¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;6.50&#34; data-exact=&#34;6.5&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— California PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1449&#34; data-exact=&#34;1449.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.47&#34; data-exact=&#34;2.47&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Oregon: $2.47/W, 16.4-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/oregon/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:14 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/oregon/</guid>
      <description>&lt;p&gt;Everything below uses Oregon&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.0¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,075 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;103.01&#34; data-exact=&#34;103.0065&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Oregon&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.97&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.79&#34;&gt;Net billing — exports credited below retail (assume 4.8¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Oregon PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;968&#34; data-exact=&#34;967.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.47&#34; data-exact=&#34;2.47&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Washington: $2.55/W, 18.5-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/washington/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:14 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/washington/</guid>
      <description>&lt;p&gt;Everything below uses Washington&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (14.7¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,045 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;92.23&#34; data-exact=&#34;92.2317&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Washington&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;14.71&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.41&#34;&gt;Net billing — exports credited below retail (assume 4.4¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Washington PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;940&#34; data-exact=&#34;940.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.55&#34; data-exact=&#34;2.55&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Arizona: $2.21/W, 16.9-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/arizona/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/arizona/</guid>
      <description>&lt;p&gt;Everything below uses Arizona&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,685 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;155.49&#34; data-exact=&#34;155.4918&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Arizona&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.38&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.6¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.61&#34; data-exact=&#34;4.614&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Arizona PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1516&#34; data-exact=&#34;1516.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.21&#34; data-exact=&#34;2.21&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Colorado: $2.66/W, 11.4-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/colorado/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/colorado/</guid>
      <description>&lt;p&gt;Everything below uses Colorado&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (17.0¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,485 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;151.47&#34; data-exact=&#34;151.47&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Colorado&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;17.0&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;5.10&#34;&gt;Net billing — exports credited below retail (assume 5.1¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Colorado PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1336&#34; data-exact=&#34;1336.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.66&#34; data-exact=&#34;2.66&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Idaho: $3.05/W, 22.7-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/idaho/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/idaho/</guid>
      <description>&lt;p&gt;Everything below uses Idaho&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (13.7¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,380 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;113.68&#34; data-exact=&#34;113.6844&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Idaho&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;13.73&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 8.0¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Idaho PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1242&#34; data-exact=&#34;1242.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.05&#34; data-exact=&#34;3.05&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Montana: $2.54/W, 15.2-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/montana/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/montana/</guid>
      <description>&lt;p&gt;Everything below uses Montana&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.0¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,275 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;114.67&#34; data-exact=&#34;114.6735&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Montana&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;14.99&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.50&#34;&gt;Net billing — exports credited below retail (assume 4.5¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Montana PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1148&#34; data-exact=&#34;1147.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.54&#34; data-exact=&#34;2.54&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Nevada: $2.38/W, 20.8-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/nevada/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/nevada/</guid>
      <description>&lt;p&gt;Everything below uses Nevada&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (12.8¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,705 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;130.64&#34; data-exact=&#34;130.6371&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Nevada&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;12.77&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 3.8¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;3.83&#34; data-exact=&#34;3.8309999999999995&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Nevada PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1534&#34; data-exact=&#34;1534.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.38&#34; data-exact=&#34;2.38&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in New Mexico: $2.67/W, 10.5-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/new-mexico/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/new-mexico/</guid>
      <description>&lt;p&gt;Everything below uses New Mexico&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.1¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,720 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;166.05&#34; data-exact=&#34;166.0488&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with New Mexico&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;16.09&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.83&#34;&gt;Net billing — exports credited below retail (assume 4.8¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— New Mexico PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1548&#34; data-exact=&#34;1548.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.67&#34; data-exact=&#34;2.67&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Texas: $2.25/W, 10.7–21.1-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/texas/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/texas/</guid>
      <description>&lt;p&gt;Everything below uses Texas&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.9¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,455 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;138.63&#34; data-exact=&#34;138.6324&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Texas&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.88&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — the best case, the low end of this page&#39;s range&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;3.00&#34;&gt;Reduced credit — 3.0¢/kWh, the high end of the range&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;3.00&#34; data-exact=&#34;3.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Texas PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1310&#34; data-exact=&#34;1309.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.25&#34; data-exact=&#34;2.25&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Utah: $2.50/W, 23.8-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/utah/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/utah/</guid>
      <description>&lt;p&gt;Everything below uses Utah&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (13.1¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,430 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;112.57&#34; data-exact=&#34;112.56959999999998&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Utah&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;13.12&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.4¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.40&#34; data-exact=&#34;4.4&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Utah PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1287&#34; data-exact=&#34;1287.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.50&#34; data-exact=&#34;2.5&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Wyoming: $3.54/W, 18.1-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/wyoming/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:13 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/wyoming/</guid>
      <description>&lt;p&gt;Everything below uses Wyoming&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (14.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,475 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;127.09&#34; data-exact=&#34;127.08600000000001&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Wyoming&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;14.36&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.31&#34;&gt;Net billing — exports credited below retail (assume 4.3¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Wyoming PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1328&#34; data-exact=&#34;1327.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.54&#34; data-exact=&#34;3.54&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Alabama: $3.88/W, 18.6–29.3-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/alabama/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/alabama/</guid>
      <description>&lt;p&gt;Everything below uses Alabama&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,360 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;133.82&#34; data-exact=&#34;133.82399999999998&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Alabama&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;16.4&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — the best case, the low end of this page&#39;s range&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.92&#34;&gt;Reduced credit — 4.9¢/kWh, the high end of the range&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.92&#34; data-exact=&#34;4.919999999999999&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Alabama PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1224&#34; data-exact=&#34;1224.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.88&#34; data-exact=&#34;3.88&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Arkansas: $2.38/W, 23.0-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/arkansas/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/arkansas/</guid>
      <description>&lt;p&gt;Everything below uses Arkansas&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (14.3¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,360 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;116.93&#34; data-exact=&#34;116.9328&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Arkansas&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;14.33&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.3¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.30&#34; data-exact=&#34;4.2989999999999995&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Arkansas PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1224&#34; data-exact=&#34;1224.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.38&#34; data-exact=&#34;2.38&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Delaware: $2.54/W, 11.7-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/delaware/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/delaware/</guid>
      <description>&lt;p&gt;Everything below uses Delaware&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (18.5¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,270 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;140.82&#34; data-exact=&#34;140.8176&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Delaware&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;18.48&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;5.54&#34;&gt;Net billing — exports credited below retail (assume 5.5¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Delaware PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1143&#34; data-exact=&#34;1143.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.54&#34; data-exact=&#34;2.54&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Florida: $2.13/W, 10.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/florida/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/florida/</guid>
      <description>&lt;p&gt;Everything below uses Florida&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.0¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,475 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;133.02&#34; data-exact=&#34;133.0155&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Florida&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.03&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.51&#34;&gt;Net billing — exports credited below retail (assume 4.5¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Florida PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1328&#34; data-exact=&#34;1327.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.13&#34; data-exact=&#34;2.13&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Georgia: $2.49/W, 23.1-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/georgia/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/georgia/</guid>
      <description>&lt;p&gt;Everything below uses Georgia&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.3¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,385 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;135.20&#34; data-exact=&#34;135.2037&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Georgia&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;16.27&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 3.2¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;3.22&#34; data-exact=&#34;3.2188&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Georgia PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1246&#34; data-exact=&#34;1246.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.49&#34; data-exact=&#34;2.49&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Illinois: $3.02/W, 23.0-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/illinois/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/illinois/</guid>
      <description>&lt;p&gt;Everything below uses Illinois&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (19.2¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,245 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;143.57&#34; data-exact=&#34;143.5734&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Illinois&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;19.22&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 5.8¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;5.77&#34; data-exact=&#34;5.765999999999999&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Illinois PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1120&#34; data-exact=&#34;1120.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.02&#34; data-exact=&#34;3.02&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Indiana: $2.79/W, 24.2-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/indiana/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/indiana/</guid>
      <description>&lt;p&gt;Everything below uses Indiana&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.7¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,255 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;125.98&#34; data-exact=&#34;125.9769&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Indiana&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;16.73&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 5.0¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;5.02&#34; data-exact=&#34;5.019&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Indiana PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1130&#34; data-exact=&#34;1129.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.79&#34; data-exact=&#34;2.79&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Iowa: $3.28/W, 27.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/iowa/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/iowa/</guid>
      <description>&lt;p&gt;Everything below uses Iowa&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.0¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,295 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;124.24&#34; data-exact=&#34;124.24230000000001&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Iowa&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.99&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.8¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.80&#34; data-exact=&#34;4.797&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Iowa PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1166&#34; data-exact=&#34;1165.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.28&#34; data-exact=&#34;3.28&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Kansas: $2.64/W, 22.1-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/kansas/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/kansas/</guid>
      <description>&lt;p&gt;Everything below uses Kansas&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.3¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,455 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;133.31&#34; data-exact=&#34;133.30710000000002&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Kansas&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.27&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.6¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.58&#34; data-exact=&#34;4.5809999999999995&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Kansas PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1310&#34; data-exact=&#34;1309.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.64&#34; data-exact=&#34;2.64&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Kentucky: $2.55/W, 22.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/kentucky/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/kentucky/</guid>
      <description>&lt;p&gt;Everything below uses Kentucky&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (13.8¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,260 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;104.40&#34; data-exact=&#34;104.4036&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Kentucky&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;13.81&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 6.9¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;6.92&#34; data-exact=&#34;6.924&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Kentucky PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1134&#34; data-exact=&#34;1134.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.55&#34; data-exact=&#34;2.55&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Louisiana: $2.35/W, 25.4-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/louisiana/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/louisiana/</guid>
      <description>&lt;p&gt;Everything below uses Louisiana&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (12.7¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,420 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;108.37&#34; data-exact=&#34;108.3744&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Louisiana&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;12.72&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Avoided-cost credit — 3.2¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;3.18&#34; data-exact=&#34;3.18&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Louisiana PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1278&#34; data-exact=&#34;1278.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.35&#34; data-exact=&#34;2.35&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Maryland: $2.62/W, 10.4-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/maryland/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/maryland/</guid>
      <description>&lt;p&gt;Everything below uses Maryland&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (21.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,280 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;164.43&#34; data-exact=&#34;164.4288&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Maryland&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;21.41&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;6.42&#34;&gt;Net billing — exports credited below retail (assume 6.4¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Maryland PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1152&#34; data-exact=&#34;1152.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.62&#34; data-exact=&#34;2.62&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Michigan: $2.91/W, 19.7-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/michigan/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/michigan/</guid>
      <description>&lt;p&gt;Everything below uses Michigan&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (23.1¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,205 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;166.65&#34; data-exact=&#34;166.6515&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Michigan&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;23.05&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 6.9¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;6.92&#34; data-exact=&#34;6.915&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Michigan PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1084&#34; data-exact=&#34;1084.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.91&#34; data-exact=&#34;2.91&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Minnesota: $3.23/W, 16.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/minnesota/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/minnesota/</guid>
      <description>&lt;p&gt;Everything below uses Minnesota&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (17.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,235 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;129.30&#34; data-exact=&#34;129.3045&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Minnesota&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;17.45&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;5.23&#34;&gt;Net billing — exports credited below retail (assume 5.2¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Minnesota PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1112&#34; data-exact=&#34;1111.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.23&#34; data-exact=&#34;3.23&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Mississippi: $2.29/W, 24.5-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/mississippi/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/mississippi/</guid>
      <description>&lt;p&gt;Everything below uses Mississippi&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (14.5¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,390 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;121.26&#34; data-exact=&#34;121.2636&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Mississippi&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;14.54&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 2.5¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;2.50&#34; data-exact=&#34;2.5&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Mississippi PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1251&#34; data-exact=&#34;1251.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.29&#34; data-exact=&#34;2.29&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Missouri: $2.51/W, 23.3-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/missouri/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/missouri/</guid>
      <description>&lt;p&gt;Everything below uses Missouri&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (16.1¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,315 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;126.95&#34; data-exact=&#34;126.95009999999998&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Missouri&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;16.09&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Avoided-cost credit — 4.0¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.02&#34; data-exact=&#34;4.0225&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Missouri PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1184&#34; data-exact=&#34;1183.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.51&#34; data-exact=&#34;2.51&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Nebraska: $3.62/W, 20.8-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/nebraska/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/nebraska/</guid>
      <description>&lt;p&gt;Everything below uses Nebraska&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (13.8¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,335 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;110.38&#34; data-exact=&#34;110.3778&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Nebraska&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;13.78&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.13&#34;&gt;Net billing — exports credited below retail (assume 4.1¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Nebraska PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1202&#34; data-exact=&#34;1201.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.62&#34; data-exact=&#34;3.62&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in North Carolina: $2.35/W, 21.4-Yr Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/north-carolina/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/north-carolina/</guid>
      <description>&lt;p&gt;Everything below uses North Carolina&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.2¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,375 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;125.07&#34; data-exact=&#34;125.07000000000001&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with North Carolina&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.16&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.5¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.55&#34; data-exact=&#34;4.548&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— North Carolina PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1238&#34; data-exact=&#34;1237.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.35&#34; data-exact=&#34;2.35&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in North Dakota: $4.18/W, 41.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/north-dakota/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/north-dakota/</guid>
      <description>&lt;p&gt;Everything below uses North Dakota&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (13.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,190 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;95.75&#34; data-exact=&#34;95.74739999999998&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with North Dakota&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;13.41&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Avoided-cost credit — 3.4¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;3.35&#34; data-exact=&#34;3.3525&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— North Dakota PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1071&#34; data-exact=&#34;1071.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;4.18&#34; data-exact=&#34;4.18&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Ohio: $2.69/W, 21.3-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/ohio/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/ohio/</guid>
      <description>&lt;p&gt;Everything below uses Ohio&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (19.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,215 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;141.79&#34; data-exact=&#34;141.7905&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Ohio&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;19.45&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 5.8¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;5.83&#34; data-exact=&#34;5.835&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Ohio PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1094&#34; data-exact=&#34;1093.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.69&#34; data-exact=&#34;2.69&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Oklahoma: $2.62/W, 24.0-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/oklahoma/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/oklahoma/</guid>
      <description>&lt;p&gt;Everything below uses Oklahoma&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (14.3¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,475 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;127.00&#34; data-exact=&#34;126.99749999999999&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Oklahoma&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;14.35&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Avoided-cost credit — 3.6¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;3.59&#34; data-exact=&#34;3.5875&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Oklahoma PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1328&#34; data-exact=&#34;1327.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.62&#34; data-exact=&#34;2.62&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in South Carolina: $2.61/W, 22.6-Yr Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/south-carolina/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/south-carolina/</guid>
      <description>&lt;p&gt;Everything below uses South Carolina&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.5¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,385 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;128.56&#34; data-exact=&#34;128.5557&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with South Carolina&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.47&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 4.6¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.64&#34; data-exact=&#34;4.641&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— South Carolina PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1246&#34; data-exact=&#34;1246.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.61&#34; data-exact=&#34;2.61&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in South Dakota: $3.50/W, 39.7-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/south-dakota/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/south-dakota/</guid>
      <description>&lt;p&gt;Everything below uses South Dakota&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,310 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;120.81&#34; data-exact=&#34;120.8082&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with South Dakota&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.37&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;No export credit — exports earn nothing — 0.0¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;0.00&#34; data-exact=&#34;0.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— South Dakota PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1179&#34; data-exact=&#34;1179.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.50&#34; data-exact=&#34;3.5&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Tennessee: $3.56/W, 21.2–33.2-Yr Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/tennessee/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/tennessee/</guid>
      <description>&lt;p&gt;Everything below uses Tennessee&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (13.7¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,290 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;106.12&#34; data-exact=&#34;106.11540000000001&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Tennessee&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;13.71&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — the best case, the low end of this page&#39;s range&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;4.11&#34;&gt;Reduced credit — 4.1¢/kWh, the high end of the range&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;4.11&#34; data-exact=&#34;4.113&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Tennessee PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1161&#34; data-exact=&#34;1161.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.56&#34; data-exact=&#34;3.56&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Virginia: $2.52/W, 11.7-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/virginia/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/virginia/</guid>
      <description>&lt;p&gt;Everything below uses Virginia&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (17.6¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,330 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;140.05&#34; data-exact=&#34;140.049&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Virginia&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;17.55&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;5.26&#34;&gt;Net billing — exports credited below retail (assume 5.3¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Virginia PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1197&#34; data-exact=&#34;1197.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.52&#34; data-exact=&#34;2.52&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in West Virginia: $2.90/W, 20.6-Yr Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/west-virginia/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/west-virginia/</guid>
      <description>&lt;p&gt;Everything below uses West Virginia&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (15.8¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,185 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;112.20&#34; data-exact=&#34;112.1958&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with West Virginia&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;15.78&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 10.8¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;10.85&#34; data-exact=&#34;10.85&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— West Virginia PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1066&#34; data-exact=&#34;1066.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.90&#34; data-exact=&#34;2.9&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Wisconsin: $3.11/W, 14.8–23.7-Yr Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/wisconsin/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:12 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/wisconsin/</guid>
      <description>&lt;p&gt;Everything below uses Wisconsin&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (19.1¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,245 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;142.38&#34; data-exact=&#34;142.3782&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Wisconsin&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;19.06&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — the best case, the low end of this page&#39;s range&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;5.72&#34;&gt;Reduced credit — 5.7¢/kWh, the high end of the range&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;5.72&#34; data-exact=&#34;5.717999999999999&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Wisconsin PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1120&#34; data-exact=&#34;1120.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;3.11&#34; data-exact=&#34;3.11&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Connecticut: $2.73/W, 17.6-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/connecticut/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/connecticut/</guid>
      <description>&lt;p&gt;Everything below uses Connecticut&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (24.2¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,235 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;179.03&#34; data-exact=&#34;179.02560000000003&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Connecticut&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;24.16&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 7.2¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;7.25&#34; data-exact=&#34;7.247999999999999&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Connecticut PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1112&#34; data-exact=&#34;1111.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.73&#34; data-exact=&#34;2.73&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Maine: $2.93/W, 8.0-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/maine/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/maine/</guid>
      <description>&lt;p&gt;Everything below uses Maine&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (32.4¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,225 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;238.21&#34; data-exact=&#34;238.21349999999995&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Maine&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;32.41&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;9.72&#34;&gt;Net billing — exports credited below retail (assume 9.7¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Maine PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1102&#34; data-exact=&#34;1102.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.93&#34; data-exact=&#34;2.93&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Massachusetts: $2.91/W, 8.3-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/massachusetts/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/massachusetts/</guid>
      <description>&lt;p&gt;Everything below uses Massachusetts&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (30.5¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,250 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;228.67&#34; data-exact=&#34;228.67499999999998&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Massachusetts&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;30.49&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;9.15&#34;&gt;Net billing — exports credited below retail (assume 9.1¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Massachusetts PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1125&#34; data-exact=&#34;1125.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.91&#34; data-exact=&#34;2.91&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in New Hampshire: $2.89/W, 17.1-Yr Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/new-hampshire/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/new-hampshire/</guid>
      <description>&lt;p&gt;Everything below uses New Hampshire&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (26.6¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,220 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;194.71&#34; data-exact=&#34;194.71200000000002&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with New Hampshire&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;26.6&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 8.0¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;7.98&#34; data-exact=&#34;7.98&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— New Hampshire PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1098&#34; data-exact=&#34;1098.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.89&#34; data-exact=&#34;2.89&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in New Jersey: $2.68/W, 9.2-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/new-jersey/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/new-jersey/</guid>
      <description>&lt;p&gt;Everything below uses New Jersey&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (25.2¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,260 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;190.44&#34; data-exact=&#34;190.43640000000002&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with New Jersey&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;25.19&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;7.56&#34;&gt;Net billing — exports credited below retail (assume 7.6¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— New Jersey PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1134&#34; data-exact=&#34;1134.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.68&#34; data-exact=&#34;2.68&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in New York: $2.76/W, 7.9-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/new-york/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/new-york/</guid>
      <description>&lt;p&gt;Everything below uses New York&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (29.9¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,270 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;227.84&#34; data-exact=&#34;227.838&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with New York&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;29.9&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;8.97&#34;&gt;Net billing — exports credited below retail (assume 9.0¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— New York PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1143&#34; data-exact=&#34;1143.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.76&#34; data-exact=&#34;2.76&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Pennsylvania: $2.58/W, 10.2-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/pennsylvania/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/pennsylvania/</guid>
      <description>&lt;p&gt;Everything below uses Pennsylvania&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (21.7¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,270 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;165.51&#34; data-exact=&#34;165.50639999999999&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Pennsylvania&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;21.72&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;6.52&#34;&gt;Net billing — exports credited below retail (assume 6.5¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Pennsylvania PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1143&#34; data-exact=&#34;1143.0&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.58&#34; data-exact=&#34;2.58&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Rhode Island: $2.77/W, 8.5-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/rhode-island/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/rhode-island/</guid>
      <description>&lt;p&gt;Everything below uses Rhode Island&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (28.3¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,255 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;213.02&#34; data-exact=&#34;213.0237&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Rhode Island&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;28.29&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;retail&#34; selected&gt;Full-retail net metering — this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;billing&#34; data-expc=&#34;8.49&#34;&gt;Net billing — exports credited below retail (assume 8.5¢)&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34; hidden&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;8.00&#34; data-exact=&#34;8.0&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34; hidden&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Rhode Island PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1130&#34; data-exact=&#34;1129.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.77&#34; data-exact=&#34;2.77&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solar Panel Cost in Vermont: $2.76/W, 15.4-Year Payback</title>
      <link>https://solarcostdata.com/solar-panel-cost/vermont/</link>
      <pubDate>Fri, 25 Sep 2026 00:50:11 +0300</pubDate>
      <guid>https://solarcostdata.com/solar-panel-cost/vermont/</guid>
      <description>&lt;p&gt;Everything below uses Vermont&amp;rsquo;s &lt;strong&gt;real average residential electricity rate (23.8¢/kWh, EIA)&lt;/strong&gt; and a production&#xA;band of about &lt;strong&gt;1,125 kWh per kW per year&lt;/strong&gt;. Both are stated openly because they are the two inputs that decide the answer.&#xA;These are estimates for sanity-checking a quote, not a quote.&lt;/p&gt;&#xA;&lt;h2 id=&#34;run-it-with-your-own-numbers&#34;&gt;Run it with your own numbers&lt;/h2&gt;&#xA;&lt;div class=&#34;calc&#34; id=&#34;calc&#34;&gt;&#xA;  &lt;label&gt;Your average monthly electric bill ($) &lt;span class=&#34;muted&#34;&gt;— prefilled so the default run is the 8 kW system this page prices&lt;/span&gt;&#xA;    &lt;input max=&#34;3000&#34; type=&#34;number&#34; id=&#34;bill&#34; value=&#34;160.31&#34; data-exact=&#34;160.3125&#34; min=&#34;20&#34; step=&#34;10&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Your electricity rate (¢ per kWh) &lt;span class=&#34;muted&#34;&gt;— pre-filled with Vermont&#39;s EIA average; use your bill if you have it&lt;/span&gt;&#xA;    &lt;input max=&#34;80&#34; type=&#34;number&#34; id=&#34;rate&#34; value=&#34;23.75&#34; min=&#34;5&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;What your utility pays for exported power&#xA;    &lt;select id=&#34;exprule&#34;&gt;&#xA;      &lt;option value=&#34;billing&#34; selected&gt;Net billing — 14.4¢/kWh modeled, this page&#39;s headline&lt;/option&gt;&#xA;      &lt;option value=&#34;retail&#34;&gt;Full-retail net metering — for comparison&lt;/option&gt;&#xA;    &lt;/select&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;expWrap&#34;&gt;Export credit (¢ per kWh)&#xA;    &lt;input max=&#34;60&#34; type=&#34;number&#34; id=&#34;expc&#34; value=&#34;14.40&#34; data-exact=&#34;14.398&#34; min=&#34;0&#34; step=&#34;0.5&#34;&gt;&lt;/label&gt;&#xA;  &lt;label id=&#34;selfWrap&#34;&gt;Share you use on site (%) &lt;span class=&#34;muted&#34;&gt;— ~40% without a battery&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;self&#34; value=&#34;40&#34; min=&#34;5&#34; max=&#34;100&#34; step=&#34;5&#34;&gt;&lt;/label&gt;&#xA;  &lt;details class=&#34;calc-adv&#34;&gt;&lt;summary&gt;Advanced — production per kW, installed cost per watt&lt;/summary&gt;&#xA;  &lt;label&gt;Annual production per kW (kWh) &lt;span class=&#34;muted&#34;&gt;— Vermont PVGIS-NSRDB figure, already cut 10% for a real roof (shade, pitch, orientation)&lt;/span&gt;&#xA;    &lt;input type=&#34;number&#34; id=&#34;yield&#34; value=&#34;1012&#34; data-exact=&#34;1012.5&#34; min=&#34;600&#34; max=&#34;2000&#34; step=&#34;25&#34;&gt;&lt;/label&gt;&#xA;  &lt;label&gt;Installed cost per watt ($) &lt;span class=&#34;muted&#34;&gt;— typical $2.50–$3.50 gross&lt;/span&gt;&#xA;    &lt;input max=&#34;8.0&#34; type=&#34;number&#34; id=&#34;cpw&#34; value=&#34;2.76&#34; data-exact=&#34;2.76&#34; min=&#34;1&#34; step=&#34;0.10&#34;&gt;&lt;/label&gt;&#xA;  &lt;/details&gt;&#xA;  &lt;div class=&#34;result&#34; aria-live=&#34;polite&#34; role=&#34;status&#34;&gt;&#xA;    &lt;div&gt;System size: &lt;span class=&#34;big&#34; id=&#34;size&#34;&gt;—&lt;/span&gt;&lt;/div&gt;&#xA;    &lt;div style=&#34;margin-top:8px&#34;&gt;Annual production: &lt;strong id=&#34;prod&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Net cost (federal credit $0): &lt;strong id=&#34;net&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated year-1 saving: &lt;strong id=&#34;ann&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;Estimated payback: &lt;strong id=&#34;pay&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div&gt;25-year net position: &lt;strong id=&#34;net25&#34;&gt;—&lt;/strong&gt;&lt;/div&gt;&#xA;    &lt;div class=&#34;muted&#34; style=&#34;margin-top:8px&#34;&gt;Same model as the full &lt;a href=&#34;https://solarcostdata.com/tools/solar-savings-calculator/&#34; style=&#34;color:#6ee7b7&#34;&gt;savings calculator&lt;/a&gt;, including $150/yr running costs and a $2,000 inverter replacement in year 14. Excludes fixed connection charges. Estimate, not a quote.&lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;script&gt;&#xA;(function(){&#xA;  var $=function(i){return document.getElementById(i)};&#xA;  var INFL=1.025,DEGR=0.995,OM=150,INV=2000,INVY=13;&#xA;  function money(n){return &#39;$&#39;+Math.round(n).toLocaleString(&#39;en-US&#39;)}&#xA;  // an untouched field keeps the model&#39;s exact value (data-exact), so the default run equals the page headline digit for digit&#xA;  function ex(i){var e=$(i);return (e.value===e.defaultValue&amp;&amp;e.dataset.exact)?+e.dataset.exact:(+e.value||0)}&#xA;  function calc(){&#xA;    var bill=ex(&#39;bill&#39;),rate=+$(&#39;rate&#39;).value||0,yld=ex(&#39;yield&#39;),cpw=ex(&#39;cpw&#39;);&#xA;    var rule=$(&#39;exprule&#39;).value,expc=ex(&#39;expc&#39;),self=(+$(&#39;self&#39;).value||0)/100;&#xA;    if(rate&lt;=0||yld&lt;=0||cpw&lt;=0){return}&#xA;    var annualBill=bill*12, annualKwh=annualBill/(rate/100);&#xA;    var sizeKw=annualKwh/yld, prod=sizeKw*yld, net=sizeKw*1000*cpw;&#xA;    var exportRate = rule===&#39;retail&#39; ? rate/100 : expc/100;&#xA;    var selfShare = rule===&#39;retail&#39; ? 1 : self;&#xA;    var used=Math.min(prod*selfShare, annualKwh), exported=Math.max(prod-used,0);&#xA;    var annual=used*(rate/100)+exported*exportRate;&#xA;    var cum=0; for(var y=0;y&lt;25;y++){cum+=annual*Math.pow(INFL,y)*Math.pow(DEGR,y)-OM-(y===INVY?INV:0)}&#xA;    var run=0,pay=0;&#xA;    for(var y2=0;y2&lt;60;y2++){&#xA;      var step=annual*Math.pow(INFL,y2)*Math.pow(DEGR,y2)-OM-(y2===INVY?INV:0);&#xA;      if(step&lt;=0)continue;&#xA;      if(run+step&gt;=net){pay=y2+(net-run)/step;break}&#xA;      run+=step;&#xA;    }&#xA;    $(&#39;size&#39;).textContent=sizeKw.toFixed(1)+&#39; kW&#39;;&#xA;    $(&#39;prod&#39;).textContent=Math.round(prod).toLocaleString(&#39;en-US&#39;)+&#39; kWh/yr&#39;;&#xA;    $(&#39;net&#39;).textContent=money(net);&#xA;    $(&#39;ann&#39;).textContent=money(annual);&#xA;    $(&#39;pay&#39;).textContent=(annual&gt;0&amp;&amp;pay&gt;0&amp;&amp;pay&lt;=60)?&#39;~&#39;+pay.toFixed(1)+&#39; years&#39;:&#39;over 60 years&#39;;&#xA;    $(&#39;net25&#39;).textContent=money(cum-net);&#xA;  }&#xA;  $(&#39;exprule&#39;).addEventListener(&#39;change&#39;,function(ev){&#xA;    var o=$(&#39;exprule&#39;).selectedOptions[0]; var nb=$(&#39;exprule&#39;).value===&#39;billing&#39;;&#xA;    if(o&amp;&amp;o.dataset.expc&amp;&amp;ev.isTrusted){$(&#39;expc&#39;).value=o.dataset.expc}   /* preset only on a real click; a ?expc= restore keeps its own value */&#xA;    $(&#39;expWrap&#39;).hidden=!nb; $(&#39;selfWrap&#39;).hidden=!nb; calc();&#xA;  });&#xA;  [&#39;bill&#39;,&#39;rate&#39;,&#39;yield&#39;,&#39;cpw&#39;,&#39;expc&#39;,&#39;self&#39;].forEach(function(i){$(i).addEventListener(&#39;input&#39;,calc)});&#xA;  calc();&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;div class=&#34;whatif&#34; id=&#34;whatif&#34; data-ev=&#34;bill&#34;&gt;&#xA;  &lt;strong&gt;What changes if…&lt;/strong&gt;&#xA;  &lt;label&gt;Electricity rates move &lt;span id=&#34;wfLbl&#34;&gt;&lt;/span&gt;&#xA;    &lt;input type=&#34;range&#34; id=&#34;wfSlider&#34; min=&#34;-20&#34; max=&#34;40&#34; step=&#34;5&#34; value=&#34;0&#34; aria-label=&#34;Rate change, percent&#34;&gt;&lt;/label&gt;&#xA;  &lt;label class=&#34;wf-ev&#34;&gt;&lt;input type=&#34;checkbox&#34; id=&#34;wfEv&#34;&gt; We also charge an EV at home&lt;/label&gt;&#xA;  &lt;p class=&#34;muted&#34; id=&#34;wfEvOut&#34; hidden&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
