Energy Lens Your data, on your device Open dashboard →

Getting started

Your meter readings.
A clearer comparison.

Bring half-hourly electricity use into Energy Lens to compare tariffs against when your home actually uses power. You can also start with the annual kWh from your bill and try a clearly labelled simulation.

No Energy Lens account needed. Files are read and saved in your browser. This site never asks for your supplier password and does not upload your readings.

What you need

For measured comparisons, use electricity consumed in each 30-minute interval, in kWh, with the interval’s start date and time. A meter photo, cumulative register reading, monthly total or cost-only export cannot show when energy was used.

Download from EDF

Start here if your Energy Hub already shows half-hourly electricity use. You can download readings in your own supplier account.

Follow the EDF steps →

Use Bright / Glow

An alternative for supported smart meters, including EDF customers. Verify your meter, then use the local Energy Lens connector to export available history.

Set up Glow and export →

Another supplier’s CSV can work too: match the timestamp and kWh columns during import. The included tariff prices are a London benchmark checked on 17 October 2026; edit them to match your region and current quotes.

1. Download from EDF

  1. Sign in to EDF MyAccount and open Energy Hub / your energy use.
  2. Select electricity, switch the chart to energy (kWh), and choose a day / half-hourly view. Monthly or yearly downloads may contain daily or monthly totals, which are too coarse for this comparison.
  3. Use the chart’s download data / CSV control, where available. The current household view may export one day at a time. Repeat for the dates you want.
  4. Check the downloaded file. Keep a single header row and one row per half-hour. If it starts with an account summary or notes, remove those rows from a working copy. Combine daily exports into one CSV before importing; each dashboard CSV import replaces its current readings.
  5. Keep the full date and time for each row. If a daily export contains only times, add that day’s date. Then follow the import steps below.

Check missing readings in EDF’s chart. Some downloads can show zero where the account page labels data “Missing”. Remove only those confirmed missing rows, or mark them missing in a quality or status column. A genuine zero should remain.

On the autumn clock-change day, repeated 01:00 and 01:30 readings need their correct +01:00 or +00:00 offsets. Energy Lens rejects ambiguous local times. Use an offset-aware Glow export if the supplier file does not distinguish them.

If Energy Hub has no readings or download control, try Glow or ask EDF for your available half-hourly electricity consumption. Account layouts and history vary; a request cannot recover data the meter never recorded.

2. Get history through Bright / Glow

This route works independently of the EDF website. It needs a supported smart meter and your consent. You do not need to buy a Glow display or CAD to retrieve delayed half-hourly DCC data.

  1. Create an account in Bright by Hildebrand or Glow for homes, and verify your email.
  2. Complete Set up Smart Meter, including property verification and consent. Glow offers verification routes using your in-home display identifier or other evidence, such as a recent bill. Your electricity MPAN is the supply-point number on your bill, not the meter serial number; use the 13-digit core if requested.
  3. Wait until your electricity meter is active and readings appear. Glow’s verification guide aims to start retrieval within 48 hours after verification. Historical coverage depends on what is available for your meter; a newly installed meter will not have a year of past readings.

Export using the local connector

On your own computer, install Node.js 22.13 or newer and Git, then run these commands in a terminal. They build the connector from the open-source repository:

git clone https://github.com/jhammant/energy-lens.git
cd energy-lens
npm --prefix connector ci
npm --prefix connector run build
node connector/build/cli.mjs login
node connector/build/cli.mjs meters
node connector/build/cli.mjs sync
node connector/build/cli.mjs export --out readings.csv

login prompts privately for your Glow credentials, verifies them with Glow, and stores them in your operating system’s credential store. The download and CSV stay on your computer. Linux needs a working Secret Service for keychain login; see the connector instructions for headless setup.

The default sync requests roughly 13 months, ending at the start of today. This is a requested range, not guaranteed coverage. Rerun sync later to pick up new readings, then export to a new filename; exports refuse to overwrite an existing file.

Choose dates, a meter, or a saved data source

For a specific range, add the same dates to sync and export. Replace these example dates with your own; --to is exclusive, so this example covers September:

node connector/build/cli.mjs sync --from 2026-09-01 --to 2026-10-01
node connector/build/cli.mjs export --from 2026-09-01 --to 2026-10-01 --out september.csv

If meters lists several electricity meters, pass the chosen --resource-id to sync. If export finds several saved sources, run node connector/build/cli.mjs status and pass the required --stream to export. Sources are kept separate to avoid counting the same home twice.

Now import readings.csv into the dashboard. The website itself does not sign in to Glow or refresh the local connector’s data automatically.

3. Import and check your readings

  1. Open the dashboard and choose Import your data. Select your CSV or an Energy Lens JSON backup. Data & method → Paste data also accepts either format.
  2. For CSV, match Interval start or date and Household consumption in kWh. Select a separate time column if needed. An interval-end column is optional and must be exactly 30 minutes after the start.
  3. Leave EV consumption as Not provided unless you have measured EV kWh for the same half-hours. Whole-house readings alone cannot prove when a car was charging.
  4. For timestamps containing Z or an explicit offset, keep Require an explicit timezone. Otherwise choose UTC or UK local time to match the export. Never guess between them.
  5. Choose Import readings. Review the date range, measured kWh and missing half-hours in Data & method. Compare totals against your source. A complete ordinary UK day has 48 readings; the spring clock-change day has 46 and autumn has 50.
  6. Use Measured half-hourly usage to compare the imported pattern. Open Rates on each tariff to enter your own quote. The bundled prices are dated examples for London and may no longer be available.

Keep a private backup. Under Data & method, choose Download private backup. It includes readings, settings and any imported household details. Import that JSON on another browser or device, or after moving from the old site address to this one. Browser storage does not transfer between addresses.

CSV import replaces readings; a JSON backup restores the saved household state. Back up before replacing either. Clearing browser storage, using private browsing, or choosing Remove data from this browser can remove the saved copy.

The CSV format

A minimal file has a header and two columns. These example readings are synthetic:

interval_start,consumption_kwh
2026-09-01T00:00:00+01:00,0.40
2026-09-01T00:30:00+01:00,0.35
ColumnWhat it means
interval_startStart of a 30-minute interval, preferably with a UTC offset. A separate date and time column can also be mapped.
consumption_kwhWhole-house electricity used in that interval, in kWh. Non-negative; not a meter register, kW power reading, gas volume or price.
ev_kwh (optional)Car charging within the same interval. Must be no greater than household kWh. Omit it if unknown.
interval_end (optional)End timestamp, exactly 30 minutes after the start.
quality or status (optional)Rows marked missing, unavailable or null are skipped. Zero consumption alone never means missing. Supplier cost columns are not used to calculate the comparison.

CSV, semicolon-separated and tab-separated files are accepted, up to 15 MB and 100,000 readings. Identical timestamp duplicates are deduplicated; conflicting readings are rejected. Download another synthetic example from Data & method in the dashboard.

If something doesn’t look right

Glow says active but has no data

Active consent means setup succeeded; it does not mean readings have arrived. Allow the initial retrieval window, then check Bright or Glow itself. If it remains empty after 48 hours following verification, contact Glow support through its account/help pages. Energy Lens cannot pull history that Glow has not made available.

The import reports missing intervals

Recent readings can be delayed. Check the source, download again later, and import the updated complete file. Coverage is measured across whole UK calendar days, so a partial first or last day is also flagged. The dashboard never fills gaps or extrapolates a partial bill.

The timestamp is ambiguous, invalid, or duplicated

Use a full date plus time, with a timezone. For a separate date and time, use YYYY-MM-DD or DD/MM/YYYY and HH:MM. Repeated autumn times need their actual offsets. Remove summary rows and choose half-hourly data rather than daily totals. Do not delete a genuine repeated clock hour to make an error disappear.

I have bills or meter photographs, but no half-hourly file

Use annual simulation with the electricity kWh from your bill. Enter home EV charging separately if known, or set it to zero if you have no EV. These inputs estimate a pattern; they do not create measured history. Photographs and PDF bills are not imported by the website.

I moved to this address and my data disappeared

Your data belongs to the browser and website address where you imported it. Return to the old address, download a private JSON backup from Data & method, and import it here. An app update at the same address normally keeps the saved data; a new browser, device or address starts empty.

Where does my information go?

The dashboard has no account system, analytics or data-upload endpoint. Its files are hosted on GitHub Pages, which receives ordinary web requests when you visit. Imported files and settings are kept in your browser’s local storage. Downloaded backups contain your data: store and share them accordingly. The optional connector talks directly to Glow, stores readings locally, and only shares readings with an AI host if you choose to connect its MCP tools.

Open Energy Lens and import your readings →