Browser compatibility

Alternate rendition of Fyrd's when can I use... page with Wikimedia 2018-04-08 browser usage statistics.

featureAnd.ChromeiOS SafariSafariIEFirefox%
62644960636465669101111.3101111.171116175257585960
featureAnd.ChromeiOS SafariSafariIEFirefox%
webkitmsmoz
css3CSS3 Text-overflow

Append ellipsis when text overflows its containing element.

Resources: jQuery polyfill for Firefox, MDN Web Docs - text-overflow, has.js test, WebPlatform Docs.
cr2.1‒644‒683.2‒11.33.1‒TP6‒187‒6193
html5contenteditable attribute (basic support)

Method of making any HTML element editable.

This support only refers to very basic editing capability, implementations vary significantly on how certain elements can be edited.

Resources: Demo page, WHATWG blog post, Blog post on usage problems, WebPlatform Docs, MDN Web Docs - contentEditable attribute.
ls3‒644‒685.0‒11.33.1‒TP5.5‒183.5‒6193
css2CSS min/max-width/height

Method of setting a minimum or maximum width or height to an element.

Browser-specific notes:
#1: IE7 does not support inherit as a value on any of these properties.
#2: IE8 has some bugs with max-width/height combined with overflow: auto/scroll.

Resources: JS library with support, WebPlatform Docs, CSS Basics post.
rec2.1‒644‒683.2‒11.33.1‒TP79‒182‒6192
css2CSS 2.1 selectors

Basic CSS selectors including: * (universal selector), > (child selector), :first-child, :link, :visited, :active, :hover, :focus, :lang(), + (adjacent sibling selector), [attr], [attr="val"], [attr~="val"], [attr|="bar"], .foo (class selector), #foo (id selector).

Support for :visited styling varies across browsers due to security concerns.

Resources: Detailed support information, Examples of advanced selectors, Selectivizr: Polyfill for IE6-8, WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.1‒TP7‒182‒6192
pngPNG alpha transparency

Semi-transparent areas in PNG files.

IE6 does support full transparency in 8-bit PNGs, which can sometimes be an alternative to 24-bit PNGs.

Resources: Wikipedia, Workaround for IE6.
rec2.1‒644‒683.2‒11.33.1‒TP7‒182‒6192
cssbackground-position-x & background-position-y

CSS longhand properties to define x or y positions separately.

A workaround for the lack of support in Firefox 31 - Firefox 48 is to use CSS variables. See this Stack Overflow answer for an example.

Resources: MSDN article, Firefox implementation bug, Blog post on background-position-x & y properties, MDN Web Docs - background-position-x, MDN Web Docs - background-position-y.
unoff2.1‒644‒683.2‒11.33.1‒TP5.5‒1849‒6192
domdocument.elementFromPoint()

Given coordinates for a point relative to the viewport, returns the element that a click event would be dispatched at if the user were to click the point (in other words, the element that hit-testing would find).

Resources: MDN Web Docs - elementFromPoint.
wd2.3‒6415‒684.0‒11.35‒TP6‒183‒6192
cssCSS position:fixed

Method of keeping an element in a fixed location regardless of scroll position.

Browser-specific notes:
#1: Partial support in older iOS Safari refers to buggy behavior.
#2: Only works in Android 2.1 thru 2.3 by using the following meta tag: <meta name="viewport" content="width=device-width, user-scalable=no">.
#3: Android 4.0-4.3 ignore transforms and margin:auto on position:fixed elements.
#4: in Safari 9.1, having a position:fixed-element inside an animated element, may cause the position:fixed-element to not appear.

Resources: Workaround for IE6, Article on mobile support, WebPlatform Docs.
rec3‒644‒688‒11.33.1‒TP7‒182‒6192
domNode.innerText

A property representing the text within a DOM element and its descendants. As a getter, it approximates the text the user would get if they highlighted the contents of the element with the cursor and then copied to the clipboard.

This test only checks that the property exists and works correctly in a very simple case.
This blog post by kangax explains the history of this property, gives much more detailed cross-browser compatibility information, and gives a detailed strawman specification for the property.
Node.innerText is similar to, but has some important differences from, the standard Node.textContent property.

Resources: MDN Web Docs - innerText, WHATWG Compatibility Standard issue #5: spec innerText, Rangy, a JS range and selection library which contains an innerText implementation, Standardizing innerText – Web Incubator Community Group (WICG) discussion, MSDN documentation.
ls2.3‒644‒684.0‒11.33.2‒TP6‒1845‒6192
domElement.insertAdjacentElement() & Element.insertAdjacentText()

Methods for inserting an element or text before or after a given element, or appending or prepending an element or text to a given element's list of children.

Resources: WHATWG DOM Specification for Element.insertAdjacentText(), MDN Web Docs - Element.insertAdjacentElement(), MDN Web Docs - Element.insertAdjacentText(), JS Bin testcase.
ls2.3‒644‒683.2‒11.33.1‒TP6‒1848‒6192
domreadonly attribute of input and textarea elements

Makes the form control non-editable. Unlike the disabled attribute, readonly form controls are still included in form submissions and the user can still select (but not edit) their value text.

Browser-specific notes:
#1: Readonly inputs of type datetime-local, date, month, and week can still be edited by pressing the Up or Down arrow keys on the keyboard while the input is focused.
#2: Text cannot be selected directly, but is possible by first selecting any text around the field.

Resources: WHATWG HTML specification for the readonly attribute of the `<textarea>` element, MDN Web Docs - readonly attribute.
ls2.3‒6426‒687.0‒11.35.1‒TP6‒184‒6192
domfocusin & focusout events

The focusin and focusout events fire just before the element gains or loses focus, and they bubble. By contrast, the focus and blur events fire after the focus has shifted, and don't bubble.

In browsers that don't support these events, one alternative is to use a capture phase event listener for the focus and/or blur events.

Resources: MDN Web Docs - focusin, MDN Web Docs - focusout, Mozilla Bug 687787 - Add support for DOM3 focusin/focusout.
wd4‒6415‒685.0‒11.35.1‒TP6‒1852‒6192
css3CSS3 word-break

Property to prevent or allow words to be broken over multiple lines between letters.

Partial support refers to supporting the break-all value, but not the keep-all value.

Chrome, Safari and other WebKit/Blink browsers also support the unofficial break-word value which is treated like word-wrap: break-word.

Resources: MDN Web Docs - CSS word-break, WebPlatform Docs.
wd62‒6444‒689.0‒11.39‒TP5.5‒1815‒6191
css2CSS inline-block

Method of displaying an element as a block while flowing it with text.

Browser-specific notes:
#1: Only supported in IE6 and IE7 on elements with a display of "inline" by default. Alternative properties are available to provide complete cross-browser support.

Resources: Blog post w/info, Info on cross browser support, WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.1‒TP68‒183‒6191
css3CSS first-line pseudo-element

Allows styling specifically for the first line of text using the ::first-line pseudo-element. Note that only a limited set of properties can be applied.

Browser-specific notes:
#1: IE8 only supports the single-colon CSS 2.1 syntax (i.e. :first-line). It does not support the double-colon CSS3 syntax (i.e. ::first-line).

Resources: MDN Web Docs - ::first-line, CSS tricks article.
Parent feature: CSS3 selectors.
rec2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6191
css3CSS3 Opacity

Method of setting the transparency level of an element.

Transparency for elements in IE8 and older can be achieved using the proprietary "filter" property and does not work well with PNG images using alpha transparency.

Resources: WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6191
css3CSS3 selectors

Advanced element selection using selectors including: [foo^="bar"], [foo$="bar"], [foo*="bar"], :root, :nth-child(),  :nth-last-child(), nth-of-type, nth-last-of-type(), :last-child, :first-of-type, :last-of-type, :only-child, :only-of-type, :empty, :target, :enabled, :disabled, :checked, :not(), ~ (general sibling).

Browser-specific notes:
#1: IE7 and IE8 support only these CSS3 selectors: General siblings (element1~element2) and Attribute selectors [attr^=val], [attr$=val], and [attr*=val].

Resources: Detailed support information, Automated CSS3 selector test, Selectivizr: Polyfill for IE6-8, WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.2‒TP79‒183.5‒6191
jsElement.getBoundingClientRect()

Method to get the size and position of an element's bounding box, relative to the viewport.

Browser-specific notes:
#1: The returned object lacks width and height properties.
#2: Returns incorrect values for elements which have had CSS transforms applied to them.
#3: The returned object cannot have new properties added to it; it's not extensible.
#4: Existing properties of the returned object are immutable.

Resources: MDN Web Docs - getBoundingClientRect, Microsoft Developer Network.
wd2.3‒644‒684.0‒11.34‒TP5.59‒1812‒6191
css3@font-face Web fonts

Method of displaying fonts downloaded from websites.

Not supported by IE Mobile 9 and below.

Browser-specific notes:
#1: Partial support refers to only supporting EOT fonts.
#2: Partial support refers to only supporting SVG fonts.

Resources: News and information site, Wikipedia, WebPlatform Docs.
cr4‒644‒684.2‒11.33.2‒TP5.59‒183.5‒6191
securityServer Name Indication

An extension to the TLS computer networking protocol by which a client indicates which hostname it is attempting to connect to at the start of the handshaking process.

Browser-specific notes:
#1: Only supported on Windows Vista or above (not Windows XP).

Resources: Wikipedia.
other3‒646‒684.0‒11.33.1‒TP79‒182‒6191
css::first-letter CSS pseudo-element selector

CSS pseudo-element that allows styling only the first "letter" of text within an element. Useful for implementing initial caps or drop caps styling.

The spec says that both letters of digraphs which are always capitalized together (such as "IJ" in Dutch) should be matched by ::first-letter, but no browser has ever implemented this.

Browser-specific notes:
#1: Excludes punctuation immediately after the first letter from the match. (The spec says it should be included in the match.).
#2: Acts like the first character is always a letter even when it's not. For example, given "!,X;", "!," is matched instead of the entire string.
#3: Only recognizes the deprecated :first-letter pseudo-class, not the ::first-letter pseudo-element.
#4: Only matches the very first character. The spec says that surrounding punctuation should also match.

Resources: MDN Web Docs - :first-letter.
rec3‒649‒685.0‒11.35.1‒TP69‒183.5‒6191
jsElement.insertAdjacentHTML()

Inserts a string of HTML into a specified position in the DOM relative to the given element.

Browser-specific notes:
#1: Throws an "Invalid target element for this operation." error when called on a table, tbody, thead, or tr element..

Resources: MDN Web Docs - insertAdjacentHTML, Polyfill.
cr2.3‒644‒684.0‒11.34‒TP610‒188‒6191
domdefer attribute for external scripts

The boolean defer attribute on script elements allows the external JavaScript file to run when the DOM is loaded, without delaying page load first.

Browser-specific notes:
#1: Partial support in older IE refers to a buggy implementation (see issue).
#2: Deferred scripts may run after DOMContentLoaded - https://bugzilla.mozilla.org/show_bug.cgi?id=688580.

Resources: MDN Web Docs - Script Attributes, has.js test, WebPlatform Docs, async vs defer attributes.
ls3‒648‒685.0‒11.35‒TP5.510‒1831‒6191
html5dataset & data-* attributes

Method of applying and accessing custom data to elements.

Partial support refers to being able to use data-* attributes and access them using getAttribute.

"Supported" refers to accessing the values using the dataset property. Current spec only refers to support on HTML elements, only some browsers also have support for SVG/MathML elements.

Browser-specific notes:
#1: While the HTML spec doesn't require it, these browsers also support dataset and data-* attributes on SVG elements, in compliance with current plans for SVG2.

Resources: HTML5 Doctor article, Demo using dataset, has.js test, WebPlatform Docs, MDN Web Docs - dataset, MDN Guide - Using data-* attributes, MS Edge UserVoice #15885483: Support dataset and data attributes on SVG elements.
ls3‒644555‒685.0‒11.35.1‒TP5.511‒1851‒6191
dommaxlength attribute for input and textarea elements

Declares an upper bound on the number of characters the user can input. Normally the UI ignores attempts by the user to type in additional characters beyond this limit.

Browser-specific notes:
#1: <textarea>'s' UI does not prevent the user from typing additional characters beyond the maxlength limit.
#2: Does not support the HTMLTextAreaElement.maxLength DOM property.
#3: Does not support ValidityState.tooLong. In some cases, this is because .validity is not supported in the first place.
#4: Does not support ValidityState.tooLong correctly in the (unlikely) case of the value being initially set too long, then changed by the user to a still incorrect state. See Firefox bug and MS Edge bug.
#5: <input>'s UI does not prevent the user from typing additional characters beyond the maxlength limit between two existing characters of the string.
#6: Allows text beyond maxlength to be entered at first, but removes all characters past the maxlength when focus is lost.

Resources: MDN Web Docs - attribute maxlength.
Parent feature: Form validation.
ls62‒644‒684.0‒11.35.1‒TP61012‒1851‒6190
cssletter-spacing CSS property

Controls spacing between characters of text (i.e. "tracking" in typographical terms). Not to be confused with kerning.

Browser-specific notes:
#1: Truncates or rounds fractional portions of values.

Resources: MDN Web Docs - CSS letter-spacing.
rec4.4‒6430‒684.0‒11.36.1‒TP69‒182‒6190
css3CSS3 Box-sizing

Method of specifying whether or not an element's borders and padding should be included in size units.

Firefox versions before 57 also supported the padding-box value for box-sizing, though this value was been removed from the specification and later versions of the browser.

Resources: MDN Web Docs - CSS box-sizing, Blog post, Polyfill for IE, CSS Tricks, WebPlatform Docs.
cr4‒6410‒685.0‒11.35.1‒TP5.58‒1829‒6190
jsWeb Storage - name/value pairs

Method of storing data locally like cookies, but for larger amounts of data (sessionStorage and localStorage, used to fall under HTML5).

Resources: MDN Web Docs - Web Storage, Support library, Simple demo, has.js test, WebPlatform Docs.
ls2.1‒644‒683.2‒11.34‒TP68‒183.5‒6190
domDOM Parsing and Serialization

Various DOM parsing and serializing functions, specifically DOMParser, XMLSerializer, innerHTML, outerHTML and insertAdjacentHTML.

Browser-specific notes:
#1: Partial support refers to lacking support for parseFromString on the DOMParser.
#2: Partial support refers to supporting only innerHTML.
#3: Partial support refers to supporting only innerHTML and insertAdjacentHTML.

Resources: MDN Web Docs - XMLSerializer, Comparing Document Position by John Resig.
cr4.4‒6430‒688‒11.37.1‒TP5.510‒1812‒6190
domDocument Object Model Range

A contiguous range of content in a Document, DocumentFragment or Attr.

See MDN for feature support details.

Resources: MDN Web Docs - Range, QuirksMode, "Rangy" Range library with old IE support.
ls2.1‒644‒683.2‒11.33.1‒TP69‒182‒6190
domquerySelector/querySelectorAll

Method of accessing DOM elements using CSS selectors.

Browser-specific notes:
#1: Partial support in IE8 is due to being limited to CSS 2.1 selectors and a small subset of CSS 3 selectors (see notes there). Additionally, it will have trouble with selectors including unrecognized tags (for example HTML5 ones).

Resources: MDN Web Docs - querySelector, MDN Web Docs - querySelectorAll, Blog post, WebPlatform Docs.
ls2.1‒644‒683.2‒11.33.1‒TP69‒183.5‒6190
domgetElementsByClassName

Method of accessing DOM elements by class name.

Resources: Test page, WebPlatform Docs.
ls2.1‒644‒683.2‒11.33.1‒TP69‒183‒6190
html5Hashchange event

Event triggered in JavaScript when the URL's hash has changed (for example: page.html#foo to page.html#bar).

Resources: MDN Web Docs - onhashchange, MSDN article, Simple demo, Polyfill, WebPlatform Docs.
ls2.2‒645‒684.0‒11.35‒TP5.58‒183.6‒6190
css3CSS3 Media Queries

Method of applying styles based on media information. Includes things like page and device dimensions.

Browser-specific notes:
#1: Does not support nested media queries.
#2: Partial support refers to only acknowledging different media rules on page reload.

Resources: IE demo page with information, Media Queries tutorial, Polyfill for IE, WebPlatform Docs.
rec4.4‒6426‒687.0‒11.36.1‒TP5.5912‒183.5‒6190
canvasText API for Canvas

Method of displaying text on Canvas elements.

Resources: Examples by Mozilla, Support library, has.js test, WebPlatform Docs.
Parent feature: Canvas (basic support).
ls2.1‒644‒683.2‒11.34‒TP69‒183.5‒6190
canvasCanvas (basic support)

Method of generating fast, dynamic graphics using JavaScript.

For screen readers, IE, Chrome & Firefox support the accessible canvas element sub-DOM.
Firefox & Chrome also support the drawfocus ring.

Browser-specific notes:
#1: Does not support toDataURL().
#2: Opera Mini supports the canvas element, but is unable to play animations or run other more complex applications.

Resources: Tutorial by Mozilla, Animation kit, Another tutorial, Implementation for Internet Explorer, has.js test, Canvas Tutorial & Cheat Sheet, MDN Web Docs - Canvas API.
ls3‒644‒683.2‒11.34‒TP69‒183.6‒6190
jsGeolocation

Method of informing a website of the user's geographical location.

Browser-specific notes:
#1: Only works on secure (https) servers.

Resources: Simple demo, has.js test, WebPlatform Docs.
rec62‒64550‒683.210.0‒11.31010.1‒TP69‒183.555‒6190
css3CSS3 2D Transforms

Method of transforming an element including rotating, scaling, etc. Includes support for transform as well as transform-origin properties.

The scale transform can be emulated in IE < 9 using Microsoft's "zoom" extension, others are (not easily) possible using the MS Matrix filter.

Browser-specific notes:
#1: Does not support CSS transforms on SVG elements (transform attribute can be used instead).

Resources: Live editor, MDN Web Docs - CSS transform, Workaround script for IE, Converter for IE, has.js test, WebPlatform Docs, IE platform status (SVG).
wd62‒6436‒689.0‒11.39‒TP610‒1816‒6190
html5Inline SVG in HTML5

Method of using SVG tags directly in HTML documents. Requires HTML5 parser.

Browser-specific notes:
#1: Does not support CSS transforms on SVG elements (transform attribute can be used instead).

Resources: Mozilla Hacks blog post, Test suite.
ls4.4‒647‒689.0‒11.39‒TP69‒184‒6190
css2CSS Counters

Method of controlling number values in generated content, using the counter-reset and counter-increment properties.

Resources: Tutorial and information, MDN Web Docs - CSS Counters, WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.1‒TP5.58‒182‒6190
css2CSS Table display

Method of displaying elements as tables, rows, and cells. Includes support for all display: table-* properties as well as display: inline-table.

Browser-specific notes:
#1: Firefox 2 does not support inline-table.

Resources: Blog post on usage.
rec2.1‒644‒683.2‒11.33.1‒TP5.58‒183‒6190
css2CSS Generated content for pseudo-elements

Method of displaying text or images before or after the given element's contents using the ::before and ::after pseudo-elements. All browsers with support also support the attr() notation in the content property.

For content to appear in pseudo-elements, the content property must be set (but may be an empty string).

Browser-specific notes:
#1: IE8 only supports the single-colon CSS 2.1 syntax (i.e. :pseudo-class). It does not support the double-colon CSS3 syntax (i.e. ::pseudo-element).

Resources: Guide on usage, Dev.Opera article, WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6190
jsJSON parsing

Method of converting JavaScript objects to JSON strings and JSON back to objects using JSON.stringify() and JSON.parse().

Browser-specific notes:
#1: Requires document to be in IE8+ standards mode to work in IE8.

Resources: MDN Web Docs - Using JSON, JSON in JS (includes script w/support), has.js test, WebPlatform Docs.
Parent feature: ECMAScript 5.
other2.1‒644‒684.0‒11.34‒TP5.59‒183.5‒6190
html5Offline web applications

Now deprecated method of defining web page files to be cached using a cache manifest file, allowing them to work offline on subsequent visits to the page.

This technology is being deprecated in favor of Service Workers.

Resources: Sitepoint tutorial, Dive Into HTML5 article, Mozilla Hacks article/demo, WebPlatform Docs.
unoff2.1‒644‒683.2‒11.34‒TP610‒183.5‒6190
svgSVG (basic support)

Method of displaying basic Vector Graphics features using the embed or object elements. Refers to the SVG 1.1 spec.

Browser-specific notes:
#1: Partial support in Android 3 & 4 refers to not supporting masking.
#2: IE9-11 desktop & mobile don't properly scale SVG files.  Adding height, width, viewBox, and CSS rules seem to be the best workaround.

Resources: Wikipedia, A List Apart article, SVG showcase site, SVG Web: Flash-based polyfill, Web-based SVG editor, has.js test.
rec4.4‒644‒683.2‒11.33.2‒TP69‒183‒6190
domEventTarget.addEventListener()

The modern standard API for adding DOM event handlers. Introduced in the DOM Level 2 Events spec. Also implies support for the capture phase of DOM event dispatch, as well as the stopPropagation() and preventDefault() event methods.

Browser-specific notes:
#1: IE<=8 instead only supports the proprietary .attachEvent() method. It also does not support the capture phase of DOM event dispatch; it only supports event bubbling.
#2: The useCapture parameter is non-optional and must be provided. Future versions made it optional, with a default value of false.

Resources: MDN Web Docs - addEventListener, Financial Times IE8 polyfill, WebReflection ie8 polyfill.
ls2.1‒644‒683.2‒11.33.1‒TP5.59‒187‒6189
domnaturalWidth & naturalHeight image properties

Properties defining the intrinsic width and height of the image, rather than the displayed width & height.

Resources: Blog post on support in IE, gist on getting natural width & height in older IE.
ls2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6189
domDOMContentLoaded

JavaScript event that fires when the DOM is loaded, but before all page assets are loaded (CSS, images, etc.).

Resources: MDN Web Docs - DOMContentLoaded.
ls2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6189
otherXHTML served as application/xhtml+xml

A strict form of HTML, and allows embedding of other XML languages.

The XHTML syntax is very close to HTML, and thus is almost always (incorrectly) served as text/html on the web.

Resources: Wikipedia, Information on XHTML5, WebPlatform Docs.
ls2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6189
css3CSS3 Colors

Method of describing colors using Hue, Saturation and Lightness (hsl()) rather than just RGB, as well as allowing alpha-transparency with rgba() and hsla().

Resources: Dev.Opera article, WebPlatform Docs.
rec2.1‒644‒683.2‒11.33.1‒TP5.59‒183‒6189
cssCSS currentColor value

A CSS value that will apply the existing color value to other properties like background-color, etc.

Resources: MDN Web Docs - CSS currentColor, CSS Tricks article.
rec2.1‒644‒684.0‒11.34‒TP5.59‒182‒6189
cssCSS namespaces

Using the @namespace at-rule, elements of other namespaces (e.g. SVG) can be targeted using the pipe (|) selector.

Resources: MDN Web Docs - CSS @namespace.
rec2.1‒644‒684.2‒11.34‒TP5.59‒182‒6189
html5Selection controls for input & textarea

Controls for setting and getting text selection via setSelectionRange() and the selectionStart & selectionEnd properties.

Resources: MDN artcile on setSelectionRange.
ls2.1‒644‒684.0‒11.34‒TP5.59‒182‒6189
css3CSS3 Border-radius (rounded corners)

Method of making the border corners round. Covers support for the shorthand border-radius as well as the long-hand properties (e.g. border-top-left-radius).

Browser-specific notes:
#1: Safari 6.1 and earlier did not apply border-radius correctly to image borders: https://stackoverflow.com/q/17202128.
#2: Dotted and dashed rounded border corners are rendered as solid in Firefox. see bug.

Resources: Border-radius CSS Generator, Detailed compliance table, Polyfill which includes border-radius, WebPlatform Docs, MDN Web Docs - CSS border-radius.
cr2.2‒645‒684.0‒11.35‒TP5.59‒1850‒6189
css3CSS3 Multiple backgrounds

Method of using multiple images as a background.

Resources: Demo & information page, WebPlatform Docs.
cr2.1‒644‒683.2‒11.33.1‒TP5.59‒183.6‒6189
domNode.textContent

DOM Node property representing the text content of a node and its descendants.

Node.textContent is somewhat similar to, but has important differences from, Node.innerText.

Resources: MDN Web Docs - Node.textContent.
ls2.3‒644‒684.0‒11.33.2‒TP5.59‒182‒6189
domEventTarget.dispatchEvent

Method to programmatically trigger a DOM event.

Browser-specific notes:
#1: Supports Microsoft's proprietary EventTarget.fireEvent() method.

Resources: MDN Web Docs - dispatchEvent, Financial Times IE8 polyfill, WebReflection ie8 polyfill.
ls2.3‒644‒684.0‒11.33.2‒TP611‒182‒6189
css3getComputedStyle

API to get the current computed CSS styles applied to an element. This may be the current value applied by an animation or as set by a stylesheet.

Browser-specific notes:
#1: Partial support refers to requiring the second parameter to be included.
#2: Partial support refers to not supporting getComputedStyle on pseudo-elements.

Resources: MDN Web Docs - getComputedStyle, Demo, Polyfill for IE, WebPlatform Docs.
rec4‒6411‒685.0‒11.35‒TP5.59‒184‒6189
css3CSS3 Box-shadow

Method of displaying an inner or outer shadow effect to elements.

Can be partially emulated in older IE versions using the non-standard "shadow" filter.

Browser-specific notes:
#1: Partial support in Safari, iOS Safari and Android Browser refers to missing "inset", blur radius value, and multiple shadow support.

Resources: MDN Web Docs - box-shadow, Live editor, Demo of various effects, WebPlatform Docs.
cr4‒6410‒685.0‒11.35.1‒TP5.59‒184‒6189
html5Video element

Method of playing videos on webpages (without requiring a plug-in). Includes support for the following media properties: currentSrc, currentTime, paused, playbackRate, buffered, duration, played, seekable, ended, autoplay, loop, controls, volume & muted.

Different browsers have support for different video formats, see sub-features for details.

Browser-specific notes:
#1: The Android browser (before 2.3) requires specific handling to run the video element.
#2: Old Firefox versions were missing support for some properties: loop was added in v11, played in v15, playbackRate in v20.
#3: Ignores the autoplay attribute by default, though autoplay behavior can be enabled by users.

Resources: Detailed article on video/audio elements, WebM format information, Video for Everybody, Video on the Web - includes info on Android support, has.js test, WebPlatform Docs.
ls2.3‒644‒683.2‒10.211.0‒11.3411‒TP5.59‒1820‒6189
html5Audio element

Method of playing sound on webpages (without requiring a plug-in). Includes support for the following media properties: currentSrc, currentTime, paused, playbackRate, buffered, duration, played, seekable, ended, autoplay, loop, controls, volume & muted.

Browser-specific notes:
#1: Old Firefox versions were missing support for some properties: loop was added in v11, played in v15, playbackRate in v20.

Resources: HTML5 Doctor article, Detailed article on video/audio elements, Demos of audio player that uses the audio element, Detailed article on support, File format test page, The State of HTML5 Audio, has.js test, WebPlatform Docs.
ls2.3‒644‒684.0‒11.34‒TP5.59‒1820‒6189
otherMP3 audio format

Popular lossy audio compression format.

Support refers to this format's use in the audio element, not other conditions.

Browser-specific notes:
#1: Partial support in older Firefox refers to being limited to certain operating systems.

Resources: Wikipedia.
Parent feature: Audio element.
other2.3‒644‒684.0‒11.34‒TP5.59‒1822‒6189
jsOnline/offline status

Events to indicate when the user's connected (online and offline events) and the navigator.onLine property to see current status.

"online" does not always mean connection to the internet, it can also just mean connection to some network.

Early versions of Chrome and Safari always reported "true" for navigator.onLine.

Browser-specific notes:
#0: Safari 7.0 supports only the event listener on window, and not on document.body.
#1: Seems to support navigator.onLine but not online/offline events.
#2: IE8 only supports the online/offline events on document.body, rather than window.
#3: Desktop Firefox responds to the status of its "Work Offline" mode. If not in that mode, navigator.onLine is always true, regardless of the actual network connectivity status. See bug for details.

Resources: MDN Web Docs - NavigatorOnLine.onLine.
ls2.3‒6414‒684.2‒11.35‒TP5.59‒183.5‒6189
domdocument.head

Convenience property for accessing the <head> element.

Resources: MDN Web Docs - head.
ls2.3‒644‒684.0‒11.35.1‒TP5.59‒184‒6189
jsBase64 encoding and decoding

Utility functions for of encoding and decoding strings to and from base 64: window.atob() and window.btoa().

Resources: MDN Web Docs - btoa(), MDN Web Docs - atob(), Polyfill.
ls2.1‒644‒683.2‒11.33.1‒TP5.510‒182‒6189
jsBasic console logging functions

Method of outputting data to the browser's console, intended for development purposes.

The basic functions that this information refers to include console.log, console.info, console.warn, console.error.

Browser-specific notes:
#1: Only supports console functions when developer tools are open, otherwise the console object is undefined and any calls will throw errors.
#2: Allows console functions to be used without throwing errors, but does not appear to output the data anywhere.
#3: Log output on iOS 6+ Safari can only be seen by connecting to a Mac and using the Safari debugger.
#4: Log output on older Android browsers can be retrieved via Android's logcat command or using Chrome Developer Tools in Android 4.4+/Chrome for Android see details.
#5: Log output on Firefox for Android can be accessed using WebIDE.
#6: See this article for details on how to see console logging in Opera Mini.

Resources: MDN Web Docs - Console, Chrome console reference, Safari console reference, Edge/Internet Explorer console reference.
ls2.1‒644‒686.0‒11.33.1‒TP5.510‒184‒6189
css3rem (root em) units

Type of unit similar to em, but relative only to the root element, not any parent element. Thus compounding does not occur as it does with em units.

Browser-specific notes:
#1: IE 9 & IE 10 do not support rem units when used in the font shorthand property (the entire declaration is ignored) or when used on pseudo elements.
#2: iOS Safari 5.0-5.1 support rem but not in combination with media queries.

Resources: Article on usage, REM Polyfill.
cr2.1‒644‒684.0‒11.35‒TP5.511‒183.6‒6189
jslocaleCompare()

The localeCompare() method returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order.

Browser-specific notes:
#1: Only supports basic support without locale & options parameters.

Resources: MDN article.
other4.4‒6424‒683.210.0‒11.310‒TP611‒1829‒6189
jsWeb Workers

Method of running scripts in the background, isolated from the web page.

Resources: MDN Web Docs - Using Web Workers, Web Worker demo, Polyfill for IE (single threaded), Tutorial.
ls2.1‒644‒685.0‒11.34‒TP610‒183.5‒6189
css3CSS3 Text-shadow

Method of applying one or more shadow or blur effects to text.

Opera Mini ignores the blur-radius set, so no blur effect is visible. Text-shadow behavior can be somewhat emulated in older IE versions using the non-standard "dropshadow" or "glow" filters.

Browser-specific notes:
#1: IE 10+ supports a fourth length value for the shadow's "spread". This is not (yet) part of the specification.
#2: Partial support in Safari 3.* refers to not supporting multiple shadows.

Resources: Mozilla hacks article, Live editor, WebPlatform Docs.
cr2.1‒644‒683.2‒11.34‒TP5.510‒183.5‒6189
css3SVG in CSS backgrounds

Method of using SVG images as CSS backgrounds.

Browser-specific notes:
#1: Partial support in iOS Safari and older Safari versions refers to failing to support tiling or the background-position property.
#2: Partial support in older Firefox and Opera Mini/Mobile refers to SVG images being blurry when scaled.
#3: Partial support in Edge 15 and older refers to a lack of support for SVG data URIs. see bug.

Resources: Tutorial for advanced effects.
cr3‒645‒684.2‒11.35‒TP5.59‒1824‒6189
domKeyboardEvent.charCode

A legacy KeyboardEvent property that gives the Unicode codepoint number of a character key pressed during a keypress event.

This property is legacy and deprecated, but its replacement(s) are not yet widely supported.

Browser-specific notes:
#1: Does not appear to support the keypress event at all.

Resources: MDN Web Docs - charCode.
unoff2.3‒644‒685.0‒11.34‒TP5.59‒183‒6189
css3CSS3 Background-image options

New properties to affect background images, including background-clip, background-origin and background-size.

Firefox, Chrome and Safari support the unofficial -webkit-background-clip: text (only with prefix).

Browser-specific notes:
#1: Partial support in Opera Mini refers to not supporting background sizing or background attachments. However Opera Mini 7.5 supports background sizing (including cover and contain values).
#2: Partial support in Safari 6 refers to not supporting background sizing offset from edges syntax.
#3: Does not support background-size values in the background shorthand.

Resources: Detailed compatibility tables and demos, Polyfill for IE7-8, MDN Web Docs - background-image.
cr4.4‒6415‒687.0‒11.37‒TP5.59‒184‒6189
otherMPEG-4/H.264 video format

Commonly used video compression format.

Firefox supports H.264 on Windows 7 and later since version 21. Firefox supports H.264 on Linux since version 26 if the appropriate gstreamer plug-ins are installed.

Partial support for older Firefox versions refers to the lack of support in OS X & some non-Android Linux platforms.

Browser-specific notes:
#1: The Android 2.3 browser requires specific handling to play videos.
#2: Partial supports refers to the lack of hardware acceleration.

Resources: Wikipedia article, Firefox extension allowing support in Win7.
Parent feature: Video element.
other4.4‒644‒683.2‒11.33.2‒TP5.59‒1835‒6189
dominput event

The input event is fired when the user changes the value of an <input> element, <select> element, or <textarea> element. By contrast, the "change" event usually only fires after the form control has lost focus.

Browser-specific notes:
#1: Doesn't fire an input event when deleting text (via Backspace, Delete, Cut, etc.).
#2: Doesn't fire an input event when drag-and-dropping text into an <input> or <textarea>.
#3: <select> doesn't fire input events. See MS Edge bug and Firefox bug.
#4: Doesn't fire an input event when (un)checking a checkbox or radio button, or when changing the selected file(s) of an <input type="file">. See Chrome bug, WebKit bug, and Firefox bug.
#5: Doesn't fire an input event when (un)checking a checkbox or radio button. See MS Edge bug.

Resources: Specification for `<select>` elements firing the `input` event, MDN Web Docs - input event, Microsoft Edge feature request on UserVoice.
ls4.4.3‒6435‒65668‒11.36.1‒TP5.510‒1849‒6189
html5Email, telephone & URL input types

Text input fields intended for email addresses, telephone numbers or URLs. Particularly useful in combination with form validation.

Browsers without support for these types will fall back to using the "text" type.

Browser-specific notes:
#1: Does not provide an email-specific keyboard for email addresses.

Resources: Article on usage.
Parent feature: HTML5 form features.
ls3‒645‒683.2‒11.35‒TP5.510‒184‒6189
css3CSS3 Transitions

Simple method of animating certain properties of an element, with ability to define property, duration, delay and timing function.

Support listed is for transition properties as well as the transitionend event.

Browser-specific notes:
#1: Does not support the steps(), step-start & step-end timing functions.

Resources: Article on usage, Examples on timing functions, Animation of property types support in Opera, WebPlatform Docs.
wd4.4‒6426‒687.0‒11.36.1‒TP5.510‒1816‒6189
css3CSS Gradients

Method of defining a linear or radial color gradient as a CSS image.

Syntax used by browsers with prefixed support may be incompatible with that for proper support.

Support can be somewhat emulated in older IE versions using the non-standard "gradient" filter.

Firefox 10+, Opera 11.6+, Chrome 26+ and IE10+ also support the new "to (side)" syntax.

Browser-specific notes:
#1: Partial support in Opera 11.10 and 11.50 also refers to only having support for linear gradients.

Resources: Cross-browser editor, Tool to emulate support in IE, WebPlatform Docs.
cr4.4‒6426‒687.0‒11.36.1‒TP5.510‒1816‒6189
jsECMAScript 5 Strict Mode

Method of placing code in a "strict" operating context.

Browser-specific notes:
#1: Partial support in older Safari refers to strict mode still accepting a lot of JS that should be considered invalid.

Resources: Information page, Article with test suite.
Parent feature: ECMAScript 5.
other3‒6413‒685.0‒11.36‒TP5.510‒184‒6189
domasync attribute for external scripts

The boolean async attribute on script elements allows the external JavaScript file to run when it's available, without delaying page load first.

Browser-specific notes:
#1: Using script.async = false; to maintain execution order for dynamically-added scripts isn't supported in Safari 5.0.

Resources: MDN Web Docs - Script attributes, Demo, has.js test, async vs defer attributes.
ls3‒648‒685.0‒11.35.1‒TP5.510‒183.6‒6189
css:optional CSS pseudo-class

The :optional pseudo-class matches form inputs (<input>, <textarea>, <select>) which are not :required.

Browser-specific notes:
#1: Does not match non-required <select>s.

Resources: HTML specification for `:optional`, MDN Web Docs - CSS :optional, JS Bin testcase.
Parent feature: Form validation.
unoff2.3‒6415‒685.0‒11.35‒TP5.510‒184‒6189
jsECMAScript 5

Full support for the ECMAScript 5 specification. Features include Function.prototype.bind, Array methods like indexOf, forEach, map & filter, Object methods like defineProperty, create & keys, the trim method on Strings and many more.

As the specification includes many JavaScript features, un-numbered partial support varies widely and is shown in detail on the ECMAScript 5 compatibilty tables by Kangax.

Browser-specific notes:
#1: Does not support parseInt() ignoring leading zeros.
#2: Does not support Strict mode.
#3: Does not support zero-width chars in identifiers & Immutable undefined.
#4: IE8 has virtually no ES5 support, but does support Object.defineProperty, Object.getOwnPropertyDescriptor, JSON parsing & Property access on strings.

Resources: Detailed compatibility tables & tests, Overview of objects & properties, ES5 polyfill.
other4.4‒6423‒686.0‒11.36‒TP5.510‒1821‒6189
html5sandbox attribute for iframes

Method of running external site pages with reduced privileges (e.g. no JavaScript) in iframes.

Resources: Chromium blog article, MSDN article, WebPlatform Docs.
ls2.2‒644‒684.2‒11.35‒TP5.510‒1828‒6189
dommatchMedia

API for finding out whether or not a media query applies to the document.

Resources: matchMedia.js polyfill, MDN Web Docs - matchMedia, MDN Web Docs - Using matchMedia, WebPlatform Docs.
wd3‒649‒685.0‒11.35.1‒TP5.510‒186‒6189
jsCross-Origin Resource Sharing

Method of performing XMLHttpRequests across domains.

Browser-specific notes:
#1: Does not support CORS for images in <canvas>.
#2: Supported somewhat in IE8 and IE9 using the XDomainRequest object (but has limitations).
#3: Does not support CORS for <video> in <canvas>: https://bugs.webkit.org/show_bug.cgi?id=135379.

Resources: Mozilla Hacks blog post, Alternative implementation by IE8, DOM access using CORS, has.js test, MDN Web Docs - Access control CORS.
ls4.4‒6413‒686.0‒11.36‒TP5.511‒183.5‒6189
html5Attributes for form submission

Attributes for form submission that may be specified on submit buttons. The attributes are: formaction, formenctype, formmethod, formnovalidate, and formtarget.

Resources: Article describing each attribute.
ls4‒6415‒685.0‒11.35.1‒TP5.510‒184‒6189
domKeyboardEvent.location

A KeyboardEvent property that indicates the location of the key on the input device. Useful when there are more than one physical key for the same logical key (e.g. left or right "Control" key; main or numpad "1" key).

Browser-specific notes:
#1: Only supports KeyboardEvent.keyLocation from an older draft of the DOM Level 3 Events spec instead.

Resources: MDN Web Docs - location.
wd4.4‒6430‒688‒11.36.1‒TP5.59‒1815‒6189
html5input placeholder attribute

Method of setting placeholder text for text-like input fields, to suggest the expected inserted information.

Browser-specific notes:
#1: Partial support refers to lacking placeholder support on textarea elements.

Resources: Article on usage, Polyfill, has.js test, WebPlatform Docs, Issue 24626: Placeholder text for an input type=.
Parent feature: HTML5 form features.
ls2.1‒644‒683.2‒11.35‒TP5.510‒184‒6189
css3CSS Animation

Complex method of animating certain properties of an element.

Browser-specific notes:
#1: Partial support in Android browser refers to buggy behavior in different scenarios.
#2: Does not support the steps(), step-start & step-end timing functions.

Resources: Blog post on usage, WebPlatform Docs.
wd62‒6443‒689.0‒11.39‒TP5.510‒1816‒6189
cssWindow.devicePixelRatio

Read-only property that returns the ratio of the (vertical) size of one physical pixel on the current display device to the size of one CSS pixel.

As the page is zoomed in the number of device pixels that one CSS pixel covers increases, and therefore the value of devicePixelRatio will also increase.

Resources: MDN Web Docs - devicePixelRatio.
wd2.1‒644‒683.2‒11.33.1‒TP5.511‒1818‒6189
css3CSS Repeating Gradients

Method of defining a repeating linear or radial color gradient as a CSS image.

Firefox 10+, Chrome 26+ and Opera 11.6+ also support the new "to (side)" syntax.

Resources: MDN Web Docs - CSS repeating linear gradient, WebPlatform Docs.
Parent feature: CSS Gradients.
cr4.4‒6426‒687.0‒11.36.1‒TP5.510‒1816‒6189
css3CSS pointer-events (for HTML)

This CSS property, when set to "none" allows elements to not receive hover/click events, instead the event will occur on anything behind it.

Already part of the SVG specification, and all SVG-supporting browsers appear to support the property on SVG elements.

Resources: Article & tutorial, has.js test, Polyfill.
unoff2.1‒644‒683.2‒11.34‒TP5.511‒183.6‒6189
jsconsole.time and console.timeEnd

Functions for measuring performance.

console.time() starts a timer you can use to track how long an operation takes. You give each timer a unique name, and may have up to 10,000 timers running on a given page. When you call console.timeEnd() with the same name, the browser will output the time, in milliseconds, that elapsed since the timer was started. These functions are not always available in workers. For example, in Firefox, they are available from version 38. More on using the console on mobile devices, see here.

Resources: MDN Web Docs - Console.time.
Parent feature: Basic console logging functions.
ls2.1‒644‒683.2‒11.34‒TP5.511‒1810‒6189
html5Range input type

Form field type that allows the user to select a value using a slider widget.

Currently all Android browsers with partial support hide the slider input field by default. However, the element can be styled to be made visible and usable.

Resources: Polyfill for Firefox, Cross-browser polyfill, Tutorial, has.js test, WebPlatform Docs, rangeslider.js polyfill, MDN web docs, Tutorial.
Parent feature: HTML5 form features.
ls4.2‒644‒685.0‒11.33.1‒TP5.510‒1823‒6188
jsTyped Arrays

JavaScript typed arrays provide a mechanism for accessing raw binary data much more efficiently. Includes: Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array & Float64Array.

Includes support for ArrayBuffer objects.

Browser-specific notes:
#1: IE10 (and IE 10&11 mobile) does not support Uint8ClampedArray.

Resources: MDN Web Docs - Typed arrays.
other4‒647‒685.0‒11.36‒TP5.511‒184‒6188
html5PageTransitionEvent

Fired at the Window when the page's entry in the session history stops being the current entry. Includes the pageshow and pagehide events.

Resources: MDN Web Docs - pageshow, HTML onpageshow Event Attribute.
ls2.3‒644‒685.0‒11.35‒TP5.511‒182‒6188
otherWOFF - Web Open Font Format

Compressed TrueType/OpenType font that contains information about the font's source.

Browser-specific notes:
#1: Reported to be supported in some modified versions of the Android 4.0 browser.

Resources: Mozilla hacks blog post.
Parent feature: @font-face Web fonts.
rec4.4‒645‒685.0‒11.35.1‒TP5.59‒183.6‒6188
svgSVG in HTML img element

Method of displaying SVG images in HTML using <img>.

Browser-specific notes:
#1: Partial support refers to not supporting embedded images (data URIs) inside the SVG.

Resources: Blog post with examples, Blog with SVGs an images.
ls4.4‒6428‒689.0‒11.39‒TP5.59‒184‒6188
html5hidden attribute

The hidden attribute may be applied to any element, and effectively hides elements similar to display: none in CSS.

The hidden state can be easily overridden with a CSS display property set to anything other than none.

Resources: Article on hidden attribute.
ls4‒646‒685.0‒11.35.1‒TP5.511‒184‒6188
jsBlob URLs

Method of creating URL handles to the specified File or Blob object.

Browser-specific notes:
#1: Created blob url can't be used in object or iframe (see issue).

Resources: MDN Web Docs - createObjectURL.
Parent feature: File API.
wd4.4‒6423‒687.0‒11.36.1‒TP5.51012‒184‒6188
jsBlob constructing

Construct Blobs (binary large objects) either using the BlobBuilder API (deprecated) or the Blob constructor.

Partial support refers to only supporting the now deprecated BlobBuilder to create blobs.

Resources: MDN Web Docs - BlobBuilder, MDN Web Docs - Blobs.
Parent feature: File API.
wd62‒6420‒686.0‒11.36‒TP5.510‒1813‒6188
css3CSS background-position edge offsets

Allows CSS background images to be positioned relative to the specified edge using the 3 to 4 value syntax. For example: background-position: right 5px bottom 5px; for positioning 5px from the bottom-right corner.

Resources: MDN Web Docs - background-position, Basic information.
cr4.4‒6425‒687.0‒11.37‒TP5.59‒1813‒6188
canvasWebGL - 3D Canvas graphics

Method of generating dynamic 3D graphics using JavaScript, accelerated through hardware.

WebGL support is dependent on GPU support and may not be available on older devices. This is due to the additional requirement for users to have up to date video drivers.

Note that WebGL is part of the Khronos Group, not the W3C.

Browser-specific notes:
#1: WebGL context is accessed from "experimental-webgl" rather than "webgl".

Resources: Instructions on enabling WebGL, Tutorial, Firefox blog post, WebKit blog post, Polyfill for IE.
Parent feature: Canvas (basic support).
other62‒6433‒688‒11.38‒TP611‒1824‒6188
css3calc() as CSS unit value

Method of allowing calculated values for length units, i.e. width: calc(100% - 3em).

Support can be somewhat emulated in older versions of IE using the non-standard expression() syntax.

Due to the way browsers handle sub-pixel rounding differently, layouts using calc() expressions may have unexpected results.

Browser-specific notes:
#1: Partial support in Android Browser 4.4 refers to the browser lacking the ability to multiply and divide values.
#2: Partial support in IE9 refers to the browser crashing when used as a background-position value.

Resources: Mozilla Hacks article, MDN Web Docs - calc, WebPlatform Docs.
cr62‒6426‒687.0‒11.36.1‒TP5.510‒1816‒6188
svgSVG filters

Method of using Photoshop-like effects on SVG objects including blurring and color manipulation.

Resources: Experiments with filter effects, SVG filter demos, WebPlatform Docs, SVG Filter effects.
rec4.4‒648‒686.0‒11.36‒TP5.510‒183‒6188
html5Session history management

Method of manipulating the user's browser's session history in JavaScript using history.pushState, history.replaceState and the popstate event.

Older iOS versions and Android 4.0.4 claim support, but implementation is too buggy to be useful.

Resources: Introduction to history management, MDN Web Docs - Manipulating the browser history, Demo page, History.js polyfill, has.js test, WebPlatform Docs.
ls2.2‒645‒685.0‒11.36‒TP5.510‒184‒6188
jsWeb Sockets

Bidirectional communication technology for web apps.

Reported to be supported in some Android 4.x browsers, including Sony Xperia S, Sony TX and HTC.

Browser-specific notes:
#1: Partial support in older browsers refers to the websockets implementation using an older version of the protocol and/or the implementation being disabled by default (due to security issues with the older protocol).
#2: Partial support in older browsers refers to lacking support for binary data.

Resources: WebSockets information, Details on newer protocol, Wikipedia, has.js test, WebPlatform Docs, MDN Web Docs - WebSockets API.
ls4.4‒6416‒686.0‒11.37‒TP5.510‒1811‒6188
jsFileReaderSync

Allows files to be read synchronously in Web Workers.

Resources: MDN Web Docs - FileReaderSync.
Parent feature: FileReader API.
wd4.4‒6415‒686.0‒11.36‒TP5.510‒188‒6188
jsChannel messaging

Method for having two-way communication between browsing contexts (using MessageChannel).

Browser-specific notes:
#1: Supported in Firefox behind the dom.messageChannel.enabled flag. Reported to not work in web workers before version 41.

Resources: An Introduction to HTML5 web messaging, MDN Web Docs - Channel Messaging API.
Parent feature: Cross-document messaging.
ls4.4‒644‒685.0‒11.35‒TP5.510‒1841‒6188
jsrequestAnimationFrame

API allowing a more efficient way of running script-based animation, compared to traditional methods using timeouts. Also covers support for cancelAnimationFrame.

Browser-specific notes:
#1: Partial support refers to lacking cancelAnimationFrame support.
#2: Supports webkitCancelRequestAnimationFrame rather than `webkitCancelAnimationFrame.

Resources: Blog post, Mozilla Hacks article, WebPlatform Docs, MDN Web Docs - requestAnimationFrame.
ls4.4‒6424‒687.0‒11.36.1‒TP5.510‒1823‒6188
jsPage Visibility

JavaScript API for determining whether a document is visible on the display.

Resources: MDN Web Docs - Page Visibility, WebPlatform Docs, SitePoint article, Demo.
rec62‒6433‒687.0‒11.36.1‒TP5.510‒1818‒6188
domMutation Observer

Method for observing and reacting to changes to the DOM. Replaces MutationEvents, which is deprecated.

When changing the innerHTML content of a node containing a single CharacterData node, resulting in a single-but-different CharacterData child node, WebKit browsers consider this a characterData mutation of the child CharacterData node, while other browsers consider it a childList mutation of the parent node.

Resources: MutationObserver from MDN, Polyfill.
ls4.4‒6427‒687.0‒11.36.1‒TP5.511‒1814‒6188
securityTLS 1.1

Version 1.1 of the Transport Layer Security (TLS) protocol.

Resources: Wikipedia article on TLS.
other62‒6422‒685.0‒11.37‒TP5.511‒1824‒6188
css3CSS background-repeat round and space

Allows CSS background images to be repeated without clipping.

Browser-specific notes:
#1: IE9 does not appear to render "background-repeat: round" correctly.

Resources: MDN Web Docs - background-repeat, CSS-Tricks article on background-repeat.
cr4.4‒6432‒687.0‒11.37‒TP5.510‒1849‒6188
jsHigh Resolution Time API

Method to provide the current time in sub-millisecond resolution and such that it is not subject to system clock skew or adjustments. Called using performance.now().

Resources: MDN Web Docs - Performance.now, HTML5Rocks article, SitePoint article, Demo.
rec4.4‒6424‒688‒11.38‒TP5.510‒1815‒6188
domNode.compareDocumentPosition()

Compares the relative position of two nodes to each other in the DOM tree.

Browser-specific notes:
#1: The spec requires that comparisons of nodes in different documents, and comparisons where at least one node is not in any document, must arbitrarily (but consistently) set either the DOCUMENT_POSITION_PRECEDING or DOCUMENT_POSITION_FOLLOWING bit in the result. These browser versions don't set either bit in some such cases.
#2: Sets neither the DOCUMENT_POSITION_DISCONNECTED bit nor the DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC bit in some cases when comparing nodes in different documents or when comparing a node which is not in any document.

Resources: MDN Web Docs - Node.compareDocumentPosition.
ls4.4‒6430‒68410.0‒11.310‒TP5.59‒184‒6188
securityTLS 1.2

The latest version of the Transport Layer Security (TLS) protocol. Allows for data/message confidentiality, and message authentication codes for message integrity and as a by-product message authentication.

Resources: Wikipedia article on TLS.
other62‒6430‒685.0‒11.37‒TP5.511‒1827‒6188
securityStrict Transport Security

Declare that a website is only accessible over a secure connection (HTTPS).

The HTTP header is 'Strict-Transport-Security'.

Browser-specific notes:
#1: IE 11 added support in an update on June 9, 2015.

Resources: Chromium article, MDN Web Docs - Strict Transport Security, OWASP article.
other4.4‒644‒687.0‒11.37‒TP5.51112‒184‒6188
otherWebVTT - Web Video Text Tracks

Format for marking up text captions for multimedia resources.

WebVTT must be used with the <track> element.

Browser-specific notes:
#1: Firefox currently lacks support for the ::cue pseudo-element. See bug #865395..

Resources: Getting Started With the Track Element, An Introduction to WebVTT and track, MDN Web Docs - WebVTT.
Parent feature: Video element.
wd4.4‒6418‒687.0‒11.36‒TP5.510‒1831‒6188
domdisabled attribute of the fieldset element

Allows disabling all of the form control descendants of a fieldset via a disabled attribute on the fieldset element itself.

Browser-specific notes:
#1: Text inputs that are descendants of a disabled fieldset appear disabled but the user can still interact with them. See IE bug #962368..
#2: File inputs that are descendants of a disabled fieldset appear disabled but the user can still interact with them. See IE bug #817488..

Resources: JS Bin Testcase/Demo.
ls4.4‒6420‒686.0‒11.36‒TP6‒1112‒184‒6187
cssCSS writing-mode property

Property to define whether lines of text are laid out horizontally or vertically and the direction in which blocks progress.

Browser-specific notes:
#1: Internet Explorer supports different values from an earlier version of the spec, which originated from SVG.
#2: Supported in Firefox under the layout.css.vertical-text.enabled flag.

Resources: MDN Web Docs - CSS writing-mode, Chrome Platform Status.
cr62‒6448‒685.0‒10.211.0‒11.35.111‒TP5.5‒1112‒1841‒6187
jscrypto.getRandomValues()

Method of generating cryptographically random values.

Resources: MDN Web Docs - crypto.getRandomValues.
cr4.4‒6411‒687.0‒11.36.1‒TP5.51112‒1821‒6187
html5wbr (word break opportunity) element

Represents an extra place where a line of text may optionally be broken.

Resources: MDN Web Docs - Element wbr.
ls2.3‒644‒685.0‒11.33.2‒TP5.5812‒182‒6187
css3CSS outline properties

The CSS outline properties draw a border around an element that does not affect layout, making it ideal for highlighting. This covers the outline shorthand, as well as outline-width, outline-style, outline-color and outline-offset.

Firefox also supports the non-standard -moz-outline-radius property that acts similar to border-radius.

Browser-specific notes:
#1: Also supports the value of invert for outline-color. (support of this value is optional for browsers).
#2: Does not support outline-offset.

Resources: CSS Basic User Interface Module Level 3, MDN Web Docs - CSS outline.
cr2.1‒644‒683.2‒11.33.1‒TP5.5915‒182‒6187
jsCross-document messaging

Method of sending information from a page on one domain to a page on a different one (using postMessage).

Browser-specific notes:
#1: Partial support refers to only working in frames/iframes (not other tabs/windows). Also, objects cannot be sent using postMessage.
#2: Partial support refers to limitations in certain conditions.

Resources: MDN Web Docs - window.postMessage, Simple demo, has.js test, WebPlatform Docs.
ls2.1‒644‒683.2‒11.34‒TP5.51012‒183‒6187
jsconst

Declares a constant with block level scope.

Browser-specific notes:
#1: const is recognized, but treated like var (no block scope, can be overwritten).
#2: const does not have block scope.
#3: Only recognized when NOT in strict mode.
#4: Supported correctly in strict mode, otherwise supported without block scope.

Resources: Variables and Constants in ES6, MDN Web Docs - const.
other62‒6449‒68510.0‒11.310‒TP5.511‒1836‒6187
html5HTML5 semantic elements

HTML5 offers some new elements, primarily for semantic purposes. The elements include: section, article, aside, header, footer, nav, figure, figcaption, time, mark & main.

Browser-specific notes:
#1: Partial support refers to missing the default styling, as technically the elements are considered "unknown". This is easily taken care of by manually setting the default display value for each tag.
#2: Partial support refers to only the <main> element (added later to the spec) being "unknown", though it can still be used and styled.

Resources: Workaround for IE, Alternate workaround, Article on structural elements, has.js test, Chrome Platform Status: `<time>` element.
ls4.4‒6426‒687.0‒11.36.1‒TP6912‒1821‒6187
css3TTF/OTF - TrueType and OpenType font support

Support for the TrueType (.ttf) and OpenType (.otf) outline font formats in @font-face.

Browser-specific notes:
#1: Partial support in IE9+ refers to the fonts only working when set to be "installable". Support for this is tracked here.

Resources: What is the status of TTF support in Internet Explorer?.
Parent feature: @font-face Web fonts.
other2.2‒644‒684.2‒11.33.1‒TP5.5912‒183.5‒6186
domclassList (DOMTokenList)

Method of easily manipulating classes on elements, using the DOMTokenList object.

Browser-specific notes:
#1: Does not have support for classList on SVG or MathML elements.
#2: Does not support the second parameter for the toggle method.
#3: Does not support multiple parameters for the add() & remove() methods.
#4: Does not support assign to classList.

Resources: Mozilla Hacks article, Polyfill script, WebPlatform Docs, SitePoint article, Demo using classList, MDN Web Docs - Element.classList.
ls4.4‒6428‒687.0‒11.37‒TP5.51112‒1826‒6186
css3CSS3 Overflow-wrap

Allows lines to be broken within words if an otherwise unbreakable string is too long to fit. Currently mostly supported using the word-wrap property.

Partial support refers to requiring the legacy name "word-wrap" (rather than "overflow-wrap") to work.

Resources: MDN Web Docs - CSS word-wrap, WebPlatform Docs, Bug on Firefox support, Microsoft Edge feature request on UserVoice.
wd4.4‒6423‒687.0‒11.36.1‒TP5.5‒161849‒6186
jsFileReader API

Method of reading the contents of a File or Blob object into memory.

Browser-specific notes:
#1: Does not support readAsBinaryString, but readAsBinaryString can be polyfilled.

Resources: MDN Web Docs - FileReader, WebPlatform Docs.
Parent feature: File API.
wd3‒646‒686.0‒11.36‒TP5.51012‒183.6‒6186
css3CSS3 3D Transforms

Method of transforming an element in the third dimension using the transform property. Includes support for the perspective property to set the perspective in z-space and the backface-visibility property to toggle display of the reverse side of a 3D-transformed element.

Browser-specific notes:
#1: Partial support in IE refers to not supporting the transform-style: preserve-3d property. This prevents nesting 3D transformed elements.
#2: Safari 9, 10 & 11 are reported to still require a prefix for the related backface-visibility property.

Resources: Multi-browser demo, Mozilla hacks article, 3D CSS Tester, has.js test, WebPlatform Docs, Intro to CSS 3D transforms.
wd62‒6436‒689.0‒11.39‒TP5.51012‒1816‒6186
domCustomEvent

A DOM event interface that can carry custom application-defined data.

Not supported in some versions of Android's old WebKit-based WebView.

Browser-specific notes:
#1: While a window.CustomEvent object exists, it cannot be called as a constructor. Instead of new CustomEvent(...), you must use e = document.createEvent('CustomEvent') and then e.initCustomEvent(...).
#2: There is no window.CustomEvent object, but document.createEvent('CustomEvent') still works.

Resources: MDN Web Docs - CustomEvent, Polyfill based on the MDN snippet, EventListener polyfill which includes a CustomEvent polyfill.
ls4.4‒6415‒686.0‒11.36.1‒TP5.5912‒1811‒6186
domLink type "noreferrer"

Links with rel="noreferrer" set do not send the request's "referrer" header. This prevents the destination site from seeing what URL the user came from.

Browser-specific notes:
#1: Only supported in IE11 in later versions of Windows 10 (creators update).

Resources: Blog post on rel="noreferrer".
ls2.3‒6416‒684.0‒11.35‒TP5.51113‒1833‒6186
css3CSS Flexible Box Layout Module

Method of positioning elements in horizontal or vertical stacks. Support includes all properties prefixed with flex, as well as display: flex, display: inline-flex, align-content, align-items, align-self, justify-content and order.

Most partial support refers to supporting an older version of the specification or an older syntax.

Browser-specific notes:
#1: Only supports the old flexbox specification and does not support wrapping.
#2: Only supports the 2012 syntax.
#3: Does not support flex-wrap, flex-flow or align-content properties.
#4: Partial support is due to large amount of bugs present (see known issues).

Resources: Flexbox CSS generator, Article on using the latest spec, Tutorial on cross-browser support, Examples on how to solve common layout problems with flexbox, A Complete Guide to Flexbox, Flexbox playground and code generator, Flexbugs: Repo for flexbox bugs, 10up Open Sources IE 8 and 9 Support for Flexbox, Ecligrid - Mobile first flexbox grid system, The Difference Between Width and Flex-Basis.
cr4.4‒6429‒689.0‒11.39‒TP5.51112‒1828‒6186
otherData URIs

Method of embedding images and other files in webpages as a string of text, generally using base64 encoding.

Browser-specific notes:
#1: Support is limited to images and linked resources like CSS files, not HTML or JS files. Max URI length is 32KB.
#2: Support is limited to images and linked resources like CSS or JS, not HTML files. Maximum size limit is 4GB.
#3: SVGs with XML declarations are not displayed when used in data-urls.

Resources: Information page, Wikipedia, Data URL converter, Information on security issues.
other2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒6186
dommatches() DOM method

Method of testing whether or not a DOM element matches a given selector. Formerly known (and largely supported with prefix) as matchesSelector.

Partial support refers to supporting the older specification's "matchesSelector" name rather than just "matches".

Resources: MDN Web Docs - Element matches, WebPlatform Docs, Microsoft Edge feature request on UserVoice.
ls62‒6434‒688‒11.37.1‒TP5.5915‒1834‒6186
css3ch (character) unit

Unit representing the width of the character "0" in the current font, of particular use in combination with monospace fonts.

Browser-specific notes:
#1: IE supports the ch unit, but unlike other browsers its width is that specifically of the "0" glyph, not its surrounding space. As a result, 3ch for example is shorter than the width of the string "000" in IE.

Resources: Blog post on using ch units, Various uses for the ch unit.
cr4.4‒6427‒687.0‒11.37‒TP5.5912‒182‒6186
otherAAC audio file format

Advanced Audio Coding format, designed to be the successor format to MP3, with generally better sound quality.

Support refers to this format's use in the audio element, not other conditions.

Browser-specific notes:
#1: Partial support in Firefox refers to only supporting AAC in an MP4 container and only when the operating system already has the codecs installed.

Resources: Wikipedia article.
Parent feature: Audio element.
other3‒6412‒684.0‒11.34‒TP5.59‒1822‒6186
cssCSS zoom

Non-standard method of scaling content.

Originally implemented only in Internet Explorer. Although several other browsers support the property, using transform: scale() is the recommended solution to scale content.

Browser-specific notes:
#1: The -ms-zoom property is an extension to CSS, and can be used as a synonym for zoom in IE8 Standards mode.

Resources: CSS Tricks, WebPlatform Docs, MSDN Library, Safari Developer Library, Article explaining usage of zoom as the hack for fixing rendering bugs in IE6 and IE7., MDN Web Docs - CSS zoom.
unoff2.1‒644‒684.0‒11.34‒TP5.5812‒182‒6186
css3CSS font-feature-settings

Method of applying advanced typographic and language-specific font features to supported OpenType fonts.

Whenever possible, font-variant shorthand property or an associated longhand property, font-variant-ligatures, font-variant-caps, font-variant-east-asian, font-variant-alternates, font-variant-numeric or font-variant-position should be used. This property is a low-level feature designed to handle special cases where no other way to enable or access an OpenType font feature exists. In particular, this CSS property shouldn't be used to enable small caps.

Browser-specific notes:
#1: From Gecko 2.0 (Firefox 4.0) to Gecko 14.0 (Firefox 14.0) included, Gecko supported an older syntax, slightly different from the modern one: https://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/.
#2: Partial support in older Chrome versions refers to lacking support in Mac OS X.

Resources: Demo pages (IE/Firefox only), Mozilla hacks article, Detailed tables on accessability support, WebPlatform Docs, MDN Web Docs - font-feature-settings, OpenType layout feature tag registry, Syntax for OpenType features in CSS (Adobe Typekit Help).
cr62‒6448‒6879.3‒11.39.1‒TP5.510‒1834‒6186
domXMLHttpRequest advanced features

Adds more functionality to XHR (aka AJAX) requests like file uploads, transfer progress information and the ability to send form data. Previously known as XMLHttpRequest Level 2, these features now appear simply in the XMLHttpRequest spec.

Browser-specific notes:
#1: Partial support refers to not supporting json as responseType.
#2: Partial support refers to not supporting .timeout and .ontimeout.
#3: Partial support refers to not supporting blob as responseType.

Resources: MDN Web Docs - FormData, Polyfill for FormData object, WebPlatform Docs.
ls4.4.3‒6431‒688‒11.37.1‒TP5.51012‒1812‒6186
jsInternationalization API

Locale-sensitive collation (string comparison), number formatting, and date and time formatting.

Resources: MDN Web Docs - Internationalization, The ECMAScript Internationalization API, Working With Intl, WebKit tracking bug, Firefox for Android tracking bug.
other4.4‒6424‒683.210.0‒11.310‒TP5.511‒1829‒6185
securityContent Security Policy 1.0

Mitigate cross-site scripting attacks by whitelisting allowed sources of script, style, and other resources.

The standard HTTP header is Content-Security-Policy which is used unless otherwise noted.

Browser-specific notes:
#1: Supported through the X-Content-Security-Policy header.
#2: Supported through the X-WebKit-CSP header.

Resources: HTML5Rocks article, CSP Examples & Quick Reference, MDN Web Docs - Content Security Policy.
cr4.4‒6425‒687.0‒11.37‒TP5.51012‒1823‒6185
html5Form validation

Method of setting required fields and field types without requiring JavaScript. This includes preventing forms from being submitted when appropriate, the checkValidity() method as well as support for the :invalid, :valid, and :required CSS pseudo-classes.

Browser-specific notes:
#1: Partial support refers to lack of notice when form with required fields is attempted to be submitted. See WebKit bug.
#2: Partial support in IE10 mobile refers to lack of warning when blocking submission.
#3: Partial support in Opera Mini refers to only supporting the CSS pseudo classes.

Resources: WebPlatform Docs, WebKit Blog: HTML Interactive Form Validation.
Parent feature: HTML5 form features.
ls4.4.3‒6410‒684.0‒10.210.3‒11.3510.1‒TP5.510‒184‒6185
css3Viewport units: vw, vh, vmin, vmax

Length units representing a percentage of the current viewport dimensions: width (vw), height (vh), the smaller of the two (vmin), or the larger of the two (vmax).

Browser-specific notes:
#1: Partial support in IE9 refers to supporting "vm" instead of "vmin".
#2: Partial support refers to not supporting the "vmax" unit.
#3: Partial support in iOS7 is due to buggy behavior of the "vh" unit (see workarounds: 1, 2).

Resources: Blog post, Polyfill, Buggyfill - Polyfill that fixes buggy support, Back-Forward issue blog post, Microsoft Edge feature request on UserVoice.
cr4.4‒6426‒688‒11.36.1‒TP5.51016‒1819‒6185
jsWeb Cryptography

JavaScript API for performing basic cryptographic operations in web applications.

Many browsers support the crypto.getRandomValues() method, but not actual cryptography functionality under crypto.subtle.

Firefox also has support for unofficial features.

In Chrome the API is only usable over secure connections. (corresponding bug).

Browser-specific notes:
#1: Support in IE11 is based an older version of the specification.
#2: Supported in Firefox behind the dom.webcrypto.enabled flag.
#3: Supported in Safari using the crypto.webkitSubtle prefix.

Resources: The History and Status of Web Crypto API, Microsoft Research JavaScript Cryptography Library, Cross-browser cryptography library, Support for recommended algorithms in Firefox, Polyfill by Netflix with partial support, PKI.js - another crypto library for Public Key Infrastructure applications, Test suite for various algorithms/methods, Web Cryptography API shim for IE11 and Safari - set of bugfixes and workarounds of prefixed api implementations, MDN Web Docs - Web Crypto API.
cr62‒6437‒688‒10.211.0‒11.37.111‒TP61112‒1834‒6185
html5Pattern attribute for input fields

Allows validation of an input field based on a given regular expression pattern.

Browser-specific notes:
#1: Partial support refers to not displaying a message for invalid patterns.
#2: Safari browsers support the pattern attribute but will still allow forms to be submitted if the pattern is incorrect. See the form validation data for details.

Resources: Site with common sample patterns, MDN Web Docs - input element: pattern attribute.
Parent feature: Form validation.
ls4.4.3‒6410‒685.0‒10.210.3‒11.35.110.1‒TP5.510‒184‒6185
cssCSS user-select: none

Method of preventing text/element selection using CSS.

Resources: MDN Web Docs - CSS user-select, CSS Tricks article, MSDN Documentation.
wd62‒64454‒683.2‒11.33.1‒TP5.510‒182‒6185
cssRebeccapurple color

The new color added in CSS Color Module Level 4.

Browser-specific notes:
#1: Only works in IE11 for Windows 10, not older versions of Windows.

Resources: Codepen blog post.
wd4.4‒6438‒688‒11.37‒TP5.51112‒1833‒6185
jsPromisesother4.4.3‒6433‒688‒11.37.1‒TP5.5‒1112‒1829‒6185
domdocument.evaluate & XPath

Allow nodes in an XML/HTML document to be traversed using XPath expressions.

Resources: XPath in Javascript: Introduction, MDN Web Docs - XPath introduction, Edge team article on implementation, DOM XPath - WHATWG Wiki.
unoff2.1‒644‒683.2‒11.33.1‒TP5.5‒1112‒183‒6184
jsDo Not Track API

Allows the browser's Do Not Track setting to be queried via navigator.doNotTrack.

Partial support refers to the doNotTrack field being misnamed, or being attached to an object other than navigator (e.g. window).

Browser-specific notes:
#1: IE 9 and 10 are vendor-prefixed as navigator.msDoNotTrack.
#2: IE 11 and Edge use window.doNotTrack instead of navigator.doNotTrack.
#3: Browsers based on Gecko versions prior to 32 used 'yes' and 'no' rather than '1' and '0'.
#4: Between versions 6.1.1 and 9.1.3, Safari supported an ultimately-rejected amendment to the spec, using window.doNotTrack rather than navigator.doNotTrack.

Resources: MDN Web Docs - doNotTrack.
cr4.4‒6423‒689.0‒11.35.1‒TP5.511‒161732‒6184
otherWav audio format

Waveform Audio File Format, aka WAV or WAVE, a typically uncompressed audio format.

Support refers to this format's use in the audio element, not other conditions.

Resources: Wikipedia article.
Parent feature: Audio element.
other2.3‒648‒683.2‒11.34‒TP5.5‒1112‒183.5‒6184
css3Font unicode-range subsetting

This @font-face descriptor defines the set of Unicode codepoints that may be supported by the font face for which it is declared. The descriptor value is a comma-delimited list of Unicode range (<urange>) values. The union of these ranges defines the set of codepoints that serves as a hint for user agents when deciding whether or not to download a font resource for a given text run.

Partial support indicates that unnecessary code-ranges are downloaded by the browser - see browser test matrix.

Browser-specific notes:
#1: Can be enabled in Firefox using the layout.css.unicode-range.enabled flag.

Resources: MDN Web Docs - CSS unicode-range, Safari CSS Reference: unicode-range, Web Platform Docs: unicode-range, Demo, Microsoft Edge feature request on UserVoice.
cr62‒6436‒683.210.0‒11.310‒TP5.59‒161744‒6184
cssCSS initial value

A CSS value that will apply a property's initial value as defined in the CSS specification that defines the property.

Resources: MDN Web Docs - CSS initial, CSS Tricks article.
cr2.3‒644‒684.0‒11.33.2‒TP5.5‒1112‒1819‒6184
svgSVG SMIL animation

Method of using animation elements to animate SVG images.

Browser-specific notes:
#1: Partial support in older Safari versions refers to not working in HTML files or CSS background images.

Resources: Examples on SVG WOW, MDN Web Docs - animation with SMIL, JS library to support SMIL in SVG, has.js test, Polyfill for SMIL animate events on SVG.
rec3‒645‒686.0‒11.36‒TP6‒184‒6184
otherHTTP/2 protocol

Networking protocol for low-latency transport of content over the web. Originally started out from the SPDY protocol, now standardized as HTTP version 2.

See also support for the SPDY protocol, precursor of HTTP2.

Browser-specific notes:
#1: Partial support in IE11 refers to being limited to Windows 10.
#2: Only supports HTTP2 over TLS (https).
#3: Partial support in Safari refers to being limited to OSX 10.11+.
#4: Only supports HTTP2 if servers support protocol negotiation via ALPN.

Resources: Wikipedia, Browser support test.
other62644151‒689.0‒11.3911‒TP5.51112‒183653‒6183
css3CSS3 Multiple column layout

Method of flowing information in multiple columns.

Browser-specific notes:
#1: Partial support refers to not supporting the break-before, break-after, break-inside properties. WebKit- and Blink-based browsers do have equivalent support for the non-standard -webkit-column-break-* properties to accomplish the same result (but only the auto and always values). Firefox does not support break-* but does support the page-break-* properties to accomplish the same result.
#2: Partial support refers to not supporting the column-fill property.

Resources: Dev.Opera article, Introduction page, WebPlatform Docs, Polyfill, Chrome platform status for CSS column-fill.
cr62‒64450‒68910.0‒11.310‒TP5.510‒1852‒6183
jsIndexedDB

Method of storing data client-side, allows indexed database queries.

Browser-specific notes:
#1: Partial support in IE 10 & 11 refers to a number of subfeatures not being supported. Edge does not support IndexedDB inside blob web workers. See issue.
#2: Partial support in Safari & iOS 8 & 9 refers to seriously buggy behavior as well as complete lack of support in WebViews.

Resources: Mozilla Hacks article, Polyfill for browsers supporting WebSQL, has.js test, WebPlatform Docs.
rec4.4‒6424‒68810.0‒11.310‒TP5.510‒1816‒6183
jsFile API

Method of manipulating file objects in web applications client-side, as well as programmatically selecting them and accessing their data.

Browser-specific notes:
#1: Does not have FileReader support.
#2: Does not support the File constructor.

Resources: MDN Web Docs - Using Files, WebPlatform Docs, Polyfill.
wd4.4.3‒6438‒68610.0‒11.310‒TP5.510‒1828‒6183
jsConstraint Validation API

API for better control over form field validation. Includes support for checkValidity(), setCustomValidity(), reportValidity() and validation states.

Browser-specific notes:
#1: Does not support reportValidity.
#2: Does not support validity.tooShort. See also support for minlength..
#3: Does not support validity.badInput.

Resources: MDN article on constraint validation, MS Edge UserVoice request for reportValidity.
ls62‒6440‒68710.0‒11.310‒TP5.510141751‒6183
jslet

Declares a variable with block level scope.

Browser-specific notes:
#1: Supports a non-standard version that can only be used in script elements with a type attribute of application/javascript;version=1.7. As other browsers do not support these types of script tags this makes support useless for cross-browser support.
#2: Requires the ‘Experimental JavaScript features’ flag to be enabled.
#3: Only supported in strict mode.
#4: let bindings in for loops are incorrectly treated as function-scoped instead of block scoped.

Resources: Variables and Constants in ES6, MDN Web Docs - let.
other62‒6449‒683.21011.0‒11.31011‒TP5.511‒1844‒6183
html5Form attribute

Attribute for associating input and submit buttons with a form.

Resources: Input attribute specification, Article on usage, Microsoft Edge feature request on UserVoice.
Parent feature: HTML5 form features.
ls3‒6410‒685.0‒11.35.1‒TP5.5‒1116‒184‒6183
html5srcdoc attribute for iframes

Override the content specified in the src attribute (if present) with HTML content within the attribute.

Resources: WebPlatform Docs, MDN Web Docs - iframe, Srcdoc Polyfill, Article.
ls4.4‒6420‒686.0‒11.36‒TP6‒161825‒6183
domKeyboardEvent.which

A legacy KeyboardEvent property that is equivalent to either KeyboardEvent.keyCode or KeyboardEvent.charCode depending on whether the key is alphanumeric.

This property is legacy and deprecated, but its replacement(s) are not yet widely supported.

Browser-specific notes:
#1: event.which number for keys does not always match expected value (difference may be dependent on hardware vs. on-screen keyboard?).

Resources: MDN Web Docs - which.
unoff2.3644‒685.0‒11.35.1‒TP5.59‒182‒6183
domChildNode.remove()

DOM node method to remove the node itself from the document.

Resources: MDN Web Docs - ChildNode.remove.
ls4.4‒6424‒687.0‒11.36.1‒TP5.5‒1113‒1823‒6183
canvasCanvas blend modes

Method of defining the effect resulting from overlaying two layers on a Canvas element.

Resources: Blog post.
Parent feature: Canvas (basic support).
cr4.4‒6430‒687.0‒11.36.1‒TP5.5‒1113‒1820‒6183
cssCrisp edges/pixelated images

Scales images with an algorithm that preserves edges and contrast, without smoothing colors or introducing blur. This is intended for images such as pixel art. Official values that accomplish this for the image-rendering property are crisp-edges and pixelated.

Note that prefixes apply to the value (e.g. -moz-crisp-edges), not the image-rendering property.

Browser-specific notes:
#1: Supported using the non-standard value -webkit-optimize-contrast.
#2: Internet Explorer accomplishes support using the non-standard declaration -ms-interpolation-mode: nearest-neighbor.
#3: Supports the crisp-edges value, but not pixelated.
#4: Supports the pixelated value, but not crisp-edges.
#5: Only works on <img>, not CSS backgrounds or <canvas>.
#6: Only works on <img> and CSS backgrounds, _not_ <canvas>.

Resources: MDN Web Docs - CSS Image rendering, HTML5Rocks article, Firefox bug #856337: Implement image-rendering: pixelated, Chrome bug #317991: Implement image-rendering:crisp-edges.
unoff62‒6441‒68710.0‒11.310‒TP7‒1112‒183.6‒6183
jsdocument.currentScript

document.currentScript returns the <script> element whose script is currently being processed.

Resources: Polyfill (IE 6-10 only).
ls4.4‒6429‒688‒11.38‒TP5.5‒1112‒184‒6183
jsURL API

API to retrieve the various parts that make up a given URL from a given URL string.

See also URLSearchParams.

Browser-specific notes:
#1: Allows objects to be created via URL constructor, but instances do not have the expected url properties.

Resources: MDN Web Docs - URL interface, MDN Web Docs - URL constructor.
ls4.4.3‒6432‒688‒11.37.1‒TP5.5‒1112‒1826‒6182
domKeyboardEvent.getModifierState()

KeyboardEvent method that returns the state (whether the key is pressed/locked or not) of the given modifier key.

Resources: MDN Web Docs - getModifierState, WebKit feature request bug.
wd4.4‒6430‒683.2‒10.210.3‒11.33.110.1‒TP5.59‒1815‒6182
jsES6 Number

Extensions to the Number built-in object in ES6, including constant properties EPSILON, MIN_SAFE_INTEGER, and MAX_SAFE_INTEGER, and methods isFinite, isInteger, isSafeInteger, and isNaN.

Browser-specific notes:
#1: Partial refers to only supporting the isFinite, isInteger, and isNaN methods.
#2: Partial refers to supporting the same as #1 and the addition of the EPSILON property.
#3: Partial refers to supporting all new features except the isSafeInteger method.
#4: Partial refers to only supporting the isFinite and isNaN methods.

Resources: New number and Math features in ES6.
other62‒6434‒689.0‒11.39‒TP5.5‒1112‒1832‒6182
cssCSS :read-only and :read-write selectors

:read-only and :read-write pseudo-classes to match elements which are considered user-alterable.

Browser-specific notes:
#1: Supports selector only for input and textarea fields, but not for contenteditable.

Resources: CSS Tricks article, MDN :read-only, MDN Web Docs - CSS :read-write, Selectors Level 4 § The Mutability Pseudo-classes: :read-only and :read-write, Firefox feature request bug.
ls62‒6436‒689.0‒11.39‒TP5.5‒1113‒183‒6182
css3CSS Feature Queries

CSS Feature Queries allow authors to condition rules based on whether particular property declarations are supported in CSS using the @supports at rule.

See also the CSS.supports() DOM API.

Resources: MDN Web Docs - CSS @supports, @supports in Firefox, Test case, WebPlatform Docs.
cr4.4‒6428‒689.0‒11.39‒TP5.5‒1112‒1822‒6182
domCSS.supports() API

The CSS.supports() static methods returns a Boolean value indicating if the browser supports a given CSS feature, or not.

See also @supports in CSS.

Browser-specific notes:
#1: Partial support in Presto-based Opera browsers refers to using an older API (window.supportsCSS).

Resources: MDN Web Docs - CSS supports(), Demo (Chinese), Native CSS Feature Detection via the @supports Rule, CSS @supports, Article (Chinese).
cr4.4‒6428‒689.0‒11.39‒TP5.5‒1112‒1823‒6182
jsUser Timing API

Method to help web developers measure the performance of their applications by giving them access to high precision timestamps.

Resources: SitePoint article, HTML5Rocks article, Polyfill, Demo, UserTiming.js polyfill.
rec4.4‒6425‒683.2‒10.211.0‒11.33.111‒TP5.510‒1838‒6182
html5Details & Summary elements

The <details> element generates a simple no-JavaScript widget to show/hide element contents, optionally by clicking on its child <summary> element.

Browser-specific notes:
#1: Enabled in Firefox through the dom.details_element.enabled flag.
#2: 'toggle' event is not supported.
#3: <summary> is not keyboard accessible.

Resources: jQuery fallback script, Fallback script, HTML5 Doctor article, has.js test, WebPlatform Docs, Bug on Firefox support, Details Element Polyfill.
ls4‒6436‒686.0‒11.3610.1‒TP69‒1849‒6182
jsString.prototype.includes

The includes() method determines whether one string may be found within another string, returning true or false as appropriate.

Resources: MDN: String.prototype.includes().
other62‒6441‒689.0‒11.39‒TP5.5‒1112‒1840‒6182
html5Srcset and sizes attributes

The srcset and sizes attributes on img (or source) elements allow authors to define various image resources and "hints" that assist a user agent to determine the most appropriate image source to display (e.g. high-resolution displays, small monitors, etc).

Browser-specific notes:
#1: Can be enabled in Firefox by setting the about:config preference dom.image.srcset.enabled to true.
#2: Supports the subset of the syntax for resolution switching (using the x descriptor), but not the full syntax that can be used with sizes (using the w descriptor).
#3: Intermittently displays distorted images due to bug present (see known issues).

Resources: Improved support for high-resolution displays with the srcset image attribute, Blog post on srcset & sizes, MDN: Responsive images, MDN: <img> element.
ls62‒6438‒689.0‒11.39‒TP5.5‒1116‒1838‒6181
cssCSS widows & orphans

CSS properties to control when lines break across pages or columns by defining the amount of lines that must be left before or after the break.

Some older WebKit-based browsers recognize the properties, but do not appear to have actual support.

Browser-specific notes:
#1: Supports widows & orphans properties, but due to not supporting CSS multi-columns the support is only for page breaks (for print).

Resources: CSS last-line: Controlling Widows & Orphans, Firefox support bug, codrops article on orphans, codrops article on widows.
rec4.4‒6425‒687.0‒11.37‒TP5.510‒182‒6181
jsES6 classes

ES6 classes are syntactical sugar to provide a much simpler and clearer syntax to create objects and deal with inheritance.

Browser-specific notes:
#1: Requires strict mode. Non-strict mode support is behind the flag 'Enable Experimental JavaScript', disabled by default.

Resources: MDN Web Docs - ES6 classes, Sitepoint deep dive on ES6 classes, List of resources critical of ES6 classes.
other62‒6449‒689.0‒11.39‒TP5.5‒1112‒1845‒6181
domElement.closest()

DOM method that returns the current element if it matches the given selector, or else the closest ancestor element that matches the given selector, or else null.

Resources: MDN Web Docs - closest, Polyfill, Microsoft Edge feature request on UserVoice.
ls62‒6441‒689.0‒11.39‒TP5.5‒1115‒1835‒6181
jsArray.prototype.includes

Determines whether or not an array includes the given value, returning a boolean value (unlike indexOf).

Resources: MDN Web Docs.
other62‒6447‒689.0‒11.39‒TP5.5‒1114‒1843‒6181
css:indeterminate CSS pseudo-class

The :indeterminate pseudo-class matches indeterminate checkboxes, indeterminate <progress> bars, and radio buttons with no checked button in their radio button group.

Browser-specific notes:
#1: Doesn't match radio buttons whose radio button group lacks a checked radio button.
#2: Doesn't support the <progress> element.
#3: Doesn't match indeterminate <progress> bars.

Resources: HTML specification for `:indeterminate`, MDN Web Docs - CSS :indeterminate, EdgeHTML issue 7124038 - `:indeterminate` pseudo-class doesn't match radio buttons, Mozilla Bug 885359 - Radio groups without a selected radio button should have `:indeterminate` applying, WebKit Bug 156270 - `:indeterminate` pseudo-class should match radios whose group has no checked radio, JS Bin testcase.
unoff62‒6439‒687.0‒10.210.3‒11.36.110.1‒TP5.510‒1851‒6181
domdocument.scrollingElement

document.scrollingElement refers to the element that scrolls the document.

Resources: Polyfill, MDN on scrollingElement.
wd62‒6444‒689.0‒11.39‒TP5.5‒1114‒1848‒6181
cssCSS Filter Effects

Method of applying filter effects (like blur, grayscale, brightness, contrast and hue) to elements, previously only possible by using SVG.

Note that this property is significantly different from and incompatible with Microsoft's older "filter" property.

Browser-specific notes:
#1: Supported in Firefox under the layout.css.filters.enabled flag.
#2: Supported in MS Edge under the "Enable CSS filter property" flag.
#3: Partial support in Firefox before version 34 only implemented the url() function of the filter property.
#4: Partial support refers to supporting filter functions, but not the url function.

Resources: Demo file for WebKit browsers, HTML5Rocks article, Filter editor, Filter Playground.
wd62‒641853‒6869.3‒11.39.1‒TP5.5‒1113‒1835‒6181
jsES6 Template Literals (Template Strings)

Template literals are string literals allowing embedded expressions. You can use multi-line strings and string interpolation features with them. Formerly known as template strings.

Resources: MDN Web Docs - Template literals, ES6 Template Literals in Depth.
other62‒6441‒689.0‒11.39.1‒TP5.5‒1113‒1834‒6181
jsDocument.execCommand()

Allows running commands to manipulate the contents of an editable region in a document switched to designMode.

To determine what commands are supported, see Document.queryCommandSupported().

Resources: MDN Web Docs - execCommand, execCommand and queryCommandSupported demo.
unoff2.1644‒687.0‒11.36‒TP5.5‒189‒6181
cssImproved kerning pairs & ligatures

Currently non-standard method of improving kerning pairs & ligatures using text-rendering: optimizeLegibility.

Browser-specific notes:
#1: Partial support in Android browser versions is due to a serious bug where text-rendering: optimizeLegibility causes custom web fonts to not render.

Resources: MDN Web Docs - CSS text-rendering, CSS Tricks article.
unoff4.4‒644‒684.2‒11.35‒TP5.5‒183‒6181
domHTML templates

Method of declaring a portion of reusable markup that is parsed but not rendered until cloned.

Browser-specific notes:
#1: Does not support Document.importNode on templates, nested templates or elements that contain templates.
#2: Does not support Node.cloneNode on templates, nested templates or elements that contain templates.
#3: Safari 6.2 has the same partial support as Safari 7.1.

Resources: HTML5Rocks - HTML's New template Tag, Polymer project (polyfill & web components framework), Polyfill script.
ls4.4‒6435‒689.0‒11.39‒TP5.5‒1113‒1822‒6181
jsResource Timing

Method to help web developers to collect complete timing information related to resources on a document.

Browser-specific notes:
#1: Can be enabled in Firefox using the dom.enable_resource_timing flag.
#2: Partial support in Safari refers to being limited to OSX 10.12+.

Resources: Demo, Blog post, SitePoint article.
cr4.4‒6425‒683.2‒10.211.0‒11.33.11111.15.510‒1835‒6181
html5tabindex global attribute

Specifies the focusability of the element and in what order (if any) it should become focused (relative to other elements) when "tabbing" through the document.

Mac OS X "Full Keyboard Access" refers to setting Keyboard→Shortcuts→Full Keyboard Access to "All controls" in the System Preferences.

"Unknown" support for mobile browsers is due to lacking a method of tabbing through fields.

Browser-specific notes:
#1: On Mac OS X, unless Full Keyboard Access is enabled, <a> elements are not keyboard-focusable, even if they have tabindex="0".
#2: <a> elements are never keyboard-focusable, even if they have tabindex="0". Unless Full Keyboard Access is enabled, then <button>s, radio buttons, and checkboxes are also not keyboard-focusable, even if they have tabindex="0".
#3: Has "previous" and "next" virtual keyboard buttons that follow tabindex order.

Resources: MDN Web Docs - tabindex attribute.
ls2.16415‒683.2‒11.35.1‒TP7‒184‒6181
css::placeholder CSS pseudo-element

The ::placeholder pseudo-element represents placeholder text in an input field: text that represents the input and provides a hint to the user on how to fill out the form. For example, a date-input field might have the placeholder text YYYY/MM/DD to clarify that numeric dates are to be entered in year-month-day order.

Partial support refers to using alternate names:.
::-webkit-input-placeholder for Chrome/Safari/Opera (Chrome issue #623345).
:-ms-input-placeholder for IE.
::-ms-input-placeholder for Edge (also supports webkit prefix).

Browser-specific notes:
#1: Firefox 18 and below supported the :-moz-placeholder pseudo-class rather than the ::-moz-placeholder pseudo-element.

Resources: MSDN article, CSS-Tricks article with all prefixes, CSSWG discussion, MDN Web Docs - CSS ::-moz-placeholder, Mozilla Bug 1069012 - unprefix :placeholder-shown pseudo-class and ::placeholder pseudo-element, MDN web docs - ::placeholder.
wd62‒64457‒684.2‒10.210.3‒11.3510.1‒TP5.510‒1851‒6181
jsServer-sent events

Method of continuously sending data from a server to the browser, rather than repeatedly requesting it (EventSource interface, used to fall under HTML5).

Resources: HTML5 Rocks tutorial, Blog post with demo, has.js test, Polyfill.
ls4.4‒646‒684.0‒11.35‒TP5.5‒186‒6181
html5Reversed attribute of ordered lists

This attribute makes an ordered list number its items in descending order (large to small), instead of ascending order (small to large; the default). The order that the list items are displayed in is not affected.

Resources: HTML5 Doctor article on <ol> element attributes (including reversed), Microsoft Edge feature request on UserVoice.
ls4.4‒6420‒686.0‒11.36.1‒TP5.5‒1818‒6180
jsWeb Audio API

High-level JavaScript API for processing and synthesizing audio.

Not all browsers with support for the Audio API also support media streams (e.g. microphone input). See the getUserMedia/Streams API data for support for that feature.

Firefox versions < 25 support an alternative, deprecated audio API.

Chrome support went through some changes as of version 36.

Resources: Polyfill to support Web Audio API in Firefox, WebPlatform Docs, Additional browser compatibility tests for specific features, Polyfill to enable Web Audio API through Firefox Audio Data api or flash, MDN Web Docs - Web Audio API.
wd62‒6434‒686.0‒11.36‒TP5.5‒1112‒1825‒6180
jsProxy object

The Proxy object allows custom behavior to be defined for fundamental operations. Useful for logging, profiling, object visualization, etc.

Resources: ECMAScript 6 Proxies, MDN Web Docs - Proxy, Experimenting with ECMAScript 6 proxies, Meta programming with ECMAScript 6 proxies, Polyfill for Proxies.
other62‒6449‒683.210.0‒11.310‒TP5.5‒1112‒1818‒6180
otherES6 Generators

ES6 Generators are special functions that can be used to control the iteration behavior of a loop. Generators are defined using a function* declaration.

Resources: Exploring JS chapter on generators, MDN article on the `function*` declaration.
other62‒6439‒683.210.0‒11.310‒TP5.5‒1113‒1826‒6180
cssCSS unset value

A CSS value that's the same as "inherit" if a property is inherited or "initial" if a property is not inherited.

Resources: MDN Web Docs - CSS unset, Resetting styles using `all: unset`, WebKit bug 148614: Add support for the `unset` CSS property value.
cr62‒6441‒683.29.3‒11.39.1‒TP5.5‒1113‒1827‒6180
domPicture element

A responsive images method to control which image resource a user agent presents to a user, based on resolution, media query and/or support for a particular image format.

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.
#2: Enabled in Opera through the "experimental Web Platform features" flag in opera://flags.
#3: Enabled in Firefox by setting the about:config preference dom.image.picture.enable to true.

Resources: Demo, Tutorial, Read about the use cases, General information about Responsive Images, Blog post on usage, HTML5 Rocks tutorial, Picturefill - polyfill for picture, srcset, sizes, and more.
ls62‒6438‒683.29.3‒11.39.1‒TP5.5‒1113‒1838‒6180
jsArrow functions

Function shorthand using => syntax and lexical this binding.

Resources: ECMAScript 6 features: Arrows, MDN Web Docs - Arrow functions.
other62‒6445‒683.210.0‒11.310‒TP5.5‒1112‒1822‒6180
jsRest parameters

Allows representation of an indefinite number of arguments as an array.

Browser-specific notes:
#1: Requires the "Experimental JavaScript features" flag to be enabled.

Resources: Rest parameters and defaults.
other62‒6447‒683.210.0‒11.310‒TP5.5‒1112‒1815‒6180
css3CSS3 object-fit/object-position

Method of specifying how an object (image or video) should fit inside its box. object-fit options include "contain" (fit according to aspect ratio), "fill" (stretches object to fill) and "cover" (overflows box but maintains ratio), where object-position allows the object to be repositioned like background-image does.

Browser-specific notes:
#1: Partial support in Safari refers to support for object-fit but not object-position.
#2: Partial support in Edge refers to object-fit only supporting <img> (see this comment).

Resources: Dev.Opera article, WebPlatform Docs, object-fit-images Polyfill for IE & Edge, MDN.
cr4.4.3‒6431‒68810.0‒11.310‒TP5.5‒1116‒1836‒6180
css3CSS Variables (Custom Properties)

Permits the declaration and usage of cascading variables in stylesheets.

Browser-specific notes:
#1: Enabled through the "Experimental Web Platform features" flag in chrome://flags.
#2: Partial support is due to bugs present (see known issues).

Resources: Mozilla hacks article (older syntax), MDN Web Docs - Using CSS variables, Edge Dev Blog post.
cr62‒6449‒683.29.3‒11.39.1‒TP5.5‒1116‒1831‒6180
domTouch events

Method of registering when, where and how the interface is touched, for devices with a touch screen. These DOM events are similar to mousedown, mousemove, etc.

Internet Explorer implements Pointer Events specification which supports more input devices than Touch Events one.

There is a library on GitHub that is working toward bringing W3C touch events to IE 10 and 11: https://github.com/CamHenlin/TouchPolyfill.

Removed support in Firefox refers to desktop Firefox only.

Browser-specific notes:
#1: Can be enabled in Firefox using the dom.w3c_touch_events.enabled flag (disabled by default for site compatibility reasons).
#2: Supported on IE11 Mobile for phones with "Windows Phone 8.1 Update".
#3: Can be enabled in Edge using the "Enable touch events" flag under about:flags.

Resources: Detailed support tables, Multi-touch demo, Information on the spec development, Internet Explorer's gesture and touch implementation., Touch polyfill for supporting touch events on Internet Explorer, MDN – Touch events.
rec2.1‒6422‒683.2‒11.33.1‒TP5.51012‒1818‒6180
otherWOFF 2.0 - Web Open Font Format

TrueType/OpenType font that provides better compression than WOFF 1.0.

Browser-specific notes:
#1: Supported only on Safari for Mac OS Sierra, not El Capitan & older.

Resources: Basics about WOFF 2.0, WOFF 2.0 converter.
Parent feature: @font-face Web fonts.
cr62‒6436‒683.210.0‒11.310‒TP5.5‒1114‒1839‒6179
css:placeholder-shown CSS pseudo-class

Input elements can sometimes show placeholder text as a hint to the user on what to type in. See, for example, the placeholder attribute in HTML5. The :placeholder-shown pseudo-class matches an input element that is showing such placeholder text.

For support of styling the actual placeholder text itself, see CSS ::placeholder.

Resources: WebKit commit, Firefox bug, Microsoft Edge feature request on UserVoice.
wd62‒6447‒689.0‒11.39‒TP5.5‒1851‒6179
jsSelection API

API for accessing selected content of a document, including the window.getSelection() method, as well as the selectstart & selectionchange events on document.

See also support for the related DOM range.

Browser-specific notes:
#1: Supports window.getSelection() but no selection events.
#2: Supports selection events, but not window.getSelection().
#3: Does not support the selectstart event.
#4: window.getSelection() may fail on tapping buttons, as the selection is lost right before the listener code runs.
#5: Selection events are supported behind the dom.select_events.enabled flag.

Resources: Firefox support bug.
wd4.4‒6415‒685.0‒11.35.1‒TP69‒1852‒6179
jsObject.values method

The Object.values() method returns an array of a given object's own enumerable property values.

Resources: Object.values() on MDN Web Docs, Polyfill.
other62‒64454‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1112‒1847‒6179
cssCSS Grid Layout

Method of using a grid concept to lay out content, providing a mechanism for authors to divide available space for layout into columns and rows using a set of predictable sizing behaviors. Includes support for all grid-* properties and the fr unit.

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.
#2: Partial support in IE refers to supporting an older version of the specification.
#3: Enabled in Firefox through the layout.css.grid.enabled flag.
#4: There are some bugs with overflow (1356820, 1348857, 1350925).
#5: Enabled in Edge through the "Enable Unprefixed CSS Grid Layout" flag in about:flags.

Resources: IE Blog post, WebKit (Chrome, Safari, etc.) feature request, Mozilla (Firefox) feature request, Polyfill based on old spec, Polyfill based on new spec, WebKit Blog post, Css Grid By Example: Everything you need to learn CSS Grid Layout, Mozilla: Introduction to CSS Grid Layout.
cr62‒642958‒686.0‒10.210.3‒11.3610.1‒TP5.51016‒185254‒6179
domPassive event listeners

Event listeners created with the passive: true option cannot cancel (preventDefault()) the events they receive. Primarily intended to be used with touch events and wheel events. Since they cannot prevent scrolls, passive event listeners allow the browser to perform optimizations that result in smoother scrolling.

Resources: Improving scroll performance with passive event listeners - Google Developers Updates, Polyfill from the WICG, Original WICG EventListenerOptions repository, JS Bin testcase.
ls62‒64451‒683.210.0‒11.310‒TP5.5‒1116‒1849‒6178
dom"once" event listener option

Causes an event listener to be automatically removed after it gets invoked, so that it only gets invoked once. Similar to jQuery's $.one() feature.

Resources: Chromium Issue 615384: Support "once" event listener option, JS Bin testcase, MS Edge feature request on UserVoice.
ls62‒64455‒683.210.0‒11.310‒TP5.5‒1116‒1850‒6178
css:in-range and :out-of-range CSS pseudo-classes

If a temporal or number <input> has max and/or min attributes, then :in-range matches when the value is within the specified range and :out-of-range matches when the value is outside the specified range. If there are no range constraints, then neither pseudo-class matches.

Note that <input type="range"> can never match :out-of-range because the user cannot input such a value, and if the initial value is outside the range, the browser immediately clamps it to the minimum or maximum (as appropriate) bound of the range.

Browser-specific notes:
#1: Opera Mini correctly applies style on initial load, but does not correctly update when value is changed.
#2: :in-range also incorrectly matches temporal and number inputs which don't have min or max attributes. See Edge bug, Chrome bug, WebKit bug.
#3: :in-range and :out-of-range incorrectly match inputs which are disabled or readonly. See Edge bug, Mozilla bug, WebKit bug, Chrome bug.

Resources: MDN Web Docs - CSS :out-of-range, WHATWG HTML specification for `:in-range` and `:out-of-range`.
wd62‒641553‒685.0‒10.210.3‒11.35.110.1‒TP5.5‒1113‒1850‒6178
html5meter elementls4.4‒648‒683.2‒10.210.3‒11.36‒TP5.5‒1113‒1816‒6178
cssCSS all propertycr4.4.3‒6437‒683.29.3‒11.39.1‒TP5.5‒1827‒6178
cssCSS will-change property

Method of optimizing animations by informing the browser which elements will change and what properties will change.

Browser-specific notes:
#1: Supported in Firefox behind the layout.css.will-change.enabled flag.

Resources: Detailed article, Blog post, MDN Web Docs - will-change.
wd62‒6436‒683.29.3‒11.39.1‒TP5.5‒1836‒6178
css3CSS Font Loading

This CSS module defines a scripting interface to font faces in CSS, allowing font faces to be easily created and loaded from script. It also provides methods to track the loading status of an individual font, or of all the fonts on an entire page.

Browser-specific notes:
#1: Can be enabled in Firefox using the layout.css.font-loading-api.enabled flag. Enabled by default in Firefox 41. See this bug.

Resources: Optimizing with font load events, Microsoft Edge feature request on UserVoice.
wd62‒6435‒683.210.0‒11.310‒TP5.5‒1841‒6178
css3CSS3 font-kerning

Controls the usage of the kerning information (spacing between letters) stored in the font. Note that this only affects OpenType fonts with kerning information, it has no effect on other fonts.

Browsers with support for font feature settings can also set kerning value.

Browser-specific notes:
#1: Disabled by default, can be enabled using preference layout.css.font-features.enabled - defaulting to true on Nightly and Aurora only.

Resources: MDN Web Docs - CSS font-kerning.
cr4.4.3‒6433‒688‒11.39.1‒TP5.5‒1834‒6178
jsnavigator.hardwareConcurrency

Returns the number of logical cores of the user's CPU. The value may be reduced to prevent device fingerprinting or because it exceeds the allowed number of simultaneous web workers.

Browser-specific notes:
#1: WebKit browsers clamp the maximum value returned to 2 on iOS devices and 8 on all others. Disabled in Safari behind the ENABLE_NAVIGATOR_HWCONCURRENCY build option.

Resources: MDN Web Docs - navigator.hardwareConcurrency, Original Proposal, WebKit implementation bug.
ls62‒6437‒688‒10.210.3‒11.3810.1‒TP5.5‒1115‒1848‒6177
css:default CSS pseudo-class

The :default pseudo-class matches checkboxes and radio buttons which are checked by default, <option>s with the selected attribute, and the default submit button (if any) of a form.

Whether <option selected> matches :default (per the spec) was not tested since <select>s and <option>s are generally not styleable, which makes it hard to formulate a test for this.

Browser-specific notes:
#1: Does not match <input type="checkbox" checked> or <input type="radio" checked>.
#2: Does not match the default submit button of a form.

Resources: HTML specification for `:default`, MDN Web Docs - CSS :default, MS Edge feature request on UserVoice, JS Bin testcase, WebKit bug 156230 - `:default` CSS pseudo-class should match checkboxes+radios with a `checked` attribute.
unoff62‒641551‒687.0‒10.210.3‒11.35.110.1‒TP5.5‒184‒6177
html5progress element

Method of indicating a progress state.

Browser-specific notes:
#1: iOS Safari does not support "indeterminate" <progress> elements.

Resources: CSS-Tricks article, MDN Web Docs - Element progress, Dev.Opera article, Examples of progress and meter elements.
Parent feature: HTML5 form features.
ls4.4‒648‒687.0‒11.36‒TP5.510‒186‒6177
cssCSS text-orientation

The CSS text-orientation property specifies the orientation of text within a line. Current values only have an effect in vertical typographic modes (defined with the writing-mode property).

Resources: CSS text-orientation on MDN.
cr62‒6448‒683.210.0‒11.31010.1‒TP5.5‒1851‒6177
securityContent Security Policy Level 2

Mitigate cross-site scripting attacks by whitelisting allowed sources of script, style, and other resources. CSP 2 adds hash-source, nonce-source, and five new directives.

Browser-specific notes:
#1: Firefox 31-34 is missing the plugin-types, child-src, frame-ancestors, base-uri, and form-action directives.
#2: Firefox 35 is missing the plugin-types, child-src, frame-ancestors, and form-action directives.
#3: Firefox 36-44 is missing the plugin-types and child-src directives.
#4: Chrome 36-38 & Opera 23-25 are missing the plugin-types, child-src, frame-ancestors, base-uri, and form-action directives.
#5: Chrome 39 and Opera 26 are missing the plugin-types, child-src, base-uri, and form-action directives.
#6: Firefox 38 on Android is missing the child-src directive.
#7: Firefox 45+ is missing the plugin-types directive.

Resources: HTML5Rocks article, MDN Web Docs - Content Security Policy.
cr62‒6440‒683.210.0‒11.310‒TP5.5‒1115‒1845‒6177
domDOM manipulation convenience methods

jQuery-like methods on DOM nodes to insert nodes around or within a node, or to replace one node with another. These methods accept any number of DOM nodes or HTML strings as arguments. Includes: ChildNode.before, ChildNode.after, ChildNode.replaceWith, ParentNode.prepend, and ParentNode.append.

Browser-specific notes:
#1: Enabled through the "Enable Experimental Web Platform Features" flag in chrome://flags.

Resources: WHATWG DOM Specification for ChildNode, WHATWG DOM Specification for ParentNode, JS Bin testcase, MDN Web Docs - ParentNode, MDN Web Docs - ChildNode, MS Edge feature request on UserVoice, DOM4 polyfill.
ls62‒64454‒683.210.0‒11.310‒TP5.5‒161749‒6177
jsWebRTC Peer-to-peer connections

Method of allowing two users to communicate directly, browser to browser using the RTCPeerConnection API.

Microsoft also offers a compatible implementation known as ObjectRTC. See Object RTC for support details for that API.

Browser-specific notes:
#1: BlackBerry 10 recognizes RTCPeerConnection but real support is unconfirmed.
#2: Can be enabled via the "Enable WebRTC 1.0" flag.

Resources: WebRTC Project site, Plug-in for support in IE & Safari, Prototype implementation for ORTC, Introducing WebRTC 1.0 and interoperable real-time communications in Microsoft Edge.
wd62‒642356‒683.2‒10.211.0‒11.33.111‒TP5.5‒1115‒1844‒6176
jsFetch

A modern replacement for XMLHttpRequest.

Browser-specific notes:
#1: Partial support can be enabled in Firefox with the dom.fetch.enabled flag.
#2: Only available in Chrome and Opera within ServiceWorkers.
#3: Available in Chrome and Opera within Window and Workers by enabling the "Experimental Web Platform Features" flag in chrome://flags.
#4: Firefox <40 is not completely conforming to the specs and does not respect the <base> tag for relative URIs in fetch requests. https://bugzilla.mozilla.org/show_bug.cgi?id=1161625.
#5: Appears to exist in Safari Technology Preview but does not work in current build. Should work in next preview build.
#6: Can be enabled in about:flags.

Resources: Polyfill, Demo.
ls62‒6442‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1114‒1840‒6176
jsgetUserMedia/Stream API

Method of accessing external device data (such as a webcam video stream). Formerly this was envisioned as the <device> element.

As of Chrome 47, the getUserMedia API cannot be called from insecure origins.

Browser-specific notes:
#1: Blink-based (and some other) browsers support an older version of the spec that does not use srcObject. See Chromium issue 387740.
#2: Supports the older spec's navigator.getUserMedia API, not the newer navigator.mediaDevices.getUserMedia one.

Resources: Technology preview from Opera, WebPlatform Docs, Media Capture functionality in Microsoft Edge.
cr62‒642153‒683.2‒10.211.0‒11.33.111‒TP5.5‒1112‒1842‒6176
otherBrotli Accept-Encoding/Content-Encoding

More effective lossless compression algorithm than gzip and deflate.

Browser-specific notes:
#1: Supported in Chrome and Opera behind the 'Brotli Content-Encoding' flag.
#2: Enabled since 27 May 2016.
#3: Support starting with macOS 10.13 High Sierra.

Resources: Introducing Brotli, Blink's intent to ship, Official code repository, WebKit Bug 154859: Add support for format brotli for HTTP compression.
other62644951‒683.2‒10.211.0‒11.33.111‒TP5.5‒1115‒1844‒6176
css#rrggbbaa hex color notation

The CSS Color Module Level 4 defines new 4 & 8 character hex notation for color to include the opacity level.

Support in Android WebView is currently disabled due to this issue.

Browser-specific notes:
#1: Can be enabled via the "Experimental web platform features" flag.

Resources: JS Bin testcase, Edge support request for rrggbbaa.
unoff62‒6445262‒683.210.0‒11.310‒TP5.5‒1849‒6175
cssCSS text-stroke and text-fill

Method of declaring the outline (stroke) width and color for text.

Does not yet appear in any W3C specification. Was briefly included in a spec as the "text-outline" property, but this was removed.

Browser-specific notes:
#1: Firefox & Edge specifically only support the -webkit-text-stroke property (not using -moz- or -ms- prefix).
#2: Requires the layout.css.prefixes.webkit flag to be enabled.

Resources: Information & workarounds, Live editor, MDN Web Docs - text-stroke.
unoff2.1‒644‒684.0‒11.33.111‒TP5.5‒1115‒1849‒6175
html5Ping attribute

When used on an anchor, this attribute signifies that the browser should a ping request the resource the attribute points to.

While still in the WHATWG specification, this feature was removed from the W3C HTML5 specification in 2010.

Browser-specific notes:
#1: Disabled by default for privacy reasons. Can be enabled via the browser.send_pings flag.

Resources: MDN Web Docs - Element ping attribute, UserVoice request for ping attribute.
ls4.4‒6415‒685.0‒11.36‒TP5.5‒16173‒6175
jsAsync functions

Async function make it possible to treat functions returning Promise objects as if they were synchronous.

Browser-specific notes:
#1: Since build 14342 - disabled by default; can be enabled through about:flags.
#2: Async functions are present in Firefox Nightly since 31th October 2016.

Resources: MDN Web Docs - Async functions, Async functions - making promises friendly.
other62‒64455‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1115‒1852‒6175
cssMedia Queries: interaction media features

Allows a media query to be set based on the presence and accuracy of the user's pointing device, and whether they have the ability to hover over elements on the page. This includes the pointer, any-pointer, hover, and any-hover media features.

Resources: Potential use cases for script, hover and pointer CSS Level 4 Media Features, Interaction Media Features and their potential (for incorrect assumptions), Polyfill for the `hover` media feature.
Parent feature: CSS3 Media Queries.
wd62‒6441‒689.0‒11.39‒TP5.5‒1112‒182‒6175
jsWeb SQL Database

Method of storing data client-side, allows SQLite database queries for access and manipulation.

The Web SQL Database specification is no longer being maintained and support may be dropped in future versions.

Resources: HTML5 Doctor article, has.js test.
unoff2.1‒644‒683.2‒11.33.1‒TP5.5‒182‒6175
otherWebAssembly

WebAssembly or "wasm" is a new portable, size- and load-time-efficient format suitable for compilation to the web.

Browser-specific notes:
#1: Can be enabled via the javascript.options.wasm in about:config.
#2: Can be enabled via the #enable-webassembly flag.
#3: Can be enabled via the Experimental JavaScript Features flag.
#4: Disabled for Firefox 52 ESR.

Resources: Official site, WebAssembly on MDN.
other62‒64457‒683.2‒10.211.0‒11.33.111‒TP5.5‒1116‒185253‒6174
domElement.scrollIntoViewIfNeeded()

If the element is fully within the visible area of the viewport, it does nothing. Otherwise, the element is scrolled into view. A proprietary variant of the standard Element.scrollIntoView() method.

Resources: Mozilla Bug 403510 - Implement scrollIntoViewIfNeeded, W3C CSSOM View bug #17152: Support centering an element when scrolling into view..
unoff2.3‒6415‒685.0‒11.35.1‒TP5.5‒182‒6174
jsTextEncoder & TextDecoder

TextEncoder encodes a JavaScript string into bytes using the UTF-8 encoding and returns the resulting Uint8Array of those bytes. TextDecoder does the reverse.

Browser-specific notes:
#1: Not available in Web Workers in Firefox 19.

Resources: MDN Web Docs - TextEncoder, Microsoft Edge feature request on UserVoice, WebKit Bug 160653 - Support TextEncoder & TextDecoder APIs.
ls62‒6438‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1820‒6174
otherFLAC audio format

Popular lossless audio compression format.

Support refers to this format's use in the audio element, not other conditions.

Browser-specific notes:
#1: HTMLMediaElement.canPlayType('audio/flac') returns an empty string.
#2: Only works on ChromeOS.
#3: Supported only on macOS High Sierra or later.

Resources: Wikipedia, Chrome support bug, Edge UserVoice request.
Parent feature: Audio element.
other62‒644756‒683.2‒10.211.0‒11.33.111‒TP5.5‒1116‒1851‒6174
jsURLSearchParams

The URLSearchParams interface defines utility methods to work with the query string of a URL.

Browser-specific notes:
#1: Partial support refers to only supporting entries(), keys(), values(), and for...of.

Resources: Easy URL manipulation with URLSearchParams, MDN Web Docs - URLSearchParams, Edge implementation bug.
ls62‒6449‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒161744‒6174
securityUpgrade Insecure Requests

Declare that browsers should transparently upgrade HTTP resources on a website to HTTPS.

The HTTP header is Content-Security-Policy: upgrade-insecure-requests. Alternatively, the HTML tag is <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">.

Resources: MDN Web Docs - Upgrade Insecure Requests, Demo Website, WebKit feature request bug.
cr62‒6443‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒161742‒6174
html5Minimum length attribute for input fields

Declares a lower bound on the number of characters a user can input.

The pattern attribute can be used as an alternative solution for browsers without support.

Resources: W3C usage example, Microsoft Edge feature request on UserVoice, Firefox tracking bug, WebKit feature request bug.
Parent feature: Form validation.
ls62‒6440‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒161751‒6174
domrel=noopener

Ensure new browsing contexts are opened without a useful window.opener.

Resources: Explainer, Gecko/Firefox issue, WebKit/Safari issue, Edge feature request.
ls62‒6449‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1852‒6174
css3CSS Shapes Level 1

Allows geometric shapes to be set in CSS to define an area for text to flow around. Includes properties shape-outside, shape-margin and shape-image-threshold.

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.
#2: Partially supported in Firefox by enabling "layout.css.shape-outside.enabled" in about:config.

Resources: A List Apart article, Firefox tracking bug.
cr62‒6437‒688‒10.210.3‒11.37.110.1‒TP5.5‒1851‒6174
cssMedia Queries: resolution feature

Allows a media query to be set based on the device pixels used per CSS unit. While the standard uses min/max-resolution for this, some browsers support the older non-standard device-pixel-ratio media query.

Browser-specific notes:
#1: Supports the dpi unit, but does not support dppx or dpcm units.
#2: Firefox before 16 supports only dpi unit, but you can set 2dppx per min--moz-device-pixel-ratio: 2.
#3: Supports the non-standard min/max-device-pixel-ratio.

Resources: How to unprefix -webkit-device-pixel-ratio, WebKit Bug 78087: Implement the 'resolution' media query, WHATWG Compatibility Standard: -webkit-device-pixel-ratio.
Parent feature: CSS3 Media Queries.
rec4.4‒6429‒684.0‒11.34‒TP5.5912‒1816‒6174
jsIndexedDB 2.0

Improvements to Indexed DB, including getAll(), renaming stores and indexes, and binary keys.

Browser-specific notes:
#1: Missing: IDBKeyRange includes(), renaming stores/indexes, binary keys, IDBObjectStore getKey(), IDBCursor continuePrimaryKey().
#2: Missing: Renaming stores/indexes, binary keys, IDBObjectStore getKey(), IDBCursor continuePrimaryKey().

Resources: Mozilla Hacks: What's new in IndexedDB 2.0?, MDN Web Docs - IndexedDB API.
cr62‒644858‒683.21010.3‒11.33.110.1‒TP5.5‒1851‒6173
cssCSS touch-action property

touch-action is a CSS property that controls filtering of gesture events, providing developers with a declarative mechanism to selectively disable touch scrolling (in one or both axes) or double-tap-zooming.

Browser-specific notes:
#1: Supported in Firefox behind the layout.css.touch_action.enabled flag, Firefox for Windows 8 Touch ('Metro') enabled by default.
#2: IE10+ has already supported these property which are not in standard at present such as double-tap-zoom, cross-slide-x, cross-slide-y.
#3: iOS Safari only supports auto and manipulation.
#4: Not applicable to Firefox platforms that support neither pointer nor touch events.

Resources: MSDN Docs, 300ms tap delay, gone away, What Exactly Is..... The 300ms Click Delay, What Exactly Is..... The 300ms Click Delay (Chinese), MDN Web Docs - CSS touch-action, WebKit bug 149854: Implement touch-action: manipulation; for iOS, WebKit bug 133112: touch-action CSS property support.
rec62‒6436‒683.29.3‒11.33.1‒TP5.511‒185257‒6173
securityChaCha20-Poly1305 cipher suites for TLS

A set of cipher suites used in Transport Layer Security (TLS) protocol, using ChaCha20 for symmetric encryption and Poly1305 for authentication.

Browser-specific notes:
#1: Old versions of Chrome use non-standard code points for ChaCha20-Poly1305 cipher suites.

Resources: Chrome article, SSL/TLS Capabilities of Your Browser by Qualys SSL Labs, Microsoft Edge feature request on UserVoice.
other62‒6449‒683.2‒10.211.0‒11.33.1‒TP5.5‒1847‒6173
jsSpeech Synthesis API

A web API for controlling a text-to-speech output.

Samsung Internet for GearVR: In Development, release based on Chromium m53 due Q1/2017.

Browser-specific notes:
#1: Can be enabled in Firefox using the media.webspeech.synth.enabled about:config flag.
#2: Speech Synthesis in Chrome since version 55 stops playback after about 15 seconds on Windows 7 & 10, and Ubuntu 14.04, possibly other platforms.

Resources: HTML5Rocks article, SitePoint article, Demo, Advanced demo and resource.
Parent feature: .
unoff2.1643355‒687.0‒11.37‒TP5.5‒1114‒1849‒6172
csssystem-ui value for font-family

Value for font-family that represents the default user interface font.

Browser-specific notes:
#1: Supported as the -apple-ui value (only on Mac).
#2: Supported as the 'BlinkMacSystemFont'  value (only on Mac).

Resources: Firefox support bug, MDN on the font-family property.
wd62‒64456‒689.0‒10.211.0‒11.39.111‒TP5.5‒1843‒6172
html5Multiple file selection

Allows users to select multiple files in the file picker.

Browser-specific notes:
#1: Not supported on Android 4.x and below, presumably an OS limitation. Only seems to work in Android 5.x for the Chrome browser.

Resources: Chrome bug (for Android), Article.
Parent feature: HTML5 form features.
ls2.1645‒686.0‒11.34‒TP5.510‒183.6‒6171
domautocomplete attribute: on & off values

The autocomplete attribute for input elements indicates to the browser whether a value should or should not be autofilled when appropriate.

This support information does not include support for other autocomplete values.

As described in detail below, many modern browsers ignore the off value on certain fields in certain cases intentionally in order to give the user more control over autofilling fields. One example is the use of password managers.

Browser-specific notes:
#1: Partial support refers to ignoring the off value for password fields. see related blog post.
#2: Partial support in Chrome refers to the browser intentionally ignoring autocomplete="off" when the user uses the browser's autofill functionality. see bug.
#3: Partial support in Firefox refers to ignoring autocomplete="off" for login forms. see bug.
#4: Browser does not display previously submitted values as options with on value.
#5: Safari ignores the off value for username, email and password fields.

Resources: MDN Web Docs - autocomplete attribute.
ls2.1‒6441‒685.0‒11.37‒TP5.511‒1830‒6171
cssCSS scrollbar styling

Non-standard methods of styling scrollbars.

Currently scrollbar styling doesn't appear to be on any standards track.

Browser-specific notes:
#1: Only supports styling scrollbar colors, no other properties to define the scrollbar's appearance.
#2: Supports scrollbar styling via CSS pseudo-properties.

Resources: Firefox support bug, Stackoverflow article discussiong cross-browser support, Tutorial for IE & WebKit/Blink browsers, "perfect-scrollbar" - Minimal custom scrollbar plugin, jQuery custom content scroller.
unoff2.3‒644‒687.0‒11.35.1‒TP5.5‒1112‒182‒6171
securityReferrer Policy

Allow control of HTTP referrers via the referrer meta tag.

Browser-specific notes:
#1: Supports an older draft of the specification with never, always, origin & default values.

#2: Chrome does not support same-origin, strict-origin, or strict-origin-when-cross-origin values (issue 627968).

Resources: Mozilla security article, A new security header: Referrer Policy.
wd62‒6421‒6061‒688‒11.37.1‒1111.15.511‒1836‒6170
domindeterminate checkbox

Indeterminate checkboxes are displayed in a state which is distinct both from being checked or being unchecked. They are commonly used in hierarchical checkboxes to indicate that only some of the checkbox's descendants are checked.

Indeterminacy does not affect a checkbox's checkedness state. It merely affects how the checkbox is displayed.

Resources: CSS-Tricks article, WebKit Bug 160484 - iOS doesn't support indeterminate checkboxes.
ls4.4‒6428‒683.2‒11.36‒TP6‒183.6‒6170
cssCSS background-attachment

Method of defining how a background image is attached to a scrollable element. Values include scroll (default), fixed and local.

Most mobile devices have a delay in updating the background position after scrolling a page with fixed backgrounds.

Browser-specific notes:
#1: Partial support refers to supporting fixed but not local.
#2: Partial support refers to supporting local but not fixed.
#3: Only supports local when -webkit-overflow-scrolling: touch is _not_ used.
#4: Does not support fixed, and due to a bug only supports local if a border-radius is set on the element.

Resources: MDN Web Docs - background-attachment.
cr2.1644‒685.0‒11.35‒TP5.59‒1825‒6169
cssCase-insensitive CSS attribute selectors

Including an i before the ] in a CSS attribute selector causes the attribute value to be matched in an ASCII-case-insensitive manner. For example, [b="xyz" i] would match both <a b="xyz"> and <a b="XYZ">.

Resources: MDN Web Docs - CSS case-insensitive, JS Bin testcase, MS Edge feature request on UserVoice.
unoff2.16449‒689.0‒11.39‒TP5.5‒1847‒6169
cssCSS Cross-Fade Function

Image function to create a "crossfade" between images. This allows one image to transition (fade) into another based on a percentage value.

Resources: Firefox bug #546052: Implement cross-fade().
unoff4.4‒6417‒68510.0‒11.310‒TP5.5‒182‒6168
cssCSS image-set

Method of letting the browser pick the most appropriate CSS background image from a given set, primarily for high PPI screens.

Browser-specific notes:
#1: Safari's implementation does not completely match the spec, in that only URLs are accepted for the image value and only 'x' is accepted as a resolution. See https://bugs.webkit.org/show_bug.cgi?id=160934.

Resources: Demo, Microsoft Edge feature request on UserVoice, Firefox feature request bug.
wd4.4‒6421‒68610.0‒11.310‒TP5.5‒182‒6168
pngAnimated PNG (APNG)

Like animated GIFs, but allowing 24-bit colors and alpha transparency.

Where support for APNG is missing, only the first frame is displayed.

Resources: Wikipedia, Polyfill using canvas, Chrome extension providing support, Microsoft Edge feature request on UserVoice (under review), Opera extension providing support, Chromium issue (fixed), MDN Web Docs - APNG.
unoff2.164459‒688‒11.38‒TP5.5‒183‒6168
cssBlending of HTML/SVG elements

Allows blending between arbitrary SVG and HTML elements.

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.
#2: Partial in Safari refers to not supporting the hue, saturation, color, and luminosity blend modes.

Resources: codepen example, Blog post.
cr62‒6441‒688‒11.37.1‒TP5.5‒1832‒6168
cssCSS background-blend-mode

Allows blending between CSS background images, gradients, and colors.

Browser-specific notes:
#1: Partial in Safari refers to not supporting the hue, saturation, color, and luminosity blend modes.
#2: Chrome 46 has some serious bugs with multiply, difference, and exclusion blend modes.

Resources: codepen example, Blog post, Demo.
cr62‒6435‒688‒11.37.1‒TP5.5‒1830‒6168
canvasPath2D

Allows path objects to be declared on 2D canvas surfaces.

Browser-specific notes:
#1: Does not support the addPath() method.

Resources: MDN article.
Parent feature: Canvas (basic support).
ls62‒6436‒6063‒689.0‒11.39.1‒TP5.5‒1114‒1848‒6168
css3CSS text-size-adjust

On mobile devices, the text-size-adjust CSS property allows Web authors to control if and how the text-inflating algorithm is applied to the textual content of the element it is applied to.

Browser-specific notes:
#1: If the viewport size is set using a <meta> element, the -ms-text-size-adjust property is ignored. See MSDN.
#2: Old versions of WebKit-based desktop browsers (Chrome<27, Safari<6) suffer from a bug where if -webkit-text-size-adjust is explicitly set to none, instead of ignoring the property, the browsers will prevent the user from zooming in or out on the webpage.

Resources: MDN Web Docs - text-size-adjust, Mozilla Bug #1226116: Unprefix -moz-text-size-adjust.
unoff62‒64454‒685.0‒11.33.1‒TP5.5‒182‒6167
html5Autofocus attribute

Allows a form field to be immediately focused on page load.

While not supported in iOS Safari, it does work in iOS WebViews.

Resources: Article on autofocus, MDN Web Docs - autofocus attribute.
ls3‒645‒683.2‒11.35‒TP5.510‒184‒6167
cssCSS Reflections

Method of displaying a reflection of an element.

Similar effect can be achieved in Firefox 4+ using the -moz-element() background property.

Resources: WebKit blog post, Microsoft Edge feature request on UserVoice.
unoff2.1‒644‒683.2‒11.34‒TP5.5‒182‒6167
css3CSS3 tab-size

Method of customizing the width of the tab character. Only effective using 'white-space: pre' or 'white-space: pre-wrap'.

Browser-specific notes:
#1: Partial refers to supporting <integer> but not <length> values.

Resources: MDN Web Docs - CSS tab-size, Microsoft Edge feature request on UserVoice.
wd62‒6442‒687.0‒11.36.1‒TP5.5‒18453‒6167
cssCSS line-clamp

Proprietary and undocumented CSS property that will contain text to a given amount of lines when used in combination with display: -webkit-box. It will end with ellipsis when text-overflow: ellipsis is included.

As there is no specification and the property is dependent on an outdated implementation of flexbox (hence display: -webkit-box) it is unlikely that other browsers will support the property as-is, although an alternative solution may at some point replace it.

Older (presto-based) versions of the Opera browser have also supported the same effect using the proprietary -o-ellipsis-lastline; value for text-overflow.

Resources: Article on cross-browser CSS line clamping, CSS Tricks article.
unoff2.3‒6414‒685.0‒11.35‒TP5.5‒182‒6167
domKeyboardEvent.key

A KeyboardEvent property whose value is a string identifying the key that was pressed. Covers character keys, non-character keys (e.g. arrow keys), and dead keys.

Browser-specific notes:
#1: Partial support refers to these versions of Firefox returning "MozPrintableKey" for all character keys.
#2: Has non-standard key identifiers and incorrect behaviour with AltGraph.

Resources: MDN Web Docs - key, Chrome tracking bug, WebKit feature request bug, Spec listing all key string values, Edge bug report, shim-keyboard-event-key: shim for non-standard key identifiers for IE & Edge.
wd2.164451‒683.2‒10.210.3‒11.33.110.1‒TP5.59‒1829‒6167
jsGamepad API

API to support input from USB gamepad controllers through JavaScript.

Browser-specific notes:
#1: Can be enabled via the "Experimental Features" developer menu.

Resources: Controller demo, MDN Web Docs - Gamepad, HTML5Rocks article, Detailed tutorial.
wd2.16425‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1112‒1829‒6167
domscrollIntoView

The Element.scrollIntoView() method scrolls the current element into the visible area of the browser window. Parameters can be provided to set the position inside the visible area as well as whether scrolling should be instant or smooth.

Browser-specific notes:
#1: Supports scrollIntoView with boolean parameter, but not smooth behavior option.

Resources: MDN Web Docs - scrollIntoView, smooth scroll polyfill : polyfill for smooth behavior option.
wd2.3644‒6061‒685.0‒11.35.1‒TP5.58‒1836‒6166
css::selection CSS pseudo-element

The ::selection CSS pseudo-element applies rules to the portion of a document that has been highlighted (e.g., selected with the mouse or another pointing device) by the user.

Resources: ::selection test, WebPlatform Docs, MDN web docs.
wd4.4‒644‒683.2‒11.33.1‒TP5.59‒182‒6166
html5Spellcheck attribute

Attribute for input/textarea fields to enable/disable the browser's spellchecker.

The partial support in mobile browsers results from their OS generally having built-in spell checking instead of using the wavy underline to indicate misspelled words. spellcheck="false" does not seem to have any effect in these browsers.

Browsers have different behavior in how they deal with spellchecking in combination with the the lang attribute. Generally spelling is based on the browser's language, not the language of the document.

Resources: MDN Web Docs - Controlling spell checking.
ls2.1‒649‒683.2‒11.35.1‒TP5.510‒182‒6166
html5Number input type

Form field type for numbers.

Browser-specific notes:
#1: UI widget does not include increment/decrement buttons.
#2: UI widget does not take the "step", "min" or "max" attributes into account.
#3: Firefox doesn't support autocomplete content via datalist elements.
#4: Does not include increment/decrement buttons, but does supports increment/decrement via arrow up & down keys.

Resources: Tutorial, Polyfill, has.js test, WebPlatform Docs, Poor browser support for localized decimal marks, commas.
Parent feature: HTML5 form features.
ls4‒646‒683.2‒11.35‒TP5.51014‒1829‒6166
cssCSS font-stretch

If a font has multiple types of variations based on the width of characters, the font-stretch property allows the appropriate one to be selected. The property in itself does not cause the browser to stretch to a font.

Resources: MDN Web Docs - font-stretch, CSS Tricks article.
cr62‒6448‒683.2‒11.33.111‒TP5.59‒189‒6165
html5Date and time input types

Form field widgets to easily allow users to enter a date, time or both, generally by using a calendar/time input widget. Refers to supporting the following input types: date, time, datetime-local, month & week.

There used to also be a datetime type, but it was dropped from the HTML spec.

Browser-specific notes:
#1: Partial support in Microsoft Edge refers to supporting date, week, and month input types, and not time and datetime-local.
#2: Partial support in iOS Safari refers to not supporting the week input type, nor the min, max or step attributes.
#3: Some modified versions of the Android 4.x browser do have support for date/time fields.
#4: Can be enabled in Firefox using the dom.forms.datetime flag.
#5: Partial support refers to supporting date and time input types, but not datetime-local, month or week.

Resources: Datepicker tutorial w/polyfill, Polyfill for HTML5 forms, has.js test, WebPlatform Docs, Bug on Firefox support.
Parent feature: HTML5 form features.
ls4.4‒6425‒685.0‒11.33.1‒TP5.5‒1113‒18257‒6165
css3Intrinsic & Extrinsic Sizing

Allows for the heights and widths to be specified in intrinsic values using the max-content, min-content, fit-content and stretch (formerly fill) properties.

Prefixes are on the values, not the property names (e.g. -webkit-min-content).

Older webkit browsers also support the unofficial intrinsic value which acts the same as max-content.

Browser-specific notes:
#1: Firefox does not support the height/min-height/max-height properties, only width. See test case, Firefox bug.
#2: Firefox currently supports the -moz-available property rather than -moz-stretch.
#3: Does not support the flex-basis property. See specs, Blink bug, Firefox bug.
#4: Chrome does not yet unprefix stretch (aka fill/fill-available), because the CSSWG is not ready for that yet. See Chromium bug.

Resources: Min-Content tutorial.
wd62‒6446‒689.0‒11.3911‒TP5.5‒183‒6165
domMedia Source Extensions

API allowing media data to be accessed from HTML video and audio elements.

Browser-specific notes:
#1: Requires the media.mediasource.enabled flag to be enabled, support is limited to a whitelist including the YouTube, Netflix, and Dailymotion websites.
#2: Partial support in IE11 refers to only working in Windows 8+.
#3: Due to compatibility issues, MediaSource Extensions are currently disabled by default in Samsung Internet.

Resources: MDN Web Docs - MediaSource, MSDN article, MediaSource demo.
cr4.4.3‒6431‒683.2‒11.38‒TP5.51112‒1842‒6163
svgSVG fragment identifiers

Method of displaying only a part of an SVG image by defining a view ID or view box dimensions as the file's fragment identifier.

Browser-specific notes:
#1: Partial support refers to support inside <img> but not as CSS background-image.

Resources: Blog post, WebKit support bug.
rec62‒643650‒683.2‒11.211.33.1‒1111.15.59‒1815‒6163
css:focus-within CSS pseudo-classunoff2.164460‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1852‒6162
css3CSS3 Border images

Method of using images for borders.

Note that both the border-style and border-width must be specified (not set to none or 0) for border-images to work.

Browser-specific notes:
#1: Has a bug where border-image incorrectly overrides border-style. See test case, WebKit bug, discussion.
#2: Partial support refers to not supporting border-image-repeat: space.
#3: Partial support refers to supporting the shorthand syntax, but not the individual properties (border-image-source, border-image-slice, etc).
#4: Partial support refers to not supporting border-image-repeat: round.

Resources: WebPlatform Docs, MDN Web Docs - Border image.
cr4.4643051‒6869.3‒11.39.1‒TP5.511‒1850‒6162
domPointer events

This specification integrates various inputs from mice, touchscreens, and pens, making separate implementations no longer necessary and authoring for cross-device pointers easier. Not to be mistaken with the unrelated "pointer-events" CSS property.

Firefox, starting with version 28, provides the 'dom.w3c_pointer_events.enabled' flag to support this specification.

Browser-specific notes:
#1: Partial support in IE10 refers the lack of pointerenter and pointerleave events.
#2: Firefox support is disabled by default and only supports mouse input. On Windows only, touch can be enabled with the layers.async-pan-zoom.enabled and dom.w3c_touch_events.enabled flags.
#3: Can be enabled with the #enable-pointer-events flag.

Resources: Implementation of Pointer Events in IE10, Hand.js, the polyfill for browsers only supporting Touch Events, Article & tutorial, Abstraction library for pointer events, PEP: Pointer Events Polyfill, Pointer Event API on MDN, Bugzilla@Mozilla: Bug 822898 - Implement pointer events.
rec62‒642255‒683.2‒11.36.1‒TP5.511‒1841‒5859‒6162
jsEncrypted Media Extensions

The EncryptedMediaExtenstions API provides interfaces for controlling the playback of content which is subject to a DRM scheme.

Browser-specific notes:
#1: Only supports the older event-based specification.

Resources: HTML5rocks article, Wikipedia article, Encrypted Media Extensions API on MDN.
pr62‒6442‒683.2‒11.37‒TP5.51112‒1838‒6161
css3CSS3 text-align-last

CSS property to describe how the last line of a block or a line right before a forced line break when text-align is justify.

Browser-specific notes:
#1: In Internet Explorer, the start and end values are not supported.
#2: Enabled through the "Enable Experimental Web Platform Features" flag in chrome://flags.
#3: Enabled through the "Enable Experimental Web Platform Features" flag in opera://flags.

Resources: MDN Web Docs - CSS text-align-last, Adobe Web Platform Article.
wd62‒6447‒683.2‒11.33.1‒TP5.5‒1112‒1849‒6161
html5Subresource Integrity

Subresource Integrity enables browsers to verify that file is delivered without unexpected manipulation.

Browser-specific notes:
#1: Can be enabled via the "Experimental Features" developer menu.

Resources: Subresource Integrity (MDN), SRI generation and browser support test, SRI hash webpage scanner, WebKit feature request bug.
rec62‒6445‒683.2‒10.211.0‒11.33.111‒TP5.5‒161743‒6161
html5Download attribute

When used on an anchor, this attribute signifies that the browser should download the resource the anchor points to rather than navigate to it.

Resources: HTML5Rocks post, Demo: creating a text file and downloading it., WebKit feature request bug.
ls4.4‒6414‒683.2‒11.33.110.1‒TP5.5‒1113‒1820‒6160
domShadow DOM v1

Method of establishing and maintaining functional boundaries between DOM trees and how these trees interact with each other within a document, thus enabling better functional encapsulation within the DOM & CSS.

Shadow DOM v0 was implemented in Chrome/Opera but other browser vendors are implementing v1.

Browser-specific notes:
#1: Certain CSS selectors do not work (:host > .local-child) and styling slotted content (::slotted) is buggy.
#2: Enabled through the "dom.webcomponents.enabled" preference in about:config.
#3: Enabled through the "dom.webcomponents.shadowdom.enabled" preference in about:config.

Resources: Safari implementation bug, Firefox implementation bug, Google Developers - Shadow DOM v1: self-contained web components.
wd62‒64453‒683.210.0‒11.310‒TP5.5‒182‒575859‒6160
otherWebM video format

Multimedia format designed to provide a royalty-free, high-quality open video compression format for use with HTML5 video. WebM supports the video codec VP8 and VP9.

Will work in IE9+ and Safari/MacOSX provided the user has the WebM codecs installed. Partial support indicates that at least one codec is supported but not all. MS Edge supports VP9 from MSE sources, also progressive sources are not supported by Edge.

Resources: Codec for IE9 support, Info on supporting WebM in Safari, Official website, has.js test, Perian :Mac OSX Webm Codec install.
Parent feature: Video element.
other62‒6425‒683.2‒11.33.2‒TP5.5914‒1828‒6159
css3CSS resize property

Method of allowing an element to be resized by the user, with options to limit to a given direction.

Browser-specific notes:
#1: Presto-based Opera 12.10+ currently only supports the resize property for textarea elements.

Resources: CSS Tricks info, On textarea resizing, Microsoft Edge feature request on UserVoice.
cr62‒644‒683.2‒11.34‒TP5.5‒185‒6159
css3CSS Hyphenation

Method of controlling when words at the end of lines should be hyphenated using the "hyphens" property.

Chrome < 55 and Android 4.0 Browser support "-webkit-hyphens: none", but not the "auto" property. It is advisable to set the @lang attribute on the HTML element to enable hyphenation support and improve accessibility.

Browser-specific notes:
#1: Only supported on Android & Mac platforms (and only the "auto" value) for now. See commit & related bug.

Resources: MDN Web Docs - CSS hyphens, Blog post, WebPlatform Docs, Chrome bug for implementing hyphenation.
wd62‒64455‒684.2‒11.35.1‒TP5.510‒1843‒6159
html5Drag and Drop

Method of easily dragging and dropping elements on a page, requiring minimal JavaScript.

dataTransfer.items only supported by Chrome.

Currently no browser supports the dropzone attribute.

Firefox supports any kind of DOM elements for .setDragImage. Chrome must have either an HTMLImageElement or any kind of DOM elements attached to the DOM and within the viewport of the browser for .setDragImage.

Browser-specific notes:
#1: Partial support refers to no support for the dataTransfer.files or .types objects.
#2: Partial support refers to not supporting .setDragImage.
#3: Partial support refers to limited supported formats for dataTransfer.setData/getData.

Resources: HTML5 Doctor article, Shopping cart demo, Demo with link blocks, WebPlatform Docs, Polyfill for setDragImage in IE, Implementing Native Drag and Drop, iOS/Android shim for HTML 5 drag'n'drop, Microsoft Edge setDragImage feature request on UserVoice.
ls2.1‒644‒683.2‒10.211.0‒11.33.1‒TP5.51012183.5‒6159
html5Color input type

Form field allowing the user to select a color.

Resources: Tutorial, Polyfill, WebPlatform Docs, Microsoft Edge feature request on UserVoice, MDN web docs, Tutorial.
Parent feature: HTML5 form features.
ls4.4‒6420‒683.2‒11.33.1‒11TP5.5‒1114‒1829‒6158
jsJavaScript modules via script tag

Loading JavaScript module scripts using <script type="module"> Includes support for the nomodule attribute.

Browser-specific notes:
#1: Support can be enabled via about:flags.
#2: Support can be enabled via about:config.
#3: Support can be enabled via the experimental-web-platform-features flag.
#4: Does not support the nomodule attribute.

Resources: Intro to ES6 modules, MS Edge blog post, Mozilla hacks article, Firefox support bug, Blog post: Native ECMAScript modules - the first overview, Counterpart ECMAScript specification for import/export syntax, Specification for nomodule attribute, Blog post on using nomodule.
ls2.16446061‒683.2‒10.211.0‒11.33.111‒TP5.5‒1116‒18254‒596058
jsBeacon API

Allows data to be sent asynchronously to a server with navigator.sendBeacon, even after a page was closed. Useful for posting analytics data the moment a user was finished using the page.

Resources: MDN Web Docs - Beacon.
wd62‒6439‒683.2‒11.211.33.1‒1111.15.5‒1114‒1831‒6158
domrelList (DOMTokenList)

Method of easily manipulating rel attribute values on elements, using the DOMTokenList object (similar to classList).

Browser-specific notes:
#1: Support for relList on link but not anchor elements.

Resources: MDN Web Docs - DOMTokenList, domtokenlist polyfill.
ls62‒64450‒6465‒689.0‒11.39‒TP5.5‒161830‒6157
html5HTML5 form features

Expanded form options, including things like date pickers, sliders, validation, placeholders and multiple file uploads. Previously known as "Web forms 2.0".

Resources: HTML5 inputs and attribute support page, Cross-browser JS implementation (based on original spec).
ls4.4‒644‒6061‒684.0‒11.34‒TP61016‒184‒6157
otherOgg Vorbis audio format

Vorbis is a free and open source audio format, most commonly used with the Ogg container.

Support refers to this format's use in the audio element, not other conditions.

Resources: Wikipedia article.
Parent feature: Audio element.
other2.3‒644‒683.2‒11.33.1‒TP5.5‒16173.5‒6157
html5accept attribute for file input

Allows a filter to be defined for what type of files a user may pick with from an <input type="file"> dialog.

Not supported means any file can be picked as if the accept attribute was not set, unless otherwise noted.

On Windows, files that do not apply are hidden. On OSX they are grayed out and disabled.

Browser-specific notes:
#1: Supports the type format (e.g. image/*) but not the extension format (e.g. .png).
#2: Offers appropriate file locations/input based on format type, but does not prevent other files from being selected.
#3: Does not allow any files to be picked at all.
#4: Supports the type format but does not allow any file to be picked when using the extension format.

Resources: Demo & information, Microsoft Edge feature request on UserVoice.
ls4.46426‒688‒11.36‒1111.15.51012‒1837‒6157
domCustom Elements v0wd4.4.3‒6433‒687.0‒11.36‒TP5.510‒1830‒5859‒6156
jsVibration API

Method to access the vibration mechanism of the hosting device.

Resources: MDN Web Docs - Vibration, Vibration API sample code & demo, Tuts+ article, Demo, Article and Usage Examples.
rec4.4‒6430‒683.2‒11.33.1‒TP5.5‒1816‒6156
domHTML Imports

Method of including and reusing HTML documents in other HTML documents.

Browser-specific notes:
#1: Firefox has no plans to support HTML imports though for now it can be enabled through the "dom.webcomponents.enabled" preference in about:config.
#2: Enabled through the "Enable HTML Imports" flag in chrome://flags.
#3: Enabled through the "Experimental Web Platform features" flag in chrome://flags.
#4: Enabled through the "Enable HTML Imports" flag in opera://flags.
#5: Enabled through the "Experimental Web Platform features" flag in opera://flags.

Resources: Polymer project (polyfill & web components framework), HTML5Rocks - HTML Imports: #include for the web, Chromium tracking bug: Implement HTML Imports, Firefox tracking bug: Implement HTML Imports, IE Web Platform Status and Roadmap: HTML Imports.
wd62‒6436‒687.0‒11.36‒TP5.510‒1832‒6156
domDOMMatrix

The DOMMatrix interface represents 4x4 matrices, suitable for 2D and 3D operations. Supersedes the WebKitCSSMatrix and SVGMatrix interfaces.

Browser-specific notes:
#1: Only supports the WebKitCSSMatrix version of the interface, not DOMMatrix.
#2: WebKitCSSMatrix#skewX, WebKitCSSMatrix#skewY are not supported.
#3: Only supports the DOMMatrix version of the interface, not WebKitCSSMatrix (support required by spec for legacy reasons).
#4: Only replaces WebkitCSSMatrix and not SVGMatrix.
#5: Does not support fromMatrix(), fromFloat32Array(), fromFloat64Array(), and toJSON() methods.

Resources: WebKitCSSMatrix API Reference, WebKitCSSMatrix in Compatibility Standard, MDN Web Docs - DOMMatrix, Chrome implementation bug.
cr62‒649‒6061‒685.0‒11.3511‒TP5.510‒1849‒6156
securityPublic Key Pinning

Declare that a website's HTTPS certificate should only be treated as valid if the public key is contained in a specified list to prevent MITM attacks that use valid CA-issued certificates.

The HTTP header syntax is 'Public-Key-Pins: pin-sha256="base64=="; max-age=expireTime [; includeSubdomains][; report-uri="reportURI"]'.

Resources: MDN Web Docs - Public Key Pinning.
other62‒6438‒683.2‒11.33.1‒TP5.5‒1835‒6156
css3text-emphasis styling

Method of using small symbols next to each glyph to emphasize a run of text, commonly used in East Asian languages. The text-emphasis shorthand, and its text-emphasis-style and text-emphasis-color longhands, can be used to apply marks to the text. The text-emphasis-position property, which inherits separately, allows setting the emphasis marks' position with respect to the text.

Some old WebKit browsers (like Chrome 24) support -webkit-text-emphasis, but does not support CJK languages and is therefore considered unsupported.

Browser-specific notes:
#1: Partial support refers to incorrect support for -webkit-text-emphasis-position. These browsers support over and under as values, but not the added left and right values required by the spec.
#2: Can be enabled in Firefox using the layout.css.text-emphasis.enabled flag.

Resources: A javascript fallback for CSS3 emphasis mark., Microsoft Edge feature request on UserVoice, MDN Web Docs - text-emphasis.
cr4.4‒6425‒687.0‒11.37.1‒TP5.5‒1846‒6155
domIntersectionObserver

API that can be used to understand the visibility and position of DOM elements relative to a containing element or to the top-level viewport. The position is delivered asynchronously and is useful for understanding the visibility of elements and implementing pre-loading and deferred loading of DOM content.

Browser-specific notes:
#1: Enabled in Firefox by setting the about:config preference dom.IntersectionObserver.enabled to true.
#2: "Preliminary" support as feature is still in development.
#3: isIntersecting property of IntersectionObserverEntry was not implemented, returning undefined.

Resources: MDN Web Docs - Intersection Observer, Polyfill, Google Developers article.
wd62‒64458‒683.2‒11.33.1‒TP5.5‒1116‒185255‒6155
jsrequestIdleCallback

API allowing the execution of JavaScript to be queued to run in idle browser time, either at the end of a frame or when the user is inactive. Also covers support for cancelIdleCallback. The API has similarities with requestAnimationFrame.

Browser-specific notes:
#1: Can be enabled via the dom.requestIdleCallback.enabled flag.

Resources: MDN Web Docs - requestIdleCallback, Google Developers article, Shim.
wd62‒6447‒683.2‒11.33.1‒TP5.5‒18255‒6154
jsBroadcastChannel

BroadcastChannel allows scripts from the same origin but other browsing contexts (windows, workers) to send each other messages.

Resources: MDN Web Docs - Broadcast Channel.
ls62‒64454‒683.2‒11.33.1‒TP5.5‒1838‒6154
html5Printing Events

Window fires beforeprint and afterprint events so the printed document can be annotated.

Due to its wider support, consider using window.matchMedia('print') where possible.

Resources: MDN Web Docs - Detecting print requests, Chrome support bug, Safari support bug.
rec2.1644‒6063‒683.2‒11.33.1‒TP6‒186‒6154
jsPointer Lock API

API that provides access to raw mouse movement data. This is done by ignoring boundaries resulting from screen edges where the cursor can't go beyond, providing proper control for first person or real time strategy games.

Resources: MDN Web Docs - Pointer Lock, Simple demo.
rec2.1‒6437‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1113‒1841‒6154
domKeyboardEvent.code

A KeyboardEvent property representing the physical key that was pressed, ignoring the keyboard layout and ignoring whether any modifier keys were active.

Browser-specific notes:
#1: Enabled in Chrome & Opera through the "experimental Web Platform features" flag.

Resources: MDN Web Docs - code, Chrome tracking bug, WebKit feature request bug.
wd2.16448‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒1838‒6154
domAuxclick

The click event for non-primary buttons of input devices.

With introduction of this feature there will be no longer click event fired for non-primary buttons.

Browser-specific notes:
#1: As a compatibility measure, Firefox continues to fire the click event for document and window level event handlers.

Resources: MDN Web Docs - auxclick, Firefox implementation, WebKit bug, Original Proposal, Microsoft Edge feature request on UserVoice.
wd62‒64455‒683.2‒11.33.1‒TP5.5‒18253‒6153
cssCSS caret-color

The caret-color property allows the color to be set of the caret (blinking text insertion pointer) in an editable text area.

Resources: Edge UserVoice request for caret-color, WebKit support bug, MDN article.
cr62‒64457‒683.2‒11.33.1‒1111.15.5‒18253‒6153
cssdisplay: flow-root

The element generates a block container box, and lays out its contents using flow layout. It always establishes a new block formatting context for its contents. It provides a better solution to the most use cases of the "clearfix" hack.

Resources: Mozilla bug report, Chromium bug report, WebKit bug report, Edge bug report, Blog post: "The end of the clearfix hack?".
wd62‒64458‒683.2‒11.33.1‒TP5.5‒18253‒6153
css:matches() CSS pseudo-class

The :matches() (formerly :any()) pseudo-class checks whether the element at its position in the outer selector matches any of the selectors in its selector list. It's useful syntactic sugar that allows you to avoid writing out all the combinations manually as separate selectors. The effect is similar to nesting in Sass and most other CSS preprocessors.

Most browsers support this spelled as a prefixed :-vendor-any() pseudo-class.

Browser-specific notes:
#1: Only supports the :-webkit-any() pseudo-class, which is deprecated due to handling specificity incorrectly.
#2: Also supports the :-webkit-any() pseudo-class, which is deprecated due to handling specificity incorrectly.
#3: Only supports the :-moz-any() pseudo-class.

Resources: MDN Web Docs - CSS :any, WebKit blog post about adding `:matches()` and other Selectors Level 4 features, Mozilla Bug 906353 - Add support for css4 selector :matches(), the standard of :-moz-any(), Microsoft Edge UserVoice feature request for :matches(), JS Bin testcase, Issue 568705: Chrome does not support :matches() selector.
wd4‒6415‒689.0‒11.39‒TP5.5‒184‒6152
securityX-Frame-Options HTTP header

An HTTP header which indicates whether the browser should allow the webpage to be displayed in a frame within another webpage. Used as a defense against clickjacking attacks.

Partial support refers to not supporting the ALLOW-FROM option.
The X-Frame-Options header has been obsoleted by the frame-ancestors directive from Content Security Policy Level 2.

Resources: X-Frame-Options Compatibility Test, MDN Web Docs - X-Frame-Options, OWASP Clickjacking Defense Cheat Sheet, Combating ClickJacking With X-Frame-Options - IEInternals, IE8 Security Part VII: ClickJacking Defenses - IEBlog.
other4‒6426‒687.0‒11.35.1‒TP5.58‒1818‒6152
domMedia Capture from DOM Elements API

API to capture Real-Time video and audio from a DOM element, such as a <video>, <audio>, or <canvas> element via the captureStream method, in the form of a MediaStream.

Browser-specific notes:
#1: Does not support capture from <video>/<audio>.
#2: Capture from <video>/<audio> can be enabled via the Experimental Web Platform Features flag.

Resources: MDN Web Docs - capture from <canvas>, MDN Web Docs - capture from <video>/<audio>, Google Developers article.
Parent feature: getUserMedia/Stream API.
wd62‒6445162‒683.2‒11.33.111‒TP5.5‒1843‒6151
jsService Workers

Method that enables applications to take advantage of persistent background processing, including hooks to enable bootstrapping of web applications while offline.

Details on partial support can be found on is ServiceWorker Ready?.

Browser-specific notes:
#1: Partial support can be enabled in Firefox with the dom.serviceWorkers.enabled flag.
#2: Available behind the "Enable service workers" flag.
#3: Disabled on Firefox ESR, but can be re-enabled with the dom.serviceWorkers.enabled flag.
#4: Can be enabled via the "Experimental Features" developer menu.

Resources: HTML5Rocks article (introduction), MDN Web Docs - Service Workers, List of various resources.
wd626445‒683.2‒11.211.33.1‒1111.15.5‒1115174553‒6151
otherWebP image format

Image format that supports lossy and lossless compression, as well as animation and alpha transparency.

Both Safari & Firefox are experimenting with supporting WebP images.

Animated WebP images are supported in Chrome 32+ and Opera 19+.

Browser-specific notes:
#1: Partial support in older Chrome, Opera and Android refers to browsers not supporting lossless and alpha versions of WebP.

Resources: Official website, Polyfill for browsers with WebM support, Decoder in JS, Polyfill for browsers with or without WebM support (i.e. IE6-IE9, Safari/iOS version 6.1 and below; Firefox versions 24 and bel, Official website FAQ - Which web browsers natively support WebP?.
unoff4.2‒6423‒683.2‒11.33.1‒TP5.5‒184‒6151
cssCSS position:sticky

Keeps elements positioned as "fixed" or "relative" depending on how it appears in the viewport. As a result the element is "stuck" when necessary while scrolling.

Browser-specific notes:
#1: Can be enabled in Firefox by setting the about:config preference layout.css.sticky.enabled to true.
#2: Enabled through the "experimental Web Platform features" flag.
#3: Not supported on any table parts - See Firefox bug.
#4: Supported on th elements, but not thead or tr - See Chrome bug.
#5: Do not appear to support sticky table headers.
#6: Supported on th elements, but not thead or tr - See Edge bug.

Resources: HTML5Rocks, MDN Web Docs - CSS position, WebPlatform Docs, Polyfill, Another polyfill, geddski article: Examples and Gotchas.
wd62‒64456‒688‒11.37.1‒TP5.5‒1116‒1832‒5859‒6151
jsunhandledrejection/rejectionhandled events

The unhandledrejection event is fired when a Promise is rejected but there is no rejection handler to deal with the rejection. The rejectionhandled event is fired when a Promise is rejected, and after the rejection is handled by the promise's rejection handling code.

Resources: MDN article on rejectionhandled, MDN article on unhandledrejection, Chrome sample code.
ls62‒6449‒683.2‒10.211.0‒11.33.111‒TP5.5‒182‒6150
domShadow DOM v0

Method of establishing and maintaining functional boundaries between DOM trees and how these trees interact with each other within a document, thus enabling better functional encapsulation within the DOM.

Browser-specific notes:
#1: Supported in Firefox behind the dom.webcomponents.enabled flag.
#2: Supported in Firefox behind the dom.webcomponents.shadowdom.enabled flag.

Resources: Shadow DOM Visualizer, HTML5Rocks - Shadow DOM 101 article, Safari implementation bug, Firefox implementation bug, Google Developers - Shadow DOM v1: self-contained web components.
wd62‒6435‒683.2‒11.33.1‒TP5.5‒1829‒5859‒6150
domDialog element

Method of easily creating custom dialog boxes to display to the user with modal or non-modal options. Also includes a ::backdrop pseudo-element for behind the element.

Browser-specific notes:
#1: Supported in Firefox by enabling "dom.dialog_element.enabled" in about:config.
#2: Enabled through the "Experimental Web Platform features" flag in chrome://flags.
#3: Enabled through the "Experimental Web Platform features" flag in opera://flags.

Resources: Polyfill.
ls62‒6437‒683.2‒11.33.1‒TP5.5‒18253‒6150
otherHTTP Live Streaming (HLS)

HTTP-based media streaming communications protocol.

HLS is being replaced by Dynamic Adaptive Streaming over HTTP (aka MPEG-DASH).

Resources: Wikipedia article, Apple developer article.
unoff3‒644‒683.2‒11.36‒TP5.5‒1112‒182‒6150
html5Ruby annotation

Method of adding pronunciation or other annotations using ruby elements (primarily used in East Asian typography).

Browsers without native support can still simulate support using CSS. Partial support refers to only supporting basic ruby, may still be missing writing-mode, Complex ruby and CSS3 Ruby.

Browser-specific notes:
#1: IE9+ supports properties of an older version of the CSS Ruby specification.

Resources: HTML5 Doctor article, WebPlatform Docs, Add-on "XHTML Ruby Support" for Firefox, Addon "HTML Ruby" for Firefox support, CSS specification.
ls3‒645‒685.0‒11.35‒TP5.5‒1838‒6149
jsBattery Status API

Method to provide information about the battery status of the hosting device.

Firefox 52+ removed access to this API due to privacy concerns..

Browser-specific notes:
#1: Partial support refers to support for the older specification's navigator.battery rather than navigator.getBattery() to access the BatteryManager.

Resources: MDN Web Docs - battery status, Simple demo.
cr62‒6438‒683.2‒11.33.1‒TP5.5‒182‒6149
jsScreen Orientation

Provides the ability to read the screen orientation state, to be informed when this state changes, and to be able to lock the screen orientation to a specific state.

Partial support refers to an older version of the draft specification, and the spec has undergone significant changes since, for example renaming the screen.lockOrientation method to screen.orientation.lock.

Resources: Demo, MDN Web Docs - Screen Orientation, SitePoint article.
wd2.16438‒683.2‒11.33.1‒TP5.511‒1844‒6149
jsWeb MIDI API

The Web MIDI API specification defines a means for web developers to enumerate, manipulate and access MIDI devices.

Resources: Polyfill, Firefox bug.
wd62‒6443‒683.2‒11.33.1‒TP5.5‒182‒6149
cssCSS Motion Path

Allows elements to be animated along SVG paths or shapes via the offset-path property. Originally defined as the motion-path property.

Browser-specific notes:
#1: Requires the "Experimental Web Platform features" flag to be enabled.

Resources: Blog post, MDN Web Docs - CSS motion-path, Demo, Firefox tracking bug.
wd62‒6446‒683.2‒11.33.1‒TP5.5‒182‒6149
domClient Hints: DPR, Width, Viewport-Width

DPR, Width, and Viewport-Width hints enable proactive content negotiation between client and server, enabling automated delivery of optimized assets - e.g. auto-negotiating image DPR resolution.

Resources: Automating resource selection with Client Hints, Mozilla Bug 935216 - Implement Client-Hints HTTP header, WebKit Bug 145380 - Add Content-DPR header support, Microsoft Edge feature request on UserVoice.
other62‒6446‒683.2‒11.33.1‒TP5.5‒182‒6149
jsBackground Sync API

Provides one-off and periodic synchronization for Service Workers with an onsync event.

Resources: Firefox support bug, SyncManager on MDN Web Docs, Google Developers blog: Introducing Background Sync.
unoff62‒6449‒683.2‒11.33.1‒TP5.5‒16172‒596149
otherOpus

Royalty-free open audio codec by IETF, which incorporated SILK from Skype and CELT from Xiph.org, to serve higher sound quality and lower latency at the same bitrate.

Support refers to this format's use in the audio element, not other conditions.

For Opera the Linux version may be able to play it when the GStreamer module is up to date and the served mime-type is 'audio/ogg'.

Browser-specific notes:
#1: Supported only on macOS High Sierra or later.

Resources: Introduction of Opus by Mozilla, Google's statement about the use of VP8 and Opus codec for WebRTC standard, Microsoft Edge feature request on UserVoice.
Parent feature: Audio element.
other2.16433‒683.2‒11.33.1‒TP5.5‒1114‒1815‒6148
jsCredential Management API

API that provides a programmatic interface to the browser's credential manager. In short, an origin can request a user's credentials to sign them in, or can ask the browser to save credentials on the user's behalf. Both of these requests are user-mediated.

Browser-specific notes:
#1: In Chrome 51 ~ 56, PSL matched credentials are not supported. This means you cannot use credentials set on a.example.com in b.example.com. This is supported since Chrome 57.

Resources: Tutorial by Google, MDN Web Docs - Credential Management API, Codelab, Live Demo, Sample Code, Spec discussion.
wd62‒644857‒683.2‒11.33.1‒TP5.5‒182‒6148
jsWeb Bluetooth

Allows web sites to communicate over GATT with nearby user-selected Bluetooth devices in a secure and privacy-preserving way.

Browser-specific notes:
#1: Available by enabling the "Web Bluetooth" experimental flag in about:flags. Currently support varies by OS.
#2: Only in Opera Mobile.
#3: Available in Origin Trials for Chrome OS, Android M, and Mac.
#4: Currently support varies by OS.

Resources: Intro, Samples, Demos, Implementation Status.
unoff62‒644556‒683.2‒11.33.1‒TP5.5‒182‒6148
cssCSS Containment

The CSS contain property lets developers limit the scope of the browser's styles, layout and paint work for faster and more efficient rendering.

Browser-specific notes:
#1: Enabled via the "Experimental Web Platform features" flag.
#2: Partially supported in Firefox by enabling "layout.css.contain.enabled" in about:config.

Resources: Google Developers article, Firefox bug.
cr62‒64452‒683.2‒11.33.1‒TP5.5‒1852‒6148
svgSVG effects for HTML

Method of using SVG transforms, filters, etc on HTML elements using either CSS or the foreignObject element.

Partial support refers to lack of filter support or buggy result from effects. A CSS Filter Effects specification is in the works that would replace this method.

Browser-specific notes:
#1: IE11 and below do not support <foreignObject>.
#2: IE and Edge do not support applying SVG filter effects to HTML elements using CSS. Bug Report.

Resources: MDN Web Docs - Other content in SVG, MDN Web Docs - Applying SVG effects, Filter Effects draft.
rec4.4‒644‒683.2‒11.34‒TP5.5912‒183.5‒6147
css3CSS overflow-anchor (Scroll Anchoring)

Changes in DOM elements above the visible region of a scrolling box can result in the page moving while the user is in the middle of consuming the content.
By default, the value of  overflow-anchor is auto, it can mitigate this jarring user experience by keeping track of the position of an anchor node and adjusting the scroll offset accordingly.

Mozilla has discussed a similar feature in Bug 43114.

Resources: Explainer, Google developers article.
wd62‒64456‒683.2‒11.33.1‒TP5.5‒182‒6147
otherCSS Paged Media (@page)

CSS at-rule (@page) to define page-specific rules when printing web pages, such as margin per page and page dimensions.

Currently no browsers appear to support the marks & bleed properties from the latest version of the specification.

Browser-specific notes:
#1: Does not support the size property.
#2: Does not appear to have a way to print web pages.

Resources: CSS Paged media article, MDN Web Docs - CSS @page, WebKit support bug, Firefox support bug, Edge support request.
wd2.16415‒683.2‒11.33.1‒TP5.58‒1819‒6146
cssCSS page-break properties

Properties to control the way elements are broken across (printed) pages.

Not all mobile browsers offer print support; support listed for these is based on browser engine capability.

Browser-specific notes:
#1: Supports the page-break-* alias from the CSS 2.1 specification, but not the break-* properties from the latest spec.
#2: Does not support avoid for page-break-before & page-break-after (only page-break-inside).
#3: Treats the left and right values like always.

Resources: CSS Tricks article, Latest fragmentation specification (includes column & region breaks).
rec2.1‒644‒683.2‒11.31010.1‒TP5.510‒182‒6146
cssCSS text-indent

The text-indent property applies indentation to lines of inline content in a block.

Browser-specific notes:
#1: Partial support refers to supporting a <length> value, but not the each-line or hanging keywords.
#2: Support for each-line & hanging is available behind the Experimental Web Platform features flag.

Resources: MDN Web Docs - CSS text-indent, Firefox support bug, WebKit support bug, Article on using text-indent for image replacement.
wd2.16438‒683.2‒11.33.1‒TP5.5‒182‒6146
jsClipboard API

API to provide copy, cut and paste events as well as provide access to the OS clipboard.

Internet Explorer will display a security prompt for access to the OS clipboard.

Chrome 42+, Opera 29+ and Firefox 41+ support clipboard reading/writing only when part of a user action (click, keydown, etc).

Firefox 40- users can enable support with a security preference setting.

Browser-specific notes:
#1: Only supports Text and URL data types and uses a non-standard method of interacting with the clipboard.
#2: Only fires copy event on a valid selection and only cut and paste in focused editable fields.
#3: Only supports OS clipboard reading/writing via shortcut keys, not through document.execCommand().
#4: Only supports paste event (on focused editable field).
#5: Does not support the ClipboardEvent constructor.
#6: Supports cut & copy events without a focused editable field, but not paste (presumably for security reasons).
#7: Supports cut & copy events without a focused editable field, but does not fire paste with document.execCommand('paste').

Resources: MDN Web Docs - ClipboardEvent, Guide on cross-platform clipboard access.
wd4.46443‒685.0‒11.310‒TP5.5‒161741‒6145
css3CSS3 Cursors (original values)

CSS3 cursor values added in the 2004 spec, including none, context-menu, cell, vertical-text, alias, copy, no-drop, not-allowed, nesw-resize, nwse-resize, col-resize, row-resize and all-scroll.

Browser-specific notes:
#1: Partial support refers to no support for the alias, cell, copy, ew-resize, ns-resize, nesw-resize, nwse-resize or context-menu cursors.
#2: Partial support refers to not supporting 'none'.

Resources: MDN Web Docs - CSS cursor.
cr2.1‒645‒683.2‒11.35‒TP5.59‒184‒6145
domMediaRecorder API

The MediaRecorder API (MediaStream Recording) aims to provide a really simple mechanism by which developers can record media streams from the user's input devices and instantly use them in web apps, rather than having to perform manual encoding operations on raw PCM data, etc.

Browser-specific notes:
#1: Can be enabled via the experimental Web Platform features flag. Does not support audio recording, only video.

Resources: MDN Web Docs - MediaRecorder.
Parent feature: getUserMedia/Stream API.
wd2.16449‒683.2‒11.33.1‒TP5.5‒1829‒6145
jsPermissions API

High-level JavaScript API for checking and requesting permissions.

Resources: Permission API samples and examples, Extended "polyfill" version of permission API.
unoff2.16443‒683.2‒11.33.1‒TP5.5‒1846‒6145
jsPush API

API to allow messages to be pushed from a server to a browser, even when the site isn't focused or even open in the browser.

Browser-specific notes:
#1: Partial support refers to not supporting PushEvent.data and PushMessageData.
#2: Requires full browser to be running to receive messages.
#3: Safari supports a custom implementation https://developer.apple.com/notifications/safari-push-notifications/. WWDC video by apple : https://developer.apple.com/videos/play/wwdc2013/614/.
#4: Disabled on Firefox ESR, but can be re-enabled with the dom.serviceWorkers.enabled and dom.push.enabled flags.

Resources: MDN Web Docs - Push API, Google Developers article.
wd2.1644450‒683.2‒11.39.1‒TP5.5‒16174553‒6145
html5HTML Media Capture

Facilitates user access to a device's media capture mechanism, such as a camera, or microphone, from within a file upload control.

Browser-specific notes:
#1: iOS6-10 do not support the capture attribute used to force capture straight from the device's camera or microphone. Also note that default video dimensions are 480x320 (4:3).
#2: Android 2.2-2.3 do not support the capture attribute.
#3: Supports a "capture" button for any `<input type="file"> field, regardless of the whether the capture attribute is used.

Resources: Correct Syntax for HTML Media Capture, Programming the Mobile Web: File upload compatibility table, HTML Media Capture Test Bench.
cr3‒644‒686.0‒11.33.1‒TP5.5‒182‒6145
canvasWebGL 2.0

Next version of WebGL. Based on OpenGL ES 3.0.

Browser-specific notes:
#1: Can be enabled in Firefox by setting the about:config preference webgl.enable-prototype-webgl2 to true.
#2: WebGL2 context is accessed from "experimental-webgl2" rather than "webgl2".
#3: Can be enabled in Chrome by passing the "--enable-unsafe-es3-apis" flag when starting the browser through the command line.
#4: Can be enabled via the "Experimental Features" developer menu.
#5: Enabled by default for Nightly and Dev Edition.

Resources: Firefox blog post, Getting a WebGL Implementation.
Parent feature: Canvas (basic support).
other2.1644356‒683.2‒11.33.110.1‒TP5.5‒1851‒6145
css3text-decoration styling

Method of defining the type, style and color of lines in the text-decoration property. These can be defined as shorthand (e.g. text-decoration: line-through dashed blue) or as single properties (e.g. text-decoration-color: blue).

All browsers support the CSS2 version of text-decoration, which matches only the text-decoration-line values (underline, etc.).

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.
#2: Partial support refers to not supporting the text-decoration-style property.
#3: Safari 8+ supports -webkit-text-decoration-skip with values none and skip (other values behave like none or skip).
#4: Partial support refers to not supporting the text-decoration-skip property.
#5: Partial support refers to text-decoration-skip only supporting value objects and ink.

Resources: MDN Web Docs - text-decoration-style, MDN Web Docs - text-decoration-color, MDN Web Docs - text-decoration-line, Microsoft Edge feature request on UserVoice, MDN Web Docs - text-decoration-skip, Firefox implementation bug.
cr62642657‒688‒11.38‒TP5.5‒1836‒6144
domMutation events

Deprecated mechanism for listening to changes made to the DOM, replaced by Mutation Observers.

See also support for Mutation Observer, which replaces mutation events and does not have the same performance drawbacks.

Browser-specific notes:
#1: Does not support DOMAttrModified.
#2: Does not support DOMNodeInsertedIntoDocument & DOMNodeRemovedFromDocument.

Resources: MDN Web Docs - Mutation events.
wd2.3‒6415‒684.2‒11.34‒TP5.59‒186‒6144
otherWAI-ARIA Accessibility features

Method of providing ways for people with disabilities to use dynamic web content and web applications.

Support for ARIA is rather complex and currently is not fully supported in any browser. For detailed information on partial support see the ARIA 1.0 Implementation Report.

Resources: Information page, Links to various test results, Wikipedia, ALA Article, HTML5/WAI-ARIA information.
rec4.4‒644‒683.2‒11.34‒TP5.58‒182‒6144
cssCSS Logical Properties

Use start/end properties that depend on LTR or RTL writing direction instead of left/right.

Browser-specific notes:
#1: Only supports the *-start, and *-end values for margin, border and padding, not the inline/block type values as defined in the spec.
#2: Like #1 but also supports *-before and *-end for *-block-start and *-block-end properties as well as start and end values for text-align.

Resources: MDN Web Docs - CSS -moz-margin-start, MDN Web Docs - CSS -moz-padding-start, Microsoft Edge feature request on UserVoice.
wd2.1‒644‒683.2‒11.33.1‒TP5.5‒1841‒6144
cssCSSOM Scroll-behavior

Method of specifying the scrolling behavior for a scrolling box, when scrolling happens due to navigation or CSSOM scrolling APIs.

Browser-specific notes:
#1: Partial support refers to support everything except of Element.scrollIntoView() and not together with pinch viewport.
#2: Supported in Chrome and Opera behind the 'Smooth Scrolling' and/or 'Enable experimental web platform features' flag.

Resources: MDN Web Docs - CSS scroll-behavior, Chrome launch bug , Blog post with demo.
wd2.16441‒6061‒683.2‒11.33.1‒TP5.5‒1836‒6144
securityTLS 1.3

An upcoming version of the Transport Layer Security (TLS) protocol. Removes weaker elliptic curves and hash functions.

Browser-specific notes:
#1: Can be enabled by setting "TLS 1.3" to "Enabled (Draft)" at chrome://flags/tls13-variant.
#2: Can be enabled by setting "Maximum TLS version enabled" to "TLS 1.3"at chrome://flags/. Support is reported to have be currently enabled as of version 56 for 1/10th of all users.

Resources: Wikipedia article on TLS, Chrome support bug, UserVoice support request.
other6264456‒683.2‒11.33.1‒TP5.5‒1852‒6144
html5Datalist element

Method of setting a list of options for a user to select in a text field, while leaving the ability to enter a custom value.

While most commonly used on text fields, datalists can also be used on other input types. IE11 supports the element on range fields. Chrome and Opera also support datalists to suggest given values on range, color and date/time fields.

Browser-specific notes:
#1: Partial support refers to a bug where long lists of items are unscrollable resulting in unselectable options.
#2: Partial support in IE refers to significantly buggy behavior (IE11+ does send the input and change events upon selection).
#3: Partial support refers to no support for datalists on non-text fields (e.g. number, range, color).

Resources: Mozilla Hacks article, HTML5 Library including datalist support, MDN Web Docs - datalist, WebPlatform Docs, Eiji Kitamura's options demos & tests, Minimal Datalist polyfill w/tutorial, Minimal and library dependency-free vanilla JavaScript polypill, Minimal and library dependency-free vanilla JavaScript polyfill.
Parent feature: HTML5 form features.
ls626420‒683.2‒11.33.1‒TP610‒184‒6144
cssCSS Masks

Method of displaying part of an element, using a selected image as a mask.

Browser-specific notes:
#1: Partial support in WebKit/Blink browsers refers to supporting the mask-image and mask-box-image properties, but lacking support for other parts of the spec.
#2: Partial support in Firefox refers to only support for inline SVG mask elements i.e. mask: url(#foo).
#3: Partial support refers to supporting the mask-box-image shorthand but not the longhand properties.
#4: Partial support refers to supporting mask-image, mask-size, mask-position, and the mask shorthand.

Resources: WebPlatform Docs, HTML5 Rocks article, Detailed blog post, Firefox implementation bug, Visual test cases.
cr4.4‒644‒683.2‒11.34‒TP5.5‒16183.553‒6144
jsDeviceOrientation & DeviceMotion events

API for detecting orientation and motion events from the device running the browser.

Partial support refers to the lack of compassneedscalibration event. Partial support also refers to the lack of devicemotion event support for Chrome 30- and Opera. Opera Mobile 14 lost the ondevicemotion event support. Firefox 3.6, 4 and 5 support the non-standard MozOrientation event.

Browser-specific notes:
#1: compassneedscalibration supported in IE11 only for compatible devices with Windows 8.1+.

Resources: HTML5 Rocks tutorial, has.js test, DeviceOrientation implementation prototype for IE10, Demo.
cr3‒647‒684.2‒11.33.1‒TP5.51112‒186‒6144
css3CSS box-decoration-break

Controls whether the box's margins, borders, padding, and other decorations wrap the broken edges of the box fragments (when the box is split by a break (page/column/region/line).

Browser-specific notes:
#1: Partial support refers to working for inline elements but not across column or page breaks.

Resources: MDN Web Docs - CSS box-decoration-break, Demo of effect on box border, Microsoft Edge feature request on UserVoice.
wd4.4‒6422‒687.0‒11.36.1‒TP5.5‒1832‒6143
jsWeb Notifications

Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user).

Browser-specific notes:
#1: Can be enabled in about:flags.
#2: Chrome for Android supports notifications via the Push API but not the Web Notifications API.

Resources: HTML5 Rocks tutorial, Chromium API, Add-on, MDN Web Docs - Notification, SitePoint article, Demo, Plug-in for support in IE.
ls4.46422‒683.2‒11.36‒TP5.5‒1114‒1822‒6143
cssVariable fonts

OpenType font settings that allows a single font file to behave like multiple fonts: it can contain all the allowed variations in width, weight, slant, optical size, or any other exposed axes of variation as defined by the font designer. Variations can be applied via the font-variation-settings property.

Browser-specific notes:
#1: Works with Experimental Web Platform features enabled.
#2: Requires MacOS 10.12+ and the following about:config flags to be enabled:.
layout.css.font-variations.enabled,.
gfx.downloadable_fonts.keep_variation_tables.
#3: Requires MacOS 10.13+.
#4: Does not support the font-weight and font-stretch properties.
#5: Does not support format('truetype-variations'), format('woff-variations'), format('woff2-variations').

Resources: Axis-Praxs - Tool & info on variable fonts, MDN Web docs article, How to use variable fonts in the real world.
wd62‒6445962‒65663.2‒10.211.0‒11.33.111‒TP5.5‒1617253‒6143
css3CSS clip-path property (for HTML)

Method of defining the visible region of an HTML element using SVG or a shape definition.

Support refers to the clip-path CSS property on HTML elements specifically. Support for clip-path in SVG is supported in all browsers with basic SVG support.

Browser-specific notes:
#1: Partial support refers to only supporting the url() syntax.
#2: Partial support refers to supporting shapes and the url(#foo) syntax for inline SVG, but not shapes in external SVGs.
#3: Supports shapes behind the layout.css.clip-path-shapes.enabled flag.

Resources: CSS Tricks article, Codepen Example Clipping an Image with a Polygon, Visual test cases.
Parent feature: CSS Masks.
cr62‒642455‒687.0‒11.37‒TP5.5‒184754‒6143
cssCSS font-rendering controls

@font-face descriptor (currently defined as font-display) that allows control over how a downloadable font renders before it is fully loaded.

Browser-specific notes:
#1: Can be enabled via the "Experimental Web Platform features" flag.
#2: Can be enabled in Firefox through the layout.css.font-display.enabled flag at about:config.

Resources: Google Developers article, MDN Web Docs - font-display, CSS tricks article, Microsoft Edge feature request on UserVoice.
wd2.1644960‒683.2‒11.211.33.1‒1111.15.5‒1846‒5758‒6142
cssCSS Appearance

The appearance property defines how elements (particularly form controls) appear by default. By setting the value to none the default appearance can be entirely redefined using other CSS properties.

Browser-specific notes:
#1: The appearance property is supported with the none value, but not auto. WebKit, Blink, and Gecko browsers also support additional vendor specific values.
#2: Microsoft Edge and IE Mobile support this property with the -webkit- prefix, rather than -ms- for interop reasons.
#3: -moz-appearance:none doesn't remove the dropdown arrow in select tag.

Resources: CSS Tricks article.
wd2.1‒644‒683.2‒11.33.1‒TP5.5‒1112‒1835‒6142
otherMathML

Special tags that allow mathematical formulas and notations to be written on web pages.

Opera's support is limited to a CSS profile of MathML. Support was added in Chrome 24, but removed afterwards due to instability.

Browser-specific notes:
#1: Before version 4, Firefox only supports the XHTML notation.
#2: Before version 10, Safari had issues rendering significant portions of the MathML torture test.

Resources: Wikipedia, MathML demos, Cross-browser support script, MDN Web Docs - MathML Element, MathML torture test.
rec2.1‒644‒685.0‒11.310‒TP69‒184‒6142
jsPayment Request API

Payment Request is a new API for the open web that makes checkout flows easier, faster and consistent on shopping sites.

Apple provides an equivalent proprietary API called Apple Pay JS. Google provides a PaymentRequest wrapper for Apple Pay JS.

Browser-specific notes:
#1: Can be enabled via the "Experimental Web Platform features" flag.
#2: Can be enabled via the "Experimental Web Payments API" flag.
#3: Apple's proprietary implementation (see above).
#4: Can be enabled via the "Web Payments API" flag.
#5: Unlike Desktop Chrome, support has been in Chrome for Android since version 53.
#6: Can be enabled via the dom.payments.request.enabled flag in "about:config" flag since 55.

Resources: Spec discussion, Bringing easy and fast checkout with Payment Request API, Payment Request API Integration Guide, MDN Web Docs - Payment Request API, Demo, Simpler Demos and Codes.
wd2.16445961‒683.210.0‒11.211.310‒1111.15.5‒1115‒18255‒6140
domMedia Fragments

Allows only part of a resource to be shown, based on the fragment identifier in the URL. Currently support is primarily limited to video track ranges.

Browser-specific notes:
#1: Only appears to support the #t=n,n control for selecting a range of video, and possibly track=(name) & id=(name) (not yet tested).

Resources: Media fragments on MDN.
rec4.4‒6418‒688‒11.36‒TP5.5‒1834‒6140
html5Web App Manifest

The web app manifest provides information about an application (such as name, author, icon, and description) in a JSON file, which browsers can use to give richer offline experiences.

Resources: MDN Web Docs - Web App Manifest, Tool to generate a manifest from any given URL.
wd2.16438‒683.2‒11.211.33.1‒1111.15.5‒182‒6139
css3CSS3 Cursors: zoom-in & zoom-out

Support for zoom-in, zoom-out values for the CSS3 cursor property.

Resources: MDN Web Docs - CSS cursor.
cr2.1‒6437‒683.2‒11.39‒TP5.5‒1112‒1824‒6138
jsWebUSB

Allows communication with devices via USB (Universal Serial Bus).

Resources: Google Developers article.
unoff2.16445461‒683.2‒11.33.1‒TP5.5‒182‒6137
jsStreams

Method of creating, composing, and consuming streams of data, that map efficiently to low-level I/O primitives, and allow easy composition with built-in backpressure and queuing.

Browser-specific notes:
#1: IE implements a different API than the one from WHATWG.
#2: Only basic read support.
#3: Disabled by default behind the javascript.options.streams and dom.streams.enabled flags.
#4: No support for BYOB ("bring your own buffer") stream readers.
#5: No support for WritableStream.
#6: No support for the pipeTo or pipeThrough methods.

Resources: GitHub repository, ReadableStream on Mozilla Developer Network, Blog article about streams.
ls6264459‒683.21010.3‒11.310‒TP5.51116‒18257‒6135
domCustom Elements v1

Method of defining new HTML tags.

Chrome 36+/Opera 20+ implemented a previous version of Custom Elements (v0) that used .registerElement(). Other browsers are implementing v1, window.customElements.define().

Browser-specific notes:
#1: Supports "Autonomous custom elements" but not "Customized built-in elements".
#2: Enabled through the "dom.webcomponents.enabled" or "dom.webcomponents.customelements.enabled" preference in about:config.
#3: Enabled through the "dom.webcomponents.customelements.enabled" preference in about:config.

Resources: Firefox tracking bug: Implement Custom Elements (from Web Components), IE Web Platform Status and Roadmap: Custom Elements, Google Developers - Custom elements v1: reusable web components, customElements.define polyfill, WebKit Blog: Introducing Custom Elements.
ls62‒64454‒65673.2‒10.210.3‒11.3810.1‒TP5.510‒1850‒5859‒6135
jsFilesystem & FileWriter API

Method of reading and writing files to a sandboxed file system.

The File API: Directories and System specification is no longer being maintained and support may be dropped in future versions.

Resources: HTML5 Rocks tutorial, WebPlatform Docs, Firefox tracking bug.
unoff2.16413‒683.2‒11.33.1‒TP5.5‒182‒6135
domDirectory selection from file input

The webkitdirectory attribute on the <input type="file"> element allows entire directory with file contents (and any subdirectories) to be selected.

Lack of support in mobile browsers may be due to the OS file picker not having support for selecting a directory.

Browser-specific notes:
#1: Can be enabled via the "Experimental Features" developer menu.

Resources: MDN article.
unoff2.1‒6430‒683.2‒11.33.1‒1111.15.5‒1114‒1850‒6135
otherOgg/Theora video format

Free lossy video compression format.

Resources: Wikipedia article.
Parent feature: Video element.
other2.1‒644‒683.2‒11.33.1‒TP5.59‒16173.5‒6135
jsasm.js

An extraordinarily optimizable, low-level subset of JavaScript, intended to be a compile target from languages like C++.

Browser-specific notes:
#1: Chrome does not support Ahead-Of-Time compilation but performance doubled in Chrome 28: https://en.wikipedia.org/wiki/Asm.js#Implementations.
#2: Supported in MS Edge under the "Enable experimental JavaScript features" flag.

Resources: Homepage, Source for spec and tools, Bringing Asm.js to Chakra and Microsoft Edge, Microsoft Edge support announcement.
other62‒6428‒683.2‒11.33.1‒TP5.5‒1113‒1822‒6133
jsShared Web Workers

Method of allowing multiple scripts to communicate with a single web worker.

Resources: Sitepoint article, Blog post.
Parent feature: Web Workers.
ls2.1‒644‒683.2‒11.33.1‒TP5.5‒1829‒6133
html5Custom protocol handling

Method of allowing a webpage to handle a given protocol using navigator.registerProtocolHandler. This allows certain URLs to be opened by a given web application, for example mailto: addresses can be opened by a webmail client.

Browser-specific notes:
#1: Supports protocols mailto, mms, nntp, rtsp, and webcal but requires custom protocols to start with web+.

Resources: MDN Web Docs - Register protocol handler.
ls2.1‒6413‒683.2‒11.33.1‒TP5.5‒183‒6133
cssCSS color-adjust

The color-adjust (or -webkit-print-color-adjust as prefixed in WebKit/Blink browsers) property is a non-standard CSS extension that can be used to force printing of background colors and images.

Resources: MDN web docs - -webkit-print-color-adjust, Edge issue with color-adjust, Chromium bug with color-adjust property, Codepen demo of color-adjust usage.
unoff2.1‒6419‒683.2‒11.36‒TP5.5‒161748‒6133
html5Audio Tracks

Method of specifying and selecting between multiple audio tracks. Useful for providing audio descriptions, director's commentary, additional languages, alternative takes, etc.

Browser-specific notes:
#1: Supported in Firefox by enabling "media.track.enabled" in about:config.

Resources: MSDN article.
ls2.1‒644‒687.0‒11.36.1‒TP5.510‒1833‒6133
domWeb Animations API

Lets you create animations that are run in the browser and as well as inspect and manipulate animations created through declarative means like CSS.

Browser-specific notes:
#1: Partial support refers to basic support of element.animate().
#2: Partial support refers to basic support of element.animate() and playback control of AnimationPlayer.
#3: Partial support in Firefox is detailed in Are we animated yet?.
#4: Can be enabled via the "Experimental Features" developer menu.

Resources: HTML5 Rocks, HTML5 Rocks, Current Firefox status, Polyfill.
wd62‒6439‒683.2‒10.211.0‒11.33.111‒TP5.5‒1847‒5859‒6132
otherSPDY protocol

Networking protocol for low-latency transport of content over the web. Superseded by HTTP version 2.

See also support for HTTP2, successor of SPDY.

Chrome will be removing support in 2016 (in favor of HTTP2), other browsers likely to follow.

Resources: Wikipedia, SPDY whitepaper.
unoff2.1‒64451‒688‒11.38‒TP5.51112‒182‒6131
css3CSS font-variant-alternates

Controls the usage of alternate glyphs associated to alternative names defined in @font-feature-values for certain types of OpenType fonts.

Browser-specific notes:
#1: Low-level syntax available in font-feature-settings property equivalent to OpenType features: salt, ss01 through ss20, cv01 through cv99, swsh, cswh, ornm, nalt.
#2: Experimental support available by enabling the layout.css.font-features.enabled flag.

Resources: MDN Web Docs - font-variant-alternates.
cr4.4‒6416‒683.29.3‒11.39.1‒TP5.510‒1834‒6129
cssCSS Backdrop Filter

Method of applying filter effects (like blur, grayscale or hue) to content/elements below the target element.

Browser-specific notes:
#1: Can be enabled via the "Experimental Web Platform Features" flag.

Resources: Blog post, MDN Web Docs - CSS backdrop filter, Edge feature request.
unoff2.16447‒689.0‒11.39‒TP5.5‒16172‒6129
cssCSS Scroll snap points

CSS technique that allows customizable scrolling experiences like pagination of carousels by setting defined snap points.

Works in the iOS WKWebView, but not UIWebView.

Browser-specific notes:
#1: Partial support in IE10 refers to support limited to touch screens.
#2: Partial support in IE11 documented here.
#4: Partial support in Safari refers to not supporting the none keyword in scroll-snap-points-x, scroll-snap-points-y and scroll-snap-coordinate, and length keywords (top, right, etc.) in scroll-snap-destination and scroll-snap-coordinate.
#5: Supports properties from an older version of the spec.
#6: Partial support in IE & Edge refers to not supporting scroll-snap-coordinate and scroll-snap-destination.
#7: Available behind the "Experimental Web Platform features" feature flag.

Resources: Blog post, MDN Web Docs - CSS Scroll snap points, Polyfill.
cr2.1‒644‒65669.0‒10.211.0‒11.3911‒TP5.511‒1839‒6128
jsFull Screen API

API for allowing content (like a video or canvas element) to take up the entire screen.

Browser-specific notes:
#1: Partial support refers to supporting an earlier draft of the spec.
#2: Partial support refers to not supporting ::backdrop, and supporting the old :full-screen syntax rather than the standard :fullscreen.
#3: Partial support refers to not returning a Promise, as specified in the latest version of the spec.
#4: Unprefixed support is available behind the full-screen-api.unprefix.enabled flag.

Resources: MDN Web Docs - Using Full Screen, Blog post, Mozilla hacks article, WebPlatform Docs.
ls2.16420‒683.2‒11.36‒TP5.51112‒1847‒6128
jsFIDO U2F API

JavaScript API to interact with Universal Second Factor (U2F) devices. This allows users to log into sites more securely using two-factor authentication with a USB dongle.

Browser-specific notes:
#1: Requires the "FIDO U2F (Universal 2nd Factor)" Chrome extension.
#2: Support can be enabled with the "security.webauth.u2f" flag.

Resources: Mozilla bug, Google Security article.
other2.1‒6441‒683.2‒11.33.1‒TP5.5‒1847‒6127
html5Video Tracks

Method of specifying and selecting between multiple video tracks. Useful for providing sign language tracks, burnt-in captions or subtitles, alternative camera angles, etc.

Resources: MSDN article.
ls2.1‒644‒687.0‒11.36.1‒TP5.5‒1112‒182‒6126
cssCSS overscroll-behavior

CSS property to control the behavior when the scroll position of a scroll container reaches the edge of the scrollport.

Browser-specific notes:
#1: Supports the precursor version of the property: -ms-scroll-chaining, which works similarly. IE support is limited to Windows 8 & above.
#2: Does not support overscroll-behavior: none; on the body element to prevent the overscroll glow and rubberbanding effects.

Resources: Demo, UserVoice support request for Edge, Firefox implementation bug, Google Developers blog post on overflow-behavior, WebKit support bug.
unoff2.1644‒6063‒6465‒683.2‒11.33.1‒TP5.510‒16182‒5859‒6126
svgSVG fonts

Method of using fonts defined as SVG shapes. Removed from SVG 2.0 and considered as a deprecated feature with support being removed from browsers.

Browser-specific notes:
#1: Chrome 38 and newer support SVG fonts only on Windows Vista and XP.
#2: Supported in Opera Mini in SVG images only, not in HTML.

Resources: Blog post, Blog post on usage for iPad.
Parent feature: @font-face Web fonts.
unoff2.1643851‒683.2‒11.33.2‒TP69‒182‒6126
css3CSS Regions

Method of flowing content into multiple elements.

Browser-specific notes:
#1: Support is limited to using an iframe as a content source with the -ms-flow-into: flow_name; and -ms-flow-from: flow_name; syntax.
#2: Partial support refers to not supporting the region-fragment property.

Resources: Adobe demos and samples, IE10 developer guide info, WebPlatform Docs, Firefox feature request bug.
wd2.1‒644‒687.0‒11.211.36.1‒1111.15.510‒182‒6125
jsWebVR API

API for accessing virtual reality (VR) devices, including sensors and head-mounted displays.

Not every computer or smartphone could run WebVR appication. For smartphones, you need a gyroscope and for computers must be VR-ready also the needed sotfware (Oculus client or (Steam VR and VivePort)) and drivers must been installed on the computer. In this situations, you've the best experiance to use WebVR applications.

Browser-specific notes:
#1: Available and enabled by default only in Firefox Windows. Enabled in Nightly for iOS.
#2: Enabled behind the WebVR & "Gamepad Extensions" flags under chrome://flags. Currently builds use an older version of the (still changing) specification and supports only the Oculus Rift and the HTC vive on Windows VR-ready computers.
#3: In development in the latest Edge builds and supports only Windows Mixed Reality.
#4: Supports only Samsung Galaxy devices with the Samgung Gear VR.
#5: Supports only Google Daydream on daydream-ready devices and Google Cardboards.

Resources: Detailed device support information, WebVR polyfill, WebVR framework, WebVR info, MDN Web Docs - WebVR API.
unoff2.164457‒683.2‒11.33.1‒TP5.5‒1115‒18255‒6125
otherJPEG 2000 image format

JPEG 2000 (JP2) was created by the Joint Photographic Experts Group committee in 2000 with the intention of superseding their original discrete cosine transform-based JPEG standard (created in 1992) with a newly designed, wavelet-based method. It offers some advantages in image fidelity over standard JPEG.

Browser-specific notes:
#1: Not supported by Safari for Windows.

Resources: Wikipedia article.
other2.1‒644‒685.0‒11.36‒TP5.5‒182‒6124
domNetwork Information API

The Network Information API enables web applications to access information about the network connection in use by the device.

In Chrome the API is enabled on Android only, support for other platforms is coming . Support is also available on Firefox OS.

Browser-specific notes:
#1: Supports only the navigator.connection.type value which doesn't match the latest spec. see details.
#2: Only supports the type value.
#3: Only supports the type and downloadMax values.
#4: Only supports the downlink, effectiveType & rtt values.

Resources: (NetInfo) Capability reporting with ServiceWorker.
unoff62‒644‒6061‒683.2‒11.33.1‒TP5.5‒182‒6124
cssselector list argument of :not()

Selectors Level 4 allows the :not() pseudo-class to accept a list of selectors, which the element must not match any of. Selectors Level 3 only allowed :not() to accept a single simple selector. Thus, :not(a):not(.b):not([c]) can instead be written as :not(a, .b, [c]).

Resources: MDN Web Docs - CSS :not, Chrome feature request issue, Firefox feature request bug.
wd2.1‒644‒65669.0‒11.39‒TP5.5‒182‒596023
cssselector list argument of :nth-child and :nth-last-child CSS pseudo-classes

The newest versions of :nth-child() and :nth-last-child() accept an optional of S clause which filters the children to only those which match the selector list S. For example, :nth-child(1 of .foo) selects the first child among the children that have the foo class (ignoring any non-foo children which precede that child). Similar to :nth-of-type, but for arbitrary selectors instead of only type selectors.

For support information for just :nth-child() see CSS3 selector support.

Resources: Mozilla Bug 854148 - Support for :nth-child(An+B of sel), :nth-last-child(An+B of sel) pseudo-classes, Chromium Issue 304163: Implement :nth-child(an+b of S) and :nth-last-child(an+b of S) pseudo-classes, MS Edge feature request on UserVoice.
unoff2.1‒644‒689.0‒11.39‒TP5.5‒182‒6123
cssCSS filter() function

This function filters a CSS input image with a set of filter functions (like blur, grayscale or hue).

Resources: Blog post.
wd2.1‒644‒68910.0‒11.39.1‒TP5.5‒182‒6123
cssCSS Canvas Drawings

Method of using HTML5 Canvas as a background image. Not currently part of any specification.

A similar effect can be achieved in Firefox 4+ using the -moz-element() background property.

Resources: WebKit blog post.
unoff62‒6448‒683.2‒11.34‒TP5.5‒1852‒6123
cssCSS revert value

A CSS keyword value that resets a property's value to the default specified by the browser in its UA stylesheet, as if the webpage had not included any CSS. For example, display:revert on a <div> would result in display:block. This is in contrast to the initial value, which is simply defined on a per-property basis, and for display would be inline.

Resources: MDN Web Docs - CSS revert, Firefox feature request bug, Microsoft Edge feature request on UserVoice, Chrome feature request issue.
wd2.1‒644‒683.29.3‒11.39.1‒TP5.5‒182‒6122
cssCSS hanging-punctuation

Allows some punctuation characters from start (or the end) of text elements to be placed "outside" of the box in order to preserve the reading flow.

Resources: CSS tricks article, Firefox bug #1253615.
wd2.1‒644‒683.210.0‒11.310‒TP5.5‒1115‒182‒6122
otherHEVC/H.265 video format

The High Efficiency Video Coding (HEVC) compression standard is a video compression format intended to succeed H.264.

Browser-specific notes:
#1: Supported only for devices with hardware support.
#2: Reported to work in certain Android devices with hardware support.
#3: Supported only on macOS High Sierra or later.

Resources: Firefox support bug (WONTFIX), Wikipedia article, UserVoice support request for Edge, Chrome support bug (WontFix).
Parent feature: Video element.
other62‒644‒683.2‒10.211.0‒11.33.111‒TP5.511‒182‒6121
jsSpeech Recognition API

Method to provide speech input in a web browser.

Browser-specific notes:
#1: Partial support refers to some attributes missing.
#2: Firefox currently has a media.webspeech.recognition.enable flag in about:config for this, but actual support is waiting for permissions to be sorted out.
#3: Reported to be in development for Samsung Internet for GearVR, due Q1/2017.

Resources: HTML5Rocks article, SitePoint article, Demo, Advanced demo and resource.
unoff2.16425‒683.2‒11.33.1‒TP5.5‒1822‒6121
cssCSS text-justify

CSS property to define how text should be justified when text-align: justify is set.

Browser-specific notes:
#1: Supports inter-word, but not inter-character or  none. Also supports the following unofficial values: distribute , distribute-all-lines, distribute-center-last, inter-cluster, inter-ideograph, newspaper. See MSDN for details.
#2: inter-word and distribute values supported behind the "Experimental platform features" flag but distribute support is buggy.
#3: Behind the "layout.css.text-justify.enabled" flag.
#4: Supports auto, none, inter-word, inter-character, and distribute with the exact same meaning and behavior as inter-character for legacy reasons.

Resources: Chrome support bug, WebKit support bug, Firefox support bug.
wd62‒6443‒683.2‒11.33.1‒TP5.58‒18255‒6119
domResize Observer

Method for observing and reacting to changes to sizes of DOM elements.

Browser-specific notes:
#1: Can be enabled via the "Experimental Web Platform Features" flag.

Resources: Google Developers Article, Explainer Doc, Polyfill, Firefox implementation bug, WebKit implementation bug.
unoff2.164454‒6364‒683.2‒11.33.1‒TP5.5‒182‒6118
cssprefers-reduced-motion media query

CSS media query based on a user preference for preferring reduced motion (animation, etc).

Resources: WebKit blog post, CSS Tricks article.
unoff2.1‒644‒683.2‒10.210.3‒11.33.110.1‒TP5.5‒182‒6118
css3CSS font-smooth

Controls the application of anti-aliasing when fonts are rendered.

Though present in early (2002) drafts of CSS3 Fonts, font-smooth has been removed from this specification and is currently not on the standard track.

Browser-specific notes:
#1: WebKit implements something similar with a different name -webkit-font-smoothing and different values: none, antialiased and subpixel-antialiased.
#2: Firefox implements something similar with a different name -moz-osx-font-smoothing and different values: auto, inherit, unset, grayscale.
#3: Works only on Mac OS X platform.

Resources: MDN Web Docs - font-smooth, Old version of W3C recommendation containing font-smooth.
unoff2.1‒645‒683.2‒11.34‒TP5.5‒1825‒6118
otherXHTML+SMIL animation

Method of using SMIL animation in web pages.

Internet Explorer supports the W3C proposal HTML+TIME, which is largely the same as XHTML+SMIL.

Resources: Wikipedia, JS library to support XHTML+SMIL.
Parent feature: XHTML served as application/xhtml+xml.
unoff2.1‒644‒683.2‒11.33.1‒TP69‒182‒6118
css3CSS3 image-orientation

CSS property used generally to fix the intended orientation of an image. This can be done using 90 degree increments or based on the image's EXIF data using the "from-image" value.

Opening the image in a new tab in Chrome results in the image shown in the orientation according to the EXIF data.

Browser-specific notes:
#1: Partial support in iOS refers to the browser using EXIF data by default, though it does not actually support the property.

Resources: MDN Web Docs - CSS image-orientation, Blog post, Demo (Chinese), Chromium bug #158753: Support for the CSS image-orientation CSS property.
cr2.1‒644‒683.2‒11.33.1‒TP5.5‒1826‒6117
cssCSS display: contents

display: contents causes an element's children to appear as if they were direct children of the element's parent, ignoring the element itself. This can be useful when a wrapper element should be ignored when using CSS grid or similar layout techniques.

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.

Resources: Vanishing boxes with display contents, Chrome support bug, WebKit support bug, Edge UserVoice support request.
wd2.1‒64458‒6465‒683.2‒11.211.33.1‒1111.15.5‒1837‒6116
otherSDCH Accept-Encoding/Content-Encodingother6264459‒683.2‒11.33.1‒TP5.5‒182‒6113
jsWeb Share API

A way to allow websites to invoke the native sharing capabilities of the host platform.

Browser-specific notes:
#1: Partial support refers to feature only being available for sites opting into the origin trial.
#2: Implemented old Web Intents.
#3: Android intent:// URLs can be used instead.

Resources: Chrome post, Web Share API brings the native sharing capabilities to the browser, Web Share API, Mozilla bug #1312422: Consider experimental support for Web Share API.
unoff4.4.3644‒683.2‒11.33.1‒TP5.5‒182‒6112
cssCSS font-size-adjust

Method of adjusting the font size in a matter that relates to the height of lowercase vs. uppercase letters. This makes it easier to set the size of fallback fonts.

Browser-specific notes:
#1: Enabled through the "experimental Web Platform features" flag in chrome://flags.
#2: Does not appear to work on Firefox mobile, despite recognition of the property.

Resources: Article on font-size-adjust, MDN Web Docs - CSS font-size-adjust, Microsoft Edge feature request on UserVoice.
cr2.1‒6443‒683.2‒11.33.1‒TP5.5‒183‒6112
cssCSS Initial Letter

Method of creating an enlarged cap, including a drop or raised cap, in a robust way.

Browser-specific notes:
#1: Safari implementation is incomplete. Does not allow applying web fonts to the initial letter.

Resources: Firefox Implementation Ticket, MDN Web Docs - CSS initial-letter, Blog post on Envato Tuts+, "Better CSS Drop Caps With initial-letter", Demos at Jen Simmons Labs.
wd2.1‒644‒689.0‒11.39.1‒TP5.5‒182‒6111
jsAmbient Light API

Defines events that provide information about the ambient light level, as measured by a device's light sensor.

Browser-specific notes:
#1: Partial support in desktop Firefox refers to support being limited to Mac OS X. Support for Windows 7 is in progress.
#2: Available by enabling the "Experimental Web Platform Features" experimental flag in about:flags.

Resources: Demo, Article, MDN Web Docs - Ambient Light Sensor, MDN Web Docs - Ambient Light Events.
cr2.1‒64458‒683.2‒11.33.1‒TP5.5‒1114‒1822‒6110
cssCSS Device Adaptation

A standard way to override the size of viewport in web page using the @viewport rule, standardizing and replacing Apple's own popular <meta> viewport implementation.

Browser-specific notes:
#1: IE only supports the 'width' and 'height' properties.
#2: Opera Mobile and Opera Mini only support the 'orientation' property.

Resources: Introduction to meta viewport and @viewport in Opera Mobile, Device adaptation in Internet Explorer 10, Microsoft Edge feature request on UserVoice, Chrome tracking bug, WebKit tracking bug, Mozilla tracking bug.
wd2.1‒6429‒683.2‒11.33.1‒TP5.510‒182‒618
dominputmode attribute

The inputmode attribute specifies what kind of input mechanism would be most helpful for users entering content into the form control.

Firefox OS is reported to have partial support for this property as x-inputmode.

Blink-based browsers appear to recognize the inputMode property on input & textarea fields though it is unclear what effect it currently has as the feature is still in development.

Browser-specific notes:
#1: Support can be enabled via the dom.forms.inputmode flag.

Resources: Demo on Wufoo (old).
ls2.164456‒65663.2‒11.33.1‒TP5.5‒1821‒618
html5OffscreenCanvas

OffscreenCanvas allows canvas drawing to occur with no connection to the DOM and can be used inside workers.

Browser-specific notes:
#1: Can be enabled via the gfx.offscreencanvas.enabled flag. Currently only supports WebGL contexts, not 2D.
#2: Can be enabled via the Experimental canvas features flag.

Resources: MDN article, WebGL off the main thread - Mozilla Hacks article.
ls2.164458‒683.2‒11.33.1‒TP5.5‒1844‒618
otherEOT - Embedded OpenType fonts

Type of font that can be derived from a regular font, allowing small files and legal use of high-quality fonts. Usage is restricted by the file being tied to the website.

Proposal by Microsoft, being considered for W3C standardization.

Resources: Wikipedia, Example pages.
Parent feature: @font-face Web fonts.
unoff2.1‒644‒683.2‒11.33.1‒TP6‒1112‒182‒618
otherJPEG XR image format

The latest JPEG image format of Joint Photographic Experts Group which boasts better compression and supports lossless compression, alpha channel, and 48-bit deep color over normal jpg format.

Resources: Microsoft JPEG XR Codec Overview, Firefox support bug, Chrome support bug (marked as WONTFIX).
other2.1‒644‒683.2‒11.33.1‒TP5.59‒182‒617
cssCSS @apply rule

Allows a set of CSS properties to be applied using a named variable.

See also support for CSS Variables.

Browser-specific notes:
#1: Can be enabled via the "Experimental web platform features" flag under about:flags.

Resources: Article on CSS @apply.
unoff2.164451‒683.2‒11.33.1‒TP5.5‒1115‒182‒617
cssCSS Conical Gradients

Method of defining a conical or repeating conical color gradient as a CSS image.

Browser-specific notes:
#1: Can be enabled via the "Experimental Web Platform Features" flag.

Resources: Client-side polyfill, Server-side polyfill (PostCSS), Microsoft Edge feature request on UserVoice, Mozilla bug #1175958: Implement conic gradients from CSS Image Values Level 4.
Parent feature: CSS Gradients.
wd2.164459‒683.2‒11.33.1‒TP5.5‒182‒617
jsEfficient Script Yielding: setImmediate()

Yields control flow without the minimum delays enforced by setTimeout.

Resources: The case for setImmediate(), Script yielding with setImmediate, setImmediate polyfill, Firefox tracking bug, Chrome bug closed as WONTFIX.
unoff2.1‒644‒683.2‒11.33.1‒TP5.510‒182‒617
cssdisplay: run-in

If the run-in box contains a block box, same as block. If a block box follows the run-in box, the run-in box becomes the first inline box of the block box. If an inline box follows, the run-in box becomes a block box.

Browser-specific notes:
#1: Not before inline-elements.

Resources: Mozilla bug report, CSS Tricks article.
wd4.4.3‒6432‒688‒11.37‒TP5.5812‒182‒617
domResource Hints: Lazyload

Gives a hint to the browser to lower the loading priority of a resource.

Resources: lazyload attribute | lazyload property.
unoff2.1‒644‒683.2‒11.33.1‒TP5.511‒182‒616
jsProximity API

Defines events that provide information about the distance between a device and an object, as measured by a proximity sensor.

Resources: Demo, SitePoint article.
cr2.1‒644‒683.2‒11.33.1‒TP5.5‒1815‒616
css:dir() CSS pseudo-class

Matches elements based on their directionality. :dir(ltr) matches elements which are Left-to-Right. :dir(rtl) matches elements which are Right-to-Left.

Resources: HTML specification for `:dir()`, MDN Web Docs - CSS :dir, Chrome issue #576815: CSS4 pseudo-class :dir(), Microsoft Edge feature request on UserVoice, WebKit bug #64861: Need support for :dir() pseudo-class, JS Bin testcase.
wd2.1‒644‒683.2‒11.33.1‒TP5.5‒1849‒616
cssCSS Exclusions Level 1

Exclusions defines how inline content flows around elements. It extends the content wrapping ability of floats to any block-level element.

Resources: CSS Exclusions, Firefox tracking bug, WebKit tracking bug.
wd2.1‒644‒683.2‒11.33.1‒TP5.510‒182‒616
css3CSS element() function

This function renders a live image generated from an arbitrary HTML element.

Browser-specific notes:
#1: In Firefox < 4, usage limited to the background and background-image CSS properties.

Resources: MDN Web Docs - CSS element.
wd2.1‒644‒683.2‒11.33.1‒TP5.5‒184‒616
css:focus-visible CSS pseudo-class

The :focus-visible pseudo-class applies while an element matches the :focus pseudo-class, and the UA determines via heuristics that the focus should be specially indicated on the element (typically via a “focus ring”).

Previously drafted as :focus-ring.

Browser-specific notes:
#1: As :-moz-focusring.
#2: Enabled through the "Experimental Web Platform features" flag in chrome://flags.

Resources: Prototype for `:focus-visible`, WebKit bug #140144: Add support for `-webkit-focusring` CSS pseudo class, Chromium issue #271023: Outline should not appear on elements focused by mouse, Mozilla Developer Network (MDN) documentation - :-moz-focusring, Microsoft Edge implementation suggestion, Chrome does not support CSS Selectors 4 :focus-visible, Blink: Intent to implement :focus-visible pseudo class., Bugzilla: Add :focus-visible (former :focus-ring).
unoff2.1‒644‒65673.2‒11.33.1‒TP5.5‒184‒616
jsInput Method Editor API

Provides scripted access to the Input Method Editor (IME). An IME is often used to input characters from East Asian languages by typing roman characters and selecting from the resulting suggestions.

Browser-specific notes:
#1: Prefixed implementation uses msGetInputContext() method from an earlier version of the spec to get the InputMethodContext, rather than the inputMethodContext attribute. Also includes support for getCompositionAlternatives() from the latest Editor'.

Resources: Building Better Input Experience for East Asian Users with the IME API in IE11.
wd2.1‒644‒683.2‒11.33.1‒TP5.511‒182‒616
cssCSS Paint API

Allows programmatic generation of images used by CSS.

Resources: Google CSS Paint API Introduction, Is Houdini Ready Yet?.
wd2.1‒644‒6465‒683.2‒11.33.1‒TP5.5‒182‒615
css3CSS Counter Styles

The @counter-style CSS at-rule allows custom counter styles to be defined. A @counter-style rule defines how to convert a counter value into a string representation.

Browser-specific notes:
#1: Partial support in Firefox refers to lacking support for image symbols.

Resources: MDN Web Docs - CSS counter style.
cr2.1‒644‒683.2‒11.33.1‒TP5.5‒1833‒613
cssScoped CSS

Allows CSS rules to be scoped to part of the document, based on the position of the style element. The attribute has been removed from the current specification.

Browser-specific notes:
#1: Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags.
#2: Enabled in Firefox through the about:config setting "layout.css.scoped-style.enabled".

Resources: Polyfill, HTML5 Doctor article, HTML5Rocks article, Firefox bug #1291515: disable `<style scoped>` in content documents.
unoff2.1‒644‒683.2‒11.33.1‒TP5.5‒182155‒612
otherDynamic Adaptive Streaming over HTTP (MPEG-DASH)

HTTP-based media streaming communications protocol, an alternative to HTTP Live Streaming (HLS).

DASH can be used with a JavaScript library in browsers that doesn't support it natively as long as they support Media Source Extensions.

Browser-specific notes:
#1: Can be enabled via the media.dash.enabled flag.
#2: Only WebM video is supported.

Resources: Wikipedia article, JavaScript implementation.
other2.1‒644‒683.2‒11.33.1‒TP5.5‒1112‒182‒612
jsObject RTC (ORTC) API for WebRTC

Enables mobile endpoints to talk to servers and web browsers with Real-Time Communications (RTC) capabilities via native and simple JavaScript APIs.

ORTC is often dubbed WebRTC 1.1. It is possible to make ORTC communicate with WebRTC 1.0 endpoints. See WebRTC 1.0 for support details for that API.

Resources: Bringing Interoperable Real-Time Communications to the Web.
other2.1‒644‒683.2‒11.33.1‒TP5.5‒1113‒182‒612
cssExplicit descendant combinator >>unoff2.1‒644‒65663.2‒11.33.11111.15.5‒182‒611
jsObject.observe data binding

Method for data binding, a now-withdrawn ECMAScript 7 proposal.

Support in Blink-based browsers is expected to be removed in future versions.

Resources: Data-binding Revolutions with Object.observe(), Polyfill, Firefox tracking bug, An update on Object.observe.
unoff2.1‒643650‒683.2‒11.33.1‒TP5.5‒182‒610
html5seamless attribute for iframes

The seamless attribute makes an iframe's contents actually part of a page, and adopts the styles from its hosting page. The attribute has been removed from both the WHATWG and the W3C HTML5 specifications.

Chrome 20-26 had partial support behind a flag, though this was later removed.

Browser-specific notes:
#1: Hides the border of seamless iframes and recognizes the 'seamless' DOM property, but does not provide actual support.

Resources: Experimental polyfill, Article, Bug on Firefox support: wontfix, Microsoft Edge Developer UserVoice: No plans.
unoff2.1‒644‒683.2‒11.33.1‒TP5.5‒182‒610
css3CSS ::marker pseudo-element

The ::marker pseudo-element allows list item markers to be styled or have their content value customized.

Browser-specific notes:
#1: Safari supports the definition in the CSS Pseudo-Elements Module Level 4 instead of one in the List module due to the flux definition in it.

Resources: Chrome support bug, Firefox support bug, WebKit support bug, Edge UserVoice request, MDN Web Docs - CSS ::marker, CSS-Tricks article.
wd2.1‒644‒683.2‒11.211.33.1‒1111.15.5‒182‒610
css:has() CSS relational pseudo-class

Only select elements containing specified content. For example, a:has(>img) selects all <a> elements that contain an <img> child.

Resources: MDN Web Docs - :has, Firefox support bug.
wd2.1‒644‒683.2‒11.33.1‒TP5.5‒182‒610
cssCSS3 attr() function for all properties

While attr() is supported for effectively all browsers for the content property, CSS Values and Units Level 3 adds the ability to use attr() on **any** CSS property, and to use it for non-string values (e.g. numbers, colors).

See the generated content table for support for attr() for the content property.

Resources: MDN Web Docs - CSS attr, Microsoft Edge feature request on UserVoice, Mozilla Bug #435426: implement css3-values extensions to `attr()`, Chromium issue #246571: Implement CSS3 attribute / attr references, WebKit Bug #26609: Support CSS3 attr() function.
cr2.1‒644‒683.2‒11.33.1‒TP5.5‒182‒610
otherHEIF/ISO Base Media File Format

HEIF (High Efficiency Image File Format) is a standard developed by the Moving Picture Experts Group (MPEG) for storage and sharing of images and image sequences.

Browser-specific notes:
#1: While supported natively in macOS High Sierra and iOS 11, the file format does not appear to be supported in Safari.

Resources: Wikipedia article.
other2.1‒644‒683.2‒10.211.0‒11.33.111‒TP5.5‒182‒610

supported partial optional missing unknown prefixed

Usage percentage: 0 - .01 - 1-9 - 10 - 20 - majority