the Chromium logo

The Chromium Projects

Web Platform Status


Last updated: March 6, 2013

DevRel Contact: Eric Bidelman (ericbidelman), Paul Irish (paulirish)

This page captures the implementation status of HTML5 feature support in Chrome (desktop) and Chrome for Android. The current release of Chrome for Android matches m25, any exceptions to this will be indicated below.

You have a few ways to watch these features more closely:

Many of these features have their own jumpoff point on, with links to solid tutorials and resources.

The near-daily-updated Chrome Canary lands these features much sooner than the stable or beta releases. (Though it's pre-alpha, so expect bugs!)

Note: In this page there are many references to "m6" and such. This refers to the stable Chrome release of that version.

File APIs

Handle file uploads and file manipulation.

Availability: Basic File API support in m5.

Spec: w3c spec

Notes: Limited form of drag-and-drop available in Firefox 3.6

File System

Availability: started to land in m8, but only available for apps & extensions. Synchronous APIs are in m9 for web workers. [window.resolveLocalFileSystemURL()]( and [Entry.toURL()]( were added in m11. Stable release for web pages [not apps/extensions] was m13.

Spec: w3c spec

Notes: devtools support coming. Needs flag --allow-file-access-from-files for testing from file:// URLs.

Demos: layouttests

Dev Contact: Eric Uhrhane (ericu)

Drag and Drop Directories

Allows dragging and dropping entire folders using HTML5 Drag and Drop. Extends the DataTransferItem with a method to get a FileEntry/DirectoryEntry.

(var entry = DataTransferItem.webkitGetAsEntry())

Availability: M21


Dev Contact: Kinuko Yasuda (kinuko)


Get FileSystem API entries representing user selected files from an <input type="file" multiple>.

Availability: M22


Dev Contact: Kinuko Yasuda (kinuko)


Availability: basic in m8, sync api in m9 for web workers

Spec: w3c spec


Dev Contact: Eric Uhrhane (ericu)


Can read local and parse local files.

Availability: m7.

Spec: w3c spec

Demo: demo

Dev Contact: Jian Li (jianli)


Build blobs (files).

Availability: m8. As of m20, this API is deprecated. Use Blob() constructor instead (see below).

Demo: demo

Spec: w3c spec

Notes: window.createBlobURL() changed to new spec's window.createObjectURL() somewhere around m8. As of M10, the call is prefixed under window.webkitURL.createObjectURL(). Chrome 23 unprefixes window.URL.

Blob() constructor

Removes the need for BlobBuilder API. Allows you to construct Blobs directly (var blob = new Blob(["1234"], {type: 'text/plain'}))

Availability: M20

Spec: w3c spec

Blob() constructor ArrayBufferView support

Blob() constructor takes ArrayBufferView directly rather than constructing a blob with ArrayBuffer.

Availability: M21

Unprefixed Blob.slice() support

Blob.slice() is un-prefixed (from webkitSlice()) in M21.

Availability: M22

Typed Arrays

Buffers for holding binary data and working with WebGL & Audio API: ArrayBuffer, Float32Array , Int16Array, Uint8Array, etc.)

Availability: m7 for most. DataView is m9. Float64Array in m13.

Spec: Khronos

Notes: worker.postMessage(TypedArray|ArrayBuffer) landed in m13 using structured cloning. postMesage(Object|Array) (e.g. any type) landed in M23.

a[download] attribute

When used on an <a>, this attribute signifies that the resource it points to should be downloaded by the browser rather than navigating to it.

See post.

Availability: M14

Spec: whatwg

Demo: demo

Offline and XHR

App Cache

Enables web pages to work without the user being connected to the internet

Notes: Chrome's implementation is maxed at 260MB. Individual files max out at 32MB (260MB/8)

Availability: m5. Dev tools support added in m6

Dev Contact: Michael Nordman (michaeln)

XHR supports xhr.send(ArrayBuffer)

Allows for sending a binary byte array using xhr.

Availability: targeting m9

Dev Contact: Jian Li (jianli)

Spec: [w3


XHR supports xhr.send(Blob|File)

Allows for sending a Blob or File using xhr.

Availability: m7

Spec: w3 draft

Dev Contact: Eric Uhrhane (ericu)


XHR supports xhr.send(FormData)

Availability: landed m6

Demo: demo on jsfiddle

XHR supports xhr.send(ArrayBufferView)

Allows for sending a typed array directly rather than sending just its ArrayBuffer.

Availability: m22

XHR.response, XHR.responseType

Allows reading an xhr response as a blob/arraybuffer (xhr.responseType = 'arraybuffer', xhr.responseType = 'blob')

Availability: m10. m18 adds xhr.responseType = 'document' (see HTML in XMLHttpRequest) and

restricts the usage of synchronous XHRs (, false);) by throwing an error when .responseType is set.

Spec: w3 draft

Tickets: (arraybuffer works, blob does not)

Dev Contact: Michael Nordman (michaeln)


Availability: m7

Spec: w3 draft

Access the underlying network information (connection info) of the device.

Availability: target unknown

Spec: w3 draft


Notes: In Android since 2.2, but not implemented yet desktop browsers.

Dev Contact: -

Allows an application to check if the user has an active internet connection. Also can register 'online' and 'offline' event handlers.

Availability: m14




Dev Contact: adamk

Allow web applications to handle URL protocols like mailto:. Availability: m13 Tickets:

Notes: Protocol list: "mailto", "mms", "nntp", "rtsp", "webcal". Custom protocols require "web+" prefix (e.g. "web+myScheme").

There are no plans to implement registerContentHandler.

Dev Contact: koz

Directory upload

Allow specifying a directory to upload (<input type="file" multiple webkitdirectory />), which is just be an extension of existing form mime-multipart file upload.

Availability: m8. m21 landed dragging and dropping a folder onto an <input type="file" webkidirectory> element).

Demo: demo


Spec: W3C editor's draft

Protocol Spec: RFC 6455 + x-webkit-deflate-frame

Demo: demo

Tickets: WebKit protocol ticket

Planned: Implement permessage-compress extension and mux extension

Dev Contact: tyoshino

Strict Transport Security

Header to inform the browser to always request a given domain over SSL, reducing MITM attack surface area.

Availability: m4

Spec: ietf spec

Notes: details on STS on

a[ping] attribute.

Notify resource on link click.

Availability: Chrome 7.

Spec: html5 spec

Notes: webkit changeset. Can be disabled through a command line flag or in about:flags


Web SQL Database

API exposing an SQLite database

Availability: m4.

Notes: No spec progress or other implementations (outside of Webkit/Opera) expected.

Demo: demo

Dev Contact: Dumitru Daniliuc (dumi)

Database access from workers


Availability: Indeterminate status

Indexed Database API

Availability: Landed in m11. (Prefixed as webkitIndexedDB pre M24.)

Spec: Draft w3c spec Notes: formerly called WebSimpleDB.

Demo: Demo, LayoutTest IndexedDB tutorial & demo

Dev Contacts: dgrogan, jsbell, alecflett

Cross-Browser Status:

Known differences between Chrome (as of M25) and the draft specification (as of July 16, 2012):

Updates in M23 (from M22)

Updates in M22 (from M21)

Updates in M21 (from M20)

Web Storage

Availability: localStorage in m4, sessionStorage in m5

Notes: localStorage serves basic use cases. For more comprehensive storage solution, consider IndexedDB. While the spec indicates anything that structured clone algorithm can clone can be stored, all browser implementations currently allow only strings. Chrome's storage capacity is currently 2.5mb.

Tickets: Dev Contact: Jeremy Orlow (jorlow) -> Michael Nordman (michaeln)

Quota Management API

This API can be used to check how much quota an app/origin is using.

Availability: m13: FileSystem (TEMPORARY & PERSISTENT) and WebSQL (temp only). m14 : AppCache and IndexedDB were added (TEMP only)


Dev Contact: Kinuko Yasuda (kinuko)

CSS & Presentation

CSS3 3D Transforms

Availability: m12

Spec: w3 spec

Notes: Associated GPU rendering quirkiness actively being worked on in prep for beta channel release.

Demo: poster circle demo

new semantic sectioning elements

section, article, aside, nav, header, and footer elements

Availability: m5

<progress> and <meter> elements

Offer a visual display of progress.

Availability: m6

Spec: whatwg spec

Demo: demo of elements in action


Ruby annotations are short runs of text presented alongside base text, primarily used in East Asian typography as a guide for pronunciation or to include other annotations Availability: m4

Spec: whatwg html5 spec

Notes: description & demo on whatwg blog

@font-face webfonts

Availability: OTF/TTF support in m4. WOFF in m6.

Spec: w3c editor's draft

Notes: unicode-range support planned. Improved handling of text while font asset is being downloaded, also planned.


Availability: w3c linear-gradient() syntax as of m10. original webkit -gradient() syntax as of m3.

Spec: w3c image values

Notes: The legacy syntax will be retained for the foreseeable future.

Background printing

Opt-in ability to specify a background should be printed

Availability: landing in m16 with prefix: -webkit-print-background

Discussions: thread feb 2011, csswg minutes august, thread august 2011, wiki page

Scoped style sheets

Boolean attribute for the <style> element (<style scoped>). When present, its styles only apply to the parent element.

Availability: m20 (enable webkit experimental feature in about:flags)

Spec: whatwg

Demo: jsbin

CSS3 Filters

Apply (SVG-like) filter effects to arbitrary DOM elements.

Availability: m19

Spec: w3 spec


#### CSS Shaders

Apply OpenGL shaders to arbitrary DOM elements.

Availability: m24, enabled via about:flags.

Spec: [w3




CSS3 Grid Layout

Availability: work is just started behind a flag. No way to enable it.

Spec: w3c


Dev Contact: Tony Chang (tony@chromium), Ojan Vafai (ojan@chromium)

CSS3 Flexbox Model (the new one)

Note: The old box model (display: -webkit-box) and spec has been replaced by a new one (display: -webkit-flex).

For now, chrome supports both. But you should use the new one!

Availability: started landing in m18. m21 has the latest and full implementation with a bunch of properties renamed.

Spec: w3 spec




Dev Contact: Ojan Vafai (ojan)

CSS3 Regions

Magazine-like content flow into specified regions.

Availability: Partial support in m19 (enable webkit experimental feature in about:flags)

Spec: w3c


position: sticky

position: sticky is a new way to position elements and is conceptually similar to position: fixed. The difference is that a stickily positioned element behaves like position: relative within its parent, until a given offset threshold is met.

Availability: M23 (enable webkit experimental feature in about:flags)

Proposal: www-style


#### CSS Intrinsic Sizing

width: fill-available, width: min-content, width: max-content, etc.

Availability: ~M22 (vendor prefixed)

Spec: w3c


Other CSS3

box-shadow: inset keyword and spread value supported since m4, went unprefixed in m10

border-radius: went unprefixed in m4

cross-fade(): landing with prefix (-webkit-cross-fade) in m17. demo

image-resolution(): landed for m21 spec

clip-path: landed for m24. Prefixed -webkit-clip-path. spec

@viewport: spec, bug

@supports: spec, bug,

CSS viewport % lengths (vw, vh, vmin, vmax): spec, Availability: m20



Provides an API to draw 2D graphics

Availability: m1, Safari, Firefox, Opera, IE9

Notes: Accelerated 2D canvas targeting m14 for windows/linux; perhaps m15 for mac. Currently, available in about:flags.

webp format: canvas.toDataURL("image/webp") added in m17 (WebKit 535), but m18 on Mac.

In M20, canvas.getImageData(...).data returns a Uint8ClampedArray instead of a CanvasPixelArray.

Spec: W3C Last Call Working draft

WebGL (Canvas 3D)

3D rendering via the <canvas> element.

Availability: m9

Android Availability: TBD.

Spec: kronos/apple spec

Notes: Originally project developed by Mozilla as a JavaScript API to make OpenGL calls - WebGL Wiki

Dev Contact: Vangelis Kokevis (vangelis), Ken Russell (kbr)


Offload animation repainting to browser for optimized performance.

Spec: webkit draft spec

Availability: m10 , currently prefixed as window.webkitRequestAnimationFrame

Notes: As of FF4, Mozilla's implementation differs and offers lower framerates, but it will be addressed. This method should be used for WebGL, Canvas 2D, and DOM/CSS animation.

Dev Contact: jamesr

Accelerated Video: m10

WebP image format support: m9. alpha and lossless added to m22.


Video and Audio

Natively play video and audio in the browser Provides API and built-in playback controls Availability: m3. Also Safari 4, Firefox 3.5 Codecs: mp4, ogv, and webm ship with Chrome. webm shipped in m6. Dev Contact: Andrew Scherkus (scherkus)

mediaElem.webkitAudioDecodedByteCount - m11

mediaElem.webkitVideoDecodedByteCount - m11

videoElem.webkitDecodedFrameCount - m11

videoElem.webkitDroppedFrameCount - m11

Web Audio API

Availability: dev channel since m12. stable channel in m14. m24 adds the ability for live mic input (enable in about:flags). m25 updated API calls to the latest spec.

Android availability: TBD (issue 166003)

Spec: W3C Audio Incubator Group Proposal

Notes: enable via about:flags. Also, Mozilla has an alternative Audio Data API proposal. M20 included

support for oscillator nodes.

Demo: spec samples

Dev Contact: Chris Rogers (crogers)

Media Source API

Allows appending data to an <audio>/<video> element.

Availability: dev channel m23

Spec: w3c spec

Notes: enable via about:flags or run with --enable-media-source flag.


Dev Contact: Aaron Colwell (acolwell)


Real time communication in the browser. (Note that many online resources refer to 'WebRTC' but just mean getUserMedia!)

Combines the following APIs:


Spec: w3c spec


Google group:!forum/discuss-webrtc


Resolution Constraints are enabled as of M24:

Tab Capture (i.e. ability to get stream of 'screencast') currently available in Chrome Dev channel:


Screen Capture (i.e. ability to capture the contents of the screen) currently available in Chrome 26.0.1410.0:

More info:


Demos: Testing WebRTC on Chrome

Code samples: web-rtc samples on

Dev contact: Serge Lachapelle (sergel)

Track element

Add subtitles, captions, screen reader descriptions, chapters and other types of timed metadata to video and audio. Chrome currently supports the WebVTT format for track data.

Availability: m23

Specs: WHATWG, W3C, WebVTT

Notes: Rendering does not yet include CSS pseudo elements.

Demos: HTML5 Rocks article

Dev Contact: Andrew Scherkus (scherkus), Silvia Pfeiffer (silviapf)

Encrypted Media Extensions

Enables playback of encrypted streams in an <audio>/<video> elements.

Availability: m25: WebM Encryption & ISO BMFF Common Encryption (CENC)

Spec: W3C Editor's Draft: v0.1b (m22 and later); latest (object-oriented version not yet implemented)

Notes: In m25, enable via about:flags or run with --enable-encrypted-media flag. (Enabled by default in m26 and later on desktop and Chrome OS.)


Dev Contact: David Dorwin (ddorwin)

JS Web Speech API

Enables web developers to incorporate speech recognition and synthesis into their web pages.

Availability: m25

Spec: w3c


Dev Contact: gshires

Web Components

Shadow DOM

Availability: m18 exposed WebKitShadowRoot().Enable Shadow DOM in about:flags. DevTools support is in m20, behind the DevTools Experiments flag (and setting). m25 removes constructor and exposes element.webkitCreateShadowRoot() by default.

Notes: As of m13, elements internally ported to the shadow dom: <progress>, <meter>, <video>, <input type=range>, <keygen>.

Tickets: webkit shadow dom tickets

Notes: More details at What the heck is a Shadow DOM?, +Component Model

Dev Contact: dglazkov


HTML template element to allow creating fragment of inert HTML as a prototype for stamping out DOM.

Spec: w3c

Availability: targeting m26


Dev Contact: rafaelw


Method for registering (creating) custom elements in script.

Availability: bug

CSS @host at-rule

Allows styling of the element hosting shadow dom.

Spec: spec

Demo: demo

Availability: m25

CSS ::distributed() pseudo element

Allows styling of nodes distributed into an insertion point.

Spec: spec

Demo: demo

Availability: m26

Other Open Web Platform features

Desktop notifications

Availability: m5

Spec: w3 draft spec, design document

Notes: Additional functionality added in m6: in-place replacement of notifications, BiDi support, Worker support, and UI improvement.

In M22, createHTMLNotification() was removed because of spec compliance. See this post. Dev Contact: John Gregg (johnnyg)


Interactive widget to show/hide content.


Availability: m12



Predefined data/options for controls

Spec: W3C

Availability: m20. See update for mor info.


#### <dialog>

The dialog element represents a part of an application that a user

interacts with to perform a task, for example a dialog box, inspector, or window.




Availability: Behind a flag in m25. Enable "Experimental WebKit Features"

in about:flags.

Dev contact: falken

#### Device Orientation

Enables real-time events about the 3 dimensional orientation of the


Availability: m7, in Intel-based Apple portables ([

kb](, iOS 4.2+

Spec: [w3c editors


Demo: demo

#### EventSource

Also called Server-sent Events, these are push notifications from the

server received as DOM events.

Availability: m6

Demo: [html5rocks

article](, code and demos

Fullscreen API

Programmatically instruct content on the page to be presented in the browser's full screen (kiosk) mode.

Availability: m15

Spec: w3c spec

Demo: html5rocks update, demo

Dev contact: jeremya


The pushState, replaceState, and clearState methods provide applications with programmatic control over session history.

Availability: m5. history.state was implemented in m18. popstate firing after page load:

Documentation: MDN


Enables websites to get geolocation information from browsers

Availability: m5, also Firefox 3.5

Dev Contact: Andrei Popescu (andreip)

GamePad API

Gives JS access to a game controller via USB.

Availability: targeting m18

Spec: W3C Editor's draft Dev contact: scottmg

Notes: Chromium tracking issue. Enabled in about:flags

Battery Status

Allows access to see the battery level of the device's battery

Availability: unknown

Spec: w3c editor's draft


Demo: here

#### DOM MutationObservers

Provides notifications when DOM nodes are rearranged or modified.

Availability: m18, prefixed as WebKitMutationObserver; unprefixed in

current Firefox

Spec: [part of dom4


Useful library: [Mutation


Dev Contact: rafaelw

<iframe> attributes

MDN docs


The seamless attribute is used to embed and <iframe> in the calling page without scrollbars or borders (e.g. seamlessly). In m26, seamless iframes inherit styles from their embedding parent page.

Availability: m20

Spec: whatwg



Gives the content of an iframe as a src context to embed (e.g. <iframe seamless srcdoc="<b>Hello World</b>"></iframe>).

Note: If both src and srcdoc are set, the latter takes precedence.

Availability: m20

Spec: whatwg


Method of running external site pages with reduced privileges (i.e. no JavaScript) in iframes (<iframe sandbox="allow-same-origin allow-forms" src="..."></iframe>)

Availability: m19

Spec: whatwg

#### matchMedia()

API for testing if a given media query will apply.

Availability: m9

Spec: [w3c cssom


Notes: webkit changeset

Pointer Lock (TAPIFKA Mouse Lock)

Gives access to raw mouse movement, locks the target of mouse events to a single element, eliminates limits of how far mouse movement can go in a single direction, and removes the cursor from view. Obvious use cases are for first person or real time strategy games. Availability: m18 behind flag. On be default in m22 with a refined API similar to requestFullScreen.

Spec: W3C Editor's draft

Documentation: HTML5 Rocks

Notes: Chromium tracking issue

Dev contact: scheib

Note, late breaking changes:

Pointer lock can only work within one document. If you lock in one iframe, you can not have another iframe try to lock and transfer the target... it will error instead. The first iframe has to unlock, then the second iframe can lock.

Also, iframes work by default, but sandboxed iframes block pointer lock. Landed recently into WebKit the ability to use <iframe sandbox="allow-pointer-lock">, but that will not percolate into Chrome until 23.

Page Visibility

Provides an API to ask whether the current tab is visibile or not. If you, you might want to throttle back action or set an idle state.

Availability: m13, prefixed as document.webkitHidden

Notes: Relatedly, setTimeout/Interval are clamped to 1000ms when in a background tab as of m11. Firefox 5 has the same behavior.

Spec: w3c draft spec


Dev Contact: shishir


Provides a threading API

Availability: Chrome 3, Safari 4, Firefox 3.5. Shared workers available in m4.

Android Availability: Dedicated workers in m16 (0.16). No shared workers, yet.


Notes: Pre-M15, there was a limit to the number of workers that each page can start, as well as the number of workers that can be running globally across all pages. This was because a new process was started for each worker. As of M15, workers are started in-process, meaning less memory footprint and faster messaging. Transferrable objects landed in m17 (see next)

Dev Contact: Dmitry Lomov (dslomov), Drew Wilson (atwilson)

Transferable Object messaging passing

With transferable objects/data, ownership is transferred from one context to another. It is zero-copy, which vastly improves the performance of sending data to a Worker or another window.

Availability: m17

Spec: w3c spec

Notes: landed as prefixed. Unprefixed in M24.

worker.postMessage(arrayBuffer, [arrayBuffer])
window.postMessage(arrayBuffer, targetOrigin, [arrayBuffer])

See: html5rocks update, demo

Specify and onload or onerror event for a stylesheet to load.

Availability: m19?

Spec: W3C

Touch Events

Android Availability: m16 (0.16)


Availability: m24

Spec: w3c spec

JS Internationalization API

Allows collation (string comparison), number formatting, and date and time formatting for JavaScript applications. More info here.

Availability: m24

Spec: here

Resource Timing API

Availability: m25

Spec: w3c

User Timing API

Availability: m25

Spec: w3c


Way to observe changes to JS objects.

Availability: m25 (behind Enable Experimental JS Features in about:flags)



Availability: See HTML5 Forms Status for all details. (Updated as recently as Nov 28th, 2012).

Includes details in input types (like date and color), input attributes, datalist and more.


Provides hints to the autofill implementation to allow Chrome to better provide suggested values to the user.

Availability: The x-autocompletetype attribute was implemented in Chrome 15. It used token values that are documented here, but later revised. Chrome 24 features an implementation of the autocomplete attribute that matches the HTML spec.


Element.matchesSelector - m4

Element.outerHTML - m1

Element.textContent (faster than innerHTML for plain text) - m1

Element.classList (classList.add/remove methods) - m8

Element.dataset (Provides easy access to data-* attribute values) - m8

window.onerror event - m10

crypto.getRandomValues() - m11

selectionchange event - m11

Chrome Extensions

View the changelog of features landing in Chrome extensions.

More resources for going deep with HTML5: