Emulator
HbbTV Emulator & Testsuite
Develop and test HbbTV applications on your desktop, without a television set.
The extension injects an HbbTV/OIPF runtime into pages you explicitly allow: the OIPF object factory, video/broadcast, the A/V control object, the application manager, the key handling of a real remote control and a simulated DVB channel list. It follows the HbbTV profile of OIPF DAE as defined in ETSI TS 102 796 V1.7.1 — not the full OIPF scope.
Anything that Annex A of that standard marks as “not included” does not exist here either, because an emulator that offers more than the target device teaches you the wrong thing.
In review for the Chrome Web Store. Until it appears there, load it unpacked — you do this weekly anyway.
Download .zip · 1.1 MBsha256 019e4810748897f350a64cb7e18d029562eeb8cc2dae8df8276f51a406f2532f
Would rather hear from us when it reaches the store? Tell us once — we will not add you to anything.
Load unpacked
- 1Unzip it somewhere permanent.
- 2Open chrome://extensions, turn on Developer mode.
- 3“Load unpacked”, pick the folder.
- 4In Details, turn on “Allow user scripts”. Without it the page still gets the TV User-Agent header, but navigator.userAgent stays Chrome's — the Device tab warns you.
Allowed hosts
Add the host and port of the app you want to test — localhost:8080, or your staging server. Chrome asks you to grant permission for that host.
Nothing happens outside that list. That is the design, not a limitation.
What it emulates
- OIPF object factory and the application/oipfApplicationManager lifecycle
- video/broadcast: channel list, channel change, components, programme data, stream events, a test card
- The A/V control object and HTML5 video, with adaptive playback via dash.js and hls.js — both bundled, no code is loaded from anywhere at runtime
- Subtitles, trick play and reverse playback where the profile requires it
- Keyset handling and the six gating layers of clause 10.2.2.1, including the DOM KeyboardEvent.code values from Table 12
- Capabilities and configuration objects
- An inspector overlay that shows what the app is doing to the emulator, live
The panel
Three working tabs, and a manual
Real screenshots of the real panel. The yellow band at the top is not a mock-up: the emulator keeps the state of the browser's protections visible at all times, because you are meant to notice it.
Profiles
Seven television profiles
| Marketing name | Spec version | Note |
|---|---|---|
| HbbTV 1.5 | TS 102 796 v1.2.1 | |
| HbbTV 2.0 | v1.3.1 | |
| HbbTV 2.0.1 | v1.4.1 | default |
| HbbTV 2.0.2 | v1.5.1 | |
| HbbTV 2.0.3 | v1.6.1 | |
| HbbTV 2.0.4 | v1.7.1 | |
| HbbTV 2.0.5 | draft | candidate |
Keys
Your keyboard is the remote
- Rred
- Ggreen
- Yyellow
- Bblue
- ↑ ↓ ← →navigate
- EnterOK
- BackspaceBACK
- Spaceplay
- Ppause
- Sstop
- Fforward
- Wrewind
- 0 – 9numbers
Limits
What this is not
It is a development tool, not a conformance test bench. It does not prove that your app runs on a real device. The renderer is Blink, not a device browser; performance, memory limits, codec support and real tuner timing all differ.
Not emulated, on purpose: PVR and recording, DRM of any kind, real tuner access, the DSM-CC object carousel and dvb:// URLs, AIT signalling, operator apps, companion screen, DIAL and media synchronisation. Access to these returns defined stubs so apps do not crash, but there is no functional emulation behind them.
And it emulates HbbTV, only HbbTV. For Tizen and webOS we use the vendor SDKs and real devices, because that is what those platforms give you.
Warning
A warning worth reading twice
For allowed hosts, the emulator can remove Content-Security-Policy and Strict-Transport-Security from responses — that is on by default, because HbbTV apps routinely need it — and can add a permissive CORS header, which is off by default. The side panel shows at all times which host currently has which protection disabled.
Put only hosts you develop yourself on the allowed list. A third-party host you allow loses, for the duration of the allowance, the protections its operator set.
Privacy
No account, no telemetry, no analytics, no tracking. Settings live in chrome.storage.local and are never synced to your Google account.
Two requests can ever leave your machine, both to api.anthropic.com and both only on your click: checking your API key when you save it, and the optional AI summary of a report. Without a key, the extension makes no network request of its own at all.
Next
Developers
The emulator also writes the report
Two ways to run your app against it, one report format, around 80 rules that each cite the standard.
How the testing works →Broadcasters
We run this against your app as an audit
And hand you the report, with the findings separated from the limits of the tool.
Talk to us →