How HLS EXT-X-DATERANGE Marks Timed Metadata and Ad Breaks

Learn how EXT-X-DATERANGE represents timed events in an HLS playlist, how to validate its dates and duration fields, and what its ad markers do not guarantee.

#EXT-X-DATERANGE adds a description of a time-bounded or timed event to an HLS media playlist. It can carry dates, duration hints, a class, and SCTE-35 data. It does not itself insert an advertisement, replace media segments, or prove that a player acted on the event. Treat it as playlist metadata that a downstream system may interpret.

This guide explains how to read and validate the tag without assuming that a planned duration is an actual break length. Examples use fictional event IDs and contain no real SCTE-35 payloads, stream URLs, or credentials. Use only playlists you own or are authorized to inspect.

Verification method — October 3, 2026: We checked the requirements and SCTE-35 mapping against RFC 8216 sections 4.3.2.7 and 4.3.2.7.1, reviewed the current M3U8Online inspector implementation, and checked this page in the local static build. The inspector preserves and displays playlist tags and raw source, but does not interpret DATERANGE semantics. We did not test a live ad system, SCTE-35 payload, or vendor-specific workflow.

What the tag describes

A DATERANGE is identified by an ID and starts at START-DATE. CLASS can group related ranges. END-DATE or DURATION can describe an actual end; PLANNED-DURATION is only an expectation. A range may be open-ended when first announced and updated in later playlist versions.

AttributeMeaning and validation note
IDRequired identifier for the date range. Repeated occurrences with the same ID must retain the values of attributes that are present in both.
START-DATERequired date-time marking the beginning of the range.
CLASSOptional category. It is required when END-ON-NEXT=YES is used.
END-DATEOptional actual end date-time; it must not precede START-DATE. If DURATION is also present, the dates must agree.
DURATIONOptional actual duration in seconds; it must be non-negative.
PLANNED-DURATIONOptional expected duration in seconds; it is not evidence that the event actually lasted that long.
END-ON-NEXTYES ends this range at the start of the next range with the same CLASS; it cannot be combined with DURATION or END-DATE.
SCTE35-OUT, SCTE35-IN, SCTE35-CMDOptional SCTE-35 data used by workflows that signal splice events. Preserve and interpret according to the applicable system and specification.

Read a minimal example carefully

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2026-10-03T12:00:00Z
#EXT-X-DATERANGE:ID="event-42",CLASS="com.example.break",START-DATE="2026-10-03T12:00:12Z",PLANNED-DURATION=30
#EXTINF:6.0,
segment-001.ts

This fictional example says an event begins at the stated wall-clock time and has a planned duration of 30 seconds. It does not say that the event ended after 30 seconds. Because it supplies neither END-DATE, DURATION, nor END-ON-NEXT=YES, its actual duration is unknown. The media playlist also includes EXT-X-PROGRAM-DATE-TIME, as required when a playlist contains DATERANGE tags.

When a live playlist evolves, the same range ID may appear again with additional end information. Compare updates by ID and keep shared attribute values consistent; do not treat each repeated line as a separate event.

Validate a playlist step by step

  1. Inspect the media playlist, not just the master. DATERANGE belongs to media-playlist context. Follow the variant or rendition you are authorized to inspect, then examine its playlist text.
  2. Check required fields and syntax. Confirm ID and a parseable START-DATE. Quoted date-time values and attribute-list syntax matter; malformed tags may be ignored by a client.
  3. Check the playlist clock. Look for at least one EXT-X-PROGRAM-DATE-TIME in any playlist that contains DATERANGE. Compare timestamps in a consistent timezone, usually UTC (Z).
  4. Separate actual from planned end. If only PLANNED-DURATION is present, report the planned value as a hint, not an observed end. For actual duration, look for END-DATE or DURATION, or an applicable END-ON-NEXT relationship.
  5. Check arithmetic and updates. END-DATE must be at or after the start. When both end and duration appear, verify they describe the same interval. For repeated IDs, compare shared attributes across playlist refreshes.
  6. Check special constraints. END-ON-NEXT=YES requires CLASS and must not appear with DURATION or END-DATE.
  7. Only then inspect consumer behavior. A valid tag is a signal; whether a player, ad decision system, or analytics pipeline acts on it depends on that product's documented support and configuration.

The M3U8Online playlist inspector can show parsed playlist information, individual tags, and the raw manifest. Its current summary does not calculate date-range boundaries or validate SCTE-35 semantics. For precise checks, read the original tag values and apply the rules above rather than inferring a result from the summary cards. See also how to inspect an M3U8 playlist in browser developer tools.

When SCTE-35 attributes are present

RFC 8216 maps SCTE35-OUT and SCTE35-IN values to splice out and in information. In the described pairing, the corresponding ranges use the same ID; START-DATE corresponds to the splice program date. An OUT range may carry PLANNED-DURATION, while end information can describe the actual in point. This mapping is not a universal guarantee that a particular player will switch to an ad or that an origin will perform server-side ad insertion.

Do not paste private manifests, keys, signed URLs, or proprietary SCTE-35 payloads into a public issue or article. Redact access tokens and identifiers before sharing diagnostics. If a vendor uses additional conventions, consult that vendor's current documentation; do not assume those conventions are part of the base HLS tag.

Common interpretation mistakes

ObservationSafe conclusionNext check
PLANNED-DURATION=30The playlist announces an expected duration of 30 seconds.Look for later END-DATE, DURATION, or range updates before claiming the actual duration.
A DATERANGE appears, but no ad is visibleThe playlist carries event metadata.Check whether the playback or ad system documents support for the signaled class and SCTE-35 form.
The same ID appears after a playlist refreshIt may be an updated representation of the same range.Compare common attributes; do not count each refresh as a new event.
END-ON-NEXT=YES appears with END-DATEThe combination violates the stated attribute constraints.Correct the playlist generation logic and re-check the emitted tag.
A parser shows the tag as textThe parser preserved the tag but may not understand it.Verify what the tool actually parses; raw-tag display is not semantic validation.
SCTE-35 data is presentThe playlist includes splice-related signaling data.Validate the payload with an authorized, purpose-built workflow; do not publish the payload.

Primary reference

The practical rule is simple: identify the range, verify its playlist time context, and distinguish an expected duration from an actual end. A DATERANGE can carry useful timed-event information, but its presence alone does not prove ad insertion or playback behavior.