SCTE-35

SCTE-35 ad markers a distributor will actually accept.

Both SCTE-35 command forms, provider and distributor cue types as matched pairs, programme boundaries, and the delivery restrictions that decide who may fill a break. Included on every plan, marked frame accurately against the stream clock.

How it works

From break to confirmed impression

An ad break is a contract between your channel and whatever fills it. SCTE-35 is how that contract is written down.

  1. Mark the break

    Breaks come from the schedule, from a live trigger in the control room, or from programme boundaries the channel already knows about. Each one gets an event id that is unique for the channel and never reused.

  2. Choose what the cue means

    A house avail, a provider or distributor advertisement, a placement opportunity a partner is entitled to fill, or a programme boundary. The segmentation type carries that meaning, so downstream systems do not have to guess from duration alone.

  3. Signal it frame accurately

    The cue is encoded against a 90 kHz presentation timestamp and written into the stream itself, then mirrored into the manifest so both in-band and manifest-driven consumers see the same break at the same instant.

  4. Fill it, or hand it on

    Our ad insertion fills the break inside your stream, or you leave the avail open for a distributor to fill on their side. Either way the return is signalled, so the channel comes back to programming exactly when it should.

The signalling

More than a pre-roll marker.

Ad markers are included on every plan, and so is the ad insertion that fills them.

Both commands

splice_insert and time_signal

The classic avail with break duration and auto-return, or a bare time signal carrying a segmentation descriptor. Most cloud playout products emit one shape of marker. A distributor integration usually asks for the other.

Cue types

Provider, distributor, placement

Advertisement and placement opportunity cues, provider side and distributor side, each as a matched start and end pair, plus programme start and end on boundaries. The meaning rides in the cue rather than in an operator’s notes.

Restrictions

Blackouts and entitlements travel

Web delivery, regional blackout, archive permission and device restrictions are carried on the cue, so a break that may not be filled everywhere says so in the signal instead of in an email.

Downstream

Readable by everything

Duration-based cue-out and cue-in tags for the players that want simple, the full binary cue in a daterange for the systems that want exact, and programme date time anchoring so the two never disagree.

In depth

What good ad signalling looks like

Ask a cloud playout vendor whether they support SCTE-35 and almost all of them say yes. Ask which commands they emit, and the answers separate quickly. A great many products write a single marker at the top of a break, give it a duration, and consider the job done. That is enough to cut to an ad and come back, and it is not enough to pass a distributor integration.

Two commands, because integrations ask for both

The older and simpler form is splice_insert(). It carries an event id, a flag saying the channel is leaving the network feed, a break duration in 90 kHz ticks, and an auto-return that brings programming back on its own. It is well understood and it is what most simple ad systems expect.

The form modern distributors tend to ask for is time_signal() paired with a segmentation descriptor. Rather than inferring what a break is from its duration and direction, the cue states its type outright, carries its own segmentation event id and duration, and can carry a UPID identifying the content or the opportunity. Both forms are emitted here, per break, so an integration that specifies one is not a development project.

Cue types carry the meaning

A break is not just a break. An advertisement the programmer sold is a different thing from an opportunity a distributor is entitled to fill, and both are different from a programme boundary. Provider Advertisement and Distributor Advertisement, Provider Placement Opportunity and Distributor Placement Opportunity are all signalled as matched start and end pairs, and programme starts and ends are marked on boundaries. Placement opportunities carry the sub-segment fields where a partner needs to split an avail.

The practical effect is that an ad decision system on the other side of a carriage deal knows which breaks belong to it without a spreadsheet describing your schedule.

Restrictions belong in the signal

Rights are rarely uniform. A programme may be cleared for broadcast but not for web delivery, a sports feed may be blacked out in one region, an episode may not be archived. Those conditions ride on the cue itself as delivery restrictions: web delivery permitted or not, regional blackout in force or not, archiving allowed or not, and any device restriction. When a break carries no restrictions at all the encoder marks it not restricted and leaves the rest off, which is what a downstream parser expects to see rather than a full set of defaults it has to interpret.

What the rest of the chain receives

Every break is written into the stream itself and mirrored into the manifest. Players and ad systems that want the simple version get EXT-X-CUE-OUT with the break duration, EXT-X-CUE-OUT-CONT on each segment inside the break so a player joining mid-break knows where it is, and EXT-X-CUE-IN at the return. Systems that want the original signal get EXT-X-DATERANGE carrying the complete binary cue. Everything is anchored to programme date time, so the wall-clock position of a break is unambiguous no matter which representation a downstream system reads.

That redundancy is deliberate. The simple tags mean a break works in a player written five years ago; the binary daterange means a broadcast-grade system can verify the cue byte for byte. You do not have to know which kind of partner you will sign before you build the channel.

Signalling is what makes the money countable

Cues are also the reason ad revenue can be audited. Server-side ad insertion fills breaks from these markers inside your stream, billing counts an impression only when the ad is genuinely delivered, and the as-run log that an advertiser or a distributor asks for is a record of cues and what filled them. Vague signalling produces vague numbers, and vague numbers lose arguments about money.

All of it is included from the entry plan. The published pricing covers ad markers and ad insertion on every tier, and what a TV channel costs sets the whole bill out if you are comparing against a platform that meters.

Questions

SCTE-35, answered.

What is SCTE-35?

The broadcast standard for marking ad breaks and programme boundaries inside a video stream. A cue says where a break starts, how long it runs, what kind of break it is, and who is entitled to fill it. Every ad system downstream, whether that is our own ad insertion or a distributor’s, reads those cues to decide what to play and when to come back.

Which SCTE-35 commands do you emit?

Both of the ones that matter. splice_insert() carries the classic avail: an event id, an out-of-network flag, a break duration and an auto-return. time_signal() carries a segmentation descriptor instead, which is how modern distributors prefer their cues because the meaning travels in the segmentation type rather than being inferred.

What cue types can the channel signal?

Provider Advertisement (0x30 and 0x31), Distributor Advertisement (0x32 and 0x33), Provider Placement Opportunity (0x34 and 0x35), Distributor Placement Opportunity (0x36 and 0x37), each as a matched start and end pair, plus Programme Start and Programme End (0x10 and 0x11) on programme boundaries. Placement opportunity cues also carry the sub-segment fields when a distributor needs them.

Can we restrict who is allowed to fill a break?

Yes. Each segmentation cue carries the delivery restriction flags: whether web delivery is permitted, whether a regional blackout applies, whether the segment may be archived, and any device restriction. When nothing is restricted the encoder sets the not-restricted flag and omits the rest, which is the behaviour distributors expect rather than a cue full of defaults.

What do players and downstream systems actually receive?

In the manifest, breaks appear as EXT-X-CUE-OUT with a duration, EXT-X-CUE-OUT-CONT on every segment inside the break, and EXT-X-CUE-IN at the return, which virtually every player and ad system understands. Alongside them the stream carries EXT-X-DATERANGE with the full binary cue as SCTE35-OUT and SCTE35-IN, so anything that wants to parse the original splice information section can. Breaks are anchored to programme date time, so the wall clock lines up.

Do we need SCTE-35 if we are selling our own ads?

You need it the moment anything other than a human decides when a break happens. Server-side ad insertion fills from the cues, your as-run log is built from them, and an advertiser auditing delivery is really auditing cue timing. It is included on every plan, so there is no version of the channel where breaks are guesswork.

Will a distributor or FAST platform accept our signalling?

That is what this depth is for. A platform that takes your channel will ask which commands you emit, which segmentation types you support, whether break durations and auto-return are honoured, and whether event ids are stable. Those questions have concrete answers here rather than a note that the channel supports pre-roll, mid-roll and post-roll.

Is SCTE-35 on every plan or an upgrade?

Every plan, from Launch at $254 per month billed yearly. Ad markers and server-side ad insertion are included, ad serving is billed at $1 per 1,000 delivery-confirmed impressions, and a channel with no breaks marked simply plays clean. There is no ad-signalling tier.

GET STARTED

Your channel can be live today.

No contract and cancel anytime, with a 7-day money-back guarantee on your first purchase.