{"id":7595,"date":"2026-11-04T12:00:00","date_gmt":"2026-11-04T12:00:00","guid":{"rendered":"https:\/\/www.5centscdn.net\/blog\/?p=7595"},"modified":"2026-11-03T17:12:59","modified_gmt":"2026-11-03T17:12:59","slug":"hls-interstitials","status":"publish","type":"post","link":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/","title":{"rendered":"HLS Interstitials Explained: Tags, Attributes &amp; Players"},"content":{"rendered":"<div style=\"margin-top: 0px; margin-bottom: 0px;\" class=\"sharethis-inline-share-buttons\" ><\/div>\n<p class=\"wp-block-paragraph\">For most of HLS\u2019s history, getting an ad into a stream meant editing the stream. A stitching server rewrote the playlist, spliced ad segments in between content segments, and delivered each viewer a one-off version. <strong>HLS interstitials<\/strong> take the opposite approach: the playlist stays shared, a single tag says \u201can ad break goes here,\u201d and the player fetches and plays the ad itself. Apple introduced the mechanism in 2021, and it has since become the signaling layer underneath <a href=\"https:\/\/www.5centscdn.net\/blog\/what-is-sgai-server-guided-ad-insertion\/\">server-guided ad insertion (SGAI)<\/a>, with working support in the major open-source web players.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide is the implementation-level companion to our SGAI overview. It covers what an interstitial tag actually contains, what each control attribute does, how breaks behave in live streams, where interstitials change the load on your CDN, what to expect from players, and how to debug a break that refuses to fire.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Are HLS Interstitials?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HLS interstitials are a way to schedule ads, bumpers, recaps or any other separate video asset onto an HLS stream\u2019s timeline by adding an EXT-X-DATERANGE tag to the playlist. The tag tells the player when the break starts and where to fetch the content for it. The player loads that content as its own stream, plays it, and then returns to the main program.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Three properties define the model:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The interstitial is a separate asset.<\/strong> It is a complete HLS stream of its own, referenced by URL. Apple\u2019s implementation guide requires interstitials to be VOD assets, but they can be scheduled against either VOD or live primary content, including <a href=\"https:\/\/www.5centscdn.net\/blog\/what-is-cmaf\/\">CMAF-based Low-Latency HLS<\/a> streams.<\/li>\n\n\n\n<li><strong>The player does the work.<\/strong> Instead of a server splicing segments together, the player buffers the main content up to the break point and only then loads the interstitial. That timing is what lets the ad be chosen as late as possible.<\/li>\n\n\n\n<li><strong>Unsupported players ignore it.<\/strong> Devices that do not implement interstitials skip the tag and play the main content straight through.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A cinema analogy helps. In the stitched model, someone physically splices a commercial reel into the film print, and personalizing it means cutting a separate print for every viewer. With interstitials, the print stays untouched and gains a note: \u201cat 12:00:15, start the second projector and load reel X.\u201d The picture is close to reality: on Apple platforms the primary player is joined by a second, interstitial player, created automatically when a break needs to play.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Where HLS Interstitials Sit in the HLS Spec<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One detail trips up a lot of documentation: interstitials are not part of RFC 8216. <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8216\">RFC 8216<\/a>, published in August 2017, is an Informational document describing version 7 of the protocol, and it predates the feature. Interstitials are defined in Appendix D of \u201cHTTP Live Streaming 2nd Edition,\u201d the <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/draft-pantos-hls-rfc8216bis\">Internet-Draft draft-pantos-hls-rfc8216bis<\/a>, which describes version 13 of the protocol.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two caveats follow. First, the draft is an Informational individual submission. Its own status text says it is not endorsed by the IETF, has no formal standing in the standards process, and should only be cited as work in progress. The current revision at the time of writing is -22, dated May 2026. Second, because the draft is where the mechanism lives, some product announcements attribute interstitials to RFC 8216. That is inaccurate. If you need to reference attribute definitions, point to Appendix D of the draft and note which revision you read.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Anatomy of an HLS Interstitial Tag<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An interstitial is an EXT-X-DATERANGE tag whose CLASS is com.apple.hls.interstitial. Here is a minimal one:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#EXT-X-DATERANGE:ID=&#8221;mid-1&#8243;,CLASS=&#8221;com.apple.hls.interstitial&#8221;,START-DATE=&#8221;2026-11-02T12:00:15.000Z&#8221;,DURATION=15.0,X-ASSET-URI=&#8221;https:\/\/ads.example.com\/mid-1\/master.m3u8&#8243;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reading it attribute by attribute:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ID identifies the date range within the playlist. It matters later, because a live playlist can add attributes to an existing range by repeating the tag with the same ID.<\/li>\n\n\n\n<li>CLASS must be com.apple.hls.interstitial. It is what tells a player to treat the range as an interstitial rather than generic metadata.<\/li>\n\n\n\n<li>START-DATE is the wall-clock moment on the primary timeline where the break begins. Because it is a date and not a segment number, the break does not have to line up with a segment boundary. Apple\u2019s two-player design lets a break start even in the middle of a video GOP.<\/li>\n\n\n\n<li>DURATION is the planned length of the break in seconds. It is optional in the spec but normally included.<\/li>\n\n\n\n<li>X-ASSET-URI points to the interstitial\u2019s own HLS playlist.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-1024x576.jpg\" alt=\"Annotated EXT-X-DATERANGE interstitial tag showing the ID, CLASS, START-DATE, DURATION and X-ASSET-URI attributes\" class=\"wp-image-7600\" srcset=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-1024x576.jpg 1024w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-300x169.jpg 300w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-768x432.jpg 768w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-1536x864.jpg 1536w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-800x450.jpg 800w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-600x338.jpg 600w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-2048x1152.jpg 2048w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-4-1200x675.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><strong>Anatomy of an interstitial tag<\/strong><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A handful of rules cause most failed deployments:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Exactly one asset reference.<\/strong> An interstitial tag carries either X-ASSET-URI or X-ASSET-LIST, never both.<\/li>\n\n\n\n<li><strong>Strict attribute syntax.<\/strong> Attribute lists are comma-separated with no whitespace, and an attribute name cannot appear twice. The draft tells clients to ignore date ranges with illegal syntax, so a stray space does not raise an error; the break simply never plays. A duplicated attribute is worse, because clients are told they should refuse to parse the whole playlist.<\/li>\n\n\n\n<li><strong>A program date is required.<\/strong> Any playlist that contains an EXT-X-DATERANGE tag must also contain at least one EXT-X-PROGRAM-DATE-TIME tag, because the dates need a timeline to anchor to.<\/li>\n\n\n\n<li><strong>Same tags on every rendition.<\/strong> Apple\u2019s guide requires all renditions of a multivariant playlist to carry the same set of date range tags.<\/li>\n\n\n\n<li><strong>No nesting.<\/strong> An interstitial scheduled inside another interstitial is ignored by clients.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>One Ad or a Whole Pod? X-ASSET-URI vs X-ASSET-LIST<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">X-ASSET-URI references a single asset. For an ad pod, use X-ASSET-LIST, whose value is a URL to a JSON document the player requests as the break approaches:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&#8220;ASSETS&#8221;: [<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;URI&#8221;: &#8220;https:\/\/ads.example.com\/creatives\/a1\/master.m3u8&#8221;,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;DURATION&#8221;: 15.0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;},<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;{<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;URI&#8221;: &#8220;https:\/\/ads.example.com\/creatives\/a2\/master.m3u8&#8221;,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;DURATION&#8221;: 15.0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each entry needs an absolute URI and a DURATION in seconds, and the player plays the assets back to back in array order. Interstitial assets do not need to match the primary stream\u2019s bitrate ladder or codecs, although Apple encourages providing a suitable ladder of their own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The asset list is where personalization happens. Apple\u2019s guide describes the player loading the resource only after it has buffered the primary content up to the break, which is what makes the binding \u201clate\u201d: the server can compose the list at the moment of the request, from current inventory. For ad insertion this is the key architectural fact. The playlist carrying the tag can be identical for every viewer, while the asset-list request is the one that carries session context.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Control Attributes That Matter<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Beyond the asset reference, a handful of attributes control how a break behaves. All of them are optional.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Attribute<\/strong><\/th><th><strong>What it controls<\/strong><\/th><th><strong>Typical use<\/strong><\/th><\/tr><\/thead><tbody><tr><td>CUE<\/td><td><strong>PRE<\/strong> triggers the break before playback of the primary asset begins. <strong>POST<\/strong> triggers it after the asset plays to its end. <strong>ONCE<\/strong> prevents it triggering again on replay or seek-back. PRE and POST cannot be combined.<\/td><td>Pre-rolls, post-rolls, and bumpers that should only play once<\/td><\/tr><tr><td>X-RESUME-OFFSET<\/td><td>Where primary playback resumes, in seconds from the scheduled break point. If omitted, the player resumes after skipping forward by the break\u2019s duration.<\/td><td>0 to insert (VOD); omit to replace (live)<\/td><\/tr><tr><td>X-PLAYOUT-LIMIT<\/td><td>Maximum playout time for the whole break, in seconds. The player ends the break when it is reached.<\/td><td>Cutting a pod short; fitting a break into a fixed slot<\/td><\/tr><tr><td>X-RESTRICT<\/td><td><strong>SKIP<\/strong> blocks seeking forward and faster-than-normal playback during the break. <strong>JUMP<\/strong> blocks seeking from before the break to after it without playing the break first, even if it played earlier.<\/td><td>Non-skippable, non-bypassable ads<\/td><\/tr><tr><td>X-SNAP<\/td><td><strong>OUT<\/strong> transitions into the break at the nearest segment boundary. <strong>IN<\/strong> resumes the primary content at the nearest segment boundary.<\/td><td>Live streams where packager and encoder clocks drift<\/td><\/tr><tr><td>X-TIMELINE-OCCUPIES<\/td><td><strong>POINT<\/strong> shows the break as a marker on the timeline; <strong>RANGE<\/strong> shows it as a span. Added with Apple\u2019s 2024 updates.<\/td><td>RANGE for ads in live content<\/td><\/tr><tr><td>X-TIMELINE-STYLE<\/td><td><strong>HIGHLIGHT<\/strong> presents the break as separate from the content; <strong>PRIMARY<\/strong> integrates it with the main media.<\/td><td>PRIMARY for rating bumpers and dub cards<\/td><\/tr><tr><td>X-CONTENT-MAY-VARY<\/td><td>A hint on whether every player in a coordinated viewing session receives the same break content.<\/td><td>Group viewing, such as SharePlay<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Several breaks can share the same START-DATE. They play in the order their tags appear, and their resume offsets add up. Appendix D.3 of the draft also defines attributes for a skip button that appears partway through a break.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>X-RESUME-OFFSET: the attribute that surprises people<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">X-RESUME-OFFSET deserves a closer look, because live and VOD want opposite settings. When it is omitted, the player resumes the primary content after skipping forward by the length of the break. That is right for live: the match keeps playing while the ads run, so the viewer should rejoin at the same distance from the live edge, having missed those minutes, exactly as with live TV. When it is 0, the player resumes precisely where it left off. That is right for VOD: pausing a film for an ad break should not cost the viewer any of the film.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-1024x576.jpg\" alt=\"Two timelines showing how X-RESUME-OFFSET changes where playback resumes after an interstitial in live and VOD streams\" class=\"wp-image-7599\" srcset=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-1024x576.jpg 1024w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-300x169.jpg 300w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-768x432.jpg 768w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-1536x864.jpg 1536w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-800x450.jpg 800w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-2048x1152.jpg 2048w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-600x338.jpg 600w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-3-1200x675.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><strong>X-RESUME-OFFSET, live vs VOD<\/strong><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">One thing the spec deliberately leaves out is ad tracking. There is no standard attribute for impression or quartile beacons. Apple\u2019s guide shows vendor-defined X- attributes, named with reverse-DNS syntax, as the extension point, and the ad-tech industry has built signaling conventions on top of that. Check which convention your ad stack and player agree on before you rely on client-side measurement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>HLS Interstitials vs Stitched Ads vs SCTE-35 Cue Tags<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three different mechanisms mark or place ad breaks in HLS, and they are easy to confuse because they often appear in the same pipeline.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Stitching (SSAI).<\/strong> A server rewrites each viewer\u2019s playlist so ad segments sit inline between content segments, with EXT-X-DISCONTINUITY tags marking the seams. The spec requires a discontinuity tag when the file format, track layout or timestamp sequence changes, and recommends one when encoding parameters change. The player sees one continuous stream. Our guide to <a href=\"https:\/\/www.5centscdn.net\/blog\/what-is-ssai-server-side-ad-insertion\/\">server-side ad insertion<\/a> covers the mechanics.<\/li>\n\n\n\n<li><strong>Cue tags.<\/strong> Markers derived from <a href=\"https:\/\/www.5centscdn.net\/blog\/what-is-scte-35\/\">SCTE-35<\/a> splice signals, such as EXT-X-CUE-OUT and EXT-X-CUE-IN, tell downstream systems where a break belongs. On their own they play nothing; a stitcher or platform has to act on them. The HLS draft also defines a standard way to carry SCTE-35 inside EXT-X-DATERANGE, using SCTE35-OUT and SCTE35-IN attributes. To see which markers are actually present in a live stream, a <a href=\"https:\/\/5centscdn.net\/scte-35-monitoring\/\">SCTE-35 monitoring tool<\/a> shows them.<\/li>\n\n\n\n<li><strong>Interstitials.<\/strong> The playlist points at the ad, and the player resolves it.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-1024x576.jpg\" alt=\"Comparison of stitched ad insertion, where the server splices ads into the stream, and HLS interstitials, where the player fetches the ad from a separate asset\" class=\"wp-image-7598\" srcset=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-1024x576.jpg 1024w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-300x169.jpg 300w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-768x432.jpg 768w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-1536x864.jpg 1536w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-800x450.jpg 800w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-1200x675.jpg 1200w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-2048x1152.jpg 2048w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-1-1-600x338.jpg 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><strong>Stitched vs interstitial<\/strong><\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Approach<\/strong><\/th><th><strong>Who places the ad<\/strong><\/th><th><strong>Playlist per viewer<\/strong><\/th><th><strong>Legacy-device behavior<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Stitching (SSAI)<\/td><td>The server, inline in the stream<\/td><td>Typically unique per session<\/td><td>Plays normally; the ad is part of the stream<\/td><\/tr><tr><td>SCTE-35 cue tags<\/td><td>A downstream system that acts on the marker<\/td><td>Same markers for everyone<\/td><td>Players ignore the markers; nothing plays unless something downstream acts<\/td><\/tr><tr><td>Interstitials<\/td><td>The player, from a separate asset<\/td><td>One shared playlist; personalization happens in the asset-list request<\/td><td>Tag is ignored; the main content plays and the ad does not<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The last row is the business catch: on a player that does not implement interstitials, an ignored tag is an unmonetized view. Apple\u2019s own guidance for backward compatibility is to keep static insertion for older devices, or to encode slates directly into the primary asset and override them with interstitials on newer devices. Our <a href=\"https:\/\/www.5centscdn.net\/blog\/what-is-sgai-server-guided-ad-insertion\/\">SGAI guide<\/a> compares the wider trade-offs, including measurement and interactive formats.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How a Live Break Plays, Step by Step<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the sequence for a live break, from announcement to resume.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Announce.<\/strong> The packager adds the interstitial tag to the live playlist ahead of the break. Apple recommends scheduling events early enough for the player to buffer. For SCTE-35-derived date ranges, the draft says the tag should be added no later than the last pre-splice segment, and earlier when possible.<\/li>\n\n\n\n<li><strong>Resolve.<\/strong> As playback approaches the break, the player requests the asset-list URL and appends query parameters. _HLS_primary_id ties the request to the primary playback session, and _HLS_start_offset tells the server how far into the break playback will begin, which matters when a viewer joins mid-break. Apple added both in 2022.<\/li>\n\n\n\n<li><strong>Decide.<\/strong> The decisioning service returns the JSON asset list. Knowing the start offset, it can place the most valuable ads in the time that remains instead of the part the viewer has already missed. This is where your <a href=\"https:\/\/www.5centscdn.net\/blog\/what-is-an-ad-decision-server\/\">ad decision server<\/a> does its work.<\/li>\n\n\n\n<li><strong>Play.<\/strong> The player loads each asset as its own stream through the CDN, plays them back to back, honors X-PLAYOUT-LIMIT and X-RESTRICT, and fires whatever tracking your ad stack has agreed on.<\/li>\n\n\n\n<li><strong>Return.<\/strong> The player resumes the primary content according to X-RESUME-OFFSET, snapping to a segment boundary if X-SNAP asks for it.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-1024x576.jpg\" alt=\"Sequence diagram of a live HLS interstitial break showing the playlist tag, asset-list request, ad decision response, ad segment delivery and resume\" class=\"wp-image-7597\" srcset=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-1024x576.jpg 1024w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-300x169.jpg 300w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-768x432.jpg 768w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-1536x864.jpg 1536w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-800x450.jpg 800w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-2048x1152.jpg 2048w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-600x338.jpg 600w, https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/explanation_template-2-1-1200x675.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><strong>Live break request flow<\/strong><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Changing a break after you announce it<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A live playlist can add attributes to an existing break by repeating the tag with the same ID in a later reload. Existing values cannot change; only new attributes can be added. A common use is adding X-PLAYOUT-LIMIT late to cut a break short and send viewers back to the main program.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>When something fails<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apple\u2019s guide is explicit about failure: if the request for an interstitial asset or an asset list returns an error, the client cancels the break and resumes the primary content. The viewer sees the show continue, but the ad slot is lost, so asset-list latency and error rates are revenue metrics, not just infrastructure ones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What HLS Interstitials Mean for Your CDN<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Interstitials are usually framed as an ad-tech topic, but they reshape your delivery traffic in five ways.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The primary playlist can be shared.<\/strong> Because the tag is a pointer rather than stitched content, every viewer can receive the same live playlist. RFC 8216 itself highlights HLS\u2019s compatibility with large-scale HTTP caching, and interstitials preserve it.<\/li>\n\n\n\n<li><strong>The asset-list request is the new hot path.<\/strong> It carries per-session query parameters, so it typically bypasses a shared cache, and in a live event every player reaches the same break within seconds of the others. That is a synchronized burst on the decisioning endpoint, the same synchronized-peak pattern that stresses platforms during major live events, which we cover in <a href=\"https:\/\/www.5centscdn.net\/blog\/streaming-platform-crashes-live-events\/\">why streaming platforms crash during live events<\/a>. Keep asset-list responses small, fast and tolerant of failure.<\/li>\n\n\n\n<li><strong>Ad creatives are ordinary VOD segments.<\/strong> Popular creatives cache well; long-tail personalized creatives cause more origin fetches. Ad assets deserve the same attention to <a href=\"https:\/\/www.5centscdn.net\/blog\/how-to-improve-cache-hit-ratio\/\">cache hit ratio<\/a> as your content does.<\/li>\n\n\n\n<li><strong>Requests are visible to the client.<\/strong> The player calls the asset list and the creatives directly. If the asset-list URL redirects to a third-party ad domain, ad blockers can match it. Serving the asset list and creatives from your own hostname through the CDN keeps them first-party and harder to filter. Apple notes a server can answer with a limited number of redirects without a major performance impact, but every hop is another request.<\/li>\n\n\n\n<li><strong>Match formats to avoid visible seams.<\/strong> Interstitial assets can use different codecs from the primary, but Apple notes this can cause transition delays on some devices, and it recommends the same aspect ratio. Encoding creatives onto the same codec family and aspect ratio as your <a href=\"https:\/\/www.5centscdn.net\/blog\/encoding-ladder\/\">encoding ladder<\/a> is a cheap way to avoid glitches.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you stream <a href=\"https:\/\/5centscdn.net\/solutions\/by-need\/live-event-streaming\/\">live event streaming<\/a>, include the asset-list endpoint and your ad creative cache in the capacity plan, and configure the <a href=\"https:\/\/5centscdn.net\/cdn\/\">CDN<\/a> that carries both content and ads accordingly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Player Support for HLS Interstitials<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Support is real but uneven, and it varies by attribute, not only by player.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Apple platforms:<\/strong> AVFoundation has handled interstitials natively since the mechanism\u2019s introduction in 2021, through the AVPlayerInterstitialEvent family of APIs for scheduling, observing and canceling breaks.<\/li>\n\n\n\n<li><strong>hls.js:<\/strong> added interstitials in its 1.6 release line, with events for asset-list loading and for the start and end of breaks and assets, plus error types for asset-list load, timeout and parse failures.<\/li>\n\n\n\n<li><strong>Shaka Player:<\/strong> includes an interstitial manager that parses interstitial date ranges, resolves asset lists, and re-requests an asset list with an updated start offset when a viewer seeks into a live break.<\/li>\n\n\n\n<li><strong>Android Media3:<\/strong> parses interstitial date ranges into a model with fields for cue, resume offset, playout limit, snap and restrictions.<\/li>\n\n\n\n<li><strong>Everything else:<\/strong> smart TVs, set-top boxes and older SDKs generally ignore the tags, as the spec intends.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Even where support exists, check the fine print. One commercial player SDK\u2019s iOS documentation lists X-SNAP, X-TIMELINE-OCCUPIES, X-TIMELINE-STYLE and X-CONTENT-MAY-VARY as not supported, so a feature that works on Apple\u2019s own player does not guarantee it works elsewhere. A practical test matrix for any player:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Play through a break from start to finish.<\/li>\n\n\n\n<li>Seek over a break and check whether it plays when X-RESTRICT includes JUMP.<\/li>\n\n\n\n<li>Replay the section after a break to confirm CUE=&#8221;ONCE&#8221; holds.<\/li>\n\n\n\n<li>Join the live edge just before a break, and join again mid-break.<\/li>\n\n\n\n<li>Make the asset list return an error and confirm the stream resumes.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Your Interstitial Isn\u2019t Playing: A Debugging Checklist<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most failures come down to a short list of causes. Start with the first row and work down.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Symptom<\/strong><\/th><th><strong>Likely cause<\/strong><\/th><th><strong>What to check<\/strong><\/th><\/tr><\/thead><tbody><tr><td>The break never plays on any player<\/td><td>Malformed EXT-X-DATERANGE: whitespace in the attribute list, missing quotes, both or neither of X-ASSET-URI and X-ASSET-LIST. Clients ignore illegal date ranges silently.<\/td><td>Validate the tag character by character against the attribute-list rules<\/td><\/tr><tr><td>The whole stream fails to load<\/td><td>A duplicated attribute name in a tag. Clients are told to refuse such playlists.<\/td><td>Search the tag for repeated attribute names<\/td><\/tr><tr><td>Tag is present but players ignore it<\/td><td>No EXT-X-PROGRAM-DATE-TIME in the playlist, a mistyped CLASS, or tags that differ between renditions<\/td><td>Add the program date; match CLASS exactly; compare every rendition playlist<\/td><\/tr><tr><td>Plays on iOS or Safari but not on a TV or older player<\/td><td>The player does not implement interstitials, so the tag is ignored by design<\/td><td>Use stitched insertion for those device classes<\/td><\/tr><tr><td>The break plays again after a replay or seek-back<\/td><td>CUE does not include ONCE<\/td><td>Add CUE=&#8221;ONCE&#8221;<\/td><\/tr><tr><td>Viewers skip or seek past the ad<\/td><td>X-RESTRICT is missing, or the player does not enforce it. Apple notes enforcement happens at the player UI level.<\/td><td>Add X-RESTRICT=&#8221;SKIP,JUMP&#8221; and test enforcement on each player<\/td><\/tr><tr><td>Live viewers fall further behind live after every break<\/td><td>X-RESUME-OFFSET=0 set on a live stream<\/td><td>Omit the attribute so the player resumes after the break\u2019s duration<\/td><\/tr><tr><td>Viewers lose part of the film after each VOD break<\/td><td>X-RESUME-OFFSET omitted when you meant to insert<\/td><td>Set X-RESUME-OFFSET=0<\/td><\/tr><tr><td>Black frames or a stutter at the transition<\/td><td>Codec or aspect-ratio mismatch between ad and content, or clock drift between packager and encoder on live<\/td><td>Match codec family and aspect ratio; add X-SNAP for live<\/td><\/tr><tr><td>The ad slot is skipped and the show resumes<\/td><td>The asset-list or asset request returned an error, so the client canceled the break<\/td><td>Check asset-list latency and status codes from the viewer\u2019s network path<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A stream tester such as our <a href=\"https:\/\/5centscdn.net\/hls-dash-player\/\">HLS and DASH stream tester<\/a> is a quick way to confirm that the playlist parses and plays, and our guide to <a href=\"https:\/\/www.5centscdn.net\/blog\/hls-manifest-errors-m3u8-not-loading\/\">HLS manifest errors<\/a> covers the wider troubleshooting cluster. Whether a break fires still depends on the player build you test with, so repeat the test on each player in your fleet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>When to Use HLS Interstitials<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Interstitials fit best when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You control most of the player fleet (web apps on hls.js or Shaka, native Apple and Android apps) and can test attribute behavior on each.<\/li>\n\n\n\n<li>You want client-side measurement or interactive ad formats, which stitched breaks make difficult.<\/li>\n\n\n\n<li>You are scheduling non-ad content too. Apple\u2019s own examples of PRIMARY-style interstitials are rating bumpers and post-roll dub cards.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stay with stitching, or run both, when a large share of your audience is on connected-TV devices and set-top boxes whose players ignore the tags. If you are building an <a href=\"https:\/\/5centscdn.net\/solutions\/by-need\/ad-supported-streaming\/\">ad-supported streaming<\/a> service for a mixed device base, the pragmatic design is stitched breaks for legacy device classes and interstitials for modern players, chosen per session. The <a href=\"https:\/\/5centscdn.net\/monetization\/ad-insertion\/\">ad insertion<\/a> workflow you pick on the server side decides how much of that you can automate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Plan Ad Breaks and Delivery Together<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Whether a break is stitched into the stream or resolved by the player, it lands on your delivery network as extra requests, extra segments and sharp peaks at break time. 5centsCDN\u2019s ad insertion handles SCTE-35 markers and server-side ad stitching inside the same CDN that delivers your stream. If you are weighing stitched against player-resolved breaks for your device mix, <a href=\"https:\/\/5centscdn.net\/contact-us\">the 5centsCDN team<\/a> can help you plan the ad stack and the delivery footprint together.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Frequently Asked Questions<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-aioseo-faq\" data-schema-only=\"false\"><h3 class=\"aioseo-faq-block-question\"><strong>What are HLS interstitials?<\/strong><\/h3><div class=\"aioseo-faq-block-answer\">\n<p class=\"wp-block-paragraph\">HLS interstitials are a way to schedule ads, bumpers or other separate video assets onto an HLS stream\u2019s timeline using an EXT-X-DATERANGE tag with the class com.apple.hls.interstitial. The player fetches the interstitial asset itself, plays it, and then returns to the main content.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-aioseo-faq\" data-schema-only=\"false\"><h3 class=\"aioseo-faq-block-question\"><strong>Are HLS interstitials the same as SGAI?<\/strong><\/h3><div class=\"aioseo-faq-block-answer\">\n<p class=\"wp-block-paragraph\">Not quite. SGAI is the ad-insertion architecture in which the server decides the ad and the player fetches, plays and tracks it. HLS interstitials are the HLS-side signaling mechanism that implements it; DASH uses events instead. Our SGAI guide explains the architecture, and this guide covers the HLS mechanics.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-aioseo-faq\" data-schema-only=\"false\"><h3 class=\"aioseo-faq-block-question\"><strong>Do HLS interstitials work with live streams?<\/strong><\/h3><div class=\"aioseo-faq-block-answer\">\n<p class=\"wp-block-paragraph\">Yes. The interstitial asset must be VOD, but it can be scheduled against live primary content, including Low-Latency HLS. Live-specific features such as X-SNAP and the _HLS_start_offset query parameter exist to handle clock drift and viewers who join mid-break.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-aioseo-faq\" data-schema-only=\"false\"><h3 class=\"aioseo-faq-block-question\"><strong>What happens on a player that doesn\u2019t support interstitials?<\/strong><\/h3><div class=\"aioseo-faq-block-answer\">\n<p class=\"wp-block-paragraph\">It ignores the tag and plays the main content without the break, so no ad is shown. Services that need coverage on those devices typically keep stitched ad insertion for them.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-aioseo-faq\" data-schema-only=\"false\"><h3 class=\"aioseo-faq-block-question\"><strong>Are HLS interstitials part of RFC 8216?<\/strong><\/h3><div class=\"aioseo-faq-block-answer\">\n<p class=\"wp-block-paragraph\">No. RFC 8216 predates them. Interstitials are defined in Appendix D of the HLS 2nd Edition Internet-Draft (draft-pantos-hls-rfc8216bis), which is a work in progress and not an IETF standard.<\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.<\/p>\n","protected":false},"author":123478,"featured_media":7596,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[199,201],"tags":[],"class_list":["post-7595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-live-streaming","category-ott-monetization"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.\" \/>\n\t<meta name=\"robots\" content=\"noarchive, notranslate, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Fahad Anwar Muneer\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"5centsCDN | Video Live Streaming | CDN | Restream - Live streaming platform and restreaming to YouTube and Facebook. IP cam restreaming with restreaming.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"HLS Interstitials Explained: Tags, Attributes &amp; Players\" \/>\n\t\t<meta property=\"og:description\" content=\"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"161\" \/>\n\t\t<meta property=\"og:image:height\" content=\"58\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-11-04T12:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-11-03T17:12:59+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/5centscdn\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@5centscdn\" \/>\n\t\t<meta name=\"twitter:title\" content=\"HLS Interstitials Explained: Tags, Attributes &amp; Players\" \/>\n\t\t<meta name=\"twitter:description\" content=\"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@5centscdn\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#blogposting\",\"name\":\"HLS Interstitials Explained: Tags, Attributes & Players\",\"headline\":\"HLS Interstitials Explained: Tags, Attributes &amp; Players\",\"author\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/author\\\/fahad5centscdn-ca\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/hero-image_temeplate-1-scaled.jpg\",\"width\":2560,\"height\":1440},\"datePublished\":\"2026-11-04T12:00:00+00:00\",\"dateModified\":\"2026-11-03T17:12:59+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#webpage\"},\"articleSection\":\"Live Streaming, OTT &amp; Monetization\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/category\\\/ott-monetization\\\/#listItem\",\"name\":\"OTT &amp; Monetization\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/category\\\/ott-monetization\\\/#listItem\",\"position\":2,\"name\":\"OTT &amp; Monetization\",\"item\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/category\\\/ott-monetization\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#listItem\",\"name\":\"HLS Interstitials Explained: Tags, Attributes &amp; Players\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#listItem\",\"position\":3,\"name\":\"HLS Interstitials Explained: Tags, Attributes &amp; Players\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/category\\\/ott-monetization\\\/#listItem\",\"name\":\"OTT &amp; Monetization\"}}]},{\"@type\":\"FAQPage\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#faq\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What are HLS interstitials?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"HLS interstitials are a way to schedule ads, bumpers or other separate video assets onto an HLS stream\\u2019s timeline using an EXT-X-DATERANGE tag with the class com.apple.hls.interstitial. The player fetches the interstitial asset itself, plays it, and then returns to the main content.\"}},{\"@type\":\"Question\",\"name\":\"Are HLS interstitials the same as SGAI?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Not quite. SGAI is the ad-insertion architecture in which the server decides the ad and the player fetches, plays and tracks it. HLS interstitials are the HLS-side signaling mechanism that implements it; DASH uses events instead. Our SGAI guide explains the architecture, and this guide covers the HLS mechanics.\"}},{\"@type\":\"Question\",\"name\":\"Do HLS interstitials work with live streams?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. The interstitial asset must be VOD, but it can be scheduled against live primary content, including Low-Latency HLS. Live-specific features such as X-SNAP and the _HLS_start_offset query parameter exist to handle clock drift and viewers who join mid-break.\"}},{\"@type\":\"Question\",\"name\":\"What happens on a player that doesn\\u2019t support interstitials?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It ignores the tag and plays the main content without the break, so no ad is shown. Services that need coverage on those devices typically keep stitched ad insertion for them.\"}},{\"@type\":\"Question\",\"name\":\"Are HLS interstitials part of RFC 8216?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. RFC 8216 predates them. Interstitials are defined in Appendix D of the HLS 2nd Edition Internet-Draft (draft-pantos-hls-rfc8216bis), which is a work in progress and not an IETF standard.\"}}],\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#breadcrumblist\"}},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#organization\",\"name\":\"5centsCDN | Video Live Streaming | CDN | Restream\",\"description\":\"Live streaming platform and restreaming to YouTube and Facebook. IP cam restreaming with restreaming.\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/\",\"email\":\"hello@5centscdn.com\",\"telephone\":\"+13025203418\",\"foundingDate\":\"2021-04-08\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":1,\"maxValue\":50},\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Logo.svg\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#organizationLogo\",\"width\":161,\"height\":58},\"image\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/5centscdn\",\"https:\\\/\\\/x.com\\\/5centscdn\",\"https:\\\/\\\/instagram.com\\\/5centscdn\",\"https:\\\/\\\/tiktok.com\\\/@5centscdn\",\"https:\\\/\\\/pinterest.com\\\/5centscdn\",\"https:\\\/\\\/youtube.com\\\/5centscdn\",\"https:\\\/\\\/linkedin.com\\\/in\\\/5centscdn\",\"https:\\\/\\\/bsky.app\\\/profile\\\/5centscdn\",\"https:\\\/\\\/threads.com\\\/@5centscdn\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/author\\\/fahad5centscdn-ca\\\/#author\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/author\\\/fahad5centscdn-ca\\\/\",\"name\":\"Fahad Anwar Muneer\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#webpage\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/\",\"name\":\"HLS Interstitials Explained: Tags, Attributes & Players\",\"description\":\"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/author\\\/fahad5centscdn-ca\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/author\\\/fahad5centscdn-ca\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/hero-image_temeplate-1-scaled.jpg\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#mainImage\",\"width\":2560,\"height\":1440},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/hls-interstitials\\\/#mainImage\"},\"datePublished\":\"2026-11-04T12:00:00+00:00\",\"dateModified\":\"2026-11-03T17:12:59+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/\",\"name\":\"5centsCDN | Video Live Streaming | CDN | Restream\",\"alternateName\":\"5centsCDN\",\"description\":\"Live streaming platform and restreaming to YouTube and Facebook. IP cam restreaming with restreaming.\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.5centscdn.net\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<script type=\"text\/javascript\">\n\t\t\t(function(c,l,a,r,i,t,y){\n\t\t\tc[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;\n\t\t\tt.src=\"https:\/\/www.clarity.ms\/tag\/\"+i+\"?ref=aioseo\";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);\n\t\t})(window, document, \"clarity\", \"script\", \"feo2cgjhrw\");\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>HLS Interstitials Explained: Tags, Attributes &amp; Players<\/title>\n\n","aioseo_head_json":{"title":"HLS Interstitials Explained: Tags, Attributes & Players","description":"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.","canonical_url":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/","robots":"noarchive, notranslate, max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#blogposting","name":"HLS Interstitials Explained: Tags, Attributes & Players","headline":"HLS Interstitials Explained: Tags, Attributes &amp; Players","author":{"@id":"https:\/\/www.5centscdn.net\/blog\/author\/fahad5centscdn-ca\/#author"},"publisher":{"@id":"https:\/\/www.5centscdn.net\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/hero-image_temeplate-1-scaled.jpg","width":2560,"height":1440},"datePublished":"2026-11-04T12:00:00+00:00","dateModified":"2026-11-03T17:12:59+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#webpage"},"isPartOf":{"@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#webpage"},"articleSection":"Live Streaming, OTT &amp; Monetization"},{"@type":"BreadcrumbList","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/www.5centscdn.net\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/category\/ott-monetization\/#listItem","name":"OTT &amp; Monetization"}},{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/category\/ott-monetization\/#listItem","position":2,"name":"OTT &amp; Monetization","item":"https:\/\/www.5centscdn.net\/blog\/category\/ott-monetization\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#listItem","name":"HLS Interstitials Explained: Tags, Attributes &amp; Players"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#listItem","position":3,"name":"HLS Interstitials Explained: Tags, Attributes &amp; Players","previousItem":{"@type":"ListItem","@id":"https:\/\/www.5centscdn.net\/blog\/category\/ott-monetization\/#listItem","name":"OTT &amp; Monetization"}}]},{"@type":"FAQPage","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#faq","url":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/","mainEntity":[{"@type":"Question","name":"What are HLS interstitials?","acceptedAnswer":{"@type":"Answer","text":"HLS interstitials are a way to schedule ads, bumpers or other separate video assets onto an HLS stream\u2019s timeline using an EXT-X-DATERANGE tag with the class com.apple.hls.interstitial. The player fetches the interstitial asset itself, plays it, and then returns to the main content."}},{"@type":"Question","name":"Are HLS interstitials the same as SGAI?","acceptedAnswer":{"@type":"Answer","text":"Not quite. SGAI is the ad-insertion architecture in which the server decides the ad and the player fetches, plays and tracks it. HLS interstitials are the HLS-side signaling mechanism that implements it; DASH uses events instead. Our SGAI guide explains the architecture, and this guide covers the HLS mechanics."}},{"@type":"Question","name":"Do HLS interstitials work with live streams?","acceptedAnswer":{"@type":"Answer","text":"Yes. The interstitial asset must be VOD, but it can be scheduled against live primary content, including Low-Latency HLS. Live-specific features such as X-SNAP and the _HLS_start_offset query parameter exist to handle clock drift and viewers who join mid-break."}},{"@type":"Question","name":"What happens on a player that doesn\u2019t support interstitials?","acceptedAnswer":{"@type":"Answer","text":"It ignores the tag and plays the main content without the break, so no ad is shown. Services that need coverage on those devices typically keep stitched ad insertion for them."}},{"@type":"Question","name":"Are HLS interstitials part of RFC 8216?","acceptedAnswer":{"@type":"Answer","text":"No. RFC 8216 predates them. Interstitials are defined in Appendix D of the HLS 2nd Edition Internet-Draft (draft-pantos-hls-rfc8216bis), which is a work in progress and not an IETF standard."}},{"@type":"Question","name":"What are HLS interstitials?","acceptedAnswer":{"@type":"Answer","text":"HLS interstitials are a way to schedule ads, bumpers or other separate video assets onto an HLS stream\u2019s timeline using an EXT-X-DATERANGE tag with the class com.apple.hls.interstitial. The player fetches the interstitial asset itself, plays it, and then returns to the main content."}},{"@type":"Question","name":"Are HLS interstitials the same as SGAI?","acceptedAnswer":{"@type":"Answer","text":"Not quite. SGAI is the ad-insertion architecture in which the server decides the ad and the player fetches, plays and tracks it. HLS interstitials are the HLS-side signaling mechanism that implements it; DASH uses events instead. Our SGAI guide explains the architecture, and this guide covers the HLS mechanics."}},{"@type":"Question","name":"Do HLS interstitials work with live streams?","acceptedAnswer":{"@type":"Answer","text":"Yes. The interstitial asset must be VOD, but it can be scheduled against live primary content, including Low-Latency HLS. Live-specific features such as X-SNAP and the _HLS_start_offset query parameter exist to handle clock drift and viewers who join mid-break."}},{"@type":"Question","name":"What happens on a player that doesn\u2019t support interstitials?","acceptedAnswer":{"@type":"Answer","text":"It ignores the tag and plays the main content without the break, so no ad is shown. Services that need coverage on those devices typically keep stitched ad insertion for them."}},{"@type":"Question","name":"Are HLS interstitials part of RFC 8216?","acceptedAnswer":{"@type":"Answer","text":"No. RFC 8216 predates them. Interstitials are defined in Appendix D of the HLS 2nd Edition Internet-Draft (draft-pantos-hls-rfc8216bis), which is a work in progress and not an IETF standard."}}],"inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.5centscdn.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#breadcrumblist"}},{"@type":"Organization","@id":"https:\/\/www.5centscdn.net\/blog\/#organization","name":"5centsCDN | Video Live Streaming | CDN | Restream","description":"Live streaming platform and restreaming to YouTube and Facebook. IP cam restreaming with restreaming.","url":"https:\/\/www.5centscdn.net\/blog\/","email":"hello@5centscdn.com","telephone":"+13025203418","foundingDate":"2021-04-08","numberOfEmployees":{"@type":"QuantitativeValue","minValue":1,"maxValue":50},"logo":{"@type":"ImageObject","url":"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#organizationLogo","width":161,"height":58},"image":{"@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#organizationLogo"},"sameAs":["https:\/\/facebook.com\/5centscdn","https:\/\/x.com\/5centscdn","https:\/\/instagram.com\/5centscdn","https:\/\/tiktok.com\/@5centscdn","https:\/\/pinterest.com\/5centscdn","https:\/\/youtube.com\/5centscdn","https:\/\/linkedin.com\/in\/5centscdn","https:\/\/bsky.app\/profile\/5centscdn","https:\/\/threads.com\/@5centscdn"]},{"@type":"Person","@id":"https:\/\/www.5centscdn.net\/blog\/author\/fahad5centscdn-ca\/#author","url":"https:\/\/www.5centscdn.net\/blog\/author\/fahad5centscdn-ca\/","name":"Fahad Anwar Muneer"},{"@type":"WebPage","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#webpage","url":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/","name":"HLS Interstitials Explained: Tags, Attributes & Players","description":"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.5centscdn.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#breadcrumblist"},"author":{"@id":"https:\/\/www.5centscdn.net\/blog\/author\/fahad5centscdn-ca\/#author"},"creator":{"@id":"https:\/\/www.5centscdn.net\/blog\/author\/fahad5centscdn-ca\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2026\/11\/hero-image_temeplate-1-scaled.jpg","@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#mainImage","width":2560,"height":1440},"primaryImageOfPage":{"@id":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/#mainImage"},"datePublished":"2026-11-04T12:00:00+00:00","dateModified":"2026-11-03T17:12:59+00:00"},{"@type":"WebSite","@id":"https:\/\/www.5centscdn.net\/blog\/#website","url":"https:\/\/www.5centscdn.net\/blog\/","name":"5centsCDN | Video Live Streaming | CDN | Restream","alternateName":"5centsCDN","description":"Live streaming platform and restreaming to YouTube and Facebook. IP cam restreaming with restreaming.","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.5centscdn.net\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"5centsCDN | Video Live Streaming | CDN | Restream - Live streaming platform and restreaming to YouTube and Facebook. IP cam restreaming with restreaming.","og:type":"article","og:title":"HLS Interstitials Explained: Tags, Attributes &amp; Players","og:description":"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.","og:url":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/","og:image":"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg","og:image:secure_url":"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg","og:image:width":161,"og:image:height":58,"article:published_time":"2026-11-04T12:00:00+00:00","article:modified_time":"2026-11-03T17:12:59+00:00","article:publisher":"https:\/\/facebook.com\/5centscdn","twitter:card":"summary_large_image","twitter:site":"@5centscdn","twitter:title":"HLS Interstitials Explained: Tags, Attributes &amp; Players","twitter:description":"HLS interstitials let a playlist schedule ads the player fetches itself. See the tag syntax, control attributes, live behavior and player support.","twitter:creator":"@5centscdn","twitter:image":"https:\/\/www.5centscdn.net\/blog\/wp-content\/uploads\/2022\/06\/Logo.svg"},"aioseo_meta_data":{"post_id":"7595","title":"#post_title","description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"hls interstitials","score":0,"analysis":[]},"additional":[{"keyphrase":"what are HLS interstitials","score":0},{"keyphrase":"EXT-X-DATERANGE interstitial","score":0},{"keyphrase":"X-ASSET-LIST","score":0},{"keyphrase":"HLS interstitials vs SSAI","score":0},{"keyphrase":"HLS interstitial ads","score":0},{"keyphrase":"com.apple.hls.interstitial","score":0},{"keyphrase":"HLS interstitials live streams","score":0},{"keyphrase":"X-RESUME-OFFSET","score":0}]},"primary_term":{"category":201},"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[{"hidden":false,"schemaBlockId":"aioseo-mw0xg4s1kiv6o","tagName":"h3","answer":"HLS interstitials are a way to schedule ads, bumpers or other separate video assets onto an HLS stream\u2019s timeline using an EXT-X-DATERANGE tag with the class com.apple.hls.interstitial. The player fetches the interstitial asset itself, plays it, and then returns to the main content.","question":"What are HLS interstitials?","type":"aioseo\/faq"},{"hidden":false,"schemaBlockId":"aioseo-mw0xg7nzrbuou","tagName":"h3","answer":"Not quite. SGAI is the ad-insertion architecture in which the server decides the ad and the player fetches, plays and tracks it. HLS interstitials are the HLS-side signaling mechanism that implements it; DASH uses events instead. Our SGAI guide explains the architecture, and this guide covers the HLS mechanics.","question":"Are HLS interstitials the same as SGAI?","type":"aioseo\/faq"},{"hidden":false,"schemaBlockId":"aioseo-mw0xgctrooa1d","tagName":"h3","answer":"Yes. The interstitial asset must be VOD, but it can be scheduled against live primary content, including Low-Latency HLS. Live-specific features such as X-SNAP and the _HLS_start_offset query parameter exist to handle clock drift and viewers who join mid-break.","question":"Do HLS interstitials work with live streams?","type":"aioseo\/faq"},{"hidden":false,"schemaBlockId":"aioseo-mw0xgfuiksa8l","tagName":"h3","answer":"It ignores the tag and plays the main content without the break, so no ad is shown. Services that need coverage on those devices typically keep stitched ad insertion for them.","question":"What happens on a player that doesn\u2019t support interstitials?","type":"aioseo\/faq"},{"hidden":false,"schemaBlockId":"aioseo-mw0xgjw9e7w26","tagName":"h3","answer":"No. RFC 8216 predates them. Interstitials are defined in Appendix D of the HLS 2nd Edition Internet-Draft (draft-pantos-hls-rfc8216bis), which is a work in progress and not an IETF standard.","question":"Are HLS interstitials part of RFC 8216?","type":"aioseo\/faq"}],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"seo_analyzer_scan_date":"2026-11-04 12:50:30","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":"0","open_ai":null,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-11-03 16:44:21","updated":"2026-11-04 12:50:43","focus_keyword":"hls interstitials","additional_keywords":[{"word":"what are HLS interstitials","score":100,"items":{"introductionKeyword":{"score":9},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":9},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}},{"word":"EXT-X-DATERANGE interstitial","score":80,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}},{"word":"X-ASSET-LIST","score":80,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}},{"word":"HLS interstitials vs SSAI","score":80,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}},{"word":"HLS interstitial ads","score":80,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}},{"word":"com.apple.hls.interstitial","score":74,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":6}}},{"word":"HLS interstitials live streams","score":80,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}},{"word":"X-RESUME-OFFSET","score":80,"items":{"introductionKeyword":{"score":3},"keyphraseLength":{"score":9},"keyphraseDensity":{"score":4},"functionWordsInKeyphrase":{"score":9},"textCompetingLinks":{"score":9},"imageKeyphrase":{"score":9}}}],"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/www.5centscdn.net\/blog\/\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/www.5centscdn.net\/blog\/category\/ott-monetization\/\" title=\"OTT &amp; Monetization\">OTT &amp; Monetization<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\tHLS Interstitials Explained: Tags, Attributes &amp; Players\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.5centscdn.net\/blog\/"},{"label":"OTT &amp; Monetization","link":"https:\/\/www.5centscdn.net\/blog\/category\/ott-monetization\/"},{"label":"HLS Interstitials Explained: Tags, Attributes &amp; Players","link":"https:\/\/www.5centscdn.net\/blog\/hls-interstitials\/"}],"_links":{"self":[{"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/posts\/7595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/users\/123478"}],"replies":[{"embeddable":true,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/comments?post=7595"}],"version-history":[{"count":1,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/posts\/7595\/revisions"}],"predecessor-version":[{"id":7602,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/posts\/7595\/revisions\/7602"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/media\/7596"}],"wp:attachment":[{"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/media?parent=7595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/categories?post=7595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.5centscdn.net\/blog\/wp-json\/wp\/v2\/tags?post=7595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}