How we count
The arithmetic, in full
Everything on this site comes out of one formula applied twelve times. There is no proprietary score, no weighting, and no editorial judgement about which plan is nicer. If you disagree with a number here, you should be able to find exactly where we got it — so here it is.
The formula
For each of the twelve months we compute a bill, then add the bills up. The bill for a month in which you use k kilowatt hours is
bill(k) = base_charge
+ energy_charge(k) each tier priced separately
+ tdu_fixed_monthly your utility's standing charge
+ tdu_cents_per_kwh × k your utility's delivery rate
+ min_usage_fee only if k is below the threshold
− bill_credits(k, month) only if k and the month qualify
+ sales_tax if configured; off by default
annual_total = Σ bill(k_month) for month = 1..12Ranking is by annual_total and nothing else. We never rank by advertised rate, by energy charge, or by anything a retailer chooses to put in an advert, because every one of those numbers can be made to look good without the bill getting any smaller.
The effective rate we show — the number under the highlighter — is simply annual_total ÷ annual_kwh, converted to cents. It is the only rate that answers the question people are actually asking.
Your usage, month by month
A Texas house does not use the same electricity in March as in August. Air conditioning roughly doubles consumption across the summer, and that seasonality is not a rounding detail — it decides whether a bill credit with a 1,000 kWh threshold pays out or not.
If you give us one average figure, we spread it across the year with these multipliers, an approximation of the ERCOT residential summer-peaking shape normalised so the twelve values sum to twelve:
| Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.78 | 0.70 | 0.68 | 0.70 | 0.88 | 1.26 | 1.60 | 1.60 | 1.30 | 0.92 | 0.74 | 0.84 |
This is an approximation and we would rather not use it. Twelve real figures from your bills, or an interval export from Smart Meter Texas, both beat it — which is why both are offered on the calculator. The ratio between your peak and trough months matters more than the absolute figures, because that is what decides which months clear a threshold.
A worked example
Take a plan shaped like the ones that cause the most complaints: a 14.1¢ energy charge, a $9.95 monthly base charge, and a $100 bill credit in any month you use at least 1,000 kWh. On Power to Choose that plan advertises about 10.9¢ per kilowatt hour, which looks excellent against a market around 14¢.
Here is August, at a household averaging 1,000 kWh a month in Oncor territory. The seasonal curve puts usage at 1,600 kWh, comfortably over the threshold, so the credit pays out:
The credit is earned
| Energy charge · 1,600 kWh × 14.1¢ | $225.60 |
|---|---|
| Base charge · every month regardless of usage | $9.95 |
| Oncor delivery · 1,600 kWh × 6.0209¢ | $96.33 |
| Oncor delivery · monthly fee | $4.06 |
| Bill credit · 1,000+ kWh | −$100 |
| What you would actually pay | $235.94 |
The credit is missed
| Energy charge · 680 kWh × 14.1¢ | $95.88 |
|---|---|
| Base charge · every month regardless of usage | $9.95 |
| Oncor delivery · 680 kWh × 6.0209¢ | $40.94 |
| Oncor delivery · monthly fee | $4.06 |
| No $100 credit · needs 1,000 kWh, you use 680 | not earned |
| What you would actually pay | $150.83 |
March uses 680 kWh — under the threshold — so the credit does not arrive and the bill is $150.83 instead of the $50.83 it would have been. That month alone costs $100 more than the advertised rate implies.
Across the year the plan costs $2,182.61, an effective 18.2¢ per kilowatt hour against an advertised 10.9¢. Power to Choose is not lying: at a flat 1,000 kWh every single month, 10.9¢ is right. Nobody uses electricity flatly.
Reading the fact label
Every certified plan in Texas must publish an Electricity Facts Label, and it contains everything needed to price a bill exactly. It is also a PDF written by whoever felt like it that day, in perhaps thirty different layouts. For each plan we:
- Download the label, sniffing for the
%PDF-magic bytes rather than trusting the content type, because several retailers serve real PDFs labelled as binary streams. - Extract the text and normalise it — cent signs, dashes, whitespace — then classify each line against a set of label patterns, so that “Energy Charge” and “TDU Delivery Charge” on the same flattened table row do not get confused for one another.
- Pull out the base charge, every energy tier, every bill credit with its usage window and its month and behaviour conditions, any minimum-usage fee, whether the quoted rate already includes delivery, and any free-hours window.
- Check our own reading. We recompute the retailer’s own published prices at 500, 1,000 and 2,000 kWh from the structure we just parsed. If all three land within a tolerance of what they advertise, we have read the label correctly. This gate is the single most useful thing in the pipeline: a mis-parse almost always fails it.
When the label defeats us
Some labels are JavaScript-rendered web pages rather than PDFs, a few are behind a 403, and occasionally a layout is genuinely ambiguous. In those cases we solve the rate structure backwards from the three published prices instead: two of them give a base and a per-kilowatt-hour rate, and a discontinuity between them — the tell-tale pattern where the 500 kWh price is far higher than the 1,000 kWh price — reveals a bill credit and its approximate size.
Those plans are labelled estimated everywhere they appear, and you can filter them out entirely on the results page. The reconstruction reproduces the three published points exactly but may miss a condition that only bites elsewhere, and we would rather say so than pretend.
Delivery charges
Your utility — Oncor, CenterPoint, AEP and the rest — owns the poles and wires and charges for delivery no matter which retailer bills you. It is a pass-through with no markup, and it is the single largest thing missing from most advertised rates.
Retailers are supposed to print these charges on the label, and most do, but not reliably: TXU prints its delivery charges as ** and defers to a URL. So we keep our own table:
| Utility | Monthly | Per kWh | At 1,000 kWh |
|---|---|---|---|
| AEP Texas Central | $3.33 | 5.7843¢ | $61.17 |
| AEP Texas North | $3.33 | 5.6443¢ | $59.77 |
| CenterPoint Energy Houston Electric | $4.67 | 5.1567¢ | $56.24 |
| Lubbock Power & Light | $0 | 6.2700¢ | $62.70 |
| Nueces Electric Cooperative | $17.50 | 3.9000¢ | $56.50 |
| Oncor Electric Delivery | $4.06 | 6.0209¢ | $64.27 |
| Oncor Electric Delivery NTU | $4.06 | 6.0209¢ | $64.27 |
| Texas-New Mexico Power | $8 | 6.4300¢ | $72.30 |
Delivery charges are refiled roughly every March and September, and a stale entry here would quietly misprice every plan in that territory. So after each nightly ingest we re-derive every territory’s charges from the fact-label corpus itself: for each simple plan with no credits, the retailer’s own base and energy charge plus its published prices at 500 and 2,000 kWh give two equations in two unknowns, and the median solution across hundreds of plans is immune to any single bad parse. If that consensus drifts from the stored table, it is flagged.
What we deliberately leave out
- Sales tax. Off by default. It is the same proportional add-on for every plan, so it moves every number identically and changes no ranking, while making the headline figures harder to check against your own bill. When switched on it gets its own clearly labelled line.
- Early termination fees. Shown on each plan page, but not added to the annual total, because whether you pay one depends on a contract we cannot see.
- Deposits and credit checks. These vary by applicant and no data source publishes them usefully.
- Anything a retailer pays us. Rankings are computed before the affiliate configuration is consulted, and a retailer we earn nothing from is ordered by exactly the same arithmetic as one paying a bounty.
Where the data comes from
Plan lists, advertised prices and document links come from the Public Utility Commission of Texas’s Power to Choose, refreshed nightly. Rate structures come from each retailer’s own Electricity Facts Label, fetched at no more than one request a second with a user-agent identifying BillTruth and a contact address, and cached by content hash so we never download the same document twice.
If a nightly run fails, we keep the previous day’s data and put a banner on the site saying how old it is, rather than showing you an empty page or, worse, stale prices presented as current.
Found a mistake?
Please tell us. Every plan page links to the fact label we parsed, so a disagreement can usually be settled in about a minute — and if our reading is wrong, the self-validation gate probably has something to say about why. Contact details are here.