Files and time zones

15-minute interval CSV checker

Check a timestamped CSV for missing quarters, duplicate instants, invalid offsets and daylight-saving changes in a selected time zone.

Runs on your device · No upload

Choose the civil date you expect this file to cover.

Select the zone explicitly. It is not inferred from your device or file.

The first column is 1. Other field values are not checked or changed.

Loading a file replaces the text below. Maximum 5 MiB and 10,000 data records.

Each timestamp marks an interval start. Use ISO date and time with Z or a known ±HH:MM offset, for example 2025-10-26T02:15:00+02:00. Offset-free clocks are rejected.

Ready when JavaScript is loaded.

How to check a quarter-hour CSV

  1. Choose the local civil date and the IANA time zone of the day you want to audit.
  2. Paste CSV or load a UTF-8 file. Select its delimiter, timestamp column number and header setting.
  3. Run the checker. Review missing starts, duplicate instants and per-record issues, then download the diagnostics if needed.

Why a day does not always have 96 intervals

A regular 24-hour day has 96 quarter hours. A one-hour forward change usually gives 92, and a one-hour backward change gives 100. Other zones have different changes: a half-hour change can give 94 or 98. This checker enumerates the selected zone’s real instants using pinned IANA 2026e rules; it does not assume the change is one hour.

The example is a synthetic, complete 100-interval file for Europe/Berlin on 26 October 2025. It contains UTC timestamps and the word “example”, without prices or consumption data.

UTC, local offsets and repeated times

Z and +00:00 are accepted as UTC representations and are converted into the selected zone. Every nonzero numeric offset must match that zone at the instant it identifies. For example, 02:15+02:00 and 02:15+01:00 can be different valid intervals during a repeated hour. A local 02:15 without an offset does not identify which occurrence was intended and is rejected. The -00:00 unknown-offset notation is also rejected.

Accepted timestamps use YYYY-MM-DDTHH:mm, optional seconds and up to three fractional digits, then an explicit offset. Real quarter-hour starts have zero seconds and milliseconds. Invalid dates, 24:00, leap seconds, surrounding whitespace and unsupported precision are reported. Timestamp strings are not trimmed or silently repaired.

What the result checks

The expected grid uses interval-start labels on the selected civil date. The next date is excluded. An interval-end convention needs a different interpretation; this tool does not shift end labels into start labels. Rows can arrive in any order. Distinct expected UTC instants count toward coverage even if their records have another issue, so a pass also requires no duplicate or invalid records, off-grid timestamps, wrong local offsets or outside-date timestamps.

Every data record is audited, including empty records. The first CSV record defines the field count. Quoted separators, escaped quotes and quoted line breaks are supported. Malformed CSV stops the audit so its structure is not guessed. Dates must be in 2020–2035; rare rules that cannot form complete 15-minute intervals are explicitly rejected.

The checker preserves your input and reports diagnostics separately. It does not fill gaps, remove duplicates, reorder the source file or validate readings and prices. A passing timestamp check does not certify any external market template, settlement or regulatory requirement.

Sources and recurring use

Quarter-hour inputs are part of European day-ahead workflows following the 2025 SDAC transition. Nord Pool’s dated implementation announcement specified trading on 30 September for delivery on 1 October 2025. Its October clock-change notice described a 25-hour day with 100 quarter hours. These sources explain the format and clock-change use case; the checker works on your own timestamped data.

Your CSV stays in this tab

File reading and checking happen locally in a browser worker. Input is not uploaded, put in a URL or saved in browser storage. Changing the input or settings invalidates the old result and its downloads. Diagnostic CSV cells that could be interpreted as spreadsheet formulas receive a leading apostrophe; the report states how many. This only changes the diagnostic preview, never your input CSV.

Limits: UTF-8 text up to 5 MiB, 10,000 data records, 1,000 columns and 20 MiB per diagnostic export. The page displays every expected interval and the first 100 record issues; exports include every audited record. Aggregate page requests are described in the privacy policy.

Related tools

Browse every tool