AD OPS

SCTE-35 Decoder

SCTE-35 is the standard signaling format for ad-break and program-boundary cues in a video stream. Paste the base64 or hex payload below to get a readable splice_info_section with splice command, PTS, and named segmentation descriptors.

Wire cue points into clean ad insertion.

OTT Engine offers Auto Cue-Points (add-on) and built-in SSAI / CSAI - your SCTE-35 events become ads on Roku, Fire TV, and Apple TV automatically.

How a SCTE-35 cue is structured

A SCTE-35 splice_info_section is a binary message that starts with a table_id of 0xFC followed by length, optional encrypted fields, the pts_adjustment, a splice_command_type, the command body, and finally a descriptor loop. Each segmentation_descriptor in that loop carries the meaning of the event - is this a provider ad start, a network ad end, a content break, a chapter, a placement opportunity?

Common splice_command_type values

HexNameBodyWhen used
0x00splice_nullNoneHeartbeat / spec test
0x05splice_insertsplice_event_id, out-of-network flag, duration, splice_timeLegacy explicit splice point
0x06time_signalsplice_timeModern marker - meaning carried by descriptors
0x07bandwidth_reservationNoneReserve bandwidth for an event
0xFFprivate_commandVendor-definedOperator-specific signaling

Common segmentation_type_id values

HexNameMeaning
0x10Program StartProgram begins at this PTS
0x11Program EndProgram ends
0x20Chapter StartChapter boundary - skip target
0x21Chapter EndChapter boundary - end
0x30Provider Advertisement StartNational / provider ad break begins
0x31Provider Advertisement EndNational / provider ad break ends
0x32Distributor Advertisement StartLocal / distributor ad break begins
0x33Distributor Advertisement EndLocal / distributor ad break ends
0x34Provider Placement Opportunity StartSSAI insertion point begins
0x35Provider Placement Opportunity EndSSAI insertion point ends
0x36Distributor Placement Opportunity StartDistributor insertion point begins
0x37Distributor Placement Opportunity EndDistributor insertion point ends
0x40Unscheduled Event StartNetwork start
0x41Unscheduled Event EndNetwork end

Frequently Asked Questions

What is SCTE-35?

SCTE-35 is the standard signaling format that tells downstream systems where ad breaks, program boundaries, and content metadata occur in a video stream. It is delivered as a binary splice_info_section in MPEG-2 Transport Streams or referenced by HLS EXT-X-DATERANGE and DASH EventStream entries.

How do I decode a SCTE-35 cue?

Decode the base64 or hex payload to bytes, then parse the splice_info_section: table_id, length, splice_command_type, command body, then a descriptor loop of segmentation_descriptors. Each segmentation_descriptor has a segmentation_type_id that names the event (for example 0x30 = Provider Advertisement Start).

What is the difference between splice_insert and time_signal?

splice_insert is older and explicitly directs a downstream splicer to switch at a given PTS. time_signal carries the splice point as a single PTS and relies on segmentation_descriptors for what the event is. Modern workflows favor time_signal + segmentation_descriptors.

How do PTS values map to seconds?

PTS ticks at 90,000 per second, so seconds = pts_ticks / 90000. A 30-second ad break covers 30 × 90,000 = 2,700,000 ticks.

Related tools

Related reading