WPE, the Web Platform for Embedded, allows embedders to create simple and performant systems based on Web platform technologies. It is designed with hardware acceleration in mind, leveraging common 3D graphics APIs for best performance

Browsers are the killer applications that many network device manufacturers need to embed in their products. However, there are many challenges that hinder the dream of building performant web browsers for low-cost devices. 

With the aim of making this dream a reality, at Igalia we have released WPE (initially known as WebKitForWayland), a new WebKit Port optimized for Embedded platforms, can support a variety of display protocols  like Wayland or X11.

WPE serves as a base for systems and environments that mainly or completely rely on Web platform technologies to build their interfaces. WPE is now part of Reference Design Kit (RDK Central) and has been accepted upstream at WebKit as a new official port of WebKit.

Our efforts have made it possible to run WPE on the Raspberry Pi (1, 2 and 3), Jetson TK1, MinnowBoard Max and Intel NUC. WPE could run out of the box in any HW that has a good EGL and OpenGL ES 2 support and basic GStreamer integration.

WPE facts

Some advantages of "WPE" on the Raspberry Pi include:

  • Enables rich and fast HTML-based user interfaces, integrating multimedia and 3D content, to run smoothly on low-cost devices.
  • Displays multimedia content directly in HTML, with high-quality CSS animations at 60FPS, and fluid 720p HTML videos.
  • Focused on graphics performance with multi-threading optimizations to improve CSS animation, scrolling, scaling, rendering of canvas and video element.
  • Consumes less memory. HTML-based interfaces will use less memory, leaving more available for the rest of your needs.
  • W3C standards MSE and EME/Clearkey supported. Unlicensed part of Youtube TV and similar platforms are now enabled.

  • WPE
  • Web Platform for Embedded
  • Wayland
  • WebKit
  • Embedded Systems
  • Hardware Acceleration
  • Raspberry Pi
  • EGL
  • OpenGL ES
  • WebGL

Featured Media

WPE - The Adaptable Web Engine Product for Embedding (IBC 2018)
WPE. Current Status and Future (Web Engines Hackfest 2018)
WPE WebKit: HTML5 User Interfaces for Embedded Devices (ELC Europe 2017)
WPE, a New WebKit Port Optimised for Embedded (IBC 2017)
WebRTC(s) in WebKit(s)! (Web Engines Hackfest 2017)
From "WebKit for Wayland" to WPE (Web Engines Hackfest 2016)
WebKit for Wayland
WebKitForWayland on Weston IVI Shell
WebKitGTK+ Wayland: WebKit2 and Accelerated Compositing


Enrique Ocaña 18/02/2016

Improving Media Source Extensions on WebKit ports based on GStreamer

During 2014 I started to become interested on how GStreamer was used in WebKit to play media content and how it was related to Media Source Extensions (MSE). Along 2015, my company Igalia strenghtened its cooperation with Metrological to enhance the...

Carlos López 28/10/2015

Introducing the meta-webkit Yocto layer.

Lately I have been learning to use Yocto / OpenEmbedded to create custom distributions and products targeting different embedded hardware. One of the goals was to create a Kiosk-like browser that was based on a modern Web engine, light (specially...

Žan Doberšek 09/12/2014

Announcing WebKit for Wayland

Here at Igalia we are happy to announce the Wayland port of WebKit. This port avoids using traditional GUI toolkits in favor of directly operating with the Wayland display protocol. Leveraging the WebKit2 multi-process architecture, the UIProcess is...

Iago Toral 17/01/2014

WebKitGTK Wayland: Initial support for WebKit2 and Accelerated Compositing

Quick Recap In my last post on the subject I explained how during the last WebKitGTK hackfest my colleague Eduardo Lima and I got a working GTK application that made use of the nested compositor design we need in WebKitGTK to get WebKit2 to work under...


Merge pull request #513 from GlebNovodranPE/master

Merge pull request #513 from GlebNovodranPE/master Replace GraphicsContext3D::DONT_CARE with GL_DONT_CARE in MediaPlayer…

Miguel Gómez25/07/2018

Move WKBundleSetSpatialNavigationEnabled() to the public header.

Move WKBundleSetSpatialNavigationEnabled() to the public header.

Žan Doberšek23/05/2018

WPE::View: don't enable WebGL unconditionally (it's already enabled b…

WPE::View: don't enable WebGL unconditionally (it's already enabled by default).

Žan Doberšek24/04/2018

Move WKPreferences{G,S}etWebGLEnabled() to WKPreferencesRef.h.

Move WKPreferences{G,S}etWebGLEnabled() to WKPreferencesRef.h.

Žan Doberšek24/04/2018

WKPreferences: move WKPreferences{S,G}etCookieEnabled() to the public…

WKPreferences: move WKPreferences{S,G}etCookieEnabled() to the public header.

Žan Doberšek11/04/2018