Before you start

Before you start HbbTV development you will need to be set up a couple of things. Most developers will need an emulator, you will also need a webserver and you will need a known working application to test your set-up.


Most HbbTV developer are not going to start developing with a smart TV and a RF modulator and are therefore going to start with an HbbTV emulator running on their laptop. 

If you are skipping an emulator and going straight to a smart TV then use this article to help.

There are a number of HbbTV emulators available, including:

Adding an extension to Chrome or Firefox is easy, visit the Chrome web store or the Firefox Browser add-ons site, and for your chosen emulator click Add Extension. 

An overview of each of the emulators is given in the following sub-sections.

RedOrbit HbbTV Emulator

The RedOrbit HbbTV Emulator is an extension for the Chrome browser and is available from the Chrome web store. It was developed by RedOrbit GmbH and was last updated in August 2022. 

RedOrbit requires the MIME type of the HTML document to be application/vnd.hbbtv.xhtml+xml to activate. 

RedOrbit emulates the remote control by assigning keyboard keys to remote control keys. The mapping is as follows:

Remote Control KeyKeyboard Key
Fast ForwardD
Fast BackwardA

RedOrbit supports playback of mp4 videos, DASH support is being planned. Embedded broadcast signal are simulated with a waterfall video played in a loop

HybridTV Dev Environment

The HybridTV Dev Environment is also an extension to the Chrome browser available from the Chrome web store. This one was developed by smartclip Europe GmbH. This was last updated in October 2020.

HybridTV has an onscreen remote-control emulator. It also has a guide button which provides access to the HbbTV applications provided by several German TV channels. 

It also has a mechanism through which you can generate stream events and the ability to update the user agent string to value of your choice. 

The video used for the broadcast object is Caminandes from tm the Blender Foundation. 


HybridTVViewer is an extension to Firefox and was last updated in April 2024. This was developed by Karl Rousseau.

The extension has on-screen buttons for the colour keys and uses the keyboard for other remote control keys. The mapping is as follows:

Remote Control KeyKeyboard Key
RedOn screen
GreenOn screen
YellowOn screen
BlueOn screen
Fast ForwardF
Fast Backward 

HybridTVViewer will automatically be activated by content with the correct HbbTV MIME type but can also be manually invoked.

The setting look like the emulator can be configured to support the different versions of the HbbTV Standard V1.0 (ETSI 1.1.1) to V2.0.1 (ETSI 1.4.1), but only V1.5 (ETSI 1.2.1) is actually available.

The video to be used for background broadcast video can also be configured.  However, the tutorial broadcast object application doesn’t appear to work with this emulator.

The screen size can be adjusted through on-screen controls from 720p up to 4320p. This is just scaling the screen up. Only 720p application layout is available. 

Web Server

To server HbbTV applications to your newly installed emulator you will need a web server. Most developer will have a preferred approach to this.  

If you are looking for a quick and easy option, you could use an AWS S3 bucket set up for static web hosting.

If you have a recent version of Node.js installed on your machine, you can serve application by running the following command from the repositories root directory:

 npx http-server --mimetypes .types 

The –mimetypes argument makes sure that http-server uses the mime type to file extension mapping specified in .types. This makes sure that the app’s document is served with the mime type application/vnd.hbbtv.xhtml+xml as expected by HbbTV terminals.

The contents of the .types file is:

 application/vnd.hbbtv.xhtml+xml html 

It can been download from GitHub.


If you are not already developing an application, then you will want one to test out your set-up. You can access the HbbTV tutorial applications from Github.


HbbTV versions

When developing an HbbTV application you need to know which versions of HbbTV you application is going to support.

There are multiple HbbTV versions. A new version has been produced roughly every two years since the first version of HbbTV in 2010. Each an evolution of the previous version.

Slightly confusingly each HbbTV version has two names, an informal name which identifies if it is a major or minor update to the HbbTV specification and a formal name which comes from the standards body ETSI, which publishes the specification as technical standard 102 796. There are specific rules around ETSI version numbering, which means that ETSI number can’t easily reflect the relationship between the versions of HbbTV and hence the two names.

Informal NameFormal NamePublished Date
HbbTV 2.0.4TS 102 769 V1.7.12023 09
HbbTV 2.0.3TS 102 796 V1.6.12021 04
HbbTV 2.0.2TS 102 796 V1.5.12018 19
HbbTV 2.0.1TS 102 796 V1.4.12016 08
HbbTV 2.0TS 102 796 V1.3.1Depreciated
HbbTV 1.5TS 102 796 V1.2.12012 11
HbbTV 1.0TS 102 796 V1.1.12010 06

Articles, blogs and news items normally refer to the informal name/numbering. Specifications refer to the formal name/numbering. Once you are used to the number it is easy to know which a number is referring to.

Between versions there are also errata which correct mistakes made in the published specification but don’t add functionality to it.

There are also optional related specifications and a specification for operator applications (OpApp). These have their own version numbers and ETSI specification numbers.

Links to all the specifications and errata are here.

Do HbbTV versions match wider web standards?

The HbbTV standard does follow updates to desktop and mobile browsers, but typically with a few years lag. Televisions are much more constrained in processing power and memory than mobile phones and laptops and therefore it takes longer for new features to evolve to become efficient enough to run on a television. 

For example, HbbTV 2.0.3 was released in 2021 and was specified to support 2018 web standards.

How long does a HbbTV specification last?

It can take up to a year for published specifications to be included in new television models. Consumer electronics manufactures don’t usual update the core software in their television models and if this does happen, only then within the first year after a model is launched. Therefore, a television model is usually stuck with the version of HbbTV it is launched with. Televisions are then used for many years. The replacement cycle for a main television is typically six to eight years, but after a television is replaced it can often be continued to be used as a secondary set in a household for many more years.

By comparison laptops and mobile phones have a shorter lifespan of three to five years and the browser technologies that they run are continuously updated for most of their lifespan.

This means that HbbTV application have to run on a much more diverse range of hardware and software than an equivalent web app.

Which version of HbbTV should I develop for?

The version of HbbTV that you develop for will be dependent on the market and geography your applications will be deployed in. Most mature HbbTV deployments have multiple live versions of HbbTV.

Market research can indicate what versions of HbbTV are deployed and in what volumes in a particular market.

To monetize your applications, you will want applications to run on as many televisions in your target geography as possible, so will need applications to be backwards compatible across multiple versions of HbbTV.

You should also be aware that television models don’t always implement all of the features of the specification version they report to support. Care needs to be taken on a model-by-model basis when using certain features.

Features are also depreciated from version to version. These are usually features that have never been reported to be used either because they are impractical, lack value or have been successfully replaced.

There is a temptation to go for the lowest common denominator to simplify development, but the features in new versions of the specification often lead to better user experiences and therefore should be used wherever possible. 

What is the difference between HbbTV versions?

There are separate presentation and articles available for each version, detailing it new and depreciated features.

As the numbering indicates the biggest change was between HbbTV 1.5 and HbbTV 2.0. While there are many features in HbbTV 2.0 the most fundamental was the support for HTML5. 

Help us enhance the HbbTV Developer Portal

At the HbbTV Association, our mission is to foster innovation through a vibrarnt developer community. To ensure HbbTV remains at the forefront of effective, attractive, and interoperable television services, we rely on the creativity and expertise of developers, especially those who blend insights from mobile and web development.

To support our developers, we created the HbbTV Developer Portal, which offers a range of tutorials, articles, and an API reference. This portal is designed to assist both newcomers and seasoned experts in HbbTV development. The content is sourced directly from our developer community to ensure it remains relevant and meaningful.

Since its launch, the Developer Portal has been a valuable resource. However, to continue providing exceptional support, we’re seeking to enhance and update it. The first step in this process is to gather input from our community on how we can improve. We invite you to participate in our survey and share your thoughts:

Take the Survey

The survey will be open for a couple of months to collect comprehensive feedback, and we will begin acting on your suggestions as soon as they come in. Through the survey, we’re also looking to identify individuals interested in contributing to the portal, whether through writing expert articles, reviewing tutorials, or joining an advisory board.

Our goal is to engage as many developers and HbbTV enthusiasts as possible. Your insights are crucial in shaping the future of our Developer Portal.

What’s Next?

This summer, we have several activities planned to enhance the portal. One initiative includes having a frontend web developer new to HbbTV review existing tutorials to ensure they provide sufficient information for beginners.

We’ll keep you updated on our progress and plans through regular blog posts. Stay tuned for more updates!

Thank you for your support and contributions to the HbbTV developer community.

Matthew Huntington (Developer Portal Manager)

National certification schemes

The HbbTV Test Suite provides a set of test material to enable implementers to test receivers against the HbbTV specifications and other associated specifications (such as OIPF). National certification schemes, that usually award a locally commercially relevant logo for devices that are tested using formal lists of HbbTV and additional platform specific tests, often also list the certified compatible models.

A few examples are provided here:








Kaip pradėti – HiTV (telecentras.lt)

Fast Media Switch API and the switchMediaPresentation method

HbbTV targeted advertising enables the delivery of digital video adverts over broadband that replace part of linear TV services received by terminals via DVB-T(2)/C(2)/S(2) and perhaps IPTV when based on MPEG-2 transport streams. Thereby, digital video adverts are shown on targeted terminals instead of the original broadcast adverts, which will be seen by viewers on all non-targeted terminals.

It is possible to deliver a targeted advertising experience using the standard features of HbbTV standard (ETSI TS 102 796), e.g. for a broadcast to broadband switch, calling the stop method on a video/broadcast object, waiting for the state change to complete and then calling play on an HTML5 video element, however the HbbTV® targeted advertising standard (ETSI TS 103 736-1) aims to enable a more seamless viewing experience.

For this purpose, HbbTV® targeted advertising defines the Fast Media Switch API and the corresponding switchMediaPresentation method:

The switchMediaPresentation method belongs to a non-visual embedded object of type “application/hbbtvMediaSwitcher”, class MediaSwitcher. Applications seeking to use the Fast Media Switch API should first check XML device capabilities for one or more <ta> elements (the xmlCapabilities property of the “application/oipfCapabilities” embedded object) and then obtain the “application/hbbtvMediaSwitcher” embedded object either by fetching it from the DOM or by using MediaSwitcher createMediaSwitcher() method of the Object Factory HbbTV API, as specified in the Annex A1 of the HbbTV® targeted advertising standard (ETSI TS 103 736-1).

For example:

// ... the embedded object
<object id="mediaSwitcher" type="application/hbbtvMediaSwitcher" width="300" height="150"></object>
// ... obtain the object from the DOM
let theMediaSwitcher = document.getElementById("mediaSwitcher")

PlayReady client security levels and dash.js

PlayReady security level is a property of a PlayReady client, and every license delivered to a client has a property indicating the minimum security level required from a client to allow binding to this license. More information on PlayReady security levels can be found here.

HbbTV service implementers should be aware that dash.js PlayReady implementations won’t use security level SL3000 if KID and encryption keys are not distinct on all tracks. The issue is discussed here: https://github.com/Dash-Industry-Forum/dash.js/discussions/3869#discussioncomment-3528752

Note the comment from Microsoft:

One last thing to keep in mind: You will not actually get SL3000 security unless the actual AES content keys used to encrypt the content are different between streams (not just the KID). It’s technically possible for a license server to issue licenses with different KIDs with the same content key.

So, HbbTV service implementers always need to use different distinct KID and encryption key for video track and audio tracks, if encryption key is identical then implementations will drop to security level SL2000 and not use the SL3000.