Maximizing AVOD monetization in the age of ad-skipping?

Server-side ad insertion (SSAI) has been a game-changer in the digital advertising landscape, solving the problem of ad-blockers and allowing content creators to monetize their assets more effectively. However, ad-skipping remains an issue, reducing the potential revenue generated from ad placements. While it was a relevant topic when using client-side ad insertion (CSAI), the distinction between content and ads was much clearer and the different handling of each usually allows easier implementation of ad-skipping policies. With SSAI, a single stream is delivered to the player, and the boundary between content and ads is – by design – made a lot less visible.

While the Interactive Advertising Bureau (IAB) has not issued specific recommendations on tackling ad-skipping, there are several practices that have emerged as effective solutions.

In this blog post, we’ll explore a comprehensive approach to manage ad-skipping policies to ensure optimal monetization without compromising the user experience. We’ll assume, for the purpose of the initial discussion, that ads cannot be skipped.

Key Components

To begin addressing ad-skipping, at least two components are needed:

  1. A mechanism in the player or app to determine ad positions (and associated metadata) in the asset timeline.
  2. A player API capable of catching events like user scrubbing and seeking into the timeline, which most modern web and mobile players offer.

Implementing Anti-Skipping

Immediately, you can see that most of the work needed to address ad-skipping lies within the player itself, or the app that wraps it. On balance, it is the best method to minimize implementation complexity and reduce risks of buffering.

It primarily comes down to tracking and changing the position of the playhead.

We can look at it as a set of rules that need to be enforced in the player:

Rule 1 – An ad break started will be finished

When the playhead is inside of an ad break (whether a pre-roll or mid-roll), the viewer is prevented from being able to seek anywhere in the content until the ad break has finished. This is usually done by disabling the player controls, preventing any user interaction with the playhead.

Rule 2An upcoming ad break cannot be skipped overe to match our brand.

When the playhead is within proximity of a future mid-roll (for example within the 2 minute window preceding a mid-roll), the viewer is prevented from being able to seek anywhere in the timeline.

This rule ensures that the viewer cannot preempt the arrival of an break and skip it just before it starts.

Rule 3 – There will be no cheating

If the viewer scrubs forward in time, and the playhead lands within proximity of a previous mid-roll (for example within a 2 minute window after the mid-roll), the playhead is moved back to the start of that mid-roll.

Together with rule 2, it ensures that the viewer cannot “cheat” and go back in time just before an ad break to then jump ahead. If she does that, she will miss the first 2 minutes of the content that follow the mid-roll.

Rule 4 – At least one ad break must be watched

There are times when you might want to allow the viewer skipping ahead in the content, over multiple ad breaks. However in this case, the viewer should at least have to watch the last ad break.

If the viewer scrubs forward in time, and there is more that one mid-roll break between the playhead and landing position, the playhead is moved back to the start of the last mid-roll.

Rule 5 – Be nice, and resume playback at the desired position

For better user experience, an additional rule could be implemented to prevent the viewer from having to watch the same portion of the content more than once:

If (in rule 3 or 3a) the playhead landed on a position within the content, triggering the playhead to be moved back to the start of an ad break, you could move the playhead to the position that the viewer initially select, once that ad break is finished.

Additional Considerations


Bookmarking is a feature offered by some apps or players, which record the playhead position for users, allowing them to resume where they left off, in a future session of the same content.

For apps or players with such a feature, special measures must be taken. You may choose not to force the viewer to watch ads again, which requires the player to handle seeking to bookmark points first without following the rules mentioned above.

Skippable Ads

In drawing the 5 rules above, we’ve considered that all ads had to be watched. If you decide that some or all of those ads can be skipped by the viewer, whether from the start of the ad or after a period of time, you will need to alter those rules accordingly. This information – if specific to each ad – will have to be communicated to the player alongside other ad metadata and timing.

Fundamentally, it comes down to adjusting the start and end time of the time windows defined above, around the ad breaks.

With and SmartLib

Using as your SSAI solution, the first component, which communicates ad break timing and metadata to the player, is provided by the SmartLib player library.

Technical reference on SmartLib is available in the Broadpeak guides. Note in particular the section on ad insertion.


The proposed approach aims to secure complete monetization while maintaining a consistent user experience. It is worth noting that implementing a subset of the suggested rules can provide a softer approach to enforcing ad-watching. By selectively choosing which rules to apply, content creators can strike a balance between ensuring ad monetization and maintaining a user-friendly experience. This flexibility allows businesses to tailor their strategy according to their audience preferences and advertising goals, ultimately resulting in a more effective and engaging ad experience for users.

The key takeaway is that whatever your monetization goals are, the fundamentals exist for enforcing your desired level, considering various user behaviors in on-demand content consumption. And you don’t need to look much beyond your players to enable it.