web-features 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/data.json CHANGED
@@ -1 +1 @@
1
- {"features":{"a":{"compat_features":["api.HTMLAnchorElement","api.HTMLAnchorElement.hash","api.HTMLAnchorElement.host","api.HTMLAnchorElement.hostname","api.HTMLAnchorElement.href","api.HTMLAnchorElement.hreflang","api.HTMLAnchorElement.origin","api.HTMLAnchorElement.password","api.HTMLAnchorElement.pathname","api.HTMLAnchorElement.port","api.HTMLAnchorElement.protocol","api.HTMLAnchorElement.rel","api.HTMLAnchorElement.relList","api.HTMLAnchorElement.search","api.HTMLAnchorElement.target","api.HTMLAnchorElement.text","api.HTMLAnchorElement.toString","api.HTMLAnchorElement.type","api.HTMLAnchorElement.username","html.elements.a","html.elements.a.href","html.elements.a.hreflang","html.elements.a.rel","html.elements.a.rel.noopener","html.elements.a.rel.noreferrer","html.elements.a.target","html.elements.a.type"],"description":"The <a> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.","description_html":"The <code>&#x3C;a></code> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.","group":"html-elements","name":"<a>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"abbr":{"compat_features":["html.elements.abbr"],"description":"The <abbr> HTML element represents an abbreviation or acronym.","description_html":"The <code>&#x3C;abbr></code> HTML element represents an abbreviation or acronym.","group":"html-elements","name":"<abbr>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-abbr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"abortable-fetch":{"compat_features":["api.Request.signal","api.fetch.init_signal_parameter"],"description":"If you construct a fetch request with an AbortSignal, you can cancel the request.","description_html":"If you construct a fetch request with an <code>AbortSignal</code>, you can cancel the request.","name":"Abortable fetch","spec":"https://fetch.spec.whatwg.org/#ref-for-dom-request-signal%E2%91%A1","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"66","chrome_android":"66","edge":"16","firefox":"57","firefox_android":"57","safari":"12.1","safari_ios":"12.2"}}},"aborting":{"caniuse":"abortcontroller","compat_features":["api.AbortController","api.AbortController.AbortController","api.AbortController.abort","api.AbortController.signal","api.AbortSignal","api.AbortSignal.abort_event","api.AbortSignal.aborted"],"description":"The AbortController and AbortSignal APIs allow you to cancel an ongoing operation, such as a fetch() request.","description_html":"The <code>AbortController</code> and <code>AbortSignal</code> APIs allow you to cancel an ongoing operation, such as a <code>fetch()</code> request.","name":"AbortController and AbortSignal","spec":"https://dom.spec.whatwg.org/#aborting-ongoing-activities","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"66","chrome_android":"66","edge":"16","firefox":"57","firefox_android":"57","safari":"12.1","safari_ios":"12.2"}}},"abortsignal-any":{"compat_features":["api.AbortSignal.any_static"],"description":"The AbortSignal.any() static method combines an iterable of abort signals into a single signal, with the abort reason taken from the first signal to abort.","description_html":"The <code>AbortSignal.any()</code> static method combines an iterable of abort signals into a single signal, with the abort reason taken from the first signal to abort.","name":"AbortSignal.any()","spec":"https://dom.spec.whatwg.org/#dom-abortsignal-any","status":{"baseline":"low","baseline_low_date":"2024-03-19","support":{"chrome":"116","chrome_android":"116","edge":"116","firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"abs-sign":{"compat_features":["css.types.abs","css.types.sign"],"description":"The abs() and sign() CSS functions compute the absolute value or the sign of the input.","description_html":"The <code>abs()</code> and <code>sign()</code> CSS functions compute the absolute value or the sign of the input.","name":"abs() and sign()","spec":"https://drafts.csswg.org/css-values-4/#sign-funcs","status":{"baseline":false,"support":{"firefox":"118","firefox_android":"118","safari":"15.4","safari_ios":"15.4"}}},"accelerometer":{"compat_features":["api.Accelerometer","api.Accelerometer.Accelerometer","api.Accelerometer.x","api.Accelerometer.y","api.Accelerometer.z","api.LinearAccelerationSensor","api.LinearAccelerationSensor.LinearAccelerationSensor","api.Permissions.permission_accelerometer","http.headers.Permissions-Policy.accelerometer"],"description":"The Accelerometer and LinearAccelerationSensor APIs read the acceleration applied to a device in three dimensions, either including the effect of gravity or not, respectively.","description_html":"The <code>Accelerometer</code> and <code>LinearAccelerationSensor</code> APIs read the acceleration applied to a device in three dimensions, either including the effect of gravity or not, respectively.","group":"sensors","name":"Accelerometer","spec":"https://w3c.github.io/accelerometer/#accelerometer-interface","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79"}}},"accent-color":{"compat_features":["css.properties.accent-color","css.properties.accent-color.auto"],"description":"The accent-color CSS property sets a color for checkboxes, radio buttons, and other form controls.","description_html":"The <code>accent-color</code> CSS property sets a color for checkboxes, radio buttons, and other form controls.","name":"accent-color","spec":"https://drafts.csswg.org/css-ui-4/#widget-accent","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"93","chrome_android":"93","edge":"93","firefox":"92","firefox_android":"92","safari":"15.4","safari_ios":"15.4"}}},"anchor-positioning":{"caniuse":"css-anchor-positioning","compat_features":["api.CSSPositionTryDescriptors","api.CSSPositionTryDescriptors.align-self","api.CSSPositionTryDescriptors.alignSelf","api.CSSPositionTryDescriptors.block-size","api.CSSPositionTryDescriptors.blockSize","api.CSSPositionTryDescriptors.bottom","api.CSSPositionTryDescriptors.height","api.CSSPositionTryDescriptors.inline-size","api.CSSPositionTryDescriptors.inlineSize","api.CSSPositionTryDescriptors.inset","api.CSSPositionTryDescriptors.inset-area","api.CSSPositionTryDescriptors.inset-block","api.CSSPositionTryDescriptors.inset-block-end","api.CSSPositionTryDescriptors.inset-block-start","api.CSSPositionTryDescriptors.inset-inline","api.CSSPositionTryDescriptors.inset-inline-end","api.CSSPositionTryDescriptors.inset-inline-start","api.CSSPositionTryDescriptors.insetArea","api.CSSPositionTryDescriptors.insetBlock","api.CSSPositionTryDescriptors.insetBlockEnd","api.CSSPositionTryDescriptors.insetBlockStart","api.CSSPositionTryDescriptors.insetInline","api.CSSPositionTryDescriptors.insetInlineEnd","api.CSSPositionTryDescriptors.insetInlineStart","api.CSSPositionTryDescriptors.justify-self","api.CSSPositionTryDescriptors.justifySelf","api.CSSPositionTryDescriptors.left","api.CSSPositionTryDescriptors.margin","api.CSSPositionTryDescriptors.margin-block","api.CSSPositionTryDescriptors.margin-block-end","api.CSSPositionTryDescriptors.margin-block-start","api.CSSPositionTryDescriptors.margin-bottom","api.CSSPositionTryDescriptors.margin-inline","api.CSSPositionTryDescriptors.margin-inline-end","api.CSSPositionTryDescriptors.margin-inline-start","api.CSSPositionTryDescriptors.margin-left","api.CSSPositionTryDescriptors.margin-right","api.CSSPositionTryDescriptors.margin-top","api.CSSPositionTryDescriptors.marginBlock","api.CSSPositionTryDescriptors.marginBlockEnd","api.CSSPositionTryDescriptors.marginBlockStart","api.CSSPositionTryDescriptors.marginBottom","api.CSSPositionTryDescriptors.marginInline","api.CSSPositionTryDescriptors.marginInlineEnd","api.CSSPositionTryDescriptors.marginInlineStart","api.CSSPositionTryDescriptors.marginLeft","api.CSSPositionTryDescriptors.marginRight","api.CSSPositionTryDescriptors.marginTop","api.CSSPositionTryDescriptors.max-block-size","api.CSSPositionTryDescriptors.max-height","api.CSSPositionTryDescriptors.max-inline-size","api.CSSPositionTryDescriptors.max-width","api.CSSPositionTryDescriptors.maxBlockSize","api.CSSPositionTryDescriptors.maxHeight","api.CSSPositionTryDescriptors.maxInlineSize","api.CSSPositionTryDescriptors.maxWidth","api.CSSPositionTryDescriptors.min-block-size","api.CSSPositionTryDescriptors.min-height","api.CSSPositionTryDescriptors.min-inline-size","api.CSSPositionTryDescriptors.min-width","api.CSSPositionTryDescriptors.minBlockSize","api.CSSPositionTryDescriptors.minHeight","api.CSSPositionTryDescriptors.minInlineSize","api.CSSPositionTryDescriptors.minWidth","api.CSSPositionTryDescriptors.place-self","api.CSSPositionTryDescriptors.placeSelf","api.CSSPositionTryDescriptors.position-anchor","api.CSSPositionTryDescriptors.positionAnchor","api.CSSPositionTryDescriptors.right","api.CSSPositionTryDescriptors.top","api.CSSPositionTryDescriptors.width","api.CSSPositionTryRule","api.CSSPositionTryRule.name","api.CSSPositionTryRule.style","css.at-rules.position-try","css.properties.align-items.anchor-center","css.properties.align-self.anchor-center","css.properties.anchor-name","css.properties.anchor-name.none","css.properties.block-size.anchor-size","css.properties.bottom.anchor","css.properties.height.anchor-size","css.properties.inline-size.anchor-size","css.properties.inset-area","css.properties.inset-area.block-end","css.properties.inset-area.block-start","css.properties.inset-area.bottom","css.properties.inset-area.center","css.properties.inset-area.end","css.properties.inset-area.inline-end","css.properties.inset-area.inline-start","css.properties.inset-area.left","css.properties.inset-area.none","css.properties.inset-area.right","css.properties.inset-area.self-end","css.properties.inset-area.self-start","css.properties.inset-area.span-all","css.properties.inset-area.span-block-end","css.properties.inset-area.span-block-start","css.properties.inset-area.span-bottom","css.properties.inset-area.span-end","css.properties.inset-area.span-inline-end","css.properties.inset-area.span-inline-start","css.properties.inset-area.span-start","css.properties.inset-area.span-top","css.properties.inset-area.span-x-end","css.properties.inset-area.span-x-start","css.properties.inset-area.span-y-end","css.properties.inset-area.span-y-start","css.properties.inset-area.start","css.properties.inset-area.top","css.properties.inset-area.x-end","css.properties.inset-area.x-self-end","css.properties.inset-area.x-self-start","css.properties.inset-area.x-start","css.properties.inset-area.y-end","css.properties.inset-area.y-self-end","css.properties.inset-area.y-self-start","css.properties.inset-area.y-start","css.properties.inset-block-end.anchor","css.properties.inset-block-start.anchor","css.properties.inset-block.anchor","css.properties.inset-inline-end.anchor","css.properties.inset-inline-start.anchor","css.properties.inset-inline.anchor","css.properties.inset.anchor","css.properties.justify-items.anchor-center","css.properties.justify-self.anchor-center","css.properties.left.anchor","css.properties.max-block-size.anchor-size","css.properties.max-height.anchor-size","css.properties.max-inline-size.anchor-size","css.properties.max-width.anchor-size","css.properties.min-block-size.anchor-size","css.properties.min-height.anchor-size","css.properties.min-inline-size.anchor-size","css.properties.min-width.anchor-size","css.properties.place-items.anchor-center","css.properties.place-self.anchor-center","css.properties.position-anchor","css.properties.position-anchor.auto","css.properties.position-try","css.properties.position-try-fallbacks","css.properties.position-try-fallbacks.flip-block","css.properties.position-try-fallbacks.flip-inline","css.properties.position-try-fallbacks.flip-start","css.properties.position-try-fallbacks.inset-area","css.properties.position-try-fallbacks.none","css.properties.position-try-order","css.properties.position-try-order.most-block-size","css.properties.position-try-order.most-height","css.properties.position-try-order.most-inline-size","css.properties.position-try-order.most-width","css.properties.position-try-order.normal","css.properties.position-visibility","css.properties.position-visibility.always","css.properties.position-visibility.anchors-visible","css.properties.position-visibility.no-overflow","css.properties.right.anchor","css.properties.top.anchor","css.properties.width.anchor-size","css.types.anchor","css.types.anchor-size"],"description":"Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.","description_html":"Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.","name":"Anchor positioning","spec":"https://drafts.csswg.org/css-anchor-position-1/#anchoring","status":{"baseline":false,"support":{"chrome":"125","chrome_android":"125","edge":"125"}}},"animation-composition":{"compat_features":["css.properties.animation-composition"],"description":"The animation-composition CSS property chooses how to combine animations that affect the same property.","description_html":"The <code>animation-composition</code> CSS property chooses how to combine animations that affect the same property.","name":"animation-composition","spec":"https://drafts.csswg.org/css-animations-2/#animation-composition","status":{"baseline":"low","baseline_low_date":"2023-07-04","support":{"chrome":"112","chrome_android":"112","edge":"112","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}},"appearance":{"compat_features":["css.properties.appearance","css.properties.appearance.auto","css.properties.appearance.button","css.properties.appearance.checkbox","css.properties.appearance.listbox","css.properties.appearance.menulist","css.properties.appearance.menulist-button","css.properties.appearance.meter","css.properties.appearance.none","css.properties.appearance.progress-bar","css.properties.appearance.radio","css.properties.appearance.searchfield","css.properties.appearance.textarea","css.properties.appearance.textfield"],"description":"The appearance CSS property controls the appearance of form controls. Using appearance: none disables any default native appearance and allows the elements to be styled with CSS.","description_html":"The <code>appearance</code> CSS property controls the appearance of form controls. Using <code>appearance: none</code> disables any default native appearance and allows the elements to be styled with CSS.","name":"appearance","spec":"https://drafts.csswg.org/css-ui-4/#appearance-switching","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"80","firefox_android":"80","safari":"15.4","safari_ios":"15.4"}}},"aria-attribute-reflection":{"compat_features":["api.Element.ariaAtomic","api.Element.ariaAutoComplete","api.Element.ariaBusy","api.Element.ariaChecked","api.Element.ariaColCount","api.Element.ariaColIndex","api.Element.ariaColSpan","api.Element.ariaCurrent","api.Element.ariaDisabled","api.Element.ariaExpanded","api.Element.ariaHasPopup","api.Element.ariaHidden","api.Element.ariaInvalid","api.Element.ariaKeyShortcuts","api.Element.ariaLabel","api.Element.ariaLevel","api.Element.ariaLive","api.Element.ariaModal","api.Element.ariaMultiLine","api.Element.ariaMultiSelectable","api.Element.ariaOrientation","api.Element.ariaPlaceholder","api.Element.ariaPosInSet","api.Element.ariaPressed","api.Element.ariaReadOnly","api.Element.ariaRelevant","api.Element.ariaRequired","api.Element.ariaRoleDescription","api.Element.ariaRowCount","api.Element.ariaRowIndex","api.Element.ariaRowSpan","api.Element.ariaSelected","api.Element.ariaSetSize","api.Element.ariaSort","api.Element.ariaValueMax","api.Element.ariaValueMin","api.Element.ariaValueNow","api.Element.ariaValueText","api.Element.role"],"description":"WAI-ARIA attributes have corresponding properties on Element and ElementInternals objects.","description_html":"WAI-ARIA attributes have corresponding properties on <code>Element</code> and <code>ElementInternals</code> objects.","name":"ARIA attribute reflection","spec":"https://w3c.github.io/aria/#accessibilityroleandproperties-correspondence","status":{"baseline":"low","baseline_low_date":"2023-10-24","support":{"chrome":"103","chrome_android":"103","edge":"103","firefox":"119","firefox_android":"119","safari":"12.1","safari_ios":"12.2"}}},"array":{"compat_features":["javascript.builtins.Array","javascript.builtins.Array.Array","javascript.builtins.Array.concat","javascript.builtins.Array.join","javascript.builtins.Array.length","javascript.builtins.Array.pop","javascript.builtins.Array.push","javascript.builtins.Array.reverse","javascript.builtins.Array.shift","javascript.builtins.Array.slice","javascript.builtins.Array.sort","javascript.builtins.Array.toLocaleString","javascript.builtins.Array.toString","javascript.builtins.Array.unshift","javascript.grammar.array_literals"],"description":"Arrays are ordered lists of JavaScript values.","description_html":"Arrays are ordered lists of JavaScript values.","group":"arrays","name":"Array (initial support)","snapshot":"ecmascript-1","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array-objects","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array-constructor","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.concat","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.join","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-properties-of-array-instances-length","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.pop","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.push","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.reverse","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.shift","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.slice","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.sort","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tolocalestring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tostring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.unshift","https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-array-initializer"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"array-at":{"compat_features":["javascript.builtins.Array.at","javascript.builtins.TypedArray.at"],"description":"The at() method of arrays and typed arrays returns the item at an index, including negative indices for getting items relative to the end of an array. Also known as the relative indexing method.","description_html":"The <code>at()</code> method of arrays and typed arrays returns the item at an index, including negative indices for getting items relative to the end of an array. Also known as the relative indexing method.","group":["arrays","typed-arrays"],"name":"Array at()","snapshot":"ecmascript-2022","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.at","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"92","chrome_android":"92","edge":"92","firefox":"90","firefox_android":"90","safari":"15.4","safari_ios":"15.4"}}},"array-by-copy":{"compat_features":["javascript.builtins.Array.toReversed","javascript.builtins.Array.toSorted","javascript.builtins.Array.toSpliced","javascript.builtins.Array.with","javascript.builtins.TypedArray.toReversed","javascript.builtins.TypedArray.toSorted","javascript.builtins.TypedArray.with"],"description":"The toReversed(), toSorted(), toSpliced(), and with() methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as sort() or reverse() that change arrays in place.","description_html":"The <code>toReversed()</code>, <code>toSorted()</code>, <code>toSpliced()</code>, and <code>with()</code> methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as <code>sort()</code> or <code>reverse()</code> that change arrays in place.","group":["arrays","typed-arrays"],"name":"Array by copy","snapshot":"ecmascript-2023","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.with","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.with"],"status":{"baseline":"low","baseline_low_date":"2023-07-04","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}},"array-copywithin":{"compat_features":["javascript.builtins.Array.copyWithin","javascript.builtins.TypedArray.copyWithin"],"description":"The copyWithin() method of arrays and typed arrays shifts or copies items of an array to another index of the array without changing its length.","description_html":"The <code>copyWithin()</code> method of arrays and typed arrays shifts or copies items of an array to another index of the array without changing its length.","group":["arrays","typed-arrays"],"name":"Array copyWithin()","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.copywithin","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"34","firefox_android":"34","safari":"10","safari_ios":"10"}}},"array-fill":{"compat_features":["javascript.builtins.Array.fill","javascript.builtins.TypedArray.fill"],"description":"The fill() method of arrays and typed arrays sets all or some items of an array to a given a value.","description_html":"The <code>fill()</code> method of arrays and typed arrays sets all or some items of an array to a given a value.","group":["arrays","typed-arrays"],"name":"Array fill()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.fill","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.fill"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"37","firefox_android":"37","safari":"10","safari_ios":"10"}}},"array-find":{"caniuse":["array-find","array-find-index"],"compat_features":["javascript.builtins.Array.find","javascript.builtins.Array.findIndex","javascript.builtins.TypedArray.find","javascript.builtins.TypedArray.findIndex"],"description":"The find() and findIndex() methods of arrays and typed arrays search an array for the first item that satisfies a test function.","description_html":"The <code>find()</code> and <code>findIndex()</code> methods of arrays and typed arrays search an array for the first item that satisfies a test function.","group":["arrays","typed-arrays"],"name":"Array find() and findIndex()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.findindex","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.find","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.findindex"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"37","firefox_android":"37","safari":"10","safari_ios":"10"}}},"array-findlast":{"compat_features":["javascript.builtins.Array.findLast","javascript.builtins.Array.findLastIndex","javascript.builtins.TypedArray.findLast","javascript.builtins.TypedArray.findLastIndex"],"description":"The findLast() and findLastIndex() methods of arrays and typed arrays search an array in reverse order for the first item that satisfies a test function.","description_html":"The <code>findLast()</code> and <code>findLastIndex()</code> methods of arrays and typed arrays search an array in reverse order for the first item that satisfies a test function.","group":["arrays","typed-arrays"],"name":"Array findLast() and findLastIndex()","snapshot":"ecmascript-2023","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.findlast","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.findlastindex","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.findlast","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.findlastindex"],"status":{"baseline":"low","baseline_low_date":"2022-08-23","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"104","firefox_android":"104","safari":"15.4","safari_ios":"15.4"}}},"array-flat":{"caniuse":"array-flat","compat_features":["javascript.builtins.Array.flat","javascript.builtins.Array.flatMap"],"description":"The flat() and flatMap() methods for arrays creates a new array such that each nested array item is concatenated into it.","description_html":"The <code>flat()</code> and <code>flatMap()</code> methods for arrays creates a new array such that each nested array item is concatenated into it.","group":"arrays","name":"Array flat() and flatMap()","snapshot":"ecmascript-2019","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.flat","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.flatmap"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"62","firefox_android":"62","safari":"12","safari_ios":"12"}}},"array-from":{"compat_features":["javascript.builtins.Array.from","javascript.builtins.TypedArray.from"],"description":"The Array.from() and typed array .from() static methods copy items from an iterable or array-like object to make a new array.","description_html":"The <code>Array.from()</code> and typed array <code>.from()</code> static methods copy items from an iterable or array-like object to make a new array.","group":["arrays","typed-arrays"],"name":"Array.from()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.from","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.of"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"38","firefox_android":"38","safari":"10","safari_ios":"10"}}},"array-fromasync":{"compat_features":["javascript.builtins.Array.fromAsync"],"description":"The Array.fromAsync() static method copies items from an async iterable object to make a new array.","description_html":"The <code>Array.fromAsync()</code> static method copies items from an async iterable object to make a new array.","group":"arrays","name":"Array.fromAsync()","spec":"https://tc39.es/proposal-array-from-async/#sec-array.fromAsync","status":{"baseline":"low","baseline_low_date":"2024-01-25","support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"115","firefox_android":"115","safari":"16.4","safari_ios":"16.4"}}},"array-group":{"compat_features":["javascript.builtins.Map.groupBy","javascript.builtins.Object.groupBy"],"description":"The Object.groupBy() and Map.groupBy() static methods group values of arrays and iterables based on a function that returns a key for each value.","description_html":"The <code>Object.groupBy()</code> and <code>Map.groupBy()</code> static methods group values of arrays and iterables based on a function that returns a key for each value.","group":"maps","name":"Array grouping","spec":"https://tc39.es/proposal-array-grouping/","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"119","firefox_android":"119","safari":"17.4","safari_ios":"17.4"}}},"array-includes":{"compat_features":["javascript.builtins.Array.includes","javascript.builtins.TypedArray.includes"],"description":"The includes() method of arrays and typed arrays returns whether a given value appears in the array.","description_html":"The <code>includes()</code> method of arrays and typed arrays returns whether a given value appears in the array.","group":["arrays","typed-arrays"],"name":"Array includes()","snapshot":"ecmascript-2016","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.includes","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.includes"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"47","chrome_android":"47","edge":"14","firefox":"43","firefox_android":"43","safari":"10","safari_ios":"10"}}},"array-isarray":{"compat_features":["javascript.builtins.Array.isArray"],"description":"The Array.isArray() static method checks whether a value is an array.","description_html":"The <code>Array.isArray()</code> static method checks whether a value is an array.","group":"arrays","name":"Array.isArray()","snapshot":"ecmascript-5","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.isarray","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"array-iteration-methods":{"compat_features":["javascript.builtins.Array.every","javascript.builtins.Array.filter","javascript.builtins.Array.forEach","javascript.builtins.Array.indexOf","javascript.builtins.Array.lastIndexOf","javascript.builtins.Array.map","javascript.builtins.Array.reduce","javascript.builtins.Array.reduceRight","javascript.builtins.Array.some"],"description":"Array iteration methods","description_html":"Array iteration methods","group":"arrays","name":"Array iteration methods","snapshot":"ecmascript-5","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.every","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.filter","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.foreach","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.indexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.lastindexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.map","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.reduce","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.reduceright","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.some"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"array-iterators":{"compat_features":["javascript.builtins.Array.@@iterator","javascript.builtins.Array.entries","javascript.builtins.Array.keys","javascript.builtins.Array.values"],"description":"Arrays are iterable with the for…of statement and enumerable with the methods entries(), keys(), and values().","description_html":"Arrays are iterable with the <code>for…of</code> statement and enumerable with the methods <code>entries()</code>, <code>keys()</code>, and <code>values()</code>.","group":["arrays","iterators"],"name":"Array iterators","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype-@@iterator","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.entries","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.keys","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.values"],"status":{"baseline":"high","baseline_high_date":"2020-11-09","baseline_low_date":"2018-05-09","support":{"chrome":"66","chrome_android":"66","edge":"14","firefox":"60","firefox_android":"60","safari":"10","safari_ios":"10"}}},"array-of":{"compat_features":["javascript.builtins.Array.of","javascript.builtins.TypedArray.of"],"description":"The Array.of() and typed array .of() static methods create new arrays from the values of any number of arguments.","description_html":"The <code>Array.of()</code> and typed array <code>.of()</code> static methods create new arrays from the values of any number of arguments.","group":["arrays","typed-arrays"],"name":"Array.of()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.of","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.of"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"38","firefox_android":"38","safari":"10","safari_ios":"10"}}},"array-splice":{"compat_features":["javascript.builtins.Array.splice"],"description":"The array splice() method changes an array in-place. You can use it to delete items, overwrite items, or insert items, starting from an index.","description_html":"The array <code>splice()</code> method changes an array in-place. You can use it to delete items, overwrite items, or insert items, starting from an index.","group":"arrays","name":"Array splice()","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.splice","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"aside":{"compat_features":["html.elements.aside"],"description":"The <aside> element represents a portion of a document whose content is only indirectly related to the document's main content.","description_html":"The <code>&#x3C;aside></code> element represents a portion of a document whose content is only indirectly related to the document's main content.","group":"html-elements","name":"<aside>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-aside-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"aspect-ratio":{"compat_features":["css.properties.aspect-ratio","html.elements.img.aspect_ratio_computed_from_attributes","html.elements.video.aspect_ratio_computed_from_attributes"],"description":"The aspect-ratio CSS property controls the width-to-height ratio of elements. For <img> and <video> elements, the width and height attributes used together with height: auto control the aspect ratio while the image/video is loading.","description_html":"The <code>aspect-ratio</code> CSS property controls the width-to-height ratio of elements. For <code>&#x3C;img></code> and <code>&#x3C;video></code> elements, the <code>width</code> and <code>height</code> attributes used together with <code>height: auto</code> control the aspect ratio while the image/video is loading.","name":"aspect-ratio","spec":"https://drafts.csswg.org/css-sizing-4/#aspect-ratio","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"89","firefox_android":"89","safari":"15","safari_ios":"15"}}},"async-await":{"caniuse":"async-functions","compat_features":["javascript.builtins.AsyncFunction","javascript.builtins.AsyncFunction.AsyncFunction","javascript.operators.async_function","javascript.operators.await","javascript.statements.async_function"],"description":"The async and await keywords allow you to use the asynchronous, promise-based behavior of a function without using promise chains.","description_html":"The <code>async</code> and <code>await</code> keywords allow you to use the asynchronous, promise-based behavior of a function without using promise chains.","group":"javascript","name":"Async functions","snapshot":"ecmascript-2017","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-async-function-definitions","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"55","chrome_android":"55","edge":"15","firefox":"52","firefox_android":"52","safari":"10.1","safari_ios":"10.3"}}},"async-clipboard":{"caniuse":"async-clipboard","compat_features":["api.Clipboard","api.Clipboard.read","api.Clipboard.readText","api.Clipboard.write","api.Clipboard.writeText","api.ClipboardItem","api.ClipboardItem.ClipboardItem","api.ClipboardItem.getType","api.ClipboardItem.presentationStyle","api.ClipboardItem.types","api.Navigator.clipboard"],"description":"The navigator.clipboard API asynchronously reads and writes to the system clipboard.","description_html":"The <code>navigator.clipboard</code> API asynchronously reads and writes to the system clipboard.","group":"clipboard","name":"Async clipboard","spec":"https://w3c.github.io/clipboard-apis/#async-clipboard-api","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"127","firefox_android":"127","safari":"13.1","safari_ios":"13.4"}}},"async-iterable-streams":{"compat_features":["api.ReadableStream.@@asyncIterator"],"description":"Asynchronous iteration of a stream allows you to use for await...of loops to iterate through a stream's incoming data.","description_html":"Asynchronous iteration of a stream allows you to use <code>for await...of</code> loops to iterate through a stream's incoming data.","group":"streams","name":"Asynchronously iterable streams","spec":"https://streams.spec.whatwg.org/#rs-asynciterator","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"110","firefox_android":"110"}}},"audio":{"caniuse":"audio","compat_features":["api.HTMLAudioElement","api.HTMLAudioElement.Audio","html.elements.audio","html.elements.audio.autoplay","html.elements.audio.controls","html.elements.audio.crossorigin","html.elements.audio.loop","html.elements.audio.muted","html.elements.audio.preload","html.elements.audio.src"],"description":"The <audio> element plays sound such as audio effects or music, optionally with controls provided by the browser.","description_html":"The <code>&#x3C;audio></code> element plays sound such as audio effects or music, optionally with controls provided by the browser.","group":["media-elements","html-elements"],"name":"<audio>","spec":"https://html.spec.whatwg.org/multipage/media.html#audio","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"3"}}},"audio-session":{"compat_features":["api.AudioSession","api.AudioSession.type","api.Navigator.audioSession"],"description":"The navigator.audioSession API controls how audio playback interacts with other applications. For example, playing music can pause audio from other applications, while ambient audio can play at the same time.","description_html":"The <code>navigator.audioSession</code> API controls how audio playback interacts with other applications. For example, playing music can pause audio from other applications, while ambient audio can play at the same time.","name":"Audio session","spec":"https://w3c.github.io/audio-session/","status":{"baseline":false,"support":{"safari":"16.4","safari_ios":"16.4"}}},"audio-video-tracks":{"caniuse":["audiotracks","videotracks"],"compat_features":["api.AudioTrack","api.AudioTrack.enabled","api.AudioTrack.id","api.AudioTrack.kind","api.AudioTrack.label","api.AudioTrack.language","api.AudioTrackList","api.AudioTrackList.addtrack_event","api.AudioTrackList.change_event","api.AudioTrackList.getTrackById","api.AudioTrackList.length","api.AudioTrackList.removetrack_event","api.HTMLMediaElement.audioTracks","api.HTMLMediaElement.videoTracks","api.VideoTrack","api.VideoTrack.id","api.VideoTrack.kind","api.VideoTrack.label","api.VideoTrack.language","api.VideoTrack.selected","api.VideoTrackList","api.VideoTrackList.addtrack_event","api.VideoTrackList.change_event","api.VideoTrackList.getTrackById","api.VideoTrackList.length","api.VideoTrackList.removetrack_event","api.VideoTrackList.selectedIndex"],"description":"The audioTracks and videoTracks APIs for media elements switch audio and video tracks during playback.","description_html":"The <code>audioTracks</code> and <code>videoTracks</code> APIs for media elements switch audio and video tracks during playback.","group":"media-elements","name":"Audio and video tracks","spec":"https://html.spec.whatwg.org/multipage/media.html#media-resources-with-multiple-media-tracks","status":{"baseline":false,"support":{"safari":"8","safari_ios":"8"}}},"audio-worklet":{"compat_features":["api.AudioWorklet","api.AudioWorkletGlobalScope","api.AudioWorkletGlobalScope.currentFrame","api.AudioWorkletGlobalScope.currentTime","api.AudioWorkletGlobalScope.registerProcessor","api.AudioWorkletGlobalScope.sampleRate","api.AudioWorkletNode","api.AudioWorkletNode.AudioWorkletNode","api.AudioWorkletNode.parameters","api.AudioWorkletNode.port","api.AudioWorkletNode.processorerror_event","api.AudioWorkletProcessor","api.AudioWorkletProcessor.AudioWorkletProcessor","api.AudioWorkletProcessor.port","api.BaseAudioContext.audioWorklet"],"description":"The AudioWorklet API runs module code in a separate thread, specifically for non-blocking, low latency audio processing.","description_html":"The <code>AudioWorklet</code> API runs module code in a separate thread, specifically for non-blocking, low latency audio processing.","group":"web-audio","name":"AudioWorklet","spec":"https://webaudio.github.io/web-audio-api/#AudioWorklet","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"76","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"autofill":{"compat_features":["css.selectors.autofill"],"description":"The :autofill pseudo-class matches <input> elements that have been filled in automatically by the browser.","description_html":"The <code>:autofill</code> pseudo-class matches <code>&#x3C;input></code> elements that have been filled in automatically by the browser.","group":"forms","name":":autofill","spec":"https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill","status":{"baseline":"low","baseline_low_date":"2023-02-09","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"86","firefox_android":"86","safari":"15","safari_ios":"15"}}},"autofocus":{"caniuse":"autofocus","compat_features":["api.HTMLElement.autofocus","api.MathMLElement.autofocus","api.SVGElement.autofocus","html.global_attributes.autofocus"],"description":"The autofocus HTML attribute gives focus to an element on page load.","description_html":"The <code>autofocus</code> HTML attribute gives focus to an element on page load.","name":"Autofocus","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-autofocus-attribute","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"autonomous-custom-elements":{"compat_features":["api.CustomElementRegistry","api.CustomElementRegistry.define","api.Window.customElements","css.selectors.defined"],"description":"Autonomous custom elements are HTML elements with a hyphenated tag name (like <example-element>) that have behaviors you define.","description_html":"Autonomous custom elements are HTML elements with a hyphenated tag name (like <code>&#x3C;example-element></code>) that have behaviors you define.","group":"custom-elements","name":"Autonomous custom elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#autonomous-custom-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"63","firefox_android":"63","safari":"10.1","safari_ios":"10.3"}}},"avif":{"caniuse":"avif","description":"AVIF (AV1 Image File Format) is an image format based on the AV1 video format.","description_html":"AVIF (AV1 Image File Format) is an image format based on the AV1 video format.","name":"AVIF","spec":"https://aomediacodec.github.io/av1-avif/","status":{"baseline":"low","baseline_low_date":"2024-01-26","support":{"chrome":"85","chrome_android":"85","edge":"121","firefox":"93","firefox_android":"93","safari":"16","safari_ios":"16"}}},"backdrop-filter":{"caniuse":"css-backdrop-filter","compat_features":["css.properties.backdrop-filter"],"description":"The backdrop-filter CSS property applies graphical effects such as blurring or color shifting to the area behind an element.","description_html":"The <code>backdrop-filter</code> CSS property applies graphical effects such as blurring or color shifting to the area behind an element.","name":"backdrop-filter","spec":"https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty","status":{"baseline":false,"support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"103","firefox_android":"103"}}},"background-clip":{"compat_features":["css.properties.background-clip","css.properties.background-clip.border-box","css.properties.background-clip.content-box","css.properties.background-clip.padding-box"],"description":"The background-clip CSS property sets the extent of the background: the padding box, the content box, or the default border box.","description_html":"The <code>background-clip</code> CSS property sets the extent of the background: the padding box, the content box, or the default border box.","name":"background-clip","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-clip","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"background-clip-text":{"compat_features":["css.properties.background-clip.text"],"description":"The background-clip: text CSS declaration draws the background underneath only the text in the element.","description_html":"The <code>background-clip: text</code> CSS declaration draws the background underneath only the text in the element.","name":"background-clip: text","spec":"https://drafts.csswg.org/css-backgrounds-4/#background-clip","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"49","firefox_android":"49","safari":"14","safari_ios":"14"}}},"background-fetch":{"compat_features":["api.BackgroundFetchEvent","api.BackgroundFetchEvent.BackgroundFetchEvent","api.BackgroundFetchEvent.registration","api.BackgroundFetchManager","api.BackgroundFetchManager.fetch","api.BackgroundFetchManager.get","api.BackgroundFetchManager.getIds","api.BackgroundFetchRecord","api.BackgroundFetchRecord.request","api.BackgroundFetchRecord.responseReady","api.BackgroundFetchRegistration.abort","api.BackgroundFetchRegistration.downloadTotal","api.BackgroundFetchRegistration.downloaded","api.BackgroundFetchRegistration.failureReason","api.BackgroundFetchRegistration.id","api.BackgroundFetchRegistration.match","api.BackgroundFetchRegistration.matchAll","api.BackgroundFetchRegistration.progress_event","api.BackgroundFetchRegistration.recordsAvailable","api.BackgroundFetchRegistration.result","api.BackgroundFetchRegistration.uploadTotal","api.BackgroundFetchRegistration.uploaded","api.BackgroundFetchUpdateUIEvent","api.BackgroundFetchUpdateUIEvent.BackgroundFetchUpdateUIEvent","api.BackgroundFetchUpdateUIEvent.updateUI","api.ServiceWorkerGlobalScope.backgroundfetchabort_event","api.ServiceWorkerGlobalScope.backgroundfetchclick_event","api.ServiceWorkerGlobalScope.backgroundfetchfail_event","api.ServiceWorkerGlobalScope.backgroundfetchsuccess_event","api.ServiceWorkerRegistration.backgroundFetch"],"description":"Background fetch downloads data in the background even when the web page is closed.","description_html":"Background fetch downloads data in the background even when the web page is closed.","name":"Background fetch","spec":"https://wicg.github.io/background-fetch/","status":{"baseline":false,"support":{"chrome":"74","chrome_android":"74","edge":"79"}}},"base":{"compat_features":["api.HTMLBaseElement","api.HTMLBaseElement.href","api.HTMLBaseElement.target","html.elements.base","html.elements.base.href","html.elements.base.href.forbid_data_javascript_urls","html.elements.base.href.relative_url","html.elements.base.target"],"description":"The <base> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.","description_html":"The <code>&#x3C;base></code> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.","group":"html-elements","name":"<base>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-base-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"baseline-source":{"compat_features":["css.properties.baseline-source","css.properties.baseline-source.auto","css.properties.baseline-source.first","css.properties.baseline-source.last"],"description":"The baseline-source CSS property controls how inline-level boxes with multiple lines of text are aligned with the surrounding text. By default, which typographic baseline is used depends on the display property value.","description_html":"The <code>baseline-source</code> CSS property controls how inline-level boxes with multiple lines of text are aligned with the surrounding text. By default, which typographic baseline is used depends on the <code>display</code> property value.","name":"baseline-source","spec":"https://drafts.csswg.org/css-inline-3/#baseline-source","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"115","firefox_android":"115"}}},"bigint":{"caniuse":"bigint","compat_features":["javascript.builtins.BigInt","javascript.builtins.BigInt.BigInt","javascript.builtins.BigInt.asIntN","javascript.builtins.BigInt.asUintN","javascript.builtins.BigInt.toLocaleString","javascript.builtins.BigInt.toString","javascript.builtins.BigInt.valueOf"],"description":"The BigInt JavaScript type represents integers of any size, including integers too large for the primitive Number type.","description_html":"The <code>BigInt</code> JavaScript type represents integers of any size, including integers too large for the primitive <code>Number</code> type.","group":"javascript","name":"BigInt","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-bigint-objects","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"67","chrome_android":"67","edge":"79","firefox":"68","firefox_android":"68","safari":"14","safari_ios":"14"}}},"blocking-render":{"compat_features":["api.HTMLLinkElement.blocking","api.HTMLScriptElement.blocking","api.HTMLStyleElement.blocking","html.elements.link.blocking","html.elements.script.blocking","html.elements.style.blocking"],"description":"The blocking=\"render\" attribute for <link>, <script>, and <style> elements blocks rendering until the external script or stylesheet has been loaded. For <link rel=\"expect\">, rendering is blocked until a specific element is in the DOM.","description_html":"The <code>blocking=\"render\"</code> attribute for <code>&#x3C;link></code>, <code>&#x3C;script></code>, and <code>&#x3C;style></code> elements blocks rendering until the external script or stylesheet has been loaded. For <code>&#x3C;link rel=\"expect\"></code>, rendering is blocked until a specific element is in the DOM.","group":"html","name":"blocking=\"render\"","spec":"https://html.spec.whatwg.org/multipage/urls-and-fetching.html#blocking-attributes","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105"}}},"border-image":{"caniuse":"border-image","compat_features":["css.properties.border-image","css.properties.border-image-outset","css.properties.border-image-repeat","css.properties.border-image-repeat.round","css.properties.border-image-repeat.space","css.properties.border-image-slice","css.properties.border-image-source","css.properties.border-image-width","css.properties.border-image.fill","css.properties.border-image.gradient","css.properties.border-image.optional_border_image_slice"],"description":"The border-image CSS property draws an image around an element.","description_html":"The <code>border-image</code> CSS property draws an image around an element.","name":"Border images","spec":"https://drafts.csswg.org/css-backgrounds-3/#border-images","status":{"baseline":"high","baseline_high_date":"2019-08-01","baseline_low_date":"2017-02-01","support":{"chrome":"56","chrome_android":"56","edge":"12","firefox":"50","firefox_android":"50","safari":"9.1","safari_ios":"9.3"}}},"br":{"compat_features":["api.HTMLBRElement","html.elements.br"],"description":"The <br> element produces line breaks in text.","description_html":"The <code>&#x3C;br></code> element produces line breaks in text.","group":"html-elements","name":"<br>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-br-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"broadcast-channel":{"caniuse":"broadcastchannel","compat_features":["api.BroadcastChannel","api.BroadcastChannel.BroadcastChannel","api.BroadcastChannel.close","api.BroadcastChannel.message_event","api.BroadcastChannel.messageerror_event","api.BroadcastChannel.name","api.BroadcastChannel.postMessage"],"description":"The BroadcastChannel API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","description_html":"The <code>BroadcastChannel</code> API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","name":"BroadcastChannel","spec":"https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"38","firefox_android":"38","safari":"15.4","safari_ios":"15.4"}}},"calc":{"caniuse":"calc","compat_features":["css.types.calc"],"description":"The calc() CSS function computes mathematical expressions such a calc(100%/3 - 1em).","description_html":"The <code>calc()</code> CSS function computes mathematical expressions such a <code>calc(100%/3 - 1em)</code>.","name":"calc()","spec":"https://drafts.csswg.org/css-values-3/#calc-notation","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"28","edge":"12","firefox":"16","firefox_android":"16","safari":"7","safari_ios":"7"}}},"calc-constants":{"compat_features":["css.types.calc-constant","css.types.calc-constant.NaN","css.types.calc-constant.e","css.types.calc-constant.infinity","css.types.calc-constant.pi"],"description":"The e, pi, infinity, and NaN constants are accepted in CSS math functions such as calc().","description_html":"The <code>e</code>, <code>pi</code>, <code>infinity</code>, and <code>NaN</code> constants are accepted in CSS math functions such as <code>calc()</code>.","name":"calc() constants","spec":"https://drafts.csswg.org/css-values-4/#calc-keywords","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"114","firefox_android":"114","safari":"16","safari_ios":"16"}}},"canvas":{"compat_features":["api.HTMLCanvasElement","api.HTMLCanvasElement.getContext","api.HTMLCanvasElement.height","api.HTMLCanvasElement.toBlob","api.HTMLCanvasElement.toDataURL","api.HTMLCanvasElement.width","html.elements.canvas","html.elements.canvas.height","html.elements.canvas.width"],"description":"The <canvas> HTML element is a space to draw graphics in, using the 2D canvas API, WebGL, or WebGPU.","description_html":"The <code>&#x3C;canvas></code> HTML element is a space to draw graphics in, using the 2D canvas API, WebGL, or WebGPU.","group":["canvas","html-elements"],"name":"<canvas>","spec":"https://html.spec.whatwg.org/multipage/canvas.html#canvas","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1.5","firefox_android":"4","safari":"2","safari_ios":"1"}}},"canvas-context-lost":{"compat_features":["api.CanvasRenderingContext2D.isContextLost","api.HTMLCanvasElement.contextlost_event","api.HTMLCanvasElement.contextrestored_event","api.OffscreenCanvas.contextlost_event","api.OffscreenCanvas.contextrestored_event","api.OffscreenCanvasRenderingContext2D.isContextLost"],"description":"The contextlost event for <canvas> fires when the canvas backing storage is lost, while the contextrestored event fires when it is recreated.","description_html":"The <code>contextlost</code> event for <code>&#x3C;canvas></code> fires when the canvas backing storage is lost, while the <code>contextrestored</code> event fires when it is recreated.","group":"canvas","name":"contextlost and contextrestored","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#context-lost-steps","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"125","firefox_android":"125"}}},"canvas-createconicgradient":{"compat_features":["api.CanvasRenderingContext2D.createConicGradient","api.OffscreenCanvasRenderingContext2D.createConicGradient"],"description":"The createConicGradient() methods draw a conic gradient to a 2D canvas.","description_html":"The <code>createConicGradient()</code> methods draw a conic gradient to a 2D canvas.","group":"canvas","name":"Canvas createConicGradient()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-createconicgradient-dev","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"112","firefox_android":"112","safari":"16.4","safari_ios":"16.4"}}},"canvas-reset":{"compat_features":["api.CanvasRenderingContext2D.reset","api.OffscreenCanvasRenderingContext2D.reset"],"description":"The reset() method clears a canvas to its initial state.","description_html":"The <code>reset()</code> method clears a canvas to its initial state.","group":"canvas","name":"Canvas reset()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-reset","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"113","firefox_android":"113","safari":"17.2","safari_ios":"17.2"}}},"canvas-roundrect":{"compat_features":["api.CanvasRenderingContext2D.roundRect","api.OffscreenCanvasRenderingContext2D.roundRect"],"description":"The roundRect() methods draw a rounded rectangle to a 2D canvas.","description_html":"The <code>roundRect()</code> methods draw a rounded rectangle to a 2D canvas.","group":"canvas","name":"Canvas roundRect()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-roundrect","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"112","firefox_android":"112","safari":"16.4","safari_ios":"16.4"}}},"canvas-text":{"compat_features":["api.CanvasRenderingContext2D.fillText","api.CanvasRenderingContext2D.measureText","api.CanvasRenderingContext2D.strokeText","api.CanvasRenderingContext2D.textAlign","api.CanvasRenderingContext2D.textBaseline","api.TextMetrics","api.TextMetrics.width"],"description":"The fillText() and strokeText() methods draw text to a 2D canvas. The measureText() method measures the width and other metrics which can be used to position the text.","description_html":"The <code>fillText()</code> and <code>strokeText()</code> methods draw text to a 2D canvas. The <code>measureText()</code> method measures the width and other metrics which can be used to position the text.","group":"canvas","name":"Canvas text metrics","spec":"https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"31","safari":"4","safari_ios":"3.2"}}},"canvas-text-baselines":{"compat_features":["api.TextMetrics.alphabeticBaseline","api.TextMetrics.hangingBaseline","api.TextMetrics.ideographicBaseline"],"description":"The alphabeticBaseline, hangingBaseline, and ideographicBaseline canvas text metrics measure the distance from the used textBaseline to the respective typographic baseline.","description_html":"The <code>alphabeticBaseline</code>, <code>hangingBaseline</code>, and <code>ideographicBaseline</code> canvas text metrics measure the distance from the used <code>textBaseline</code> to the respective typographic baseline.","group":"canvas","name":"Canvas text baselines","spec":["https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-alphabeticbaseline-dev","https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-hangingbaseline-dev","https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-ideographicbaseline-dev"],"status":{"baseline":"low","baseline_low_date":"2023-10-13","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"116","firefox_android":"116","safari":"11.1","safari_ios":"11.3"}}},"cap":{"compat_features":["css.types.length.cap"],"description":"The CSS cap unit corresponds to the height of Latin capital letters.","description_html":"The CSS <code>cap</code> unit corresponds to the height of Latin capital letters.","name":"cap unit","spec":"https://drafts.csswg.org/css-values-4/#cap","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"97","firefox_android":"97","safari":"17.2","safari_ios":"17.2"}}},"cascade-layers":{"caniuse":"css-cascade-layers","compat_features":["api.CSSImportRule.layerName","api.CSSLayerBlockRule","api.CSSLayerBlockRule.name","api.CSSLayerStatementRule","api.CSSLayerStatementRule.nameList","css.at-rules.import.layer","css.at-rules.layer"],"description":"The @layer CSS at-rule avoids specificity conflicts by providing priority levels for different groups of CSS rules, such as low-priority styles like resets, and high-priority styles like UI components.","description_html":"The <code>@layer</code> CSS at-rule avoids specificity conflicts by providing priority levels for different groups of CSS rules, such as low-priority styles like resets, and high-priority styles like UI components.","name":"Cascade layers","spec":"https://drafts.csswg.org/css-cascade-5/#layering","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"97","firefox_android":"97","safari":"15.4","safari_ios":"15.4"}}},"check-visibility":{"compat_features":["api.Element.checkVisibility"],"description":"The checkVisibility() method checks if an element is potentially visible, with optional parameters for the kinds of visibility to check. For example, it checks whether the element has the style display: none, but can also check for visibility: hidden.","description_html":"The <code>checkVisibility()</code> method checks if an element is potentially visible, with optional parameters for the kinds of visibility to check. For example, it checks whether the element has the style <code>display: none</code>, but can also check for <code>visibility: hidden</code>.","name":"checkVisibility()","spec":"https://drafts.csswg.org/cssom-view-1/#dom-element-checkvisibility","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"106","firefox_android":"106","safari":"17.4","safari_ios":"17.4"}}},"cite":{"compat_features":["html.elements.cite"],"description":"The <cite> element represents the title of a quoted, referenced, or mentioned creative work, such as a film or book.","description_html":"The <code>&#x3C;cite></code> element represents the title of a quoted, referenced, or mentioned creative work, such as a film or book.","group":"html-elements","name":"<cite>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-cite-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"class-syntax":{"caniuse":"es6-class","compat_features":["javascript.classes","javascript.classes.constructor","javascript.classes.extends","javascript.classes.static","javascript.operators.super","javascript.statements.class"],"description":"Classes are an object-oriented syntax for JavaScript prototypes.","description_html":"Classes are an object-oriented syntax for JavaScript prototypes.","group":"javascript","name":"Classes","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-class-definitions","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"42","chrome_android":"42","edge":"13","firefox":"45","firefox_android":"45","safari":"10.1","safari_ios":"10.3"}}},"clipboard-supports":{"compat_features":["api.ClipboardItem.supports_static"],"description":"The ClipboardItem.supports() static method checks if the browser supports writing data types such as \"image/svg+xml\" or other custom formats to the system clipboard.","description_html":"The <code>ClipboardItem.supports()</code> static method checks if the browser supports writing data types such as \"image/svg+xml\" or other custom formats to the system clipboard.","group":"clipboard","name":"ClipboardItem.supports()","spec":"https://w3c.github.io/clipboard-apis/#dom-clipboarditem-supports","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"127","firefox_android":"127"}}},"clipboard-unsanitized-formats":{"compat_features":["api.Clipboard.read.formats_unsanitized_parameter"],"description":"The optional formats.unsanitized parameter of the navigator.clipboard.read() method reads unsanitized data from the system clipboard.","description_html":"The optional <code>formats.unsanitized</code> parameter of the <code>navigator.clipboard.read()</code> method reads unsanitized data from the system clipboard.","group":"clipboard","name":"Read unsanitized clipboard data","spec":"https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized","status":{"baseline":false,"support":{"chrome":"122","chrome_android":"122","edge":"122"}}},"code":{"compat_features":["html.elements.code"],"description":"The <code> element displays its contents as a fragment of computer code.","description_html":"The <code>&#x3C;code></code> element displays its contents as a fragment of computer code.","group":"html-elements","name":"<code>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"color-function":{"caniuse":"css-color-function","compat_features":["css.types.color.color","css.types.color.color.mixed_type_parameters"],"description":"The color() function defines a color within a given color space. Wide gamut color spaces like display-p3 allow showing more vibrant and saturated colors than the standard srgb color space.","description_html":"The <code>color()</code> function defines a color within a given color space. Wide gamut color spaces like <code>display-p3</code> allow showing more vibrant and saturated colors than the standard <code>srgb</code> color space.","name":"color()","spec":"https://drafts.csswg.org/css-color-4/#color-function","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"15","safari_ios":"15"}}},"color-mix":{"compat_features":["css.types.color.color-mix"],"description":"The color-mix() function mixes two colors in a given color space and by a given amount. Commonly, lighter or darker variations of a color are created by mixing with white or black.","description_html":"The <code>color-mix()</code> function mixes two colors in a given color space and by a given amount. Commonly, lighter or darker variations of a color are created by mixing with white or black.","name":"color-mix()","spec":"https://drafts.csswg.org/css-color-5/#color-mix","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"16.2","safari_ios":"16.2"}}},"color-scheme":{"compat_features":["css.properties.color-scheme","css.properties.color-scheme.only_dark","css.properties.color-scheme.only_light"],"description":"The color-scheme CSS property sets which color schemes (light or dark) an element uses and may prevent automatic dark mode adjustments by the browser.","description_html":"The <code>color-scheme</code> CSS property sets which color schemes (light or dark) an element uses and may prevent automatic dark mode adjustments by the browser.","name":"color-scheme","spec":"https://drafts.csswg.org/css-color-adjust-1/#color-scheme-prop","status":{"baseline":"low","baseline_low_date":"2022-02-03","support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"96","firefox_android":"96","safari":"13","safari_ios":"13"}}},"colrv1":{"caniuse":"colr-v1","compat_features":["css.at-rules.font-face.OpenType_COLRv1"],"description":"COLRv1 is a font format that supports multi-color glyphs.","description_html":"COLRv1 is a font format that supports multi-color glyphs.","group":"fonts","name":"COLRv1","spec":"https://www.iso.org/standard/87621.html","status":{"baseline":false,"support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"107","firefox_android":"107"}}},"column-breaks":{"compat_features":["css.properties.break-after.multicol_context","css.properties.break-after.multicol_context.avoid","css.properties.break-after.multicol_context.avoid-column","css.properties.break-after.multicol_context.column","css.properties.break-before.multicol_context","css.properties.break-before.multicol_context.avoid","css.properties.break-before.multicol_context.avoid-column","css.properties.break-before.multicol_context.column","css.properties.break-inside.multicol_context","css.properties.break-inside.multicol_context.avoid-column"],"description":"In columnar layouts (created by the columns or column-count CSS properties), the break-after, break-before, break-inside properties control where columns start or end.","description_html":"In columnar layouts (created by the <code>columns</code> or <code>column-count</code> CSS properties), the <code>break-after</code>, <code>break-before</code>, <code>break-inside</code> properties control where columns start or end.","group":"layout","name":"Column breaks","spec":"https://drafts.csswg.org/css-break-3/#breaking-controls","status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102"}}},"compression-streams":{"compat_features":["api.CompressionStream","api.CompressionStream.CompressionStream","api.CompressionStream.CompressionStream.deflate","api.CompressionStream.CompressionStream.deflate-raw","api.CompressionStream.CompressionStream.gzip","api.CompressionStream.readable","api.CompressionStream.writable","api.DecompressionStream","api.DecompressionStream.DecompressionStream","api.DecompressionStream.DecompressionStream.deflate","api.DecompressionStream.DecompressionStream.deflate-raw","api.DecompressionStream.DecompressionStream.gzip","api.DecompressionStream.readable","api.DecompressionStream.writable"],"description":"The CompressionStream and DecompressionStream interfaces compress and decompress data using the gzip or deflate formats.","description_html":"The <code>CompressionStream</code> and <code>DecompressionStream</code> interfaces compress and decompress data using the gzip or deflate formats.","name":"Compression streams","spec":"https://compression.spec.whatwg.org/","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"113","firefox_android":"113","safari":"16.4","safari_ios":"16.4"}}},"compute-pressure":{"compat_features":["api.Permissions.permission_compute-pressure","api.PressureObserver","api.PressureObserver.PressureObserver","api.PressureObserver.disconnect","api.PressureObserver.knownSources_static","api.PressureObserver.observe","api.PressureObserver.takeRecords","api.PressureObserver.unobserve","api.PressureRecord","api.PressureRecord.source","api.PressureRecord.state","api.PressureRecord.time","api.PressureRecord.toJSON","http.headers.Permissions-Policy.compute-pressure"],"description":"The PressureObserver API monitors CPU load, allowing you to adjust workloads in response to available computing resources. Also known as the Compute Pressure API.","description_html":"The <code>PressureObserver</code> API monitors CPU load, allowing you to adjust workloads in response to available computing resources. Also known as the Compute Pressure API.","name":"CPU compute pressure","spec":"https://w3c.github.io/compute-pressure/","status":{"baseline":false,"support":{"chrome":"125","edge":"125"}}},"conic-gradients":{"caniuse":"css-conic-gradients","compat_features":["css.types.image.gradient.conic-gradient","css.types.image.gradient.conic-gradient.doubleposition","css.types.image.gradient.conic-gradient.hue_interpolation_method","css.types.image.gradient.conic-gradient.interpolation_color_space","css.types.image.gradient.repeating-conic-gradient","css.types.image.gradient.repeating-conic-gradient.hue_interpolation_method","css.types.image.gradient.repeating-conic-gradient.interpolation_color_space"],"description":"The conic-gradient() and repeating-conic-gradient() CSS functions create backgrounds that progress between two or more colors around a center point.","description_html":"The <code>conic-gradient()</code> and <code>repeating-conic-gradient()</code> CSS functions create backgrounds that progress between two or more colors around a center point.","group":"gradients","name":"Conic gradients","spec":"https://drafts.csswg.org/css-images-4/#conic-gradients","status":{"baseline":"high","baseline_high_date":"2023-05-17","baseline_low_date":"2020-11-17","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"83","firefox_android":"83","safari":"12.1","safari_ios":"12.2"}}},"constraint-validation":{"caniuse":"constraint-validation","compat_features":["api.HTMLButtonElement.checkValidity","api.HTMLButtonElement.reportValidity","api.HTMLButtonElement.setCustomValidity","api.HTMLButtonElement.validationMessage","api.HTMLButtonElement.validity","api.HTMLButtonElement.willValidate","api.HTMLFieldSetElement.checkValidity","api.HTMLFieldSetElement.reportValidity","api.HTMLFieldSetElement.setCustomValidity","api.HTMLFieldSetElement.validationMessage","api.HTMLFieldSetElement.validity","api.HTMLFieldSetElement.willValidate","api.HTMLFormElement.checkValidity","api.HTMLFormElement.reportValidity","api.HTMLInputElement.checkValidity","api.HTMLInputElement.reportValidity","api.HTMLInputElement.setCustomValidity","api.HTMLInputElement.validationMessage","api.HTMLInputElement.validity","api.HTMLInputElement.willValidate","api.HTMLObjectElement.checkValidity","api.HTMLObjectElement.reportValidity","api.HTMLObjectElement.setCustomValidity","api.HTMLObjectElement.validationMessage","api.HTMLObjectElement.validity","api.HTMLObjectElement.willValidate","api.HTMLOutputElement.checkValidity","api.HTMLOutputElement.reportValidity","api.HTMLOutputElement.setCustomValidity","api.HTMLOutputElement.validationMessage","api.HTMLOutputElement.validity","api.HTMLOutputElement.willValidate","api.HTMLSelectElement.checkValidity","api.HTMLSelectElement.reportValidity","api.HTMLSelectElement.setCustomValidity","api.HTMLSelectElement.validationMessage","api.HTMLSelectElement.validity","api.HTMLSelectElement.willValidate","api.HTMLTextAreaElement.checkValidity","api.HTMLTextAreaElement.reportValidity","api.HTMLTextAreaElement.setCustomValidity","api.HTMLTextAreaElement.validationMessage","api.HTMLTextAreaElement.validity","api.HTMLTextAreaElement.willValidate","api.ValidityState","api.ValidityState.badInput","api.ValidityState.customError","api.ValidityState.patternMismatch","api.ValidityState.rangeOverflow","api.ValidityState.rangeUnderflow","api.ValidityState.stepMismatch","api.ValidityState.tooLong","api.ValidityState.tooShort","api.ValidityState.typeMismatch","api.ValidityState.valid","api.ValidityState.valueMissing"],"description":"Methods that validate form controls before submission, such as checkValidity(), reportValidity() and setCustomValidity().","description_html":"Methods that validate form controls before submission, such as <code>checkValidity()</code>, <code>reportValidity()</code> and <code>setCustomValidity()</code>.","group":"forms","name":"Constraint validation API","spec":"https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-constraint-validation-api","status":{"baseline":"high","baseline_high_date":"2021-06-11","baseline_low_date":"2018-12-11","support":{"chrome":"40","chrome_android":"40","edge":"18","firefox":"51","firefox_android":"64","safari":"10.1","safari_ios":"10.3"}}},"constructed-stylesheets":{"compat_features":["api.CSSStyleSheet.CSSStyleSheet","api.CSSStyleSheet.CSSStyleSheet.options_baseURL_parameter","api.CSSStyleSheet.replace","api.CSSStyleSheet.replaceSync","api.Document.adoptedStyleSheets","api.ShadowRoot.adoptedStyleSheets"],"description":"The CSSStyleSheet constructor creates a new stylesheet which can be shared between a document and multiple shadow roots using adoptedStyleSheets.","description_html":"The <code>CSSStyleSheet</code> constructor creates a new stylesheet which can be shared between a document and multiple shadow roots using <code>adoptedStyleSheets</code>.","name":"Constructed stylesheets","spec":["https://drafts.csswg.org/cssom-1/#dom-cssstylesheet-cssstylesheet","https://drafts.csswg.org/cssom-1/#dom-documentorshadowroot-adoptedstylesheets"],"status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"101","firefox_android":"101","safari":"16.4","safari_ios":"16.4"}}},"contact-picker":{"compat_features":["api.ContactAddress","api.ContactAddress.addressLine","api.ContactAddress.city","api.ContactAddress.country","api.ContactAddress.dependentLocality","api.ContactAddress.organization","api.ContactAddress.phone","api.ContactAddress.postalCode","api.ContactAddress.recipient","api.ContactAddress.region","api.ContactAddress.sortingCode","api.ContactAddress.toJSON","api.ContactsManager","api.ContactsManager.getProperties","api.ContactsManager.select","api.Navigator.contacts"],"description":"The navigator.contacts API allows you to ask users to share limited details about entries in their contact list with your application.","description_html":"The <code>navigator.contacts</code> API allows you to ask users to share limited details about entries in their contact list with your application.","name":"Contact picker","spec":"https://w3c.github.io/contact-picker/#contacts-manager","status":{"baseline":false,"support":{"chrome_android":"80"}}},"contain-intrinsic-size":{"compat_features":["css.properties.contain-intrinsic-block-size","css.properties.contain-intrinsic-height","css.properties.contain-intrinsic-inline-size","css.properties.contain-intrinsic-size","css.properties.contain-intrinsic-size.auto_none","css.properties.contain-intrinsic-width"],"description":"The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.","description_html":"The <code>contain-intrinsic-size</code> CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.","name":"contain-intrinsic-size","spec":"https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"83","chrome_android":"83","edge":"83","firefox":"107","firefox_android":"107","safari":"17","safari_ios":"17"}}},"container-queries":{"caniuse":"css-container-queries","compat_features":["api.CSSContainerRule","api.CSSContainerRule.containerName","api.CSSContainerRule.containerQuery","css.at-rules.container","css.properties.container","css.properties.container-name","css.properties.container-name.none","css.properties.container-type","css.properties.container-type.inline-size","css.properties.container-type.normal","css.properties.container-type.size","css.types.length.container_query_length_units"],"description":"Container size queries with the @container at-rule apply styles to an element based on the dimensions of its container.","description_html":"Container size queries with the <code>@container</code> at-rule apply styles to an element based on the dimensions of its container.","name":"Container queries","spec":"https://drafts.csswg.org/css-contain-3/#container-queries","status":{"baseline":"low","baseline_low_date":"2023-02-14","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"110","firefox_android":"110","safari":"16","safari_ios":"16"}}},"container-style-queries":{"caniuse":"css-container-queries-style","compat_features":["css.at-rules.container.style_queries_for_custom_properties"],"description":"Container style queries with the @container at-rule apply styles to an element based on the values of custom properties of its container.","description_html":"Container style queries with the <code>@container</code> at-rule apply styles to an element based on the values of custom properties of its container.","name":"Container style queries","spec":"https://drafts.csswg.org/css-contain-3/#style-container","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111"}}},"content-visibility":{"caniuse":"css-content-visibility","compat_features":["api.ContentVisibilityAutoStateChangeEvent","api.ContentVisibilityAutoStateChangeEvent.ContentVisibilityAutoStateChangeEvent","api.ContentVisibilityAutoStateChangeEvent.skipped","css.properties.content-visibility"],"description":"The content-visibility CSS property delays rendering an element, including layout and painting, until it is needed.","description_html":"The <code>content-visibility</code> CSS property delays rendering an element, including layout and painting, until it is needed.","name":"content-visibility","spec":"https://drafts.csswg.org/css-contain-2/#content-visibility","status":{"baseline":false,"support":{"chrome":"108","chrome_android":"108","edge":"108","firefox":"125","firefox_android":"125"}}},"controls-list":{"compat_features":["api.HTMLMediaElement.controlsList","html.elements.audio.controlslist","html.elements.video.controlslist"],"description":"The controlslist attribute for <audio> or <video> hides parts of the browser's built-in controls. For example, controlslist=\"nofullscreen\" removes the button to play the video in fullscreen.","description_html":"The <code>controlslist</code> attribute for <code>&#x3C;audio></code> or <code>&#x3C;video></code> hides parts of the browser's built-in controls. For example, <code>controlslist=\"nofullscreen\"</code> removes the button to play the video in fullscreen.","group":"media-elements","name":"controlslist","spec":"https://wicg.github.io/controls-list/","status":{"baseline":false,"support":{"chrome":"58","chrome_android":"58","edge":"79"}}},"counter-set":{"compat_features":["css.properties.counter-set","css.properties.counter-set.list-item","css.properties.counter-set.none"],"description":"The counter-set CSS property creates (and optionally sets a value for) a counter, the numbers for a series of headings or ordered list items.","description_html":"The <code>counter-set</code> CSS property creates (and optionally sets a value for) a counter, the numbers for a series of headings or ordered list items.","name":"counter-set","spec":"https://drafts.csswg.org/css-lists-3/#propdef-counter-set","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"68","firefox_android":"68","safari":"17.2","safari_ios":"17.2"}}},"counter-style":{"caniuse":"css-at-counter-style","compat_features":["api.CSSCounterStyleRule","api.CSSCounterStyleRule.additiveSymbols","api.CSSCounterStyleRule.fallback","api.CSSCounterStyleRule.name","api.CSSCounterStyleRule.negative","api.CSSCounterStyleRule.pad","api.CSSCounterStyleRule.prefix","api.CSSCounterStyleRule.range","api.CSSCounterStyleRule.speakAs","api.CSSCounterStyleRule.suffix","api.CSSCounterStyleRule.symbols","api.CSSCounterStyleRule.system","css.at-rules.counter-style","css.at-rules.counter-style.additive-symbols","css.at-rules.counter-style.fallback","css.at-rules.counter-style.negative","css.at-rules.counter-style.pad","css.at-rules.counter-style.prefix","css.at-rules.counter-style.range","css.at-rules.counter-style.speak-as","css.at-rules.counter-style.suffix","css.at-rules.counter-style.symbols","css.at-rules.counter-style.system"],"description":"The @counter-style CSS at-rule defines custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.","description_html":"The <code>@counter-style</code> CSS at-rule defines custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.","name":"@counter-style","spec":"https://drafts.csswg.org/css-counter-styles-3/","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"91","chrome_android":"91","edge":"91","firefox":"33","firefox_android":"33","safari":"17","safari_ios":"17"}}},"css-modules":{"compat_features":["javascript.statements.import.import_attributes.type_css"],"description":"Module `import ... with { type: \"css\" } statements load CSS modules as constructable stylesheets. Also known as CSS module scripts and formerly known as import assertions.","description_html":"Module `import ... with { type: \"css\" } statements load CSS modules as constructable stylesheets. Also known as CSS module scripts and formerly known as import assertions.","name":"CSS import attributes","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#css-module-script","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"custom-properties":{"caniuse":"css-variables","compat_features":["css.properties.custom-property","css.properties.custom-property.var"],"description":"Custom properties are CSS properties prefixed with -- that set values you can reuse with the var() function. For example, you can set a --key-color property to reuse as border-color: var(--key-color). Also known as CSS variables.","description_html":"Custom properties are CSS properties prefixed with <code>--</code> that set values you can reuse with the <code>var()</code> function. For example, you can set a <code>--key-color</code> property to reuse as <code>border-color: var(--key-color)</code>. Also known as CSS variables.","name":"Custom properties","spec":"https://drafts.csswg.org/css-variables-1/","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"49","chrome_android":"49","edge":"15","firefox":"31","firefox_android":"31","safari":"9.1","safari_ios":"9.3"}}},"customized-built-in-elements":{"compat_features":["api.CustomElementRegistry.builtin_element_support","html.global_attributes.is"],"description":"Customized built-in elements are HTML elements that extend built-in elements using the is attribute, to add new behaviors that you define.","description_html":"Customized built-in elements are HTML elements that extend built-in elements using the <code>is</code> attribute, to add new behaviors that you define.","group":"custom-elements","name":"Customized built-in elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#customized-built-in-element","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79","firefox":"63","firefox_android":"63"}}},"datalist":{"caniuse":"datalist","compat_features":["api.HTMLDataListElement","api.HTMLDataListElement.options","html.elements.datalist"],"description":"The <datalist> element defines a set of recommended values for an <input> element. Browsers may show a dropdown menu of all options, or matching options as the user types.","description_html":"The <code>&#x3C;datalist></code> element defines a set of recommended values for an <code>&#x3C;input></code> element. Browsers may show a dropdown menu of all options, or matching options as the user types.","group":"forms","name":"<datalist>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-datalist-element","status":{"baseline":false,"support":{"chrome":"69","chrome_android":"69","edge":"12","firefox":"110","safari":"12.1","safari_ios":"12.2"}}},"declarative-shadow-dom":{"caniuse":"declarative-shadow-dom","compat_features":["api.HTMLTemplateElement.shadowRootMode","html.elements.template.shadowrootmode"],"description":"The shadowrootmode attribute on <template> creates a shadow root without the use of JavaScript. It is a declarative alternative to the attachShadow() method.","description_html":"The <code>shadowrootmode</code> attribute on <code>&#x3C;template></code> creates a shadow root without the use of JavaScript. It is a declarative alternative to the <code>attachShadow()</code> method.","group":["html","web-components"],"name":"Declarative shadow DOM","spec":"https://html.spec.whatwg.org/multipage/scripting.html#attr-template-shadowrootmode","status":{"baseline":"low","baseline_low_date":"2024-02-20","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"123","firefox_android":"123","safari":"16.4","safari_ios":"16.4"}}},"default":{"caniuse":"css-default-pseudo","compat_features":["css.selectors.default"],"description":"The :default CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the checked attribute.","description_html":"The <code>:default</code> CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the <code>checked</code> attribute.","name":":default","spec":"https://drafts.csswg.org/selectors-4/#the-default-pseudo","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"10","chrome_android":"18","edge":"79","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"details":{"caniuse":"details","compat_features":["api.HTMLDetailsElement","api.HTMLDetailsElement.open","html.elements.details","html.elements.details.open"],"description":"The <details> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <summary> element is visible.","description_html":"The <code>&#x3C;details></code> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <code>&#x3C;summary></code> element is visible.","group":"html-elements","name":"<details>","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#the-details-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"12","chrome_android":"18","edge":"79","firefox":"49","firefox_android":"49","safari":"6","safari_ios":"6"}}},"details-name":{"compat_features":["api.HTMLDetailsElement.name","html.elements.details.name"],"description":"Multiple <details> elements which use the same name attribute are mutually exclusive. When one member of the group is opened, all other members are closed.","description_html":"Multiple <code>&#x3C;details></code> elements which use the same <code>name</code> attribute are mutually exclusive. When one member of the group is opened, all other members are closed.","group":"html-elements","name":"Mutually exclusive <details> elements","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-details-name","status":{"baseline":false,"support":{"chrome":"120","chrome_android":"120","edge":"120","safari":"17.2","safari_ios":"17.2"}}},"device-orientation-events":{"caniuse":"deviceorientation","compat_features":["api.DeviceMotionEvent","api.DeviceMotionEvent.acceleration","api.DeviceMotionEvent.accelerationIncludingGravity","api.DeviceMotionEvent.interval","api.DeviceMotionEvent.rotationRate","api.DeviceOrientationEvent","api.DeviceOrientationEvent.alpha","api.DeviceOrientationEvent.beta","api.DeviceOrientationEvent.gamma","api.Window.devicemotion_event","api.Window.deviceorientation_event"],"description":"The DeviceMotion and DeviceOrientation events report the movement and orientation of the browser's device in physical space.","description_html":"The <code>DeviceMotion</code> and <code>DeviceOrientation</code> events report the movement and orientation of the browser's device in physical space.","group":"sensors","name":"Device orientation events","spec":"https://w3c.github.io/deviceorientation/","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"31","chrome_android":"31","edge":"12","firefox":"6","firefox_android":"6","safari":"17","safari_ios":"4.2"}}},"device-posture":{"compat_features":["api.DevicePosture","api.DevicePosture.change_event","api.DevicePosture.type","api.Navigator.devicePosture","css.at-rules.media.device-posture"],"description":"The device posture API provides information about the physical posture of a device, such as whether a foldable device is folded or unfolded.","description_html":"The device posture API provides information about the physical posture of a device, such as whether a foldable device is folded or unfolded.","name":"Device posture","spec":"https://w3c.github.io/device-posture/","status":{"baseline":false,"support":{}}},"dialog":{"caniuse":"dialog","compat_features":["api.HTMLDialogElement","api.HTMLDialogElement.cancel_event","api.HTMLDialogElement.close","api.HTMLDialogElement.close_event","api.HTMLDialogElement.open","api.HTMLDialogElement.returnValue","api.HTMLDialogElement.show","api.HTMLDialogElement.showModal","css.selectors.backdrop.dialog","html.elements.dialog","html.elements.dialog.open"],"description":"The <dialog> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data.","description_html":"The <code>&#x3C;dialog></code> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data.","group":"html-elements","name":"<dialog>","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"37","chrome_android":"37","edge":"79","firefox":"98","firefox_android":"98","safari":"15.4","safari_ios":"15.4"}}},"dir-pseudo":{"caniuse":"css-dir-pseudo","compat_features":["css.selectors.dir"],"description":"The :dir() CSS functional pseudo-class matches elements by text direction, either right to left (rtl) or left to right (ltr).","description_html":"The <code>:dir()</code> CSS functional pseudo-class matches elements by text direction, either right to left (<code>rtl</code>) or left to right (<code>ltr</code>).","group":"css","name":":dir()","spec":"https://drafts.csswg.org/selectors-4/#the-dir-pseudo","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"49","firefox_android":"49","safari":"16.4","safari_ios":"16.4"}}},"dirname":{"compat_features":["api.HTMLInputElement.dirName","api.HTMLTextAreaElement.dirName","html.elements.input.dirname","html.elements.textarea.dirname"],"description":"The dirname attribute of <textarea> and <input> HTML elements includes the field's writing direction as form data on submission.","description_html":"The <code>dirname</code> attribute of <code>&#x3C;textarea></code> and <code>&#x3C;input></code> HTML elements includes the field's writing direction as form data on submission.","name":"dirname","spec":"https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname","status":{"baseline":"low","baseline_low_date":"2023-08-01","support":{"chrome":"17","chrome_android":"18","edge":"79","firefox":"116","firefox_android":"116","safari":"6","safari_ios":"6"}}},"display-animation":{"compat_features":["css.properties.content-visibility.is_transitionable","css.properties.content-visibility.keyframe_animatable","css.properties.display.is_transitionable","css.properties.display.keyframe_animatable"],"description":"You can animate elements between display: none and any other display value or animate between content-visibility: hidden and any other content-visibility value. This also applies to transitions.","description_html":"You can animate elements between <code>display: none</code> and any other <code>display</code> value or animate between <code>content-visibility: hidden</code> and any other <code>content-visibility</code> value. This also applies to transitions.","name":"display animation","spec":["https://drafts.csswg.org/css-display-4/#display-animation","https://drafts.csswg.org/css-contain-3/#content-visibility-animation"],"status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"div":{"compat_features":["api.HTMLDivElement","html.elements.div"],"description":"The <div> HTML element is the generic container for content.","description_html":"The <code>&#x3C;div></code> HTML element is the generic container for content.","group":"html-elements","name":"<div>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-div-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"document-caretpositionfrompoint":{"compat_features":["api.Document.caretPositionFromPoint"],"description":"The document.caretPositionFromPoint() method finds an insertion point, represented by a DOM node and an offset within that node, for given coordinates in the viewport.","description_html":"The <code>document.caretPositionFromPoint()</code> method finds an insertion point, represented by a DOM node and an offset within that node, for given coordinates in the viewport.","name":"document.caretPositionFromPoint()","spec":"https://drafts.csswg.org/cssom-view-1/#dom-document-caretpositionfrompoint","status":{"baseline":false,"support":{"firefox":"20","firefox_android":"20"}}},"document-picture-in-picture":{"compat_features":["api.DocumentPictureInPicture","api.DocumentPictureInPicture.enter_event","api.DocumentPictureInPicture.requestWindow","api.DocumentPictureInPicture.window","api.DocumentPictureInPictureEvent","api.DocumentPictureInPictureEvent.DocumentPictureInPictureEvent","api.DocumentPictureInPictureEvent.window","api.Window.documentPictureInPicture"],"description":"The document picture-in-picture API creates an always-on-top window from arbitrary HTML content.","description_html":"The document picture-in-picture API creates an always-on-top window from arbitrary HTML content.","name":"Document picture-in-picture","spec":"https://wicg.github.io/document-picture-in-picture/","status":{"baseline":false,"support":{"chrome":"116","edge":"116"}}},"edit-context":{"compat_features":["api.CharacterBoundsUpdateEvent","api.CharacterBoundsUpdateEvent.CharacterBoundsUpdateEvent","api.CharacterBoundsUpdateEvent.rangeEnd","api.CharacterBoundsUpdateEvent.rangeStart","api.EditContext","api.EditContext.EditContext","api.EditContext.attachedElements","api.EditContext.characterBounds","api.EditContext.characterBoundsRangeStart","api.EditContext.characterboundsupdate_event","api.EditContext.compositionend_event","api.EditContext.compositionstart_event","api.EditContext.selectionEnd","api.EditContext.selectionStart","api.EditContext.text","api.EditContext.textformatupdate_event","api.EditContext.textupdate_event","api.EditContext.updateCharacterBounds","api.EditContext.updateControlBounds","api.EditContext.updateSelection","api.EditContext.updateSelectionBounds","api.EditContext.updateText","api.HTMLElement.editContext","api.TextFormat","api.TextFormat.TextFormat","api.TextFormat.rangeEnd","api.TextFormat.rangeStart","api.TextFormat.underlineStyle","api.TextFormat.underlineThickness","api.TextFormatUpdateEvent","api.TextFormatUpdateEvent.TextFormatUpdateEvent","api.TextFormatUpdateEvent.getTextFormats","api.TextUpdateEvent","api.TextUpdateEvent.TextUpdateEvent","api.TextUpdateEvent.selectionEnd","api.TextUpdateEvent.selectionStart","api.TextUpdateEvent.text","api.TextUpdateEvent.updateRangeEnd","api.TextUpdateEvent.updateRangeStart"],"description":"The EditContext API allows you to build rich text editors that support advanced text input, such as Input Method Editor (IME) composition, an emoji picker, or other platform-specific editing UI.","description_html":"The <code>EditContext</code> API allows you to build rich text editors that support advanced text input, such as Input Method Editor (IME) composition, an emoji picker, or other platform-specific editing UI.","name":"EditContext","spec":"https://w3c.github.io/edit-context/","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121"}}},"exp-functions":{"compat_features":["css.types.exp","css.types.hypot","css.types.log","css.types.pow","css.types.sqrt"],"description":"The pow(), sqrt(), hypot(), log(), and exp() CSS functions compute various exponential functions.","description_html":"The <code>pow()</code>, <code>sqrt()</code>, <code>hypot()</code>, <code>log()</code>, and <code>exp()</code> CSS functions compute various exponential functions.","name":"pow(), sqrt(), hypot(), log(), and exp()","spec":"https://drafts.csswg.org/css-values-4/#exponent-funcs","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"118","firefox_android":"118","safari":"15.4","safari_ios":"15.4"}}},"eyedropper":{"compat_features":["api.EyeDropper","api.EyeDropper.EyeDropper","api.EyeDropper.open"],"description":"The EyeDropper API opens an eyedropper tool, a color picker that allows users to select a color from their screen.","description_html":"The <code>EyeDropper</code> API opens an eyedropper tool, a color picker that allows users to select a color from their screen.","name":"Eyedropper","spec":"https://wicg.github.io/eyedropper-api/","status":{"baseline":false,"support":{"chrome":"95","edge":"95"}}},"fast-seek":{"compat_features":["api.HTMLMediaElement.fastSeek"],"description":"The fastSeek() method seeks an <audio> or <video> element as fast as possible, by seeking to a keyframe instead of exactly the requested time.","description_html":"The <code>fastSeek()</code> method seeks an <code>&#x3C;audio></code> or <code>&#x3C;video></code> element as fast as possible, by seeking to a keyframe instead of exactly the requested time.","group":"media-elements","name":"fastSeek()","spec":"https://html.spec.whatwg.org/multipage/media.html#dom-media-fastseek-dev","status":{"baseline":false,"support":{"firefox":"31","firefox_android":"31","safari":"8","safari_ios":"8"}}},"fetch":{"caniuse":"fetch","compat_features":["api.Headers","api.Headers.Headers","api.Headers.append","api.Headers.delete","api.Headers.get","api.Headers.has","api.Headers.set","api.Request","api.Request.Request","api.Request.arrayBuffer","api.Request.blob","api.Request.bodyUsed","api.Request.clone","api.Request.credentials","api.Request.headers","api.Request.json","api.Request.method","api.Request.mode","api.Request.text","api.Request.url","api.Response","api.Response.Response","api.Response.arrayBuffer","api.Response.blob","api.Response.bodyUsed","api.Response.clone","api.Response.headers","api.Response.json","api.Response.json_static","api.Response.ok","api.Response.status","api.Response.statusText","api.Response.text","api.Response.type","api.Response.url","api.fetch"],"description":"The fetch() method makes asynchronous HTTP requests.","description_html":"The <code>fetch()</code> method makes asynchronous HTTP requests.","name":"Fetch","spec":"https://fetch.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"42","chrome_android":"42","edge":"14","firefox":"39","firefox_android":"39","safari":"10.1","safari_ios":"10.3"}}},"fetch-metadata":{"compat_features":["http.headers.Sec-Fetch-Dest","http.headers.Sec-Fetch-Mode","http.headers.Sec-Fetch-Site","http.headers.Sec-Fetch-User"],"description":"The Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, and Sec-Fetch-User` HTTP headers provide extra information about the way a request was made, to help servers reject certain kinds of malicious requests.","description_html":"The <code>Sec-Fetch-Dest</code>, <code>Sec-Fetch-Mode, </code>Sec-Fetch-Site<code>, and </code>Sec-Fetch-User` HTTP headers provide extra information about the way a request was made, to help servers reject certain kinds of malicious requests.","name":"Fetch metadata request headers","spec":"https://w3c.github.io/webappsec-fetch-metadata/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"90","firefox_android":"90","safari":"16.4","safari_ios":"16.4"}}},"fetch-priority":{"compat_features":["api.HTMLImageElement.fetchPriority","api.HTMLLinkElement.fetchPriority","api.HTMLScriptElement.fetchPriority","api.Request.Request.init_priority_parameter","api.fetch.init_priority_parameter","html.elements.img.fetchpriority","html.elements.link.fetchpriority","html.elements.script.fetchpriority"],"description":"The fetch() priority option and the fetchPriority HTML attribute give hints to the browser about which requests to do before other requests of the same type.","description_html":"The <code>fetch()</code> <code>priority</code> option and the <code>fetchPriority</code> HTML attribute give hints to the browser about which requests to do before other requests of the same type.","name":"Fetch priority","spec":["https://fetch.spec.whatwg.org/#request-priority","https://html.spec.whatwg.org/multipage/urls-and-fetching.html#fetch-priority-attributes"],"status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102","safari":"17.2","safari_ios":"17.2"}}},"field-sizing":{"compat_features":["css.properties.field-sizing","css.properties.field-sizing.content","css.properties.field-sizing.fixed"],"description":"The field-sizing CSS property allows form controls such as <textarea> to be sized based on their content.","description_html":"The <code>field-sizing</code> CSS property allows form controls such as <code>&#x3C;textarea></code> to be sized based on their content.","name":"field-sizing","spec":"https://drafts.csswg.org/css-ui-4/#field-sizing","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"figure":{"compat_features":["html.elements.figcaption","html.elements.figure"],"description":"The <figure> and <figcaption> HTML elements represent an illustration, diagram, text, or other self-contained reference content, with an optional caption.","description_html":"The <code>&#x3C;figure></code> and <code>&#x3C;figcaption></code> HTML elements represent an illustration, diagram, text, or other self-contained reference content, with an optional caption.","group":"html-elements","name":"<figure> and <figcaption>","spec":["https://html.spec.whatwg.org/multipage/grouping-content.html#the-figure-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-figcaption-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"8","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"flexbox":{"caniuse":"flexbox","compat_features":["css.properties.align-content.flex_context","css.properties.align-content.flex_context.stretch","css.properties.align-items.flex_context","css.properties.align-items.flex_context.baseline","css.properties.align-self.flex_context","css.properties.align-self.flex_context.baseline","css.properties.align-self.flex_context.stretch","css.properties.display.flex","css.properties.display.inline-flex","css.properties.flex","css.properties.flex-basis","css.properties.flex-basis.auto","css.properties.flex-direction","css.properties.flex-flow","css.properties.flex-grow","css.properties.flex-shrink","css.properties.flex-wrap","css.properties.justify-content.flex_context","css.properties.justify-content.flex_context.stretch","css.properties.justify-items.flex_context","css.properties.order","css.properties.place-content.flex_context","css.properties.place-items.flex_context","css.properties.place-self.flex_context"],"description":"Flexbox is a one-dimensional layout system, which places content either horizontally or vertically, with optional wrapping.","description_html":"Flexbox is a one-dimensional layout system, which places content either horizontally or vertically, with optional wrapping.","group":"flexbox","name":"Flexbox","spec":"https://drafts.csswg.org/css-flexbox-1/","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"29","chrome_android":"29","edge":"12","firefox":"28","firefox_android":"28","safari":"9","safari_ios":"9"}}},"flexbox-gap":{"caniuse":"flexbox-gap","compat_features":["css.properties.column-gap.flex_context","css.properties.gap.flex_context","css.properties.row-gap.flex_context"],"description":"The gap CSS property in a flexbox layout sets the size of the space between items.","description_html":"The <code>gap</code> CSS property in a flexbox layout sets the size of the space between items.","group":"flexbox","name":"Flexbox gap","spec":"https://drafts.csswg.org/css-align-3/#gaps","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"63","firefox_android":"63","safari":"14.1","safari_ios":"14.5"}}},"focus-visible":{"caniuse":"css-focus-visible","compat_features":["css.selectors.focus-visible"],"description":"The :focus-visible CSS pseudo-class selects elements that match the :focus pseudo-class and meets the browser's criteria for visually emphasizing focused elements.","description_html":"The <code>:focus-visible</code> CSS pseudo-class selects elements that match the <code>:focus</code> pseudo-class and meets the browser's criteria for visually emphasizing focused elements.","name":":focus-visible","spec":"https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"85","firefox_android":"85","safari":"15.4","safari_ios":"15.4"}}},"font-face":{"caniuse":"fontface","compat_features":["css.at-rules.font-face","css.at-rules.font-face.WOFF","css.at-rules.font-face.WOFF_2","css.at-rules.font-face.font-family","css.at-rules.font-face.src"],"description":"The @font-face CSS at-rule creates a custom font-family value. The at-rule's descriptors set the font's name, source, and various display settings.","description_html":"The <code>@font-face</code> CSS at-rule creates a custom <code>font-family</code> value. The at-rule's descriptors set the font's name, source, and various display settings.","group":"fonts","name":"@font-face","spec":"https://drafts.csswg.org/css-fonts-5/","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"36","chrome_android":"36","edge":"14","firefox":"39","firefox_android":"39","safari":"10","safari_ios":"10"}}},"font-optical-sizing":{"compat_features":["css.properties.font-optical-sizing"],"description":"The font-optical-sizing CSS property sets whether text rendering is optimized for viewing at different sizes.","description_html":"The <code>font-optical-sizing</code> CSS property sets whether text rendering is optimized for viewing at different sizes.","group":"fonts","name":"font-optical-sizing","spec":"https://drafts.csswg.org/css-fonts-4/#font-optical-sizing-def","status":{"baseline":"high","baseline_high_date":"2022-06-17","baseline_low_date":"2019-12-17","support":{"chrome":"79","chrome_android":"79","edge":"17","firefox":"62","firefox_android":"62","safari":"11","safari_ios":"11"}}},"font-palette":{"caniuse":"css-font-palette","compat_features":["api.CSSFontPaletteValuesRule","api.CSSFontPaletteValuesRule.basePalette","api.CSSFontPaletteValuesRule.fontFamily","api.CSSFontPaletteValuesRule.name","api.CSSFontPaletteValuesRule.overrideColors","css.at-rules.font-palette-values","css.at-rules.font-palette-values.base-palette","css.at-rules.font-palette-values.font-family","css.at-rules.font-palette-values.override-colors","css.properties.font-palette"],"description":"The font-palette CSS property selects a color palette from the font, optionally overriding individual colors in the @font-palette-values at-rule.","description_html":"The <code>font-palette</code> CSS property selects a color palette from the font, optionally overriding individual colors in the <code>@font-palette-values</code> at-rule.","group":"fonts","name":"font-palette","spec":["https://drafts.csswg.org/css-fonts-4/#font-palette-prop","https://drafts.csswg.org/css-fonts-4/#font-palette-values"],"status":{"baseline":"low","baseline_low_date":"2022-11-15","support":{"chrome":"101","chrome_android":"101","edge":"101","firefox":"107","firefox_android":"107","safari":"15.4","safari_ios":"15.4"}}},"font-palette-animation":{"compat_features":["css.properties.font-palette.animation_computed","css.properties.font-palette.palette-mix_function"],"description":"You can animate color fonts between two font-palette values.","description_html":"You can animate color fonts between two <code>font-palette</code> values.","group":"fonts","name":"font-palette animation","spec":"https://drafts.csswg.org/css-fonts-4/#font-palette-prop","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121"}}},"font-size-adjust":{"caniuse":"font-size-adjust","compat_features":["css.properties.font-size-adjust","css.properties.font-size-adjust.from-font","css.properties.font-size-adjust.none","css.properties.font-size-adjust.two-values"],"description":"The font-size-adjust CSS property preserves apparent text size, regardless of the font used, by scaling fonts to the same size with respect to a specific metric, such as x-height. This can help make fallback fonts look the same size.","description_html":"The <code>font-size-adjust</code> CSS property preserves apparent text size, regardless of the font used, by scaling fonts to the same size with respect to a specific metric, such as x-height. This can help make fallback fonts look the same size.","group":"fonts","name":"font-size-adjust","spec":"https://drafts.csswg.org/css-fonts-5/#font-size-adjust-prop","status":{"baseline":false,"support":{"firefox":"118","firefox_android":"118","safari":"17","safari_ios":"17"}}},"font-synthesis":{"compat_features":["css.properties.font-synthesis"],"description":"The font-synthesis CSS shorthand property disables all font synthesis except the given kinds. To disable a specific kind of font synthesis, instead use the longhand properties such as font-synthesis-style and font-synthesis-weight.","description_html":"The <code>font-synthesis</code> CSS shorthand property disables all font synthesis except the given kinds. To disable a specific kind of font synthesis, instead use the longhand properties such as <code>font-synthesis-style</code> and <code>font-synthesis-weight</code>.","group":"font-synthesis","name":"font-synthesis","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis","status":{"baseline":"high","baseline_high_date":"2024-07-06","baseline_low_date":"2022-01-06","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"34","firefox_android":"34","safari":"9","safari_ios":"9"}}},"font-synthesis-position":{"compat_features":["css.properties.font-synthesis-position","css.properties.font-synthesis-position.auto","css.properties.font-synthesis-position.none"],"description":"The font-synthesis-position CSS property sets whether or not the browser should synthesize subscript and superscript typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-position</code> CSS property sets whether or not the browser should synthesize subscript and superscript typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-position","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-position","status":{"baseline":false,"support":{"firefox":"118","firefox_android":"118"}}},"font-synthesis-small-caps":{"compat_features":["css.properties.font-synthesis-small-caps","css.properties.font-synthesis-small-caps.auto","css.properties.font-synthesis-small-caps.none"],"description":"The font-synthesis-small-caps CSS property sets whether or not the browser should synthesize small caps typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-small-caps</code> CSS property sets whether or not the browser should synthesize small caps typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-small-caps","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-small-caps","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"font-synthesis-style":{"compat_features":["css.properties.font-synthesis-style","css.properties.font-synthesis-style.auto","css.properties.font-synthesis-style.none"],"description":"The font-synthesis-style CSS property sets whether or not the browser should synthesize italic and oblique typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-style</code> CSS property sets whether or not the browser should synthesize italic and oblique typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-style","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-style","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"font-synthesis-weight":{"compat_features":["css.properties.font-synthesis-weight","css.properties.font-synthesis-weight.auto","css.properties.font-synthesis-weight.none"],"description":"The font-synthesis-weight CSS property sets whether or not the browser should synthesize bold typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-weight</code> CSS property sets whether or not the browser should synthesize bold typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-weight","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-weight","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"font-variant-alternates":{"caniuse":"font-variant-alternates","compat_features":["api.CSSFontFeatureValuesRule","api.CSSFontFeatureValuesRule.fontFamily","css.at-rules.font-feature-values","css.at-rules.font-feature-values.annotation","css.at-rules.font-feature-values.character-variant","css.at-rules.font-feature-values.historical-forms","css.at-rules.font-feature-values.ornaments","css.at-rules.font-feature-values.styleset","css.at-rules.font-feature-values.stylistic","css.at-rules.font-feature-values.swash","css.properties.font-variant-alternates","css.properties.font-variant-alternates.annotation","css.properties.font-variant-alternates.character_variant","css.properties.font-variant-alternates.ornaments","css.properties.font-variant-alternates.styleset","css.properties.font-variant-alternates.stylistic","css.properties.font-variant-alternates.swash"],"description":"The font-variant-alternates CSS property, along with the @font-feature-values at-rule, chooses when to use a font's alternate glyphs.","description_html":"The <code>font-variant-alternates</code> CSS property, along with the <code>@font-feature-values</code> at-rule, chooses when to use a font's alternate glyphs.","group":"fonts","name":"font-variant-alternates","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-alternates-prop","status":{"baseline":"low","baseline_low_date":"2023-03-13","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"34","firefox_android":"34","safari":"16.2","safari_ios":"16.2"}}},"form-associated-custom-elements":{"compat_features":["api.ElementInternals","api.ElementInternals.checkValidity","api.ElementInternals.form","api.ElementInternals.labels","api.ElementInternals.reportValidity","api.ElementInternals.setFormValue","api.ElementInternals.setValidity","api.ElementInternals.validationMessage","api.ElementInternals.validity","api.ElementInternals.willValidate","api.HTMLElement.attachInternals"],"description":"Custom elements may act like built-in form elements, via the the attachInternals() method of HTMLElement and the ElementInternals API.","description_html":"Custom elements may act like built-in form elements, via the the <code>attachInternals()</code> method of <code>HTMLElement</code> and the <code>ElementInternals</code> API.","group":["custom-elements","forms"],"name":"Form-associated custom elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#form-associated-custom-elements","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"98","firefox_android":"98","safari":"16.4","safari_ios":"16.4"}}},"fullscreen":{"caniuse":"fullscreen","compat_features":["api.Document.exitFullscreen","api.Document.exitFullscreen.returns_promise","api.Document.fullscreenElement","api.Document.fullscreenEnabled","api.Document.fullscreenchange_event","api.Document.fullscreenerror_event","api.Element.fullscreenchange_event","api.Element.fullscreenerror_event","api.Element.requestFullscreen","api.Element.requestFullscreen.returns_promise","api.HTMLIFrameElement.allowFullscreen","api.ShadowRoot.fullscreenElement","css.selectors.backdrop.fullscreen","css.selectors.fullscreen","html.elements.iframe.allowfullscreen"],"description":"The fullscreen API makes a specific element fill the whole screen and hides most browser UI.","description_html":"The fullscreen API makes a specific element fill the whole screen and hides most browser UI.","name":"Fullscreen API","spec":"https://fullscreen.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"71","chrome_android":"71","edge":"79","firefox":"64","firefox_android":"64","safari":"16.4"}}},"gravity-sensor":{"compat_features":["api.GravitySensor","api.GravitySensor.GravitySensor"],"description":"The GravitySensor API reads the gravity applied to a device in three dimensions.","description_html":"The <code>GravitySensor</code> API reads the gravity applied to a device in three dimensions.","group":"sensors","name":"Gravity sensor","spec":"https://w3c.github.io/accelerometer/#gravity-sensor-model","status":{"baseline":false,"support":{"chrome":"91","chrome_android":"91","edge":"91"}}},"grid":{"caniuse":"css-grid","compat_features":["css.properties.align-content.grid_context","css.properties.align-items.grid_context","css.properties.align-items.grid_context.start_end","css.properties.align-self.grid_context","css.properties.column-gap.grid_context","css.properties.display.grid","css.properties.display.inline-grid","css.properties.gap.grid_context","css.properties.gap.grid_context.calc_values","css.properties.gap.grid_context.percentage_values","css.properties.grid","css.properties.grid-area","css.properties.grid-auto-columns","css.properties.grid-auto-flow","css.properties.grid-auto-rows","css.properties.grid-column","css.properties.grid-column-end","css.properties.grid-column-start","css.properties.grid-row","css.properties.grid-row-end","css.properties.grid-row-start","css.properties.grid-template","css.properties.grid-template-areas","css.properties.grid-template-columns","css.properties.grid-template-columns.fit-content","css.properties.grid-template-columns.minmax","css.properties.grid-template-columns.repeat","css.properties.grid-template-rows","css.properties.grid-template-rows.fit-content","css.properties.grid-template-rows.minmax","css.properties.grid-template-rows.repeat","css.properties.justify-content.grid_context","css.properties.justify-items.grid_context","css.properties.justify-self.grid_context","css.properties.place-content.grid_context","css.properties.place-items.grid_context","css.properties.place-self.grid_context","css.properties.row-gap.grid_context","css.types.flex"],"description":"CSS Grid is a two-dimensional layout system, which lays content out in rows and columns.","description_html":"CSS Grid is a two-dimensional layout system, which lays content out in rows and columns.","group":"grid","name":"Grid","spec":"https://drafts.csswg.org/css-grid-3/","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"76","firefox_android":"79","safari":"12.1","safari_ios":"12.2"}}},"grid-animation":{"compat_features":["css.properties.grid-template-columns.animation","css.properties.grid-template-rows.animation"],"description":"Grid animation allows you to animate the grid-template-columns and grid-template-rows CSS properties.","description_html":"Grid animation allows you to animate the <code>grid-template-columns</code> and <code>grid-template-rows</code> CSS properties.","group":"grid","name":"Grid animation","spec":"https://drafts.csswg.org/css-grid-2/#track-sizing","status":{"baseline":"low","baseline_low_date":"2022-10-27","support":{"chrome":"107","chrome_android":"107","edge":"107","firefox":"66","firefox_android":"66","safari":"16","safari_ios":"16"}}},"growable-sharedarraybuffer":{"compat_features":["javascript.builtins.SharedArrayBuffer.SharedArrayBuffer.maxByteLength_option","javascript.builtins.SharedArrayBuffer.grow","javascript.builtins.SharedArrayBuffer.growable","javascript.builtins.SharedArrayBuffer.maxByteLength"],"description":"The grow() method of a SharedArrayBuffer, constructed with the maxByteLength option, increases the size of the buffer in place.","description_html":"The <code>grow()</code> method of a <code>SharedArrayBuffer</code>, constructed with the <code>maxByteLength</code> option, increases the size of the buffer in place.","name":"Growable SharedArrayBuffer","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-get-sharedarraybuffer.prototype.growable","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"gyroscope":{"compat_features":["api.Gyroscope","api.Gyroscope.Gyroscope","api.Gyroscope.x","api.Gyroscope.y","api.Gyroscope.z","api.Permissions.permission_gyroscope"],"description":"The Gyroscope API reads the angular velocity of a device in three dimensions.","description_html":"The <code>Gyroscope</code> API reads the angular velocity of a device in three dimensions.","group":"sensors","name":"Gyroscope","spec":"https://w3c.github.io/gyroscope/#gyroscope-interface","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79"}}},"has":{"caniuse":"css-has","compat_features":["css.selectors.has"],"description":"The :has() CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.","description_html":"The <code>:has()</code> CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.","name":":has()","spec":"https://drafts.csswg.org/selectors-4/#relational","status":{"baseline":"low","baseline_low_date":"2023-12-19","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"121","firefox_android":"121","safari":"15.4","safari_ios":"15.4"}}},"header-footer":{"compat_features":["html.elements.footer","html.elements.header"],"description":"The <header> and <footer> HTML elements represent content that precedes and follows the main page content, respectively.","description_html":"The <code>&#x3C;header></code> and <code>&#x3C;footer></code> HTML elements represent content that precedes and follows the main page content, respectively.","group":"html-elements","name":"<header> and <footer>","spec":["https://html.spec.whatwg.org/multipage/sections.html#the-header-element","https://html.spec.whatwg.org/multipage/sections.html#the-footer-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"headings":{"compat_features":["api.HTMLHeadingElement","html.elements.h1","html.elements.h2","html.elements.h3","html.elements.h4","html.elements.h5","html.elements.h6"],"description":"The <h1> through <h6> HTML elements represent six levels of section headings, in order of decreasing importance.","description_html":"The <code>&#x3C;h1></code> through <code>&#x3C;h6></code> HTML elements represent six levels of section headings, in order of decreasing importance.","group":"html-elements","name":"<h1> through <h6>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"hgroup":{"compat_features":["html.elements.hgroup"],"description":"The <hgroup> element represents a heading and related content.","description_html":"The <code>&#x3C;hgroup></code> element represents a heading and related content.","group":"html-elements","name":"<hgroup>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-hgroup-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"hidden-until-found":{"compat_features":["html.global_attributes.hidden.until-found_value"],"description":"The hidden=\"until-found\" attribute hides an element until it is found using the browser's find-in-page search or it is directly navigated to by following a URL fragment.","description_html":"The <code>hidden=\"until-found\"</code> attribute hides an element until it is found using the browser's find-in-page search or it is directly navigated to by following a URL fragment.","group":"html","name":"hidden=\"until-found\"","spec":"https://html.spec.whatwg.org/multipage/interaction.html#attr-hidden-until-found","status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102"}}},"highlight":{"compat_features":["api.CSS.highlights_static","api.Highlight","api.Highlight.@@iterator","api.Highlight.Highlight","api.Highlight.add","api.Highlight.clear","api.Highlight.delete","api.Highlight.entries","api.Highlight.forEach","api.Highlight.has","api.Highlight.keys","api.Highlight.priority","api.Highlight.size","api.Highlight.type","api.Highlight.values","api.HighlightRegistry","api.HighlightRegistry.@@iterator","api.HighlightRegistry.clear","api.HighlightRegistry.delete","api.HighlightRegistry.entries","api.HighlightRegistry.forEach","api.HighlightRegistry.get","api.HighlightRegistry.has","api.HighlightRegistry.keys","api.HighlightRegistry.set","api.HighlightRegistry.size","api.HighlightRegistry.values","css.selectors.highlight"],"description":"Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.","description_html":"Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.","name":"Custom highlights","spec":"https://drafts.csswg.org/css-highlight-api-1/","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105","safari":"17.2","safari_ios":"17.2"}}},"hr":{"compat_features":["api.HTMLHRElement","html.elements.hr"],"description":"The <hr> element represents a thematic break between paragraphs, often shown as a horizontal rule.","description_html":"The <code>&#x3C;hr></code> element represents a thematic break between paragraphs, often shown as a horizontal rule.","group":"html-elements","name":"<hr>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-hr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"html-media-capture":{"caniuse":"html-media-capture","compat_features":["api.HTMLInputElement.capture","html.elements.input.capture"],"description":"The capture HTML attribute for <input type=\"file\"> elements allows the user to capture media using the device's camera or microphone.","description_html":"The <code>capture</code> HTML attribute for <code>&#x3C;input type=\"file\"></code> elements allows the user to capture media using the device's camera or microphone.","name":"HTML media capture","spec":"https://w3c.github.io/html-media-capture/","status":{"baseline":false,"support":{"chrome_android":"25","firefox_android":"79","safari_ios":"10"}}},"http11":{"compat_features":["http.methods.GET"],"description":"HTTP/1.1 is a network protocol used by browsers and servers. It has been superseded by HTTP/2 and HTTP/3.","description_html":"HTTP/1.1 is a network protocol used by browsers and servers. It has been superseded by HTTP/2 and HTTP/3.","name":"HTTP/1.1","spec":"https://httpwg.org/specs/rfc9112.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"http2":{"caniuse":"http2","description":"The HTTP/2 protocol is a major revision of the HTTP network protocol, providing improved performance and efficiency by using a single TCP connection to send multiple streams of data at once.","description_html":"The HTTP/2 protocol is a major revision of the HTTP network protocol, providing improved performance and efficiency by using a single TCP connection to send multiple streams of data at once.","name":"HTTP/2","spec":"https://httpwg.org/specs/rfc9113.html","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"36","firefox_android":"36","safari":"9","safari_ios":"9"}}},"http3":{"caniuse":"http3","description":"HTTP/3 is a major revision of the HTTP network protocol, providing improved performance and efficiency by using QUIC as the underlying transport protocol.","description_html":"HTTP/3 is a major revision of the HTTP network protocol, providing improved performance and efficiency by using QUIC as the underlying transport protocol.","name":"HTTP/3","spec":"https://httpwg.org/specs/rfc9114.html","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"88","firefox_android":"88"}}},"hyphens":{"caniuse":"css-hyphens","compat_features":["css.properties.hyphens"],"description":"The hyphens CSS property controls when long words are broken by line wrapping. Although called hyphens, the property applies to word-splitting behavior across languages, such as customary spelling changes or the use of other characters to mark an intraword line break.","description_html":"The <code>hyphens</code> CSS property controls when long words are broken by line wrapping. Although called <code>hyphens</code>, the property applies to word-splitting behavior across languages, such as customary spelling changes or the use of other characters to mark an intraword line break.","name":"Hyphenation","spec":"https://drafts.csswg.org/css-text-3/#hyphens-property","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"55","chrome_android":"55","edge":"79","firefox":"43","firefox_android":"43","safari":"17","safari_ios":"17"}}},"ic":{"compat_features":["css.types.length.ic"],"description":"The CSS ic unit corresponds to the width of CJK ideographic characters.","description_html":"The CSS <code>ic</code> unit corresponds to the width of CJK ideographic characters.","name":"ic unit","spec":"https://drafts.csswg.org/css-values-4/#ic","status":{"baseline":"low","baseline_low_date":"2022-10-03","support":{"chrome":"106","chrome_android":"106","edge":"106","firefox":"97","firefox_android":"97","safari":"15.4","safari_ios":"15.4"}}},"idle-detection":{"compat_features":["api.IdleDetector","api.IdleDetector.IdleDetector","api.IdleDetector.change_event","api.IdleDetector.requestPermission_static","api.IdleDetector.screenState","api.IdleDetector.start","api.IdleDetector.userState","http.headers.Permissions-Policy.idle-detection"],"description":"The IdleDetector API is used to notify a webpage of the user's idle, active, and locked state.","description_html":"The <code>IdleDetector</code> API is used to notify a webpage of the user's idle, active, and locked state.","name":"Idle detection","spec":"https://wicg.github.io/idle-detection/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"114"}}},"iframe":{"compat_features":["api.HTMLIFrameElement","api.HTMLIFrameElement.allow","api.HTMLIFrameElement.contentDocument","api.HTMLIFrameElement.contentWindow","api.HTMLIFrameElement.getSVGDocument","api.HTMLIFrameElement.height","api.HTMLIFrameElement.name","api.HTMLIFrameElement.src","api.HTMLIFrameElement.width","html.elements.iframe","html.elements.iframe.allow","html.elements.iframe.height","html.elements.iframe.name","html.elements.iframe.src","html.elements.iframe.width"],"description":"The <iframe> element embeds another HTML page into the current page.","description_html":"The <code>&#x3C;iframe></code> element embeds another HTML page into the current page.","group":"html-elements","name":"<iframe>","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"iframe-credentialless":{"compat_features":["api.HTMLIFrameElement.credentialless","api.Window.credentialless","html.elements.iframe.credentialless"],"description":"The credentialless attribute for the <iframe> HTML element loads third-party content in an ephemeral context and does not send any credentials such as cookies. When using cross-origin isolation, this allows you to embed content that does not send Cross-Origin-Embedder-Policy headers.","description_html":"The <code>credentialless</code> attribute for the <code>&#x3C;iframe></code> HTML element loads third-party content in an ephemeral context and does not send any credentials such as cookies. When using cross-origin isolation, this allows you to embed content that does not send <code>Cross-Origin-Embedder-Policy</code> headers.","name":"Iframe credentialless","spec":"https://wicg.github.io/anonymous-iframe/","status":{"baseline":false,"support":{"chrome":"110","chrome_android":"110","edge":"110"}}},"image-maps":{"compat_features":["api.HTMLAreaElement","api.HTMLAreaElement.alt","api.HTMLAreaElement.coords","api.HTMLAreaElement.hash","api.HTMLAreaElement.host","api.HTMLAreaElement.hostname","api.HTMLAreaElement.href","api.HTMLAreaElement.origin","api.HTMLAreaElement.password","api.HTMLAreaElement.pathname","api.HTMLAreaElement.port","api.HTMLAreaElement.protocol","api.HTMLAreaElement.rel","api.HTMLAreaElement.relList","api.HTMLAreaElement.search","api.HTMLAreaElement.shape","api.HTMLAreaElement.target","api.HTMLAreaElement.toString","api.HTMLAreaElement.username","api.HTMLImageElement.isMap","api.HTMLImageElement.useMap","api.HTMLMapElement","api.HTMLMapElement.areas","api.HTMLMapElement.name","html.elements.area","html.elements.area.alt","html.elements.area.coords","html.elements.area.href","html.elements.area.implicit_noopener","html.elements.area.rel","html.elements.area.rel.noopener","html.elements.area.rel.noreferrer","html.elements.area.shape","html.elements.area.target","html.elements.img.ismap","html.elements.img.usemap","html.elements.map","html.elements.map.name"],"description":"The <area> and <map> elements define a clickable area on an image.","description_html":"The <code>&#x3C;area></code> and <code>&#x3C;map></code> elements define a clickable area on an image.","group":"html-elements","name":"Image maps","spec":"https://html.spec.whatwg.org/multipage/image-maps.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"image-set":{"caniuse":"css-image-set","compat_features":["css.properties.background-image.image-set","css.properties.content.image-set","css.types.image.image-set"],"description":"The image-set() CSS function provides a set of images at different resolutions or pixel densities, which the browser can pick from, depending on the device capabilities.","description_html":"The <code>image-set()</code> CSS function provides a set of images at different resolutions or pixel densities, which the browser can pick from, depending on the device capabilities.","name":"image-set()","spec":"https://drafts.csswg.org/css-images-4/#image-set-notation","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"113","chrome_android":"113","edge":"113","firefox":"89","firefox_android":"89","safari":"17","safari_ios":"17"}}},"img":{"compat_features":["api.HTMLImageElement","api.HTMLImageElement.Image","api.HTMLImageElement.alt","api.HTMLImageElement.complete","api.HTMLImageElement.crossOrigin","api.HTMLImageElement.decode","api.HTMLImageElement.decoding","api.HTMLImageElement.height","api.HTMLImageElement.naturalHeight","api.HTMLImageElement.naturalWidth","api.HTMLImageElement.src","api.HTMLImageElement.width","html.elements.img","html.elements.img.alt","html.elements.img.crossorigin","html.elements.img.decoding","html.elements.img.height","html.elements.img.src","html.elements.img.width"],"description":"The <img> element adds an image into the document.","description_html":"The <code>&#x3C;img></code> element adds an image into the document.","group":"html-elements","name":"<img>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"import-maps":{"caniuse":"import-maps","compat_features":["html.elements.script.type.importmap"],"description":"A <script type=\"importmap\"> HTML element provides an import map as a JSON string. An import map controls how the browser should resolve module specifiers when importing JavaScript modules.","description_html":"A <code>&#x3C;script type=\"importmap\"></code> HTML element provides an import map as a JSON string. An import map controls how the browser should resolve module specifiers when importing JavaScript modules.","name":"Import maps","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#import-maps","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"108","firefox_android":"108","safari":"16.4","safari_ios":"16.4"}}},"indeterminate":{"caniuse":"css-indeterminate-pseudo","compat_features":["css.selectors.indeterminate","css.selectors.indeterminate.checkbox","css.selectors.indeterminate.progress","css.selectors.indeterminate.radio"],"description":"The :indeterminate CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.","description_html":"The <code>:indeterminate</code> CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.","group":"forms","name":":indeterminate","spec":["https://drafts.csswg.org/selectors-4/#indeterminate","https://html.spec.whatwg.org/multipage/semantics-other.html#selector-indeterminate"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"39","chrome_android":"39","edge":"79","firefox":"51","firefox_android":"51","safari":"10","safari_ios":"10"}}},"individual-transforms":{"compat_features":["css.properties.rotate","css.properties.scale","css.properties.translate"],"description":"Transform elements with separate translate, rotate, and scale CSS properties.","description_html":"Transform elements with separate <code>translate</code>, <code>rotate</code>, and <code>scale</code> CSS properties.","group":"transforms","name":"Individual transform properties","spec":"https://drafts.csswg.org/css-transforms-2/#individual-transforms","status":{"baseline":"low","baseline_low_date":"2022-08-05","support":{"chrome":"104","chrome_android":"104","edge":"104","firefox":"72","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"inert":{"compat_features":["api.HTMLElement.inert","html.global_attributes.inert"],"description":"The inert HTML attribute marks an element and its descendants as non-interactive. Inert elements don't get focus or fire click events.","description_html":"The <code>inert</code> HTML attribute marks an element and its descendants as non-interactive. Inert elements don't get focus or fire <code>click</code> events.","group":"html","name":"Inert elements","spec":"https://html.spec.whatwg.org/multipage/interaction.html#inert-subtrees","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"102","chrome_android":"102","edge":"102","firefox":"112","firefox_android":"112","safari":"15.5","safari_ios":"15.5"}}},"input-event":{"caniuse":"input-event","compat_features":["api.Element.input_event","api.InputEvent","api.InputEvent.InputEvent","api.InputEvent.data","api.InputEvent.dataTransfer","api.InputEvent.getTargetRanges","api.InputEvent.inputType","api.InputEvent.isComposing"],"description":"The input event fires when a form control changes or an element with the contenteditable attribute changes.","description_html":"The <code>input</code> event fires when a form control changes or an element with the <code>contenteditable</code> attribute changes.","name":"input event","spec":"https://w3c.github.io/uievents/#event-type-input","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"87","firefox_android":"87","safari":"16.4","safari_ios":"16.4"}}},"intersection-observer":{"caniuse":"intersectionobserver","compat_features":["api.IntersectionObserver","api.IntersectionObserver.IntersectionObserver","api.IntersectionObserver.disconnect","api.IntersectionObserver.observe","api.IntersectionObserver.root","api.IntersectionObserver.rootMargin","api.IntersectionObserver.takeRecords","api.IntersectionObserver.thresholds","api.IntersectionObserver.unobserve","api.IntersectionObserverEntry","api.IntersectionObserverEntry.boundingClientRect","api.IntersectionObserverEntry.intersectionRatio","api.IntersectionObserverEntry.intersectionRect","api.IntersectionObserverEntry.isIntersecting","api.IntersectionObserverEntry.rootBounds","api.IntersectionObserverEntry.target","api.IntersectionObserverEntry.time"],"description":"The Intersection Observer API asynchronously observes changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.","description_html":"The Intersection Observer API asynchronously observes changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.","name":"Intersection observer","spec":"https://w3c.github.io/IntersectionObserver/","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"58","chrome_android":"58","edge":"16","firefox":"55","firefox_android":"55","safari":"12.1","safari_ios":"12.2"}}},"intersection-observer-v2":{"caniuse":"intersectionobserver-v2","description":"The trackVisibility parameter for the IntersectionObserver constructor enables tracking the visibility of an element, to detect if it may be obscured by other content or visual effects. Also known as IntersectionObserver v2.","description_html":"The <code>trackVisibility</code> parameter for the <code>IntersectionObserver</code> constructor enables tracking the visibility of an element, to detect if it may be obscured by other content or visual effects. Also known as IntersectionObserver v2.","name":"Intersection observer visibility tracking","spec":"https://w3c.github.io/IntersectionObserver/#calculate-visibility-algo","status":{"baseline":false,"support":{"chrome":"74","chrome_android":"74","edge":"79"}}},"intl-segmenter":{"compat_features":["javascript.builtins.Intl.Segmenter","javascript.builtins.Intl.Segmenter.Segmenter","javascript.builtins.Intl.Segmenter.resolvedOptions","javascript.builtins.Intl.Segmenter.segment","javascript.builtins.Intl.Segmenter.supportedLocalesOf","javascript.builtins.Intl.Segments","javascript.builtins.Intl.Segments.@@iterator","javascript.builtins.Intl.Segments.containing"],"description":"The Intl.Segmenter API creates a locale-aware text splitter that can separate a string into meaningful graphemes, words, or sentences.","description_html":"The <code>Intl.Segmenter</code> API creates a locale-aware text splitter that can separate a string into meaningful graphemes, words, or sentences.","group":"intl","name":"Intl.Segmenter","spec":"https://tc39.es/ecma402/#segmenter-objects","status":{"baseline":"low","baseline_low_date":"2024-04-16","support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"125","firefox_android":"125","safari":"14.1","safari_ios":"14.5"}}},"is":{"caniuse":"css-matches-pseudo","compat_features":["css.selectors.is","css.selectors.is.forgiving_selector_list"],"description":"The :is() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.","description_html":"The <code>:is()</code> CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.","name":":is()","spec":"https://drafts.csswg.org/selectors-4/#matches","status":{"baseline":"high","baseline_high_date":"2023-07-21","baseline_low_date":"2021-01-21","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"82","firefox_android":"82","safari":"14","safari_ios":"14"}}},"jpegxl":{"caniuse":"jpegxl","description":"The JPEG XL image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","description_html":"The JPEG XL image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","name":"JPEG XL","spec":"https://www.iso.org/standard/85253.html","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17"}}},"js-modules":{"caniuse":"es6-module","compat_features":["html.elements.script.nomodule","html.elements.script.type.module","javascript.statements.export","javascript.statements.export.default","javascript.statements.import"],"description":"JavaScript modules allow code to be organized into reusable units. Modules use import to load other modules and export to declare what is available to import from other modules. In HTML, modules are loaded with <script type=\"module\">.","description_html":"JavaScript modules allow code to be organized into reusable units. Modules use <code>import</code> to load other modules and <code>export</code> to declare what is available to import from other modules. In HTML, modules are loaded with <code>&#x3C;script type=\"module\"></code>.","group":"js-modules","name":"JavaScript modules","snapshot":"ecmascript-2015","spec":["https://html.spec.whatwg.org/multipage/webappapis.html#javascript-module-script","https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-modules"],"status":{"baseline":"high","baseline_high_date":"2020-11-09","baseline_low_date":"2018-05-09","support":{"chrome":"61","chrome_android":"61","edge":"16","firefox":"60","firefox_android":"60","safari":"11","safari_ios":"11"}}},"js-modules-service-workers":{"compat_features":["api.ServiceWorker.ecmascript_modules","javascript.statements.import.service_worker_support"],"description":"The navigator.serviceWorker.register() method accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in service workers.","description_html":"The <code>navigator.serviceWorker.register()</code> method accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in service workers.","group":"js-modules","name":"JavaScript modules in service workers","spec":"https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type","status":{"baseline":false,"support":{"chrome":"91","chrome_android":"91","edge":"91","safari":"15","safari_ios":"15"}}},"js-modules-shared-workers":{"compat_features":["api.SharedWorker.SharedWorker.ecmascript_modules","api.SharedWorker.SharedWorker.options_type_parameter"],"description":"The SharedWorker() constructor accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in shared workers.","description_html":"The <code>SharedWorker()</code> constructor accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in shared workers.","group":"js-modules","name":"JavaScript modules in shared workers","spec":"https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface:dom-sharedworker-2","status":{"baseline":false,"support":{"chrome":"80","edge":"80","firefox":"114","firefox_android":"114","safari":"15","safari_ios":"15"}}},"js-modules-workers":{"compat_features":["api.Worker.Worker.ecmascript_modules","api.Worker.Worker.options_type_parameter","javascript.operators.import.worker_support","javascript.statements.import.worker_support"],"description":"The Worker() constructor accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in workers.","description_html":"The <code>Worker()</code> constructor accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in workers.","group":"js-modules","name":"JavaScript modules in workers","spec":"https://html.spec.whatwg.org/multipage/workers.html#dom-worker-dev","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"114","firefox_android":"114","safari":"15","safari_ios":"15"}}},"json-modules":{"compat_features":["javascript.statements.import.import_attributes.type_json"],"description":"Module import ... with { type: \"json\" } statements load JSON data. Also known as JSON module scripts and formerly known as import assertions.","description_html":"Module <code>import ... with { type: \"json\" }</code> statements load JSON data. Also known as JSON module scripts and formerly known as import assertions.","name":"JSON import attributes","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#json-module-script","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123","safari":"17.2","safari_ios":"17.2"}}},"keyboard-lock":{"compat_features":["api.Keyboard","api.Keyboard.lock","api.Keyboard.unlock","api.Navigator.keyboard"],"description":"The navigator.keyboard.lock() API allows you to capture keys that are normally reserved by the operating system. It can be used to provide an immersive fullscreen experience such as games.","description_html":"The <code>navigator.keyboard.lock()</code> API allows you to capture keys that are normally reserved by the operating system. It can be used to provide an immersive fullscreen experience such as games.","name":"Keyboard lock","spec":"https://wicg.github.io/keyboard-lock/","status":{"baseline":false,"support":{"chrome":"68","chrome_android":"68","edge":"79"}}},"keyboard-map":{"compat_features":["api.Keyboard.getLayoutMap","api.KeyboardLayoutMap"],"description":"The navigator.keyboard.getLayoutMap() API returns a map from key codes to human readable key names. It can be used to describe buttons to the user when using the keyboard as a set of buttons, such as in games.","description_html":"The <code>navigator.keyboard.getLayoutMap()</code> API returns a map from key codes to human readable key names. It can be used to describe buttons to the user when using the keyboard as a set of buttons, such as in games.","name":"Keyboard map","spec":"https://wicg.github.io/keyboard-map/","status":{"baseline":false,"support":{"chrome":"69","chrome_android":"69","edge":"79"}}},"lab":{"caniuse":"css-lch-lab","compat_features":["css.types.color.lab","css.types.color.lch"],"description":"The CIE Lab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is. LCH is a variant of Lab with polar coordinates. These color spaces can be used with the CSS color(), lab(), and lch() functions. Also known as CIELAB and CIELCH.","description_html":"The CIE Lab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is. LCH is a variant of Lab with polar coordinates. These color spaces can be used with the CSS <code>color()</code>, <code>lab()</code>, and <code>lch()</code> functions. Also known as CIELAB and CIELCH.","name":"Lab and LCH","spec":"https://drafts.csswg.org/css-color-4/#cie-lab","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"15","safari_ios":"15"}}},"lh":{"compat_features":["css.types.length.lh"],"description":"The CSS lh unit corresponds to the requested line height, the computed value of the line-height property. Some lines may be higher than this based on their content.","description_html":"The CSS <code>lh</code> unit corresponds to the requested line height, the computed value of the <code>line-height</code> property. Some lines may be higher than this based on their content.","name":"lh unit","spec":"https://drafts.csswg.org/css-values-4/#lh","status":{"baseline":"low","baseline_low_date":"2023-11-21","support":{"chrome":"109","chrome_android":"109","edge":"109","firefox":"120","firefox_android":"120","safari":"16.4","safari_ios":"16.4"}}},"light-dark":{"compat_features":["css.types.color.light-dark"],"description":"The light-dark() CSS function accepts two colors and uses one depending on the current color scheme.","description_html":"The <code>light-dark()</code> CSS function accepts two colors and uses one depending on the current color scheme.","name":"light-dark()","spec":"https://drafts.csswg.org/css-color-5/#light-dark","status":{"baseline":"low","baseline_low_date":"2024-05-13","support":{"chrome":"123","chrome_android":"123","edge":"123","firefox":"120","firefox_android":"120","safari":"17.5","safari_ios":"17.5"}}},"line-clamp":{"caniuse":"css-line-clamp","compat_features":["css.properties.line-clamp"],"description":"The line-clamp CSS property limits the text in a block container to a certain number of lines. The prefixed -webkit-line-clamp is widely supported but only works with -webkit-box-orient: vertical in combination with display: -webkit-box or display: -webkit-inline-box.","description_html":"The <code>line-clamp</code> CSS property limits the text in a block container to a certain number of lines. The prefixed <code>-webkit-line-clamp</code> is widely supported but only works with <code>-webkit-box-orient: vertical</code> in combination with <code>display: -webkit-box</code> or <code>display: -webkit-inline-box</code>.","name":"line-clamp","spec":"https://drafts.csswg.org/css-overflow-4/#line-clamp","status":{"baseline":false,"support":{}}},"linear-easing":{"compat_features":["css.types.easing-function.linear-function"],"description":"The linear() easing function for animations and transitions interpolates linearly between the control points, and can be used to approximate complex easing functions, such as a bounce effect.","description_html":"The <code>linear()</code> easing function for animations and transitions interpolates linearly between the control points, and can be used to approximate complex easing functions, such as a bounce effect.","name":"linear() easing","spec":"https://drafts.csswg.org/css-easing-2/#the-linear-easing-function","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"113","chrome_android":"113","edge":"113","firefox":"112","firefox_android":"112","safari":"17.2","safari_ios":"17.2"}}},"loading-lazy":{"caniuse":"loading-lazy-attr","compat_features":["api.HTMLIFrameElement.loading","api.HTMLImageElement.loading","html.elements.iframe.loading","html.elements.img.loading"],"description":"The loading=\"lazy\" attribute for <img> and <iframe> elements blocks loading the external resource until the user scrolls to that element's part of the page.","description_html":"The <code>loading=\"lazy\"</code> attribute for <code>&#x3C;img></code> and <code>&#x3C;iframe></code> elements blocks loading the external resource until the user scrolls to that element's part of the page.","name":"Lazy-loading images and iframes","spec":"https://html.spec.whatwg.org/multipage/urls-and-fetching.html#lazy-loading-attributes","status":{"baseline":"low","baseline_low_date":"2023-12-19","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"121","firefox_android":"121","safari":"16.4","safari_ios":"16.4"}}},"main":{"compat_features":["html.elements.main"],"description":"The <main> element represents the dominant content of a document. It is commonly used together with <header> and <footer>.","description_html":"The <code>&#x3C;main></code> element represents the dominant content of a document. It is commonly used together with <code>&#x3C;header></code> and <code>&#x3C;footer></code>.","group":"html-elements","name":"<main>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-main-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"21","firefox_android":"21","safari":"7","safari_ios":"7"}}},"managed-media-source":{"compat_features":["api.ManagedMediaSource","api.ManagedMediaSource.ManagedMediaSource","api.ManagedMediaSource.endstreaming_event","api.ManagedMediaSource.startstreaming_event","api.ManagedMediaSource.streaming","api.ManagedSourceBuffer","api.ManagedSourceBuffer.bufferedchange_event"],"description":"The ManagedMediaSource API is a MediaSource where the browser manages the memory of source buffers and may evict data if needed.","description_html":"The <code>ManagedMediaSource</code> API is a <code>MediaSource</code> where the browser manages the memory of source buffers and may evict data if needed.","name":"Managed media source","spec":"https://w3c.github.io/media-source/#managedmediasource-interface","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17.1"}}},"map":{"compat_features":["javascript.builtins.Map","javascript.builtins.Map.@@iterator","javascript.builtins.Map.Map","javascript.builtins.Map.Map.iterable_allowed","javascript.builtins.Map.Map.null_allowed","javascript.builtins.Map.clear","javascript.builtins.Map.delete","javascript.builtins.Map.entries","javascript.builtins.Map.forEach","javascript.builtins.Map.get","javascript.builtins.Map.has","javascript.builtins.Map.key_equality_for_zeros","javascript.builtins.Map.keys","javascript.builtins.Map.set","javascript.builtins.Map.size","javascript.builtins.Map.values"],"description":"Map objects hold key-value pairs and remember the original insertion order of the keys.","description_html":"Map objects hold key-value pairs and remember the original insertion order of the keys.","group":"maps","name":"Map (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map-objects","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map-constructor","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.clear","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.delete","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.entries","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.foreach","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.get","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.has","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.keys","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.set","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-get-map.prototype.size","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.values","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype-@@iterator","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-get-map-@@species"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"38","chrome_android":"38","edge":"12","firefox":"13","firefox_android":"14","safari":"8","safari_ios":"8"}}},"margin-trim":{"compat_features":["css.properties.margin-trim","css.properties.margin-trim.block","css.properties.margin-trim.block-end","css.properties.margin-trim.block-start","css.properties.margin-trim.inline","css.properties.margin-trim.inline-end","css.properties.margin-trim.inline-start","css.properties.margin-trim.none"],"description":"The margin-trim CSS property removes the margins of child elements when they meet the edges of the container.","description_html":"The <code>margin-trim</code> CSS property removes the margins of child elements when they meet the edges of the container.","name":"margin-trim","spec":"https://drafts.csswg.org/css-box-4/#margin-trim","status":{"baseline":false,"support":{"safari":"16.4","safari_ios":"16.4"}}},"mark":{"compat_features":["html.elements.mark"],"description":"The <mark> element represents text which is marked or highlighted for reference or notation purposes.","description_html":"The <code>&#x3C;mark></code> element represents text which is marked or highlighted for reference or notation purposes.","group":"html-elements","name":"<mark>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-mark-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"masks":{"caniuse":"css-masks","compat_features":["css.properties.mask","css.properties.mask-clip","css.properties.mask-composite","css.properties.mask-image","css.properties.mask-mode","css.properties.mask-origin","css.properties.mask-position","css.properties.mask-repeat","css.properties.mask-size"],"description":"The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.","description_html":"The <code>mask</code> CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.","name":"Masks","spec":"https://drafts.fxtf.org/css-masking-1/#positioned-masks","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"53","firefox_android":"53","safari":"15.4","safari_ios":"15.4"}}},"masonry":{"compat_features":["css.properties.grid-template-columns.masonry","css.properties.grid-template-rows.masonry","css.properties.masonry-auto-flow"],"description":"Masonry is a type of CSS grid layout where the items on one of the axes are tightly packed together, like brickwork, instead of leaving gaps to align across the other axis.","description_html":"Masonry is a type of CSS grid layout where the items on one of the axes are tightly packed together, like brickwork, instead of leaving gaps to align across the other axis.","group":"layout","name":"Masonry","spec":"https://drafts.csswg.org/css-grid-3/","status":{"baseline":false,"support":{}}},"mathml":{"caniuse":"mathml","description":"MathML, or the Mathematical Markup Language, describes mathematical notation, such as expressions and formulas. Also known as MathML Core.","description_html":"MathML, or the Mathematical Markup Language, describes mathematical notation, such as expressions and formulas. Also known as MathML Core.","name":"MathML","spec":"https://w3c.github.io/mathml-core/","status":{"baseline":"low","baseline_low_date":"2023-01-12","support":{"chrome":"109","chrome_android":"109","edge":"109","firefox":"4","firefox_android":"4","safari":"10","safari_ios":"10"}}},"media-capture":{"caniuse":"stream","compat_features":["api.MediaDeviceInfo","api.MediaDeviceInfo.deviceId","api.MediaDeviceInfo.groupId","api.MediaDeviceInfo.kind","api.MediaDeviceInfo.label","api.MediaDevices","api.MediaDevices.enumerateDevices","api.MediaDevices.getUserMedia","api.MediaStream.getAudioTracks","api.MediaStream.getTracks","api.MediaStream.getVideoTracks","api.MediaStreamTrack","api.MediaStreamTrack.enabled","api.MediaStreamTrack.id","api.MediaStreamTrack.kind","api.MediaStreamTrack.label","api.MediaStreamTrack.stop"],"description":"The navigator.mediaDevices.getUserMedia() API requests access to devices that produce audio or video streams, such as microphones or video cameras.","description_html":"The <code>navigator.mediaDevices.getUserMedia()</code> API requests access to devices that produce audio or video streams, such as microphones or video cameras.","name":"Media capture","spec":"https://w3c.github.io/mediacapture-main/","status":{"baseline":"high","baseline_high_date":"2020-03-19","baseline_low_date":"2017-09-19","support":{"chrome":"53","chrome_android":"53","edge":"12","firefox":"36","firefox_android":"36","safari":"11","safari_ios":"11"}}},"media-pseudos":{"compat_features":["css.selectors.buffering","css.selectors.muted","css.selectors.paused","css.selectors.playing","css.selectors.seeking","css.selectors.stalled","css.selectors.volume-locked"],"description":"The :playing, :paused, :seeking, :buffering, :stalled, :muted, and :volume-locked CSS pseudo-classes match <audio> and <video> elements based on their state.","description_html":"The <code>:playing</code>, <code>:paused</code>, <code>:seeking</code>, <code>:buffering</code>, <code>:stalled</code>, <code>:muted</code>, and <code>:volume-locked</code> CSS pseudo-classes match <code>&#x3C;audio></code> and <code>&#x3C;video></code> elements based on their state.","group":"media-elements","name":"Media element pseudo-classes","spec":["https://drafts.csswg.org/selectors-4/#resource-pseudos","https://html.spec.whatwg.org/multipage/semantics-other.html#pseudo-classes"],"status":{"baseline":false,"support":{"safari":"15.4","safari_ios":"15.4"}}},"media-query-range-syntax":{"caniuse":"css-media-range-syntax","compat_features":["css.at-rules.media.range_syntax"],"description":"The range syntax of CSS media queries allows you to use mathematical comparison operators such as <, >, <=, and >= to define a range of values for a media feature. For example, (400px < width < 1000px) returns true if the viewport width is between 400px and 1000px.","description_html":"The range syntax of CSS media queries allows you to use mathematical comparison operators such as <code>&#x3C;</code>, <code>></code>, <code>&#x3C;=</code>, and <code>>=</code> to define a range of values for a media feature. For example, <code>(400px &#x3C; width &#x3C; 1000px)</code> returns true if the viewport width is between 400px and 1000px.","name":"Media query range syntax","spec":"https://drafts.csswg.org/mediaqueries-4/#mq-range-context","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"104","chrome_android":"104","edge":"104","firefox":"102","firefox_android":"102","safari":"16.4","safari_ios":"16.4"}}},"media-session":{"compat_features":["api.MediaMetadata","api.MediaMetadata.MediaMetadata","api.MediaMetadata.album","api.MediaMetadata.artist","api.MediaMetadata.artwork","api.MediaMetadata.title","api.MediaSession","api.MediaSession.metadata","api.MediaSession.playbackState","api.MediaSession.setActionHandler","api.MediaSession.setActionHandler.nexttrack_type","api.MediaSession.setActionHandler.pause_type","api.MediaSession.setActionHandler.play_type","api.MediaSession.setActionHandler.previoustrack_type","api.MediaSession.setActionHandler.seekbackward_type","api.MediaSession.setActionHandler.seekforward_type","api.Navigator.mediaSession"],"description":"The navigator.mediaSession API integrates with platform UI for media playback. It can be used to set metadata such as title and artwork, and to handle user actions like playing, pausing, or seeking.","description_html":"The <code>navigator.mediaSession</code> API integrates with platform UI for media playback. It can be used to set metadata such as title and artwork, and to handle user actions like playing, pausing, or seeking.","name":"Media session","spec":"https://w3c.github.io/mediasession/","status":{"baseline":false,"support":{"chrome":"73","chrome_android":"57","edge":"79","firefox":"82","safari":"15","safari_ios":"15"}}},"media-source":{"caniuse":"mediasource","compat_features":["api.MediaSource","api.SourceBuffer","api.SourceBufferList"],"description":"The MediaSource API is a custom data source for media elements commonly used for adaptive streaming. Also known as Media Source Extensions (MSE).","description_html":"The <code>MediaSource</code> API is a custom data source for media elements commonly used for adaptive streaming. Also known as Media Source Extensions (MSE).","name":"Media source","spec":"https://w3c.github.io/media-source/","status":{"baseline":false,"support":{"chrome":"31","chrome_android":"31","edge":"12","firefox":"42","firefox_android":"42","safari":"8"}}},"messageerror":{"compat_features":["api.DedicatedWorkerGlobalScope.messageerror_event","api.MessagePort.messageerror_event","api.ServiceWorkerContainer.messageerror_event","api.Window.messageerror_event"],"description":"The messageerror event fires on a target, such as a window or worker, when an incoming message cannot be deserialized. This event can fire for many types of messages, such as cross-document messages or broadcast channel messages.","description_html":"The <code>messageerror</code> event fires on a target, such as a window or worker, when an incoming message cannot be deserialized. This event can fire for many types of messages, such as cross-document messages or broadcast channel messages.","name":"messageerror","spec":["https://html.spec.whatwg.org/multipage/indices.html#event-messageerror","https://w3c.github.io/ServiceWorker/#eventdef-serviceworkerglobalscope-messageerror"],"status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"65","firefox_android":"65","safari":"16.4","safari_ios":"16.4"}}},"min-max-clamp":{"compat_features":["css.types.clamp","css.types.max","css.types.min"],"description":"The min() and max() CSS functions return the minimum or maximum of the arguments, while clamp() clamps a value to a given range.","description_html":"The <code>min()</code> and <code>max()</code> CSS functions return the minimum or maximum of the arguments, while <code>clamp()</code> clamps a value to a given range.","name":"min(), max(), and clamp()","spec":"https://drafts.csswg.org/css-values-4/#comp-func","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"79","chrome_android":"79","edge":"79","firefox":"75","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"modal":{"compat_features":["css.selectors.modal"],"description":"The :modal pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <dialog> element used with showModal().","description_html":"The <code>:modal</code> pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <code>&#x3C;dialog></code> element used with <code>showModal()</code>.","group":"css","name":":modal","spec":"https://drafts.csswg.org/selectors-4/#modal-state","status":{"baseline":"low","baseline_low_date":"2022-09-02","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"103","firefox_android":"103","safari":"15.6","safari_ios":"15.6"}}},"modulepreload":{"caniuse":"link-rel-modulepreload","compat_features":["html.elements.link.rel.modulepreload"],"description":"The rel=\"modulepreload\" attribute for the <link> HTML element indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution.","description_html":"The <code>rel=\"modulepreload\"</code> attribute for the <code>&#x3C;link></code> HTML element indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution.","name":"<link rel=\"modulepreload\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-modulepreload","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"66","chrome_android":"66","edge":"≤79","firefox":"115","firefox_android":"115","safari":"17","safari_ios":"17"}}},"motion-path":{"caniuse":"css-motion-paths","compat_features":["css.properties.offset","css.properties.offset-anchor","css.properties.offset-distance","css.properties.offset-path","css.properties.offset-path.path","css.properties.offset-rotate"],"description":"The offset CSS property animates an element along a defined motion path.","description_html":"The <code>offset</code> CSS property animates an element along a defined motion path.","name":"Motion path","spec":"https://drafts.fxtf.org/motion-1/","status":{"baseline":"low","baseline_low_date":"2023-08-21","support":{"chrome":"116","chrome_android":"116","edge":"116","firefox":"72","firefox_android":"79","safari":"16","safari_ios":"16"}}},"mouse-events":{"compat_features":["api.Element.click_event","api.Element.dblclick_event","api.Element.mousedown_event","api.Element.mouseenter_event","api.Element.mouseleave_event","api.Element.mousemove_event","api.Element.mouseout_event","api.Element.mouseover_event","api.Element.mouseup_event","api.MouseEvent","api.MouseEvent.MouseEvent","api.MouseEvent.altKey","api.MouseEvent.button","api.MouseEvent.buttons","api.MouseEvent.clientX","api.MouseEvent.clientY","api.MouseEvent.ctrlKey","api.MouseEvent.getModifierState","api.MouseEvent.metaKey","api.MouseEvent.movementX","api.MouseEvent.movementY","api.MouseEvent.offsetX","api.MouseEvent.offsetY","api.MouseEvent.pageX","api.MouseEvent.pageY","api.MouseEvent.relatedTarget","api.MouseEvent.screenX","api.MouseEvent.screenY","api.MouseEvent.shiftKey","api.MouseEvent.x","api.MouseEvent.y"],"description":"Mouse events, such as click, mousedown, or mousemove, fire when users interact with an input or pointing device such as a mouse, trackpad, or touchscreen.","description_html":"Mouse events, such as <code>click</code>, <code>mousedown</code>, or <code>mousemove</code>, fire when users interact with an input or pointing device such as a mouse, trackpad, or touchscreen.","name":"Mouse events","spec":"https://w3c.github.io/uievents/#events-mouse-types","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"navigation":{"compat_features":["api.NavigateEvent","api.NavigateEvent.NavigateEvent","api.NavigateEvent.destination","api.NavigateEvent.downloadRequest","api.NavigateEvent.formData","api.NavigateEvent.hashChange","api.NavigateEvent.info","api.NavigateEvent.navigationType","api.NavigateEvent.signal","api.NavigateEvent.userInitiated","api.Navigation","api.Navigation.back","api.Navigation.canGoBack","api.Navigation.canGoForward","api.Navigation.currentEntry","api.Navigation.currententrychange_event","api.Navigation.entries","api.Navigation.forward","api.Navigation.navigate","api.Navigation.navigate_event","api.Navigation.navigateerror_event","api.Navigation.navigatesuccess_event","api.Navigation.reload","api.Navigation.transition","api.Navigation.traverseTo","api.Navigation.updateCurrentEntry","api.NavigationCurrentEntryChangeEvent","api.NavigationCurrentEntryChangeEvent.NavigationCurrentEntryChangeEvent","api.NavigationCurrentEntryChangeEvent.from","api.NavigationCurrentEntryChangeEvent.navigationType","api.NavigationDestination","api.NavigationDestination.getState","api.NavigationDestination.id","api.NavigationDestination.index","api.NavigationDestination.key","api.NavigationDestination.sameDocument","api.NavigationDestination.url","api.NavigationHistoryEntry","api.NavigationHistoryEntry.dispose_event","api.NavigationHistoryEntry.getState","api.NavigationHistoryEntry.id","api.NavigationHistoryEntry.index","api.NavigationHistoryEntry.key","api.NavigationHistoryEntry.sameDocument","api.NavigationHistoryEntry.url","api.NavigationTransition","api.NavigationTransition.finished","api.NavigationTransition.from","api.NavigationTransition.navigationType","api.Window.navigation"],"description":"The navigation API provides mechanisms to initiate, intercept, and manage browser navigation actions.","description_html":"The <code>navigation</code> API provides mechanisms to initiate, intercept, and manage browser navigation actions.","name":"Navigation API","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigation-api","status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102"}}},"nesting":{"caniuse":"css-nesting","compat_features":["api.CSSStyleRule.cssRules","api.CSSStyleRule.deleteRule","api.CSSStyleRule.insertRule","css.selectors.nesting"],"description":"CSS nesting allows for shorter selectors, easier reading, and more modularity by nesting rules inside others.","description_html":"CSS nesting allows for shorter selectors, easier reading, and more modularity by nesting rules inside others.","group":"css","name":"Nesting","spec":"https://drafts.csswg.org/css-nesting-1/","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"117","firefox_android":"117","safari":"17.2","safari_ios":"17.2"}}},"notifications":{"caniuse":"notifications","description":"The notifications API sends system notifications to the user, often even when the page or browser is not the foreground application.","description_html":"The notifications API sends system notifications to the user, often even when the page or browser is not the foreground application.","name":"Notifications","spec":"https://notifications.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"20","chrome_android":"42","edge":"14","firefox":"22","firefox_android":"22","safari":"6"}}},"nth-child":{"compat_features":["css.selectors.nth-child","css.selectors.nth-last-child"],"description":"The :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements by the relative position of elements (first, second, third, fourth, and so on), counted from the first or last sibling.","description_html":"The <code>:nth-child()</code> and <code>:nth-last-child()</code> CSS functional pseudo-classes match elements by the relative position of elements (first, second, third, fourth, and so on), counted from the first or last sibling.","group":"css","name":":nth-child() (initial support)","spec":["https://drafts.csswg.org/selectors-3/#nth-child-pseudo","https://drafts.csswg.org/selectors-3/#nth-last-child-pseudo"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"2"}}},"nth-child-of":{"caniuse":"css-nth-child-of","compat_features":["css.selectors.nth-child.of_syntax","css.selectors.nth-last-child.of_syntax"],"description":"The of syntax for the :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements by the relative position of elements, counted from the first or last sibling matching a selector list.","description_html":"The <code>of</code> syntax for the <code>:nth-child()</code> and <code>:nth-last-child()</code> CSS functional pseudo-classes match elements by the relative position of elements, counted from the first or last sibling matching a selector list.","group":"css","name":":nth-child() of <selector>","spec":["https://drafts.csswg.org/selectors-4/#the-nth-child-pseudo","https://drafts.csswg.org/selectors-4/#the-nth-last-child-pseudo"],"status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"9","safari_ios":"9"}}},"object-view-box":{"compat_features":["css.properties.object-view-box"],"description":"The object-view-box CSS property crops and zooms to an inset area of an image.","description_html":"The <code>object-view-box</code> CSS property crops and zooms to an inset area of an image.","name":"object-view-box","spec":"https://drafts.csswg.org/css-images-5/#the-object-view-box","status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104"}}},"offline-audio-context":{"compat_features":["api.OfflineAudioCompletionEvent","api.OfflineAudioCompletionEvent.OfflineAudioCompletionEvent","api.OfflineAudioCompletionEvent.renderedBuffer","api.OfflineAudioContext","api.OfflineAudioContext.OfflineAudioContext","api.OfflineAudioContext.complete_event","api.OfflineAudioContext.length","api.OfflineAudioContext.resume","api.OfflineAudioContext.startRendering","api.OfflineAudioContext.suspend"],"description":"The OfflineAudioContext API represents an audio processing graph that writes to an AudioBuffer instead of an output device.","description_html":"The <code>OfflineAudioContext</code> API represents an audio processing graph that writes to an <code>AudioBuffer</code> instead of an output device.","group":"web-audio","name":"OfflineAudioContext","spec":"https://webaudio.github.io/web-audio-api/#OfflineAudioContext","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"35","chrome_android":"35","edge":"12","firefox":"25","firefox_android":"25","safari":"14.1","safari_ios":"14.5"}}},"offscreen-canvas":{"caniuse":"offscreencanvas","compat_features":["api.HTMLCanvasElement.transferControlToOffscreen","api.OffscreenCanvas","api.OffscreenCanvas.OffscreenCanvas","api.OffscreenCanvas.convertToBlob","api.OffscreenCanvas.getContext","api.OffscreenCanvas.getContext.2d_context","api.OffscreenCanvas.getContext.bitmaprenderer_context","api.OffscreenCanvas.height","api.OffscreenCanvas.transferToImageBitmap","api.OffscreenCanvas.width","api.OffscreenCanvasRenderingContext2D","api.OffscreenCanvasRenderingContext2D.arc","api.OffscreenCanvasRenderingContext2D.arcTo","api.OffscreenCanvasRenderingContext2D.beginPath","api.OffscreenCanvasRenderingContext2D.bezierCurveTo","api.OffscreenCanvasRenderingContext2D.canvas","api.OffscreenCanvasRenderingContext2D.clearRect","api.OffscreenCanvasRenderingContext2D.clip","api.OffscreenCanvasRenderingContext2D.closePath","api.OffscreenCanvasRenderingContext2D.createImageData","api.OffscreenCanvasRenderingContext2D.createLinearGradient","api.OffscreenCanvasRenderingContext2D.createPattern","api.OffscreenCanvasRenderingContext2D.createRadialGradient","api.OffscreenCanvasRenderingContext2D.direction","api.OffscreenCanvasRenderingContext2D.drawImage","api.OffscreenCanvasRenderingContext2D.ellipse","api.OffscreenCanvasRenderingContext2D.fill","api.OffscreenCanvasRenderingContext2D.fillRect","api.OffscreenCanvasRenderingContext2D.fillStyle","api.OffscreenCanvasRenderingContext2D.fillText","api.OffscreenCanvasRenderingContext2D.font","api.OffscreenCanvasRenderingContext2D.getImageData","api.OffscreenCanvasRenderingContext2D.getLineDash","api.OffscreenCanvasRenderingContext2D.getTransform","api.OffscreenCanvasRenderingContext2D.globalAlpha","api.OffscreenCanvasRenderingContext2D.globalCompositeOperation","api.OffscreenCanvasRenderingContext2D.imageSmoothingEnabled","api.OffscreenCanvasRenderingContext2D.isPointInPath","api.OffscreenCanvasRenderingContext2D.isPointInStroke","api.OffscreenCanvasRenderingContext2D.lineCap","api.OffscreenCanvasRenderingContext2D.lineDashOffset","api.OffscreenCanvasRenderingContext2D.lineJoin","api.OffscreenCanvasRenderingContext2D.lineTo","api.OffscreenCanvasRenderingContext2D.lineWidth","api.OffscreenCanvasRenderingContext2D.measureText","api.OffscreenCanvasRenderingContext2D.miterLimit","api.OffscreenCanvasRenderingContext2D.moveTo","api.OffscreenCanvasRenderingContext2D.putImageData","api.OffscreenCanvasRenderingContext2D.quadraticCurveTo","api.OffscreenCanvasRenderingContext2D.rect","api.OffscreenCanvasRenderingContext2D.resetTransform","api.OffscreenCanvasRenderingContext2D.restore","api.OffscreenCanvasRenderingContext2D.rotate","api.OffscreenCanvasRenderingContext2D.save","api.OffscreenCanvasRenderingContext2D.scale","api.OffscreenCanvasRenderingContext2D.setLineDash","api.OffscreenCanvasRenderingContext2D.setTransform","api.OffscreenCanvasRenderingContext2D.shadowBlur","api.OffscreenCanvasRenderingContext2D.shadowColor","api.OffscreenCanvasRenderingContext2D.shadowOffsetX","api.OffscreenCanvasRenderingContext2D.shadowOffsetY","api.OffscreenCanvasRenderingContext2D.stroke","api.OffscreenCanvasRenderingContext2D.strokeRect","api.OffscreenCanvasRenderingContext2D.strokeStyle","api.OffscreenCanvasRenderingContext2D.strokeText","api.OffscreenCanvasRenderingContext2D.textAlign","api.OffscreenCanvasRenderingContext2D.textBaseline","api.OffscreenCanvasRenderingContext2D.transform","api.OffscreenCanvasRenderingContext2D.translate"],"description":"The OffscreenCanvas API provides a canvas that can be drawn to off screen, with no dependencies on the DOM, which can be used to run heavy rendering operations inside a worker context.","description_html":"The <code>OffscreenCanvas</code> API provides a canvas that can be drawn to off screen, with no dependencies on the DOM, which can be used to run heavy rendering operations inside a worker context.","group":"canvas","name":"Offscreen canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#the-offscreencanvas-interface","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"105","firefox_android":"105","safari":"16.4","safari_ios":"16.4"}}},"oklab":{"compat_features":["css.types.color.oklab","css.types.color.oklch"],"description":"The Oklab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is, aiming to match how humans perceive colors. Oklch is a variant of Oklab with polar coordinates. These color spaces can be used with the CSS color(), oklab(), and oklch() functions.","description_html":"The Oklab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is, aiming to match how humans perceive colors. Oklch is a variant of Oklab with polar coordinates. These color spaces can be used with the CSS <code>color()</code>, <code>oklab()</code>, and <code>oklch()</code> functions.","name":"Oklab and Oklch","spec":"https://drafts.csswg.org/css-color-4/#ok-lab","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"15.4","safari_ios":"15.4"}}},"orientation-sensor":{"compat_features":["api.AbsoluteOrientationSensor","api.AbsoluteOrientationSensor.AbsoluteOrientationSensor","api.OrientationSensor","api.OrientationSensor.populateMatrix","api.OrientationSensor.quaternion","api.RelativeOrientationSensor","api.RelativeOrientationSensor.RelativeOrientationSensor"],"description":"The AbsoluteOrientationSensor and RelativeOrientationSensor APIs describe the physical orientation of a device in three-dimensional space, either in relation to the Earth's coordinate system or in relation to the device's own orientation, respectively.","description_html":"The <code>AbsoluteOrientationSensor</code> and <code>RelativeOrientationSensor</code> APIs describe the physical orientation of a device in three-dimensional space, either in relation to the Earth's coordinate system or in relation to the device's own orientation, respectively.","group":"sensors","name":"Orientation Sensor","spec":["https://w3c.github.io/orientation-sensor/#absoluteorientationsensor-interface","https://w3c.github.io/orientation-sensor/#relativeorientationsensor-interface"],"status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79"}}},"origin-private-file-system":{"compat_features":["api.FileSystemDirectoryHandle","api.FileSystemDirectoryHandle.entries","api.FileSystemDirectoryHandle.getDirectoryHandle","api.FileSystemDirectoryHandle.getFileHandle","api.FileSystemDirectoryHandle.keys","api.FileSystemDirectoryHandle.removeEntry","api.FileSystemDirectoryHandle.resolve","api.FileSystemDirectoryHandle.values","api.FileSystemFileHandle","api.FileSystemFileHandle.createSyncAccessHandle","api.FileSystemFileHandle.getFile","api.FileSystemHandle","api.FileSystemHandle.isSameEntry","api.FileSystemHandle.kind","api.FileSystemHandle.name","api.FileSystemSyncAccessHandle","api.FileSystemSyncAccessHandle.close","api.FileSystemSyncAccessHandle.flush","api.FileSystemSyncAccessHandle.getSize","api.FileSystemSyncAccessHandle.read","api.FileSystemSyncAccessHandle.truncate","api.FileSystemSyncAccessHandle.write","api.StorageManager.getDirectory"],"description":"The navigator.storage.getDirectory() method returns a FileSystemDirectoryHandle that is restricted to a specific origin and invisible to the user's actual file system for faster file-based applications, such as SQLite databases.","description_html":"The <code>navigator.storage.getDirectory()</code> method returns a <code>FileSystemDirectoryHandle</code> that is restricted to a specific origin and invisible to the user's actual file system for faster file-based applications, such as SQLite databases.","name":"Origin private file system","spec":"https://fs.spec.whatwg.org/#origin-private-file-system","status":{"baseline":"low","baseline_low_date":"2023-03-14","support":{"chrome":"102","chrome_android":"109","edge":"102","firefox":"111","firefox_android":"111","safari":"15.2","safari_ios":"15.2"}}},"overflow-shorthand":{"caniuse":"css-overflow","compat_features":["css.properties.overflow","css.properties.overflow-x","css.properties.overflow-x.clip","css.properties.overflow-y","css.properties.overflow-y.clip","css.properties.overflow.clip","css.properties.overflow.multiple_keywords","css.types.overflow","css.types.overflow.clip"],"description":"The overflow CSS property sets the behavior for when content doesn't fit in an element.","description_html":"The <code>overflow</code> CSS property sets the behavior for when content doesn't fit in an element.","name":"overflow","spec":"https://drafts.csswg.org/css-overflow-3/#propdef-overflow","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"90","chrome_android":"90","edge":"90","firefox":"81","firefox_android":"81","safari":"16","safari_ios":"16"}}},"overlay":{"compat_features":["css.properties.overlay"],"description":"The overlay CSS property, used as an allow-discrete CSS transition, prevents a top layer element, such as a popover or a <dialog>, from being removed from the top layer before it has finished animating. You can't set the value of the overlay property; only use it as transition property.","description_html":"The <code>overlay</code> CSS property, used as an <code>allow-discrete</code> CSS transition, prevents a top layer element, such as a popover or a <code>&#x3C;dialog></code>, from being removed from the top layer before it has finished animating. You can't set the value of the <code>overlay</code> property; only use it as transition property.","name":"overlay","spec":"https://drafts.csswg.org/css-position-4/#overlay","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"p":{"compat_features":["api.HTMLParagraphElement","html.elements.p"],"description":"The <p> element represents a paragraph of text.","description_html":"The <code>&#x3C;p></code> element represents a paragraph of text.","group":"html-elements","name":"<p>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-p-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"page-breaks":{"caniuse":"css-page-break","compat_features":["css.properties.break-after","css.properties.break-after.paged_context","css.properties.break-after.paged_context.page","css.properties.break-before","css.properties.break-before.paged_context","css.properties.break-before.paged_context.page","css.properties.break-inside","css.properties.break-inside.paged_context","css.properties.page-break-after","css.properties.page-break-after.avoid","css.properties.page-break-before","css.properties.page-break-before.avoid","css.properties.page-break-inside","css.properties.page-break-inside.avoid"],"description":"The break-after, break-before, break-inside CSS properties (along with page-break- aliases) control where printed pages start and end. Also known as pagination or page breaking.","description_html":"The <code>break-after</code>, <code>break-before</code>, <code>break-inside</code> CSS properties (along with <code>page-break-</code> aliases) control where printed pages start and end. Also known as pagination or page breaking.","group":"layout","name":"Page breaks","spec":"https://drafts.csswg.org/css-break-3/#breaking-controls","status":{"baseline":false,"support":{"chrome":"50","chrome_android":"50","edge":"12"}}},"paint":{"caniuse":"css-paint-api","compat_features":["api.CSS.paintWorklet_static","api.PaintWorkletGlobalScope","css.types.image.paint"],"description":"The paint() CSS function creates a custom image, drawn using a paint worklet, for an element's background or border.","description_html":"The <code>paint()</code> CSS function creates a custom image, drawn using a paint worklet, for an element's background or border.","group":"css","name":"paint()","spec":"https://drafts.css-houdini.org/css-paint-api-1/","status":{"baseline":false,"support":{"chrome":"65","chrome_android":"65","edge":"79"}}},"parse-html-unsafe":{"compat_features":["api.Document.parseHTMLUnsafe_static","api.Element.setHTMLUnsafe","api.ShadowRoot.setHTMLUnsafe"],"description":"The Document.parseHTMLUnsafe() static method parses HTML into a DOM tree, while the setHTMLUnsafe() method of Element and ShadowRoot parses and inserts HTML into an existing tree. No sanitization applies to these methods, so never call them with user-provided HTML strings.","description_html":"The <code>Document.parseHTMLUnsafe()</code> static method parses HTML into a DOM tree, while the <code>setHTMLUnsafe()</code> method of <code>Element</code> and <code>ShadowRoot</code> parses and inserts HTML into an existing tree. No sanitization applies to these methods, so never call them with user-provided HTML strings.","name":"Unsanitized HTML parsing methods","spec":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#unsafe-html-parsing-methods","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"128","firefox_android":"128","safari":"17.4","safari_ios":"17.4"}}},"permissions":{"caniuse":"permissions-api","compat_features":["api.Navigator.permissions","api.PermissionStatus","api.PermissionStatus.state","api.Permissions","api.Permissions.query"],"description":"The navigator.permissions API checks whether a permission, such as access to geolocation data, has been granted.","description_html":"The <code>navigator.permissions</code> API checks whether a permission, such as access to geolocation data, has been granted.","name":"Permissions","spec":"https://w3c.github.io/permissions/","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"44","chrome_android":"44","edge":"79","firefox":"46","firefox_android":"46","safari":"16","safari_ios":"16"}}},"picture-in-picture":{"caniuse":"picture-in-picture","compat_features":["api.Document.exitPictureInPicture","api.Document.pictureInPictureElement","api.Document.pictureInPictureEnabled","api.HTMLVideoElement.disablePictureInPicture","api.HTMLVideoElement.enterpictureinpicture_event","api.HTMLVideoElement.leavepictureinpicture_event","api.HTMLVideoElement.requestPictureInPicture","api.PictureInPictureWindow","api.PictureInPictureWindow.height","api.PictureInPictureWindow.resize_event","api.PictureInPictureWindow.width","api.ShadowRoot.pictureInPictureElement","html.elements.video.disablepictureinpicture"],"description":"The picture-in-picture API allow websites to create a floating, always-on-top video window. Also known as PiP or pop-out video.","description_html":"The picture-in-picture API allow websites to create a floating, always-on-top video window. Also known as PiP or pop-out video.","name":"Picture-in-picture (video)","spec":"https://w3c.github.io/picture-in-picture/","status":{"baseline":false,"support":{"chrome":"69","chrome_android":"105","edge":"79","safari":"13.1","safari_ios":"13.4"}}},"pointer-lock":{"caniuse":"pointerlock","compat_features":["api.Document.exitPointerLock","api.Document.pointerLockElement","api.Document.pointerlockchange_event","api.Document.pointerlockerror_event","api.Element.requestPointerLock"],"description":"Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor.","description_html":"Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor.","name":"Pointer lock","spec":"https://w3c.github.io/pointerlock/","status":{"baseline":false,"support":{"chrome":"37","chrome_android":"37","edge":"13","firefox":"50","firefox_android":"50","safari":"10.1"}}},"popover":{"compat_features":["api.HTMLButtonElement.popoverTargetAction","api.HTMLButtonElement.popoverTargetElement","api.HTMLElement.beforetoggle_event","api.HTMLElement.hidePopover","api.HTMLElement.popover","api.HTMLElement.showPopover","api.HTMLElement.togglePopover","api.HTMLElement.toggle_event","api.HTMLInputElement.popoverTargetAction","api.HTMLInputElement.popoverTargetElement","api.ToggleEvent","api.ToggleEvent.ToggleEvent","api.ToggleEvent.newState","api.ToggleEvent.oldState","css.selectors.backdrop.popover","css.selectors.popover-open","html.elements.button.popovertarget","html.elements.button.popovertargetaction","html.elements.input.popovertarget","html.elements.input.popovertargetaction","html.global_attributes.popover"],"description":"The popover HTML attribute creates an overlay to display content on top of other page content. Popovers can be shown declaratively using HTML, or using the showPopover() method.","description_html":"The <code>popover</code> HTML attribute creates an overlay to display content on top of other page content. Popovers can be shown declaratively using HTML, or using the <code>showPopover()</code> method.","group":"html","name":"Popover","spec":"https://html.spec.whatwg.org/multipage/popover.html","status":{"baseline":"low","baseline_low_date":"2024-04-16","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"125","firefox_android":"125","safari":"17","safari_ios":"17"}}},"pre":{"compat_features":["api.HTMLPreElement","html.elements.pre"],"description":"The <pre> element represents a block element of preformatted text that is presented exactly as written, including all white space.","description_html":"The <code>&#x3C;pre></code> element represents a block element of preformatted text that is presented exactly as written, including all white space.","group":"html-elements","name":"<pre>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"prefers-color-scheme":{"compat_features":["css.at-rules.media.prefers-color-scheme"],"description":"The prefers-color-scheme CSS media query detects the requested color scheme, light or dark.","description_html":"The <code>prefers-color-scheme</code> CSS media query detects the requested color scheme, light or dark.","name":"prefers-color-scheme","spec":"https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"67","firefox_android":"67","safari":"12.1","safari_ios":"13"}}},"preloading-responsive-images":{"compat_features":["api.HTMLLinkElement.imageSizes","api.HTMLLinkElement.imageSrcset","html.elements.link.imagesizes","html.elements.link.imagesrcset"],"description":"The imagesrcset and imagesizes attributes with the rel=\"preload\" attribute for the <link> HTML element starts fetching responsive images before they're found in the body of the document.","description_html":"The <code>imagesrcset</code> and <code>imagesizes</code> attributes with the <code>rel=\"preload\"</code> attribute for the <code>&#x3C;link></code> HTML element starts fetching responsive images before they're found in the body of the document.","name":"Preloading responsive images","spec":"https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"78","firefox_android":"79","safari":"17.2","safari_ios":"17.2"}}},"preserves-pitch":{"compat_features":["api.HTMLMediaElement.preservesPitch"],"description":"The preservesPitch property for <audio> or <video> adjusts the pitch of audio to sound more natural when the playback rate is faster or slower than the default.","description_html":"The <code>preservesPitch</code> property for <code>&#x3C;audio></code> or <code>&#x3C;video></code> adjusts the pitch of audio to sound more natural when the playback rate is faster or slower than the default.","group":"media-elements","name":"preservesPitch","spec":"https://html.spec.whatwg.org/multipage/media.html#dom-media-preservespitch-dev","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"101","firefox_android":"101","safari":"17.2","safari_ios":"17.2"}}},"print":{"compat_features":["api.Window.print"],"description":"The window.print() method opens the browser's print dialog.","description_html":"The <code>window.print()</code> method opens the browser's print dialog.","group":"print","name":"window.print()","spec":"https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#printing","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"114","safari":"1.1","safari_ios":"1"}}},"print-events":{"caniuse":"beforeafterprint","compat_features":["api.Window.afterprint_event","api.Window.beforeprint_event"],"description":"An alternative to @media print queries, the beforeprint and afterprint events allow you to change the page for printing and and restore the page after printing.","description_html":"An alternative to <code>@media print</code> queries, the <code>beforeprint</code> and <code>afterprint</code> events allow you to change the page for printing and and restore the page after printing.","group":"print","name":"Print events","spec":["https://html.spec.whatwg.org/multipage/indices.html#event-afterprint","https://html.spec.whatwg.org/multipage/indices.html#event-beforeprint"],"status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"63","chrome_android":"63","edge":"12","firefox":"6","firefox_android":"6","safari":"13","safari_ios":"13"}}},"promise":{"caniuse":"promises","compat_features":["javascript.builtins.Promise","javascript.builtins.Promise.Promise","javascript.builtins.Promise.all","javascript.builtins.Promise.catch","javascript.builtins.Promise.race","javascript.builtins.Promise.reject","javascript.builtins.Promise.resolve","javascript.builtins.Promise.then"],"description":"A promise represents an asynchronous operation which eventually succeeds or fails.","description_html":"A promise represents an asynchronous operation which eventually succeeds or fails.","group":"promises","name":"Promise (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-objects","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-get-promise-@@species","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-constructor","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.all","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.prototype.catch","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.race","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.reject","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.resolve","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.prototype.then"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"32","chrome_android":"32","edge":"12","firefox":"29","firefox_android":"29","safari":"8","safari_ios":"8"}}},"promise-allsettled":{"compat_features":["javascript.builtins.Promise.allSettled"],"description":"The Promise.allSettled() static method waits for an array of promises to settle (resolve or reject).","description_html":"The <code>Promise.allSettled()</code> static method waits for an array of promises to settle (resolve or reject).","group":"promises","name":"Promise.allSettled()","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.allsettled","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"71","firefox_android":"79","safari":"13","safari_ios":"13"}}},"promise-any":{"compat_features":["javascript.builtins.Promise.any"],"description":"The Promise.any() static method returns a promise that fulfills as soon as the first of an iterable of promises fulfills, with that promise's value. Otherwise, it rejects with an AggregateError when all of the promises have rejected.","description_html":"The <code>Promise.any()</code> static method returns a promise that fulfills as soon as the first of an iterable of promises fulfills, with that promise's value. Otherwise, it rejects with an <code>AggregateError</code> when all of the promises have rejected.","group":"promises","name":"Promise.any()","snapshot":"ecmascript-2021","spec":"https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.any","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"79","firefox_android":"79","safari":"14","safari_ios":"14"}}},"promise-finally":{"caniuse":"promise-finally","compat_features":["javascript.builtins.Promise.finally"],"description":"The promise finally() method executes a function when the promise settles (resolves or rejects).","description_html":"The promise <code>finally()</code> method executes a function when the promise settles (resolves or rejects).","group":"promises","name":"Promise finally()","snapshot":"ecmascript-2018","spec":"https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.prototype.finally","status":{"baseline":"high","baseline_high_date":"2021-04-02","baseline_low_date":"2018-10-02","support":{"chrome":"63","chrome_android":"63","edge":"18","firefox":"58","firefox_android":"58","safari":"11.1","safari_ios":"11.3"}}},"promise-withresolvers":{"compat_features":["javascript.builtins.Promise.withResolvers"],"description":"The Promise.withResolvers() static method is an alternative to the Promise() constructor that returns both the promise and resolution functions. You can use this to access resolve and reject outside the scope of the executor function.","description_html":"The <code>Promise.withResolvers()</code> static method is an alternative to the <code>Promise()</code> constructor that returns both the promise and resolution functions. You can use this to access <code>resolve</code> and <code>reject</code> outside the scope of the executor function.","group":"promises","name":"Promise.withResolvers()","spec":"https://tc39.es/proposal-promise-with-resolvers/#sec-promise.withResolvers","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"121","firefox_android":"121","safari":"17.4","safari_ios":"17.4"}}},"push":{"caniuse":"push-api","compat_features":["api.PushEvent","api.PushEvent.PushEvent","api.PushEvent.data","api.PushManager","api.PushManager.getSubscription","api.PushManager.permissionState","api.PushMessageData","api.PushMessageData.arrayBuffer","api.PushMessageData.blob","api.PushMessageData.json","api.PushMessageData.text","api.PushSubscription","api.PushSubscription.endpoint","api.PushSubscription.getKey","api.PushSubscription.toJSON","api.PushSubscription.unsubscribe","api.ServiceWorkerGlobalScope.push_event","api.ServiceWorkerRegistration.pushManager"],"description":"The Push API subscribes to and receives server-initiated messages. Subscribers receive pushed messages in the background, even after periods inactive or offline.","description_html":"The Push API subscribes to and receives server-initiated messages. Subscribers receive pushed messages in the background, even after periods inactive or offline.","name":"Push messages","spec":"https://w3c.github.io/push-api/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"50","chrome_android":"50","edge":"17","firefox":"44","firefox_android":"48","safari":"16","safari_ios":"16.4"}}},"q":{"compat_features":["api.HTMLQuoteElement","api.HTMLQuoteElement.cite","html.elements.q","html.elements.q.cite"],"description":"The <q> element represents a short inline quotation.","description_html":"The <code>&#x3C;q></code> element represents a short inline quotation.","group":"html-elements","name":"<q>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-q-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"read-write-pseudos":{"caniuse":"css-read-only-write","compat_features":["css.selectors.read-only","css.selectors.read-write"],"description":"The :read-only and :read-write CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, :read-only matches <input> and <textarea> elements with the readonly attribute.","description_html":"The <code>:read-only</code> and <code>:read-write</code> CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, <code>:read-only</code> matches <code>&#x3C;input></code> and <code>&#x3C;textarea></code> elements with the <code>readonly</code> attribute.","group":"forms","name":":read-only and :read-write","spec":["https://html.spec.whatwg.org/multipage/semantics-other.html#selector-read-only","https://drafts.csswg.org/selectors-4/#rw-pseudos"],"status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"1","chrome_android":"18","edge":"13","firefox":"78","firefox_android":"79","safari":"4","safari_ios":"3.2"}}},"referrer-policy":{"caniuse":"referrer-policy","compat_features":["api.HTMLAnchorElement.referrerPolicy","api.HTMLAreaElement.referrerPolicy","api.HTMLIFrameElement.referrerPolicy","api.HTMLImageElement.referrerPolicy","api.HTMLLinkElement.referrerPolicy","api.HTMLScriptElement.referrerPolicy","html.elements.a.referrerpolicy","html.elements.area.referrerpolicy","html.elements.iframe.referrerpolicy","html.elements.img.referrerpolicy","html.elements.link.referrerpolicy","html.elements.script.referrerpolicy","http.headers.Referrer-Policy","http.headers.Referrer-Policy.default_strict-origin-when-cross-origin"],"description":"The Referrer-Policy HTTP header and referrerpolicy HTML attributes control whether requests have the Referer header and what information the header contains.","description_html":"The <code>Referrer-Policy</code> HTTP header and <code>referrerpolicy</code> HTML attributes control whether requests have the <code>Referer</code> header and what information the header contains.","name":"Referrer policy","spec":"https://w3c.github.io/webappsec-referrer-policy/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"87","firefox_android":"87","safari":"15","safari_ios":"15"}}},"registered-custom-properties":{"compat_features":["api.CSS.registerProperty_static","api.CSSPropertyRule","api.CSSPropertyRule.inherits","api.CSSPropertyRule.initialValue","api.CSSPropertyRule.name","api.CSSPropertyRule.syntax","css.at-rules.property","css.at-rules.property.inherits","css.at-rules.property.initial-value","css.at-rules.property.syntax"],"description":"The CSS.registerProperty() static method and the @property CSS at-rule register custom properties for which types and behaviors can be defined.","description_html":"The <code>CSS.registerProperty()</code> static method and the <code>@property</code> CSS at-rule register custom properties for which types and behaviors can be defined.","name":"Registered custom properties","spec":"https://drafts.css-houdini.org/css-properties-values-api-1/","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"relative-color":{"caniuse":"css-relative-colors","compat_features":["css.types.color.lab.relative_syntax","css.types.color.oklab.relative_syntax"],"description":"The from keyword for color functions (color(), hsl(), oklch(), etc.) creates a new color based on a given color by modifying the values of the input color. Also known as relative color syntax (RCS).","description_html":"The <code>from</code> keyword for color functions (<code>color()</code>, <code>hsl()</code>, <code>oklch()</code>, etc.) creates a new color based on a given color by modifying the values of the input color. Also known as relative color syntax (RCS).","name":"Relative colors","spec":"https://drafts.csswg.org/css-color-5/#relative-colors","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"request-animation-frame":{"caniuse":"requestanimationframe","compat_features":["api.Window.cancelAnimationFrame","api.Window.requestAnimationFrame"],"description":"The requestAnimationFrame() method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.","description_html":"The <code>requestAnimationFrame()</code> method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.","name":"requestAnimationFrame()","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"24","chrome_android":"25","edge":"12","firefox":"23","firefox_android":"23","safari":"7","safari_ios":"7"}}},"request-animation-frame-workers":{"compat_features":["api.DedicatedWorkerGlobalScope.cancelAnimationFrame","api.DedicatedWorkerGlobalScope.requestAnimationFrame"],"description":"The requestAnimationFrame() method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker.","description_html":"The <code>requestAnimationFrame()</code> method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker.","name":"requestAnimationFrame() in workers","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"99","firefox_android":"99","safari":"16.4","safari_ios":"16.4"}}},"request-video-frame-callback":{"compat_features":["api.HTMLVideoElement.cancelVideoFrameCallback","api.HTMLVideoElement.requestVideoFrameCallback"],"description":"The requestVideoFrameCallback() method for <video> schedules a function that runs with the next video frame. It is similar to requestAnimationFrame(), but for video.","description_html":"The <code>requestVideoFrameCallback()</code> method for <code>&#x3C;video></code> schedules a function that runs with the next video frame. It is similar to <code>requestAnimationFrame()</code>, but for video.","group":"media-elements","name":"requestVideoFrameCallback()","spec":"https://wicg.github.io/video-rvfc/","status":{"baseline":false,"support":{"chrome":"83","chrome_android":"83","edge":"83","safari":"15.4","safari_ios":"15.4"}}},"resizable-arraybuffer":{"compat_features":["javascript.builtins.ArrayBuffer.ArrayBuffer.maxByteLength_option","javascript.builtins.ArrayBuffer.maxByteLength","javascript.builtins.ArrayBuffer.resizable","javascript.builtins.ArrayBuffer.resize"],"description":"The resize() method of an ArrayBuffer, constructed with the maxByteLength option, changes the size of the buffer in place.","description_html":"The <code>resize()</code> method of an <code>ArrayBuffer</code>, constructed with the <code>maxByteLength</code> option, changes the size of the buffer in place.","name":"Resizable ArrayBuffer","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-get-arraybuffer.prototype.resizable","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"resource-size":{"compat_features":["api.PerformanceResourceTiming.decodedBodySize","api.PerformanceResourceTiming.encodedBodySize","api.PerformanceResourceTiming.transferSize"],"description":"The decodedSize, encodedSize, and transferSize properties of the PerformanceResourceTiming API reports the size of resources loaded.","description_html":"The <code>decodedSize</code>, <code>encodedSize</code>, and <code>transferSize</code> properties of the <code>PerformanceResourceTiming</code> API reports the size of resources loaded.","group":"resource-timing","name":"Resource size","spec":["https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-decodedbodysize","https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-encodedbodysize","https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-transfersize"],"status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"54","chrome_android":"54","edge":"17","firefox":"45","firefox_android":"45","safari":"16.4","safari_ios":"16.4"}}},"resource-timing":{"caniuse":"resource-timing","compat_features":["api.PerformanceResourceTiming","api.PerformanceResourceTiming.connectEnd","api.PerformanceResourceTiming.connectStart","api.PerformanceResourceTiming.domainLookupEnd","api.PerformanceResourceTiming.domainLookupStart","api.PerformanceResourceTiming.fetchStart","api.PerformanceResourceTiming.initiatorType","api.PerformanceResourceTiming.redirectEnd","api.PerformanceResourceTiming.redirectStart","api.PerformanceResourceTiming.requestStart","api.PerformanceResourceTiming.responseEnd","api.PerformanceResourceTiming.responseStart"],"description":"PerformanceResourceTiming entries report when network events happen while loading a resource, such as when connections start and end. You can use this information to measure loading times.","description_html":"<code>PerformanceResourceTiming</code> entries report when network events happen while loading a resource, such as when connections start and end. You can use this information to measure loading times.","group":"resource-timing","name":"Resource timing (initial support)","spec":"https://w3c.github.io/resource-timing/","status":{"baseline":"high","baseline_high_date":"2020-03-19","baseline_low_date":"2017-09-19","support":{"chrome":"43","chrome_android":"43","edge":"12","firefox":"35","firefox_android":"35","safari":"11","safari_ios":"11"}}},"round-mod-rem":{"compat_features":["css.types.mod","css.types.rem","css.types.round"],"description":"The round(), mod(), and rem() CSS functions compute rounded values and the remainder after division.","description_html":"The <code>round()</code>, <code>mod()</code>, and <code>rem()</code> CSS functions compute rounded values and the remainder after division.","name":"round(), mod(), and rem()","spec":"https://drafts.csswg.org/css-values-4/#round-func","status":{"baseline":"low","baseline_low_date":"2024-05-17","support":{"chrome":"125","chrome_android":"125","edge":"125","firefox":"118","firefox_android":"118","safari":"15.4","safari_ios":"15.4"}}},"samp":{"compat_features":["html.elements.samp"],"description":"The <samp> element represents an in-line sample (or quoted) output from a computer program. Typically styled as monospaced type by default.","description_html":"The <code>&#x3C;samp></code> element represents an in-line sample (or quoted) output from a computer program. Typically styled as monospaced type by default.","group":"html-elements","name":"<samp>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-samp-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"scheduler":{"compat_features":["api.Scheduler","api.Scheduler.postTask","api.TaskController","api.TaskController.TaskController","api.TaskController.setPriority","api.TaskPriorityChangeEvent","api.TaskPriorityChangeEvent.TaskPriorityChangeEvent","api.TaskPriorityChangeEvent.previousPriority","api.TaskSignal","api.TaskSignal.priority","api.scheduler"],"description":"The scheduler API provides a way to prioritize all tasks belonging to an application.","description_html":"The <code>scheduler</code> API provides a way to prioritize all tasks belonging to an application.","name":"Scheduler API","spec":"https://wicg.github.io/scheduling-apis/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"scope":{"caniuse":"css-cascade-scope","compat_features":["api.CSSScopeRule","api.CSSScopeRule.end","api.CSSScopeRule.start","css.at-rules.scope"],"description":"The @scope CSS at-rule sets the scope for a group of rules.","description_html":"The <code>@scope</code> CSS at-rule sets the scope for a group of rules.","name":"@scope","spec":"https://drafts.csswg.org/css-cascade-6/#scope-atrule","status":{"baseline":false,"support":{"chrome":"118","chrome_android":"118","edge":"118","safari":"17.4","safari_ios":"17.4"}}},"screen-orientation":{"caniuse":"screen-orientation","compat_features":["api.Screen.orientation","api.ScreenOrientation","api.ScreenOrientation.angle","api.ScreenOrientation.change_event","api.ScreenOrientation.type"],"description":"The screen.orientation API gets information about the orientation of the viewport, such as landscape or portrait. With this API, you can adapt an application's layout or behavior in response to changes in orientation.","description_html":"The <code>screen.orientation</code> API gets information about the orientation of the viewport, such as landscape or portrait. With this API, you can adapt an application's layout or behavior in response to changes in orientation.","name":"Screen orientation","spec":"https://w3c.github.io/screen-orientation/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"38","chrome_android":"39","edge":"79","firefox":"43","firefox_android":"43","safari":"16.4","safari_ios":"16.4"}}},"screen-orientation-lock":{"compat_features":["api.ScreenOrientation.lock","api.ScreenOrientation.unlock"],"description":"The screen.orientation.lock() method prevents changes to the screen orientation, typically in fullscreen applications such as games. For example, while locked, rotating a phone to the side won't change the screen orientation from landscape to portrait.","description_html":"The <code>screen.orientation.lock()</code> method prevents changes to the screen orientation, typically in fullscreen applications such as games. For example, while locked, rotating a phone to the side won't change the screen orientation from landscape to portrait.","name":"Screen orientation lock","spec":"https://w3c.github.io/screen-orientation/#lock-method","status":{"baseline":false,"support":{"chrome_android":"38"}}},"scroll-driven-animations":{"compat_features":["api.ScrollTimeline","api.ScrollTimeline.ScrollTimeline","api.ScrollTimeline.axis","api.ScrollTimeline.source","api.ViewTimeline","api.ViewTimeline.ViewTimeline","api.ViewTimeline.endOffset","api.ViewTimeline.startOffset","api.ViewTimeline.subject","css.properties.animation-range","css.properties.animation-range-end","css.properties.animation-range-start","css.properties.animation-timeline","css.properties.animation-timeline.scroll","css.properties.animation-timeline.view","css.properties.scroll-timeline","css.properties.scroll-timeline-axis","css.properties.scroll-timeline-name","css.properties.view-timeline","css.properties.view-timeline-axis","css.properties.view-timeline-inset","css.properties.view-timeline-name"],"description":"CSS scroll-driven animations are a type of CSS animations that don't run over time, but are instead driven by the user's scroll position.","description_html":"CSS scroll-driven animations are a type of CSS animations that don't run over time, but are instead driven by the user's scroll position.","group":"scrolling","name":"Scroll-driven animations","spec":"https://drafts.csswg.org/scroll-animations-1/","status":{"baseline":false,"support":{"chrome":"115","chrome_android":"115","edge":"115"}}},"scroll-into-view":{"caniuse":"scrollintoview","compat_features":["api.Element.scrollIntoView","api.Element.scrollIntoView.options_parameter"],"description":"The scrollIntoView() method scrolls an element's ancestor containers such that the element is visible to the user.","description_html":"The <code>scrollIntoView()</code> method scrolls an element's ancestor containers such that the element is visible to the user.","group":"scrolling","name":"scrollIntoView()","spec":"https://drafts.csswg.org/cssom-view-1/#dom-element-scrollintoview","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"36","firefox_android":"36","safari":"14","safari_ios":"14"}}},"scroll-snap":{"caniuse":"css-snappoints","compat_features":["css.properties.scroll-margin","css.properties.scroll-margin-block","css.properties.scroll-margin-block-end","css.properties.scroll-margin-block-start","css.properties.scroll-margin-bottom","css.properties.scroll-margin-inline","css.properties.scroll-margin-inline-end","css.properties.scroll-margin-inline-start","css.properties.scroll-margin-left","css.properties.scroll-margin-right","css.properties.scroll-margin-top","css.properties.scroll-padding","css.properties.scroll-padding-block","css.properties.scroll-padding-block-end","css.properties.scroll-padding-block-start","css.properties.scroll-padding-bottom","css.properties.scroll-padding-inline","css.properties.scroll-padding-inline-end","css.properties.scroll-padding-inline-start","css.properties.scroll-padding-left","css.properties.scroll-padding-right","css.properties.scroll-padding-top","css.properties.scroll-snap-align","css.properties.scroll-snap-stop","css.properties.scroll-snap-type"],"description":"CSS scroll snap controls the panning and scrolling behavior within a scroll container.","description_html":"CSS scroll snap controls the panning and scrolling behavior within a scroll container.","group":"scrolling","name":"Scroll snap","spec":"https://drafts.csswg.org/css-scroll-snap-1/","status":{"baseline":"high","baseline_high_date":"2022-01-09","baseline_low_date":"2019-07-09","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"68","firefox_android":"68","safari":"11","safari_ios":"11"}}},"scroll-to-text-fragment":{"caniuse":"url-scroll-to-text-fragment","description":"Text fragments are URL fragments on the form #:~:text=snippet and link to a snippet of text within a page. The browser may scroll, highlight, or otherwise bring that text to the reader's attention.","description_html":"Text fragments are URL fragments on the form <code>#:~:text=snippet</code> and link to a snippet of text within a page. The browser may scroll, highlight, or otherwise bring that text to the reader's attention.","group":["text-fragments","scrolling"],"name":"Scroll to text fragment","spec":"https://wicg.github.io/scroll-to-text-fragment/","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"81","edge":"83","safari":"16.1","safari_ios":"16.1"}}},"scrollbar-color":{"compat_features":["css.properties.scrollbar-color"],"description":"The scrollbar-color CSS property sets the color of the scrollbar track and thumb.","description_html":"The <code>scrollbar-color</code> CSS property sets the color of the scrollbar track and thumb.","group":"scrolling","name":"scrollbar-color","spec":"https://drafts.csswg.org/css-scrollbars-1/#scrollbar-color","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"64","firefox_android":"64"}}},"scrollbar-gutter":{"compat_features":["css.properties.scrollbar-gutter"],"description":"The scrollbar-gutter CSS property reserves space for the scrollbar, preventing unwanted layout changes as the scrollbar appears and disappears.","description_html":"The <code>scrollbar-gutter</code> CSS property reserves space for the scrollbar, preventing unwanted layout changes as the scrollbar appears and disappears.","group":"scrolling","name":"scrollbar-gutter","spec":"https://drafts.csswg.org/css-overflow-3/#scrollbar-gutter-property","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94","firefox":"97","firefox_android":"97"}}},"scrollbar-width":{"compat_features":["css.properties.scrollbar-width"],"description":"The scrollbar-width CSS property sets the width of the scrollbar.","description_html":"The <code>scrollbar-width</code> CSS property sets the width of the scrollbar.","group":"scrolling","name":"scrollbar-width","spec":"https://drafts.csswg.org/css-scrollbars-1/#scrollbar-width","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"64","firefox_android":"64"}}},"scrollend":{"compat_features":["api.Document.scrollend_event","api.Element.scrollend_event"],"description":"The scrollend event fires when an element or document has finished scrolling.","description_html":"The <code>scrollend</code> event fires when an element or document has finished scrolling.","group":"scrolling","name":"scrollend","spec":"https://drafts.csswg.org/cssom-view-1/#eventdef-document-scrollend","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"109","firefox_android":"109"}}},"search":{"compat_features":["html.elements.search"],"description":"The <search> HTML element is a container that represents the parts of the web page with search functionality.","description_html":"The <code>&#x3C;search></code> HTML element is a container that represents the parts of the web page with search functionality.","group":"html-elements","name":"<search>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-search-element","status":{"baseline":"low","baseline_low_date":"2023-10-13","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"118","firefox_android":"118","safari":"17","safari_ios":"17"}}},"search-input-type":{"caniuse":"input-search","compat_features":["html.elements.input.type_search"],"description":"The <input> HTML element with the type=\"search\" attribute represents a text field for search queries, which might be styled differently by the browser.","description_html":"The <code>&#x3C;input></code> HTML element with the <code>type=\"search\"</code> attribute represents a text field for search queries, which might be styled differently by the browser.","group":"forms","name":"<input type=\"search\">","spec":"https://html.spec.whatwg.org/multipage/input.html#text-(type=text)-state-and-search-state-(type=search)","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"section":{"compat_features":["html.elements.section"],"description":"The <section> element is a generic standalone section of a document, which doesn't have a more specific semantic element to represent it.","description_html":"The <code>&#x3C;section></code> element is a generic standalone section of a document, which doesn't have a more specific semantic element to represent it.","group":"html-elements","name":"<section>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-section-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"server-timing":{"caniuse":"server-timing","compat_features":["api.PerformanceResourceTiming.serverTiming","api.PerformanceServerTiming","api.PerformanceServerTiming.description","api.PerformanceServerTiming.duration","api.PerformanceServerTiming.name","api.PerformanceServerTiming.toJSON","http.headers.Server-Timing"],"description":"The serverTiming property of the PerformanceResourceTiming API contains server timing information about network requests.","description_html":"The <code>serverTiming</code> property of the <code>PerformanceResourceTiming</code> API contains server timing information about network requests.","name":"Server timing","spec":"https://w3c.github.io/server-timing/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"61","firefox_android":"61","safari":"16.4","safari_ios":"16.4"}}},"set":{"compat_features":["javascript.builtins.Set","javascript.builtins.Set.@@iterator","javascript.builtins.Set.Set","javascript.builtins.Set.Set.iterable_allowed","javascript.builtins.Set.Set.null_allowed","javascript.builtins.Set.add","javascript.builtins.Set.clear","javascript.builtins.Set.delete","javascript.builtins.Set.entries","javascript.builtins.Set.forEach","javascript.builtins.Set.has","javascript.builtins.Set.key_equality_for_zeros","javascript.builtins.Set.keys","javascript.builtins.Set.size","javascript.builtins.Set.values"],"description":"Set objects store unique values of any type.","description_html":"Set objects store unique values of any type.","group":"sets","name":"Set (initial support)","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/keyed-collections.html#sec-set-objects","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"38","chrome_android":"38","edge":"12","firefox":"13","firefox_android":"14","safari":"8","safari_ios":"8"}}},"set-methods":{"compat_features":["javascript.builtins.Set.difference","javascript.builtins.Set.intersection","javascript.builtins.Set.isDisjointFrom","javascript.builtins.Set.isSubsetOf","javascript.builtins.Set.isSupersetOf","javascript.builtins.Set.symmetricDifference","javascript.builtins.Set.union"],"description":"The difference(), intersection(), isDisjointFrom(), isSubsetOf(), isSupersetOf(), symmetricDifference(), and union() methods of the JavaScript Set object performs operations between two sets.","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":"sets","name":"Set methods","spec":"https://tc39.es/proposal-set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}},"shadow-dom":{"caniuse":"shadowdomv1","compat_features":["api.Element.attachShadow","api.Element.shadowRoot","api.Event.composed","api.Event.composedPath","api.Node.getRootNode","api.Node.isConnected","api.ShadowRoot","api.ShadowRoot.clonable","api.ShadowRoot.host","api.ShadowRoot.mode"],"description":"Shadow DOM allows you to attach encapsulated \"shadow\" DOM trees to elements. A shadow DOM tree is a separate component, isolated from the scripts and styles in other parts of the document. This is a part of Web Components.","description_html":"Shadow DOM allows you to attach encapsulated \"shadow\" DOM trees to elements. A shadow DOM tree is a separate component, isolated from the scripts and styles in other parts of the document. This is a part of Web Components.","group":"web-components","name":"Shadow DOM","spec":"https://dom.spec.whatwg.org/#shadow-trees","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"53","chrome_android":"53","edge":"79","firefox":"63","firefox_android":"63","safari":"10","safari_ios":"10"}}},"show-picker-input":{"compat_features":["api.HTMLInputElement.showPicker","api.HTMLInputElement.showPicker.color_input","api.HTMLInputElement.showPicker.date_input","api.HTMLInputElement.showPicker.datetime_local_input","api.HTMLInputElement.showPicker.file_input"],"description":"The showPicker() method for <input> elements shows the user interface for picking a value. For example, for <input type=\"date\"> it shows the interface for picking a date.","description_html":"The <code>showPicker()</code> method for <code>&#x3C;input></code> elements shows the user interface for picking a value. For example, for <code>&#x3C;input type=\"date\"></code> it shows the interface for picking a date.","group":"forms","name":"showPicker() for <input>","spec":"https://html.spec.whatwg.org/multipage/input.html#dom-input-showpicker","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"101","firefox_android":"101","safari":"17.4"}}},"show-picker-select":{"compat_features":["api.HTMLSelectElement.showPicker"],"description":"The showPicker() method for <select> elements shows the dropdown menu or other user interface for picking one of the options.","description_html":"The <code>showPicker()</code> method for <code>&#x3C;select></code> elements shows the dropdown menu or other user interface for picking one of the options.","group":"forms","name":"showPicker() for <select>","spec":"https://html.spec.whatwg.org/multipage/input.html#dom-select-showpicker","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"122","firefox_android":"122"}}},"slot":{"compat_features":["api.Element.assignedSlot","api.Element.slot","api.HTMLSlotElement","api.HTMLSlotElement.assignedElements","api.HTMLSlotElement.assignedNodes","api.HTMLSlotElement.name","api.HTMLSlotElement.slotchange_event","api.Text.assignedSlot","css.selectors.slotted","html.elements.slot","html.elements.slot.name","html.global_attributes.slot"],"description":"The <slot> HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.","description_html":"The <code>&#x3C;slot></code> HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.","group":["html-elements","web-components"],"name":"<slot>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-slot-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"53","chrome_android":"53","edge":"79","firefox":"63","firefox_android":"63","safari":"10","safari_ios":"10"}}},"slot-assign":{"compat_features":["api.HTMLSlotElement.assign","api.ShadowRoot.slotAssignment"],"description":"The assign() method for <slot> elements assigns nodes to the slot, as an alternative to using the slot and name HTML attributes. The nodes must be children of a shadow host and the shadow root must be created with the slotAssignment set to \"manual\". Also known as manual slot assignment.","description_html":"The <code>assign()</code> method for <code>&#x3C;slot></code> elements assigns nodes to the slot, as an alternative to using the <code>slot</code> and <code>name</code> HTML attributes. The nodes must be children of a shadow host and the shadow root must be created with the <code>slotAssignment</code> set to \"manual\". Also known as manual slot assignment.","group":"web-components","name":"Imperative slot assignment","spec":"https://html.spec.whatwg.org/multipage/scripting.html#dom-slot-assign","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"92","firefox_android":"92","safari":"16.4","safari_ios":"16.4"}}},"small":{"compat_features":["html.elements.small"],"description":"The <small> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. Typically styled in a reduced font size by default.","description_html":"The <code>&#x3C;small></code> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. Typically styled in a reduced font size by default.","group":"html-elements","name":"<small>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-small-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"span":{"compat_features":["api.HTMLSpanElement","html.elements.span"],"description":"The <span> HTML element is the generic inline container for content.","description_html":"The <code>&#x3C;span></code> HTML element is the generic inline container for content.","group":"html-elements","name":"<span>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-span-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"speech-synthesis":{"caniuse":"speech-synthesis","compat_features":["api.SpeechSynthesis","api.SpeechSynthesis.cancel","api.SpeechSynthesis.getVoices","api.SpeechSynthesis.pause","api.SpeechSynthesis.paused","api.SpeechSynthesis.pending","api.SpeechSynthesis.resume","api.SpeechSynthesis.speak","api.SpeechSynthesis.speaking","api.SpeechSynthesisEvent","api.SpeechSynthesisEvent.charIndex","api.SpeechSynthesisEvent.elapsedTime","api.SpeechSynthesisEvent.name","api.SpeechSynthesisEvent.utterance","api.SpeechSynthesisUtterance","api.SpeechSynthesisUtterance.SpeechSynthesisUtterance","api.SpeechSynthesisUtterance.end_event","api.SpeechSynthesisUtterance.error_event","api.SpeechSynthesisUtterance.lang","api.SpeechSynthesisUtterance.mark_event","api.SpeechSynthesisUtterance.pause_event","api.SpeechSynthesisUtterance.pitch","api.SpeechSynthesisUtterance.rate","api.SpeechSynthesisUtterance.resume_event","api.SpeechSynthesisUtterance.start_event","api.SpeechSynthesisUtterance.text","api.SpeechSynthesisUtterance.voice","api.SpeechSynthesisUtterance.volume","api.SpeechSynthesisVoice","api.SpeechSynthesisVoice.default","api.SpeechSynthesisVoice.lang","api.SpeechSynthesisVoice.localService","api.SpeechSynthesisVoice.name","api.SpeechSynthesisVoice.voiceURI","api.Window.speechSynthesis"],"description":"The SpeechSynthesis API converts text into audio using a synthetic voice.","description_html":"The <code>SpeechSynthesis</code> API converts text into audio using a synthetic voice.","group":"speech","name":"Speech synthesis","spec":"https://wicg.github.io/speech-api/#tts-section","status":{"baseline":"high","baseline_high_date":"2021-03-05","baseline_low_date":"2018-09-05","support":{"chrome":"33","chrome_android":"33","edge":"14","firefox":"49","firefox_android":"62","safari":"7","safari_ios":"7"}}},"spelling-grammar-error":{"compat_features":["css.selectors.grammar-error","css.selectors.spelling-error"],"description":"The ::spelling-error and ::grammar-error CSS pseudo-elements match text that is highlighted as misspelled and grammatically incorrect, respectively.","description_html":"The <code>::spelling-error</code> and <code>::grammar-error</code> CSS pseudo-elements match text that is highlighted as misspelled and grammatically incorrect, respectively.","name":"::spelling-error and ::grammar-error","spec":["https://drafts.csswg.org/css-pseudo-4/#selectordef-spelling-error","https://drafts.csswg.org/css-pseudo-4/#selectordef-grammar-error"],"status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","safari":"17.4","safari_ios":"17.4"}}},"stable-array-sort":{"compat_features":["javascript.builtins.Array.sort.stable_sorting"],"description":"Stable array sort() function","description_html":"Stable array sort() function","group":"arrays","name":"Stable array sort","snapshot":"ecmascript-2019","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.sort","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"70","chrome_android":"70","edge":"79","firefox":"3","firefox_android":"4","safari":"10.1","safari_ios":"10.3"}}},"starting-style":{"compat_features":["api.CSSStartingStyleRule","css.at-rules.starting-style"],"description":"The @starting-style CSS at-rule defines the starting values for properties that are transitioning when the target element's style is first updated.","description_html":"The <code>@starting-style</code> CSS at-rule defines the starting values for properties that are transitioning when the target element's style is first updated.","name":"@starting-style","spec":"https://drafts.csswg.org/css-transitions-2/#defining-before-change-style","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117","safari":"17.5","safari_ios":"17.5"}}},"state":{"compat_features":["api.CustomStateSet","api.CustomStateSet.@@iterator","api.CustomStateSet.add","api.CustomStateSet.clear","api.CustomStateSet.delete","api.CustomStateSet.entries","api.CustomStateSet.forEach","api.CustomStateSet.has","api.CustomStateSet.keys","api.CustomStateSet.size","api.CustomStateSet.values","api.ElementInternals.states","css.selectors.state"],"description":"The :state() CSS pseudo-class matches custom elements based on their custom state, set through the ElementInternals.states API.","description_html":"The <code>:state()</code> CSS pseudo-class matches custom elements based on their custom state, set through the <code>ElementInternals.states</code> API.","group":"custom-elements","name":":state()","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#custom-state-pseudo-class","status":{"baseline":"low","baseline_low_date":"2024-05-17","support":{"chrome":"125","chrome_android":"125","edge":"125","firefox":"126","firefox_android":"126","safari":"17.4","safari_ios":"17.4"}}},"sticky-positioning":{"caniuse":"css-sticky","compat_features":["css.properties.position.position_sticky_table_elements","css.properties.position.sticky"],"description":"The position: sticky CSS declaration positions an element in the normal flow until it crosses a specified threshold, at which points it becomes fixed (stuck) at that position.","description_html":"The <code>position: sticky</code> CSS declaration positions an element in the normal flow until it crosses a specified threshold, at which points it becomes fixed (stuck) at that position.","name":"Sticky positioning","spec":"https://drafts.csswg.org/css-position-3/#stickypos-insets","status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"56","chrome_android":"56","edge":"16","firefox":"59","firefox_android":"59","safari":"13","safari_ios":"13"}}},"storage-access":{"compat_features":["api.Document.hasStorageAccess","api.Document.requestStorageAccess"],"description":"The document.requestStorageAccess() method allows content in iframes to request storing and reading cookies and other site data, while the document.hasStorageAccess() method checks if such access is granted.","description_html":"The <code>document.requestStorageAccess()</code> method allows content in iframes to request storing and reading cookies and other site data, while the <code>document.hasStorageAccess()</code> method checks if such access is granted.","name":"Storage access","spec":"https://privacycg.github.io/storage-access/","status":{"baseline":"low","baseline_low_date":"2023-12-05","support":{"chrome":"119","chrome_android":"120","edge":"85","firefox":"65","firefox_android":"65","safari":"11.1","safari_ios":"11.3"}}},"storage-buckets":{"compat_features":["api.Navigator.storageBuckets","api.StorageBucket","api.StorageBucket.caches","api.StorageBucket.estimate","api.StorageBucket.expires","api.StorageBucket.getDirectory","api.StorageBucket.indexedDB","api.StorageBucket.name","api.StorageBucket.persist","api.StorageBucket.persisted","api.StorageBucket.setExpires","api.StorageBucketManager","api.StorageBucketManager.delete","api.StorageBucketManager.keys","api.StorageBucketManager.open","api.WorkerNavigator.storageBuckets"],"description":"The navigator.storageBuckets API allows you to organize locally stored data into groups called storage buckets. Each bucket can have different settings, allowing the browser to manage and delete buckets independently rather than applying the same treatment to all.","description_html":"The <code>navigator.storageBuckets</code> API allows you to organize locally stored data into groups called storage buckets. Each bucket can have different settings, allowing the browser to manage and delete buckets independently rather than applying the same treatment to all.","name":"Storage buckets","spec":"https://wicg.github.io/storage-buckets/","status":{"baseline":false,"support":{"chrome":"122","chrome_android":"122","edge":"122"}}},"streams":{"caniuse":"streams","compat_features":["api.ByteLengthQueuingStrategy","api.ByteLengthQueuingStrategy.ByteLengthQueuingStrategy","api.ByteLengthQueuingStrategy.highWaterMark","api.ByteLengthQueuingStrategy.size","api.CountQueuingStrategy","api.CountQueuingStrategy.CountQueuingStrategy","api.CountQueuingStrategy.highWaterMark","api.CountQueuingStrategy.size","api.ReadableStream","api.ReadableStream.ReadableStream","api.ReadableStream.cancel","api.ReadableStream.getReader","api.ReadableStream.locked","api.ReadableStream.pipeThrough","api.ReadableStream.pipeTo","api.ReadableStream.tee","api.WritableStream","api.WritableStream.WritableStream","api.WritableStream.abort","api.WritableStream.getWriter","api.WritableStream.locked","api.WritableStreamDefaultController","api.WritableStreamDefaultController.error","api.WritableStreamDefaultWriter","api.WritableStreamDefaultWriter.abort","api.WritableStreamDefaultWriter.close","api.WritableStreamDefaultWriter.closed","api.WritableStreamDefaultWriter.desiredSize","api.WritableStreamDefaultWriter.ready","api.WritableStreamDefaultWriter.releaseLock","api.WritableStreamDefaultWriter.write"],"description":"The streams API creates, composes, and consumes continuously generated data.","description_html":"The streams API creates, composes, and consumes continuously generated data.","group":"streams","name":"Streams","spec":"https://streams.spec.whatwg.org/","status":{"baseline":"low","baseline_low_date":"2022-06-28","support":{"chrome":"59","chrome_android":"59","edge":"79","firefox":"102","firefox_android":"102","safari":"14.1","safari_ios":"14.5"}}},"structured-clone":{"compat_features":["api.structuredClone"],"description":"The structuredClone() global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.","description_html":"The <code>structuredClone()</code> global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.","name":"structuredClone()","spec":"https://html.spec.whatwg.org/multipage/structured-data.html#structured-cloning","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"94","firefox_android":"94","safari":"15.4","safari_ios":"15.4"}}},"sub-sup":{"compat_features":["html.elements.sub","html.elements.sup"],"description":"The <sub> and <sup> elements sets inline text to be displayed as subscript or superscript for solely typographical reasons.","description_html":"The <code>&#x3C;sub></code> and <code>&#x3C;sup></code> elements sets inline text to be displayed as subscript or superscript for solely typographical reasons.","group":"html-elements","name":"<sub> and <sup>","spec":["https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-sub-element","https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-sup-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"subgrid":{"caniuse":"css-subgrid","compat_features":["css.properties.grid-template-columns.subgrid","css.properties.grid-template-rows.subgrid"],"description":"The subgrid value for the grid-template-columns and grid-template-rows properties allows a grid item to inherit the grid definition of its parent grid container.","description_html":"The <code>subgrid</code> value for the <code>grid-template-columns</code> and <code>grid-template-rows</code> properties allows a grid item to inherit the grid definition of its parent grid container.","group":"grid","name":"Subgrid","spec":"https://drafts.csswg.org/css-grid-2/#subgrids","status":{"baseline":"low","baseline_low_date":"2023-09-15","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"71","firefox_android":"79","safari":"16","safari_ios":"16"}}},"tabindex":{"caniuse":"tabindex-attr","compat_features":["api.HTMLElement.tabIndex","html.global_attributes.tabindex"],"description":"The tabindex HTML attribute make an element focusable, and defines the element's relative ordering for sequential focus navigation.","description_html":"The <code>tabindex</code> HTML attribute make an element focusable, and defines the element's relative ordering for sequential focus navigation.","group":"html","name":"tabindex","spec":"https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex","status":{"baseline":"high","baseline_high_date":"2021-04-02","baseline_low_date":"2018-10-02","support":{"chrome":"1","chrome_android":"18","edge":"18","firefox":"1.5","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"table":{"compat_features":["api.HTMLTableCaptionElement","api.HTMLTableCellElement","api.HTMLTableCellElement.abbr","api.HTMLTableCellElement.cellIndex","api.HTMLTableCellElement.colSpan","api.HTMLTableCellElement.headers","api.HTMLTableCellElement.rowSpan","api.HTMLTableCellElement.scope","api.HTMLTableColElement","api.HTMLTableColElement.span","api.HTMLTableElement","api.HTMLTableElement.caption","api.HTMLTableElement.createCaption","api.HTMLTableElement.createTBody","api.HTMLTableElement.createTFoot","api.HTMLTableElement.createTHead","api.HTMLTableElement.deleteCaption","api.HTMLTableElement.deleteRow","api.HTMLTableElement.deleteTFoot","api.HTMLTableElement.deleteTHead","api.HTMLTableElement.insertRow","api.HTMLTableElement.rows","api.HTMLTableElement.tBodies","api.HTMLTableElement.tFoot","api.HTMLTableElement.tHead","api.HTMLTableRowElement","api.HTMLTableRowElement.cells","api.HTMLTableRowElement.deleteCell","api.HTMLTableRowElement.insertCell","api.HTMLTableRowElement.insertCell.index_parameter_negative_one","api.HTMLTableRowElement.insertCell.index_parameter_optional","api.HTMLTableRowElement.rowIndex","api.HTMLTableRowElement.sectionRowIndex","api.HTMLTableSectionElement","api.HTMLTableSectionElement.deleteRow","api.HTMLTableSectionElement.insertRow","api.HTMLTableSectionElement.rows","html.elements.caption","html.elements.col","html.elements.col.span","html.elements.colgroup","html.elements.colgroup.span","html.elements.table","html.elements.tbody","html.elements.td","html.elements.td.colspan","html.elements.td.headers","html.elements.td.rowspan","html.elements.tfoot","html.elements.th","html.elements.th.abbr","html.elements.th.colspan","html.elements.th.headers","html.elements.th.rowspan","html.elements.th.scope","html.elements.thead","html.elements.tr"],"description":"The <table> HTML element, with several related elements, represents tabular data in rows and columns of cells.","description_html":"The <code>&#x3C;table></code> HTML element, with several related elements, represents tabular data in rows and columns of cells.","group":"html-elements","name":"Tables","spec":"https://html.spec.whatwg.org/multipage/tables.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"target-text":{"compat_features":["css.selectors.target-text"],"description":"The ::target-text pseudo-element allows you to style text highlighted by a URL text fragment such as #:~:text=snippet.","description_html":"The <code>::target-text</code> pseudo-element allows you to style text highlighted by a URL text fragment such as <code>#:~:text=snippet</code>.","group":"text-fragments","name":"::target-text","spec":"https://drafts.csswg.org/css-pseudo-4/#selectordef-target-text","status":{"baseline":false,"support":{"chrome":"89","chrome_android":"89","edge":"89"}}},"template":{"caniuse":"template","compat_features":["api.HTMLTemplateElement","api.HTMLTemplateElement.content","html.elements.template"],"description":"The <template> HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.","description_html":"The <code>&#x3C;template></code> HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.","group":["html-elements","web-components"],"name":"<template>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-template-element","status":{"baseline":"high","baseline_high_date":"2018-05-12","baseline_low_date":"2015-11-12","support":{"chrome":"26","chrome_android":"26","edge":"13","firefox":"22","firefox_android":"22","safari":"8","safari_ios":"8"}}},"temporal":{"caniuse":"temporal","compat_features":["javascript.builtins.Temporal","javascript.builtins.Temporal.Calendar","javascript.builtins.Temporal.Calendar.Calendar","javascript.builtins.Temporal.Calendar.dateAdd","javascript.builtins.Temporal.Calendar.dateFromFields","javascript.builtins.Temporal.Calendar.dateUntil","javascript.builtins.Temporal.Calendar.day","javascript.builtins.Temporal.Calendar.dayOfWeek","javascript.builtins.Temporal.Calendar.dayOfYear","javascript.builtins.Temporal.Calendar.daysInMonth","javascript.builtins.Temporal.Calendar.daysInWeek","javascript.builtins.Temporal.Calendar.daysInYear","javascript.builtins.Temporal.Calendar.era","javascript.builtins.Temporal.Calendar.eraYear","javascript.builtins.Temporal.Calendar.fields","javascript.builtins.Temporal.Calendar.from","javascript.builtins.Temporal.Calendar.id","javascript.builtins.Temporal.Calendar.inLeapYear","javascript.builtins.Temporal.Calendar.mergeFields","javascript.builtins.Temporal.Calendar.month","javascript.builtins.Temporal.Calendar.monthCode","javascript.builtins.Temporal.Calendar.monthDayFromFields","javascript.builtins.Temporal.Calendar.monthsInYear","javascript.builtins.Temporal.Calendar.toJSON","javascript.builtins.Temporal.Calendar.toString","javascript.builtins.Temporal.Calendar.weekOfYear","javascript.builtins.Temporal.Calendar.year","javascript.builtins.Temporal.Calendar.yearMonthFromFields","javascript.builtins.Temporal.Duration","javascript.builtins.Temporal.Duration.Duration","javascript.builtins.Temporal.Duration.abs","javascript.builtins.Temporal.Duration.add","javascript.builtins.Temporal.Duration.blank","javascript.builtins.Temporal.Duration.compare","javascript.builtins.Temporal.Duration.days","javascript.builtins.Temporal.Duration.from","javascript.builtins.Temporal.Duration.hours","javascript.builtins.Temporal.Duration.microseconds","javascript.builtins.Temporal.Duration.milliseconds","javascript.builtins.Temporal.Duration.minutes","javascript.builtins.Temporal.Duration.months","javascript.builtins.Temporal.Duration.nanoseconds","javascript.builtins.Temporal.Duration.negated","javascript.builtins.Temporal.Duration.round","javascript.builtins.Temporal.Duration.seconds","javascript.builtins.Temporal.Duration.sign","javascript.builtins.Temporal.Duration.subtract","javascript.builtins.Temporal.Duration.toJSON","javascript.builtins.Temporal.Duration.toLocaleString","javascript.builtins.Temporal.Duration.toString","javascript.builtins.Temporal.Duration.total","javascript.builtins.Temporal.Duration.valueOf","javascript.builtins.Temporal.Duration.weeks","javascript.builtins.Temporal.Duration.with","javascript.builtins.Temporal.Duration.years","javascript.builtins.Temporal.Instant","javascript.builtins.Temporal.Instant.Instant","javascript.builtins.Temporal.Instant.add","javascript.builtins.Temporal.Instant.compare","javascript.builtins.Temporal.Instant.epochMicroseconds","javascript.builtins.Temporal.Instant.epochMilliseconds","javascript.builtins.Temporal.Instant.epochNanoseconds","javascript.builtins.Temporal.Instant.epochSeconds","javascript.builtins.Temporal.Instant.equals","javascript.builtins.Temporal.Instant.from","javascript.builtins.Temporal.Instant.fromEpochMicroseconds","javascript.builtins.Temporal.Instant.fromEpochMilliseconds","javascript.builtins.Temporal.Instant.fromEpochNanoseconds","javascript.builtins.Temporal.Instant.fromEpochSeconds","javascript.builtins.Temporal.Instant.round","javascript.builtins.Temporal.Instant.since","javascript.builtins.Temporal.Instant.subtract","javascript.builtins.Temporal.Instant.toJSON","javascript.builtins.Temporal.Instant.toLocaleString","javascript.builtins.Temporal.Instant.toString","javascript.builtins.Temporal.Instant.toZonedDateTime","javascript.builtins.Temporal.Instant.toZonedDateTimeISO","javascript.builtins.Temporal.Instant.until","javascript.builtins.Temporal.Instant.valueOf","javascript.builtins.Temporal.Now","javascript.builtins.Temporal.Now.instant","javascript.builtins.Temporal.Now.plainDate","javascript.builtins.Temporal.Now.plainDateISO","javascript.builtins.Temporal.Now.plainDateTime","javascript.builtins.Temporal.Now.plainDateTimeISO","javascript.builtins.Temporal.Now.timeZone","javascript.builtins.Temporal.Now.zonedDateTime","javascript.builtins.Temporal.Now.zonedDateTimeISO","javascript.builtins.Temporal.PlainDate","javascript.builtins.Temporal.PlainDate.PlainDate","javascript.builtins.Temporal.PlainDate.add","javascript.builtins.Temporal.PlainDate.calendar","javascript.builtins.Temporal.PlainDate.compare","javascript.builtins.Temporal.PlainDate.day","javascript.builtins.Temporal.PlainDate.dayOfWeek","javascript.builtins.Temporal.PlainDate.dayOfYear","javascript.builtins.Temporal.PlainDate.daysInMonth","javascript.builtins.Temporal.PlainDate.daysInWeek","javascript.builtins.Temporal.PlainDate.daysInYear","javascript.builtins.Temporal.PlainDate.equals","javascript.builtins.Temporal.PlainDate.era","javascript.builtins.Temporal.PlainDate.eraYear","javascript.builtins.Temporal.PlainDate.from","javascript.builtins.Temporal.PlainDate.getISOFields","javascript.builtins.Temporal.PlainDate.inLeapYear","javascript.builtins.Temporal.PlainDate.month","javascript.builtins.Temporal.PlainDate.monthCode","javascript.builtins.Temporal.PlainDate.monthsInYear","javascript.builtins.Temporal.PlainDate.since","javascript.builtins.Temporal.PlainDate.subtract","javascript.builtins.Temporal.PlainDate.toJSON","javascript.builtins.Temporal.PlainDate.toLocaleString","javascript.builtins.Temporal.PlainDate.toPlainDateTime","javascript.builtins.Temporal.PlainDate.toPlainMonthDay","javascript.builtins.Temporal.PlainDate.toPlainYearMonth","javascript.builtins.Temporal.PlainDate.toString","javascript.builtins.Temporal.PlainDate.toZonedDateTime","javascript.builtins.Temporal.PlainDate.until","javascript.builtins.Temporal.PlainDate.valueOf","javascript.builtins.Temporal.PlainDate.weekOfYear","javascript.builtins.Temporal.PlainDate.with","javascript.builtins.Temporal.PlainDate.withCalendar","javascript.builtins.Temporal.PlainDate.year","javascript.builtins.Temporal.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.add","javascript.builtins.Temporal.PlainDateTime.calendar","javascript.builtins.Temporal.PlainDateTime.compare","javascript.builtins.Temporal.PlainDateTime.day","javascript.builtins.Temporal.PlainDateTime.dayOfWeek","javascript.builtins.Temporal.PlainDateTime.dayOfYear","javascript.builtins.Temporal.PlainDateTime.daysInMonth","javascript.builtins.Temporal.PlainDateTime.daysInWeek","javascript.builtins.Temporal.PlainDateTime.daysInYear","javascript.builtins.Temporal.PlainDateTime.equals","javascript.builtins.Temporal.PlainDateTime.era","javascript.builtins.Temporal.PlainDateTime.eraYear","javascript.builtins.Temporal.PlainDateTime.from","javascript.builtins.Temporal.PlainDateTime.getISOFields","javascript.builtins.Temporal.PlainDateTime.hour","javascript.builtins.Temporal.PlainDateTime.inLeapYear","javascript.builtins.Temporal.PlainDateTime.microsecond","javascript.builtins.Temporal.PlainDateTime.millisecond","javascript.builtins.Temporal.PlainDateTime.minute","javascript.builtins.Temporal.PlainDateTime.month","javascript.builtins.Temporal.PlainDateTime.monthCode","javascript.builtins.Temporal.PlainDateTime.monthsInYear","javascript.builtins.Temporal.PlainDateTime.nanosecond","javascript.builtins.Temporal.PlainDateTime.round","javascript.builtins.Temporal.PlainDateTime.second","javascript.builtins.Temporal.PlainDateTime.since","javascript.builtins.Temporal.PlainDateTime.subtract","javascript.builtins.Temporal.PlainDateTime.toJSON","javascript.builtins.Temporal.PlainDateTime.toLocaleString","javascript.builtins.Temporal.PlainDateTime.toPlainDate","javascript.builtins.Temporal.PlainDateTime.toPlainMonthDay","javascript.builtins.Temporal.PlainDateTime.toPlainTime","javascript.builtins.Temporal.PlainDateTime.toPlainYearMonth","javascript.builtins.Temporal.PlainDateTime.toString","javascript.builtins.Temporal.PlainDateTime.toZonedDateTime","javascript.builtins.Temporal.PlainDateTime.until","javascript.builtins.Temporal.PlainDateTime.valueOf","javascript.builtins.Temporal.PlainDateTime.weekOfYear","javascript.builtins.Temporal.PlainDateTime.with","javascript.builtins.Temporal.PlainDateTime.withCalendar","javascript.builtins.Temporal.PlainDateTime.withPlainDate","javascript.builtins.Temporal.PlainDateTime.withPlainTime","javascript.builtins.Temporal.PlainDateTime.year","javascript.builtins.Temporal.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.calendar","javascript.builtins.Temporal.PlainMonthDay.day","javascript.builtins.Temporal.PlainMonthDay.equals","javascript.builtins.Temporal.PlainMonthDay.from","javascript.builtins.Temporal.PlainMonthDay.getISOFields","javascript.builtins.Temporal.PlainMonthDay.monthCode","javascript.builtins.Temporal.PlainMonthDay.toJSON","javascript.builtins.Temporal.PlainMonthDay.toLocaleString","javascript.builtins.Temporal.PlainMonthDay.toPlainDate","javascript.builtins.Temporal.PlainMonthDay.toString","javascript.builtins.Temporal.PlainMonthDay.valueOf","javascript.builtins.Temporal.PlainMonthDay.with","javascript.builtins.Temporal.PlainTime","javascript.builtins.Temporal.PlainTime.PlainTime","javascript.builtins.Temporal.PlainTime.add","javascript.builtins.Temporal.PlainTime.calendar","javascript.builtins.Temporal.PlainTime.compare","javascript.builtins.Temporal.PlainTime.equals","javascript.builtins.Temporal.PlainTime.from","javascript.builtins.Temporal.PlainTime.getISOFields","javascript.builtins.Temporal.PlainTime.hour","javascript.builtins.Temporal.PlainTime.microsecond","javascript.builtins.Temporal.PlainTime.millisecond","javascript.builtins.Temporal.PlainTime.minute","javascript.builtins.Temporal.PlainTime.nanosecond","javascript.builtins.Temporal.PlainTime.round","javascript.builtins.Temporal.PlainTime.second","javascript.builtins.Temporal.PlainTime.since","javascript.builtins.Temporal.PlainTime.subtract","javascript.builtins.Temporal.PlainTime.toJSON","javascript.builtins.Temporal.PlainTime.toLocaleString","javascript.builtins.Temporal.PlainTime.toPlainDateTime","javascript.builtins.Temporal.PlainTime.toString","javascript.builtins.Temporal.PlainTime.toZonedDateTime","javascript.builtins.Temporal.PlainTime.until","javascript.builtins.Temporal.PlainTime.valueOf","javascript.builtins.Temporal.PlainTime.with","javascript.builtins.Temporal.PlainYearMonth","javascript.builtins.Temporal.PlainYearMonth.PlainYearMonth","javascript.builtins.Temporal.PlainYearMonth.add","javascript.builtins.Temporal.PlainYearMonth.calendar","javascript.builtins.Temporal.PlainYearMonth.compare","javascript.builtins.Temporal.PlainYearMonth.daysInMonth","javascript.builtins.Temporal.PlainYearMonth.daysInYear","javascript.builtins.Temporal.PlainYearMonth.equals","javascript.builtins.Temporal.PlainYearMonth.era","javascript.builtins.Temporal.PlainYearMonth.eraYear","javascript.builtins.Temporal.PlainYearMonth.from","javascript.builtins.Temporal.PlainYearMonth.getISOFields","javascript.builtins.Temporal.PlainYearMonth.inLeapYear","javascript.builtins.Temporal.PlainYearMonth.month","javascript.builtins.Temporal.PlainYearMonth.monthCode","javascript.builtins.Temporal.PlainYearMonth.monthsInYear","javascript.builtins.Temporal.PlainYearMonth.since","javascript.builtins.Temporal.PlainYearMonth.subtract","javascript.builtins.Temporal.PlainYearMonth.toJSON","javascript.builtins.Temporal.PlainYearMonth.toLocaleString","javascript.builtins.Temporal.PlainYearMonth.toPlainDate","javascript.builtins.Temporal.PlainYearMonth.toString","javascript.builtins.Temporal.PlainYearMonth.until","javascript.builtins.Temporal.PlainYearMonth.valueOf","javascript.builtins.Temporal.PlainYearMonth.with","javascript.builtins.Temporal.PlainYearMonth.year","javascript.builtins.Temporal.TimeZone","javascript.builtins.Temporal.TimeZone.TimeZone","javascript.builtins.Temporal.TimeZone.from","javascript.builtins.Temporal.TimeZone.getInstantFor","javascript.builtins.Temporal.TimeZone.getNextTransition","javascript.builtins.Temporal.TimeZone.getOffsetNanosecondsFor","javascript.builtins.Temporal.TimeZone.getOffsetStringFor","javascript.builtins.Temporal.TimeZone.getPlainDateTimeFor","javascript.builtins.Temporal.TimeZone.getPossibleInstantsFor","javascript.builtins.Temporal.TimeZone.getPreviousTransition","javascript.builtins.Temporal.TimeZone.id","javascript.builtins.Temporal.TimeZone.toJSON","javascript.builtins.Temporal.TimeZone.toString","javascript.builtins.Temporal.ZonedDateTime","javascript.builtins.Temporal.ZonedDateTime.ZonedDateTime","javascript.builtins.Temporal.ZonedDateTime.add","javascript.builtins.Temporal.ZonedDateTime.calendar","javascript.builtins.Temporal.ZonedDateTime.compare","javascript.builtins.Temporal.ZonedDateTime.day","javascript.builtins.Temporal.ZonedDateTime.dayOfWeek","javascript.builtins.Temporal.ZonedDateTime.dayOfYear","javascript.builtins.Temporal.ZonedDateTime.daysInMonth","javascript.builtins.Temporal.ZonedDateTime.daysInWeek","javascript.builtins.Temporal.ZonedDateTime.daysInYear","javascript.builtins.Temporal.ZonedDateTime.epochMicroseconds","javascript.builtins.Temporal.ZonedDateTime.epochMilliseconds","javascript.builtins.Temporal.ZonedDateTime.epochNanoseconds","javascript.builtins.Temporal.ZonedDateTime.epochSeconds","javascript.builtins.Temporal.ZonedDateTime.equals","javascript.builtins.Temporal.ZonedDateTime.era","javascript.builtins.Temporal.ZonedDateTime.eraYear","javascript.builtins.Temporal.ZonedDateTime.from","javascript.builtins.Temporal.ZonedDateTime.getISOFields","javascript.builtins.Temporal.ZonedDateTime.hour","javascript.builtins.Temporal.ZonedDateTime.hoursInDay","javascript.builtins.Temporal.ZonedDateTime.inLeapYear","javascript.builtins.Temporal.ZonedDateTime.microsecond","javascript.builtins.Temporal.ZonedDateTime.millisecond","javascript.builtins.Temporal.ZonedDateTime.minute","javascript.builtins.Temporal.ZonedDateTime.month","javascript.builtins.Temporal.ZonedDateTime.monthCode","javascript.builtins.Temporal.ZonedDateTime.monthsInYear","javascript.builtins.Temporal.ZonedDateTime.nanosecond","javascript.builtins.Temporal.ZonedDateTime.offset","javascript.builtins.Temporal.ZonedDateTime.offsetNanoseconds","javascript.builtins.Temporal.ZonedDateTime.round","javascript.builtins.Temporal.ZonedDateTime.second","javascript.builtins.Temporal.ZonedDateTime.since","javascript.builtins.Temporal.ZonedDateTime.startOfDay","javascript.builtins.Temporal.ZonedDateTime.subtract","javascript.builtins.Temporal.ZonedDateTime.timeZone","javascript.builtins.Temporal.ZonedDateTime.toInstant","javascript.builtins.Temporal.ZonedDateTime.toJSON","javascript.builtins.Temporal.ZonedDateTime.toLocaleString","javascript.builtins.Temporal.ZonedDateTime.toPlainDate","javascript.builtins.Temporal.ZonedDateTime.toPlainDateTime","javascript.builtins.Temporal.ZonedDateTime.toPlainMonthDay","javascript.builtins.Temporal.ZonedDateTime.toPlainTime","javascript.builtins.Temporal.ZonedDateTime.toPlainYearMonth","javascript.builtins.Temporal.ZonedDateTime.toString","javascript.builtins.Temporal.ZonedDateTime.until","javascript.builtins.Temporal.ZonedDateTime.valueOf","javascript.builtins.Temporal.ZonedDateTime.weekOfYear","javascript.builtins.Temporal.ZonedDateTime.with","javascript.builtins.Temporal.ZonedDateTime.withCalendar","javascript.builtins.Temporal.ZonedDateTime.withPlainDate","javascript.builtins.Temporal.ZonedDateTime.withPlainTime","javascript.builtins.Temporal.ZonedDateTime.withTimeZone","javascript.builtins.Temporal.ZonedDateTime.year"],"description":"The Temporal API allows you to work with dates, times, time zones, and durations. It is more powerful than the Date API.","description_html":"The <code>Temporal</code> API allows you to work with dates, times, time zones, and durations. It is more powerful than the <code>Date</code> API.","group":"javascript","name":"Temporal","spec":"https://tc39.es/proposal-temporal/","status":{"baseline":false,"support":{}}},"text-indent":{"caniuse":"css-text-indent","compat_features":["css.properties.text-indent"],"description":"The text-indent CSS property sets the size of the empty space (indentation) at the beginning of lines in a text.","description_html":"The <code>text-indent</code> CSS property sets the size of the empty space (indentation) at the beginning of lines in a text.","name":"text-indent","spec":"https://drafts.csswg.org/css-text-3/#text-indent-property","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"text-spacing-trim":{"compat_features":["css.properties.text-spacing-trim"],"description":"The text-spacing-trim CSS property controls spacing around CJK characters, avoiding excessive whitespace when using full-width punctuation characters.","description_html":"The <code>text-spacing-trim</code> CSS property controls spacing around CJK characters, avoiding excessive whitespace when using full-width punctuation characters.","name":"text-spacing-trim","spec":"https://drafts.csswg.org/css-text-4/#text-spacing-trim-property","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"text-tracks":{"compat_features":["api.HTMLMediaElement.addTextTrack","api.HTMLTrackElement","api.HTMLTrackElement.cuechange_event","api.HTMLTrackElement.default","api.HTMLTrackElement.kind","api.HTMLTrackElement.label","api.HTMLTrackElement.readyState","api.HTMLTrackElement.src","api.HTMLTrackElement.srclang","api.HTMLTrackElement.track","api.TextTrack","api.TextTrack.activeCues","api.TextTrack.addCue","api.TextTrack.cuechange_event","api.TextTrack.cues","api.TextTrack.id","api.TextTrack.inBandMetadataTrackDispatchType","api.TextTrack.kind","api.TextTrack.label","api.TextTrack.language","api.TextTrack.mode","api.TextTrack.removeCue","api.TextTrackCue","api.TextTrackCue.endTime","api.TextTrackCue.enter_event","api.TextTrackCue.exit_event","api.TextTrackCue.id","api.TextTrackCue.pauseOnExit","api.TextTrackCue.startTime","api.TextTrackCue.track","api.TextTrackCueList","api.TextTrackCueList.getCueById","api.TextTrackCueList.length","api.TextTrackList","api.TextTrackList.addtrack_event","api.TextTrackList.change_event","api.TextTrackList.getTrackById","api.TextTrackList.length","api.TextTrackList.removetrack_event","html.elements.track","html.elements.track.default","html.elements.track.kind","html.elements.track.label","html.elements.track.src","html.elements.track.srclang"],"description":"The <track> element is used as a child of the media elements that lets you specify a timed text track to be displayed in parallel with the media element.","description_html":"The <code>&#x3C;track></code> element is used as a child of the media elements that lets you specify a timed text track to be displayed in parallel with the media element.","group":["media-elements","html-elements"],"name":"Text tracks","spec":"https://html.spec.whatwg.org/multipage/media.html#timed-text-tracks","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"23","chrome_android":"25","edge":"12","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"6"}}},"text-wrap-balance":{"compat_features":["css.properties.text-wrap.balance"],"description":"The text-wrap: balance CSS declaration balances the length of each line when text is broken into multiple lines. Also known as headline balancing.","description_html":"The <code>text-wrap: balance</code> CSS declaration balances the length of each line when text is broken into multiple lines. Also known as headline balancing.","name":"text-wrap: balance","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-style-balance","status":{"baseline":"low","baseline_low_date":"2024-05-13","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"121","firefox_android":"121","safari":"17.5","safari_ios":"17.5"}}},"text-wrap-nowrap":{"compat_features":["css.properties.text-wrap.nowrap","css.properties.text-wrap.wrap"],"description":"The text-wrap: nowrap CSS declaration prevents text breaking into multiple lines. Text that doesn't fit overflows instead.","description_html":"The <code>text-wrap: nowrap</code> CSS declaration prevents text breaking into multiple lines. Text that doesn't fit overflows instead.","name":"text-wrap: nowrap","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-mode-nowrap","status":{"baseline":"low","baseline_low_date":"2024-03-19","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"text-wrap-pretty":{"compat_features":["css.properties.text-wrap.pretty"],"description":"The text-wrap: pretty CSS declaration prioritizes better layout over speed when text is broken into multiple lines.","description_html":"The <code>text-wrap: pretty</code> CSS declaration prioritizes better layout over speed when text is broken into multiple lines.","name":"text-wrap: pretty","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-style-pretty","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"time":{"compat_features":["api.HTMLTimeElement","api.HTMLTimeElement.dateTime","html.elements.time","html.elements.time.datetime"],"description":"The <time> HTML element represents a time, such as a calendar date, clock time, or duration. It may include the datetime attribute to translate dates into machine-readable format.","description_html":"The <code>&#x3C;time></code> HTML element represents a time, such as a calendar date, clock time, or duration. It may include the <code>datetime</code> attribute to translate dates into machine-readable format.","group":"html-elements","name":"<time>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element","status":{"baseline":"high","baseline_high_date":"2020-04-24","baseline_low_date":"2017-10-24","support":{"chrome":"62","chrome_android":"62","edge":"14","firefox":"22","firefox_android":"22","safari":"10","safari_ios":"10"}}},"title":{"compat_features":["api.HTMLTitleElement","api.HTMLTitleElement.text","html.elements.title"],"description":"The <title> element sets the title of the document and exposes it to users via the UI of the browser or app they're using and through assistive technology.","description_html":"The <code>&#x3C;title></code> element sets the title of the document and exposes it to users via the UI of the browser or app they're using and through assistive technology.","group":"html-elements","name":"<title>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-title-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"transferable-arraybuffer":{"compat_features":["javascript.builtins.ArrayBuffer.detached","javascript.builtins.ArrayBuffer.transfer","javascript.builtins.ArrayBuffer.transferToFixedLength"],"description":"The transfer() and transferToFixedLength() methods of ArrayBuffer move a buffer from one context to another (for example, to a worker).","description_html":"The <code>transfer()</code> and <code>transferToFixedLength()</code> methods of <code>ArrayBuffer</code> move a buffer from one context to another (for example, to a worker).","group":"transferable","name":"Transferable ArrayBuffer","spec":"https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"122","firefox_android":"122","safari":"17.4","safari_ios":"17.4"}}},"transforms2d":{"caniuse":"transforms2d","compat_features":["css.properties.transform","css.properties.transform-origin","css.types.transform-function","css.types.transform-function.matrix","css.types.transform-function.rotate","css.types.transform-function.scale","css.types.transform-function.scaleX","css.types.transform-function.scaleY","css.types.transform-function.skew","css.types.transform-function.skewX","css.types.transform-function.skewY","css.types.transform-function.translate","css.types.transform-function.translateX","css.types.transform-function.translateY"],"description":"The transform CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.","description_html":"The <code>transform</code> CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.","group":"transforms","name":"2D transforms","spec":"https://drafts.csswg.org/css-transforms-1/","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"16","firefox_android":"16","safari":"9","safari_ios":"9"}}},"transforms3d":{"caniuse":"transforms3d","compat_features":["css.properties.backface-visibility","css.properties.perspective","css.properties.perspective-origin","css.properties.perspective-origin.bottom","css.properties.perspective-origin.center","css.properties.perspective-origin.left","css.properties.perspective-origin.right","css.properties.perspective-origin.top","css.properties.perspective.none","css.properties.transform-style","css.properties.transform.3d","css.types.transform-function.matrix3d","css.types.transform-function.perspective","css.types.transform-function.rotate3d","css.types.transform-function.rotateX","css.types.transform-function.rotateY","css.types.transform-function.rotateZ","css.types.transform-function.scale3d","css.types.transform-function.scaleZ","css.types.transform-function.translate3d","css.types.transform-function.translateZ"],"description":"The transform CSS property and its 3D transform functions allow rotations and other transforms in three dimensions, including perspective transforms.","description_html":"The <code>transform</code> CSS property and its 3D transform functions allow rotations and other transforms in three dimensions, including perspective transforms.","group":"transforms","name":"3D transforms","spec":"https://drafts.csswg.org/css-transforms-2/","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"16","firefox_android":"16","safari":"15.4","safari_ios":"15.4"}}},"transition-behavior":{"compat_features":["css.properties.transition-behavior"],"description":"The transition-behavior: allow-discrete CSS declaration allows transitions for properties whose animation behavior is discrete. Such properties can't be interpolated and swap from their start value to the end value at 50%.","description_html":"The <code>transition-behavior: allow-discrete</code> CSS declaration allows transitions for properties whose animation behavior is discrete. Such properties can't be interpolated and swap from their start value to the end value at 50%.","name":"transition-behavior","spec":"https://drafts.csswg.org/css-transitions-2/#transition-behavior-property","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117","safari":"17.4","safari_ios":"17.4"}}},"translate":{"compat_features":["api.HTMLElement.translate","html.global_attributes.translate"],"description":"The translate HTML attribute marks whether an element's text should be translated.","description_html":"The <code>translate</code> HTML attribute marks whether an element's text should be translated.","name":"translate attribute","spec":"https://html.spec.whatwg.org/multipage/dom.html#attr-translate","status":{"baseline":"low","baseline_low_date":"2023-03-14","support":{"chrome":"19","chrome_android":"25","edge":"79","firefox":"111","firefox_android":"111","safari":"6","safari_ios":"6"}}},"trig-functions":{"compat_features":["css.types.acos","css.types.asin","css.types.atan","css.types.atan2","css.types.cos","css.types.sin","css.types.tan"],"description":"The sin(), cos(), tan(), asin(), acos(), atan(), and atan2() CSS functions compute various trigonometric functions.","description_html":"The <code>sin()</code>, <code>cos()</code>, <code>tan()</code>, <code>asin()</code>, <code>acos()</code>, <code>atan()</code>, and <code>atan2()</code> CSS functions compute various trigonometric functions.","name":"sin(), cos(), tan(), asin(), acos(), atan(), and atan2()","spec":"https://drafts.csswg.org/css-values-4/#trig-funcs","status":{"baseline":"low","baseline_low_date":"2023-03-13","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"108","firefox_android":"108","safari":"15.4","safari_ios":"15.4"}}},"trusted-types":{"caniuse":"trusted-types","compat_features":["api.TrustedHTML","api.TrustedHTML.toJSON","api.TrustedHTML.toString","api.TrustedScript","api.TrustedScript.toJSON","api.TrustedScript.toString","api.TrustedScriptURL","api.TrustedScriptURL.toJSON","api.TrustedScriptURL.toString","api.TrustedTypePolicy","api.TrustedTypePolicy.createHTML","api.TrustedTypePolicy.createScript","api.TrustedTypePolicy.createScriptURL","api.TrustedTypePolicy.name","api.TrustedTypePolicyFactory","api.TrustedTypePolicyFactory.createPolicy","api.TrustedTypePolicyFactory.defaultPolicy","api.TrustedTypePolicyFactory.emptyHTML","api.TrustedTypePolicyFactory.emptyScript","api.TrustedTypePolicyFactory.getAttributeType","api.TrustedTypePolicyFactory.getPropertyType","api.TrustedTypePolicyFactory.isHTML","api.TrustedTypePolicyFactory.isScript","api.TrustedTypePolicyFactory.isScriptURL","api.trustedTypes","http.headers.Content-Security-Policy.require-trusted-types-for","http.headers.Content-Security-Policy.trusted-types"],"description":"Trusted types allow you to lock down insecure parts of the DOM API and prevent client-side cross-site scripting (XSS) attacks.","description_html":"Trusted types allow you to lock down insecure parts of the DOM API and prevent client-side cross-site scripting (XSS) attacks.","name":"Trusted types","spec":"https://w3c.github.io/trusted-types/dist/spec/","status":{"baseline":false,"support":{"chrome":"83","chrome_android":"83","edge":"83"}}},"two-value-display":{"compat_features":["css.properties.display.multi-keyword_values"],"description":"The display CSS property accepts multiple keyword values, such as inline flex or block flow, to explicitly set an element's inner and outer layout mode. Also known as 2-value, multi-keyword, or multiple value syntax.","description_html":"The <code>display</code> CSS property accepts multiple keyword values, such as <code>inline flex</code> or <code>block flow</code>, to explicitly set an element's inner and outer layout mode. Also known as 2-value, multi-keyword, or multiple value syntax.","name":"Two-value display property","spec":"https://drafts.csswg.org/css-display-3/#the-display-properties","status":{"baseline":"low","baseline_low_date":"2023-07-21","support":{"chrome":"115","chrome_android":"115","edge":"115","firefox":"70","firefox_android":"79","safari":"15","safari_ios":"15"}}},"typed-array-iteration-methods":{"compat_features":["javascript.builtins.TypedArray.every","javascript.builtins.TypedArray.filter","javascript.builtins.TypedArray.forEach","javascript.builtins.TypedArray.indexOf","javascript.builtins.TypedArray.lastIndexOf","javascript.builtins.TypedArray.map","javascript.builtins.TypedArray.reduce","javascript.builtins.TypedArray.reduceRight","javascript.builtins.TypedArray.some"],"description":"Typed array iteration methods","description_html":"Typed array iteration methods","group":"typed-arrays","name":"Typed array iteration methods","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.every","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.filter","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.foreach","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.indexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.lastindexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.map","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reduce","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reduceright","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.some"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"38","firefox_android":"38","safari":"10","safari_ios":"10"}}},"typed-array-iterators":{"compat_features":["javascript.builtins.TypedArray.@@iterator","javascript.builtins.TypedArray.entries","javascript.builtins.TypedArray.keys","javascript.builtins.TypedArray.values"],"description":"Typed arrays are iterable with the for…of statement and enumerable with the methods entries(), keys(), and values().","description_html":"Typed arrays are iterable with the <code>for…of</code> statement and enumerable with the methods <code>entries()</code>, <code>keys()</code>, and <code>values()</code>.","group":["iterators","typed-arrays"],"name":"Typed array iterators","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype-@@iterator","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.entries","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.keys","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.values"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"37","firefox_android":"37","safari":"10","safari_ios":"10"}}},"typed-arrays":{"caniuse":"typedarrays","compat_features":["javascript.builtins.Float32Array","javascript.builtins.Float32Array.Float32Array","javascript.builtins.Float32Array.Float32Array.constructor_without_parameters","javascript.builtins.Float32Array.Float32Array.iterable_allowed","javascript.builtins.Float64Array","javascript.builtins.Float64Array.Float64Array","javascript.builtins.Float64Array.Float64Array.constructor_without_parameters","javascript.builtins.Float64Array.Float64Array.iterable_allowed","javascript.builtins.Int16Array","javascript.builtins.Int16Array.Int16Array","javascript.builtins.Int16Array.Int16Array.constructor_without_parameters","javascript.builtins.Int32Array","javascript.builtins.Int32Array.Int32Array","javascript.builtins.Int32Array.Int32Array.constructor_without_parameters","javascript.builtins.Int32Array.Int32Array.iterable_allowed","javascript.builtins.Int8Array","javascript.builtins.Int8Array.Int8Array","javascript.builtins.Int8Array.Int8Array.constructor_without_parameters","javascript.builtins.Int8Array.Int8Array.iterable_allowed","javascript.builtins.TypedArray","javascript.builtins.TypedArray.BYTES_PER_ELEMENT","javascript.builtins.TypedArray.buffer","javascript.builtins.TypedArray.byteLength","javascript.builtins.TypedArray.byteOffset","javascript.builtins.TypedArray.constructor_without_parameters","javascript.builtins.TypedArray.join","javascript.builtins.TypedArray.length","javascript.builtins.TypedArray.name","javascript.builtins.TypedArray.named_properties","javascript.builtins.TypedArray.reverse","javascript.builtins.TypedArray.set","javascript.builtins.TypedArray.slice","javascript.builtins.TypedArray.sort","javascript.builtins.TypedArray.subarray","javascript.builtins.TypedArray.toLocaleString","javascript.builtins.TypedArray.toString","javascript.builtins.Uint16Array","javascript.builtins.Uint16Array.Uint16Array","javascript.builtins.Uint16Array.Uint16Array.constructor_without_parameters","javascript.builtins.Uint16Array.Uint16Array.iterable_allowed","javascript.builtins.Uint32Array","javascript.builtins.Uint32Array.Uint32Array","javascript.builtins.Uint32Array.Uint32Array.constructor_without_parameters","javascript.builtins.Uint32Array.Uint32Array.iterable_allowed","javascript.builtins.Uint8Array","javascript.builtins.Uint8Array.Uint8Array","javascript.builtins.Uint8Array.Uint8Array.constructor_without_parameters","javascript.builtins.Uint8Array.Uint8Array.iterable_allowed","javascript.builtins.Uint8ClampedArray","javascript.builtins.Uint8ClampedArray.Uint8ClampedArray","javascript.builtins.Uint8ClampedArray.Uint8ClampedArray.iterable_allowed"],"description":"Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.","description_html":"Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.","group":"typed-arrays","name":"Typed arrays (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#table-49","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-constructors","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-objects","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray.bytes_per_element","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.buffer","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.bytelength","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.byteoffset","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.join","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.length","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-properties-of-the-typedarray-constructors","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reverse","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.set","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.slice","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.sort","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.subarray","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tolocalestring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tostring"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"4.2"}}},"url-canparse":{"compat_features":["api.URL.canParse_static"],"description":"The URL.canParse() static method checks whether a URL can be parsed into a valid URL object. It's an alternative to calling new URL() in a try…catch statement.","description_html":"The <code>URL.canParse()</code> static method checks whether a URL can be parsed into a valid <code>URL</code> object. It's an alternative to calling <code>new URL()</code> in a <code>try…catch</code> statement.","name":"URL.canParse()","spec":"https://url.spec.whatwg.org/#dom-url-canparse","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"115","firefox_android":"115","safari":"17","safari_ios":"17"}}},"urlpattern":{"compat_features":["api.URLPattern","api.URLPattern.URLPattern","api.URLPattern.URLPattern.ignoreCase_option","api.URLPattern.exec","api.URLPattern.hasRegExpGroups","api.URLPattern.hash","api.URLPattern.hostname","api.URLPattern.password","api.URLPattern.pathname","api.URLPattern.port","api.URLPattern.protocol","api.URLPattern.search","api.URLPattern.test","api.URLPattern.username"],"description":"The URLPattern API creates patterns that can be matched against URLs or URL components.","description_html":"The <code>URLPattern</code> API creates patterns that can be matched against URLs or URL components.","name":"URLPattern","spec":"https://urlpattern.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"95","chrome_android":"95","edge":"95"}}},"user-activation":{"compat_features":["api.Navigator.userActivation","api.UserActivation","api.UserActivation.hasBeenActive","api.UserActivation.isActive"],"description":"The navigator.userActivation API reveals whether the user has interacted with the page through an \"activation\" gesture such as a click, tap, or key press. User activation gated APIs (such as the fullscreen API) fail without user interaction, and this API allows you to predict such a failure.","description_html":"The <code>navigator.userActivation</code> API reveals whether the user has interacted with the page through an \"activation\" gesture such as a click, tap, or key press. User activation gated APIs (such as the fullscreen API) fail without user interaction, and this API allows you to predict such a failure.","name":"User activation","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface","status":{"baseline":"low","baseline_low_date":"2023-11-21","support":{"chrome":"72","chrome_android":"72","edge":"79","firefox":"120","firefox_android":"120","safari":"16.4","safari_ios":"16.4"}}},"user-pseudos":{"compat_features":["css.selectors.user-invalid","css.selectors.user-valid"],"description":"The :user-valid and :user-invalid pseudo-classes match form controls that have been marked as valid or invalid based on their validation constraints.","description_html":"The <code>:user-valid</code> and <code>:user-invalid</code> pseudo-classes match form controls that have been marked as valid or invalid based on their validation constraints.","name":":user-valid and :user-invalid","spec":"https://drafts.csswg.org/selectors-4/#user-pseudos","status":{"baseline":"low","baseline_low_date":"2023-11-02","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"88","firefox_android":"88","safari":"16.5","safari_ios":"16.5"}}},"var":{"compat_features":["html.elements.var"],"description":"The <var> element represents the name of a variable in a mathematical expression or a programming context.","description_html":"The <code>&#x3C;var></code> element represents the name of a variable in a mathematical expression or a programming context.","group":"html-elements","name":"<var>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-var-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"video":{"caniuse":"video","compat_features":["api.HTMLMediaElement","api.HTMLMediaElement.abort_event","api.HTMLMediaElement.autoplay","api.HTMLMediaElement.buffered","api.HTMLMediaElement.canPlayType","api.HTMLMediaElement.canplay_event","api.HTMLMediaElement.canplaythrough_event","api.HTMLMediaElement.controls","api.HTMLMediaElement.crossOrigin","api.HTMLMediaElement.currentSrc","api.HTMLMediaElement.currentTime","api.HTMLMediaElement.defaultMuted","api.HTMLMediaElement.defaultPlaybackRate","api.HTMLMediaElement.duration","api.HTMLMediaElement.durationchange_event","api.HTMLMediaElement.emptied_event","api.HTMLMediaElement.ended","api.HTMLMediaElement.ended_event","api.HTMLMediaElement.error","api.HTMLMediaElement.error_event","api.HTMLMediaElement.load","api.HTMLMediaElement.loadeddata_event","api.HTMLMediaElement.loadedmetadata_event","api.HTMLMediaElement.loadstart_event","api.HTMLMediaElement.loop","api.HTMLMediaElement.muted","api.HTMLMediaElement.networkState","api.HTMLMediaElement.pause","api.HTMLMediaElement.pause_event","api.HTMLMediaElement.paused","api.HTMLMediaElement.play","api.HTMLMediaElement.play.returns_promise","api.HTMLMediaElement.play_event","api.HTMLMediaElement.playbackRate","api.HTMLMediaElement.played","api.HTMLMediaElement.playing_event","api.HTMLMediaElement.preload","api.HTMLMediaElement.progress_event","api.HTMLMediaElement.ratechange_event","api.HTMLMediaElement.readyState","api.HTMLMediaElement.seekable","api.HTMLMediaElement.seeked_event","api.HTMLMediaElement.seeking","api.HTMLMediaElement.seeking_event","api.HTMLMediaElement.src","api.HTMLMediaElement.stalled_event","api.HTMLMediaElement.suspend_event","api.HTMLMediaElement.timeupdate_event","api.HTMLMediaElement.volume","api.HTMLMediaElement.volumechange_event","api.HTMLMediaElement.waiting_event","api.HTMLVideoElement","api.HTMLVideoElement.height","api.HTMLVideoElement.poster","api.HTMLVideoElement.resize_event","api.HTMLVideoElement.videoHeight","api.HTMLVideoElement.videoWidth","api.HTMLVideoElement.width","html.elements.video","html.elements.video.autoplay","html.elements.video.controls","html.elements.video.crossorigin","html.elements.video.height","html.elements.video.loop","html.elements.video.muted","html.elements.video.poster","html.elements.video.preload","html.elements.video.src","html.elements.video.width"],"description":"The <video> element plays videos or movies, optionally with controls provided by the browser.","description_html":"The <code>&#x3C;video></code> element plays videos or movies, optionally with controls provided by the browser.","group":["media-elements","html-elements"],"name":"<video>","spec":"https://html.spec.whatwg.org/multipage/media.html#video","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"3"}}},"view-transitions":{"caniuse":"view-transitions","compat_features":["api.Document.startViewTransition","api.ViewTransition","api.ViewTransition.finished","api.ViewTransition.ready","api.ViewTransition.skipTransition","api.ViewTransition.updateCallbackDone","css.properties.view-transition-name","css.selectors.view-transition","css.selectors.view-transition-group","css.selectors.view-transition-image-pair","css.selectors.view-transition-new","css.selectors.view-transition-old"],"description":"View transitions allow you to create animated visual transitions between different states of a document, or between different documents.","description_html":"View transitions allow you to create animated visual transitions between different states of a document, or between different documents.","name":"View transitions","spec":"https://drafts.csswg.org/css-view-transitions-1/","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111"}}},"viewport-unit-variants":{"caniuse":"viewport-unit-variants","compat_features":["css.types.length.vb","css.types.length.vi","css.types.length.viewport_percentage_units_dynamic","css.types.length.viewport_percentage_units_large","css.types.length.viewport_percentage_units_small"],"description":"The sv*, lv*, and dv* CSS viewport units are relative to the smallest, largest, and current (dynamic) viewport size. They are used to size elements in relation to the viewport's dimensions.","description_html":"The <code>sv*</code>, <code>lv*</code>, and <code>dv*</code> CSS viewport units are relative to the smallest, largest, and current (dynamic) viewport size. They are used to size elements in relation to the viewport's dimensions.","name":"Small, large, and dynamic viewport units","spec":["https://drafts.csswg.org/css-values-4/#viewport-variants","https://drafts.csswg.org/css-values-4/#viewport-relative-lengths"],"status":{"baseline":"low","baseline_low_date":"2022-12-05","support":{"chrome":"108","chrome_android":"108","edge":"108","firefox":"101","firefox_android":"101","safari":"15.4","safari_ios":"15.4"}}},"viewport-units":{"caniuse":"viewport-units","compat_features":["css.types.length.vh","css.types.length.vmax","css.types.length.vmin","css.types.length.vw"],"description":"The vw, vh, vmin, and vmax CSS viewport units are relative to the size of the viewport, and are used to size elements in relation to the viewport's dimensions.","description_html":"The <code>vw</code>, <code>vh</code>, <code>vmin</code>, and <code>vmax</code> CSS viewport units are relative to the size of the viewport, and are used to size elements in relation to the viewport's dimensions.","name":"Viewport units","spec":"https://drafts.csswg.org/css-values-4/#viewport-relative-lengths","status":{"baseline":"high","baseline_high_date":"2020-04-17","baseline_low_date":"2017-10-17","support":{"chrome":"26","chrome_android":"26","edge":"16","firefox":"19","firefox_android":"19","safari":"7","safari_ios":"7"}}},"visual-viewport":{"compat_features":["api.VisualViewport","api.VisualViewport.height","api.VisualViewport.offsetLeft","api.VisualViewport.offsetTop","api.VisualViewport.pageLeft","api.VisualViewport.pageTop","api.VisualViewport.scale","api.VisualViewport.width","api.Window.visualViewport"],"description":"The visualViewport API provides a way to query and modify the user-visible viewport of a web page.","description_html":"The <code>visualViewport</code> API provides a way to query and modify the user-visible viewport of a web page.","name":"Visual viewport API","spec":"https://drafts.csswg.org/cssom-view-1/#visualViewport","status":{"baseline":"high","baseline_high_date":"2024-02-10","baseline_low_date":"2021-08-10","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"91","firefox_android":"68","safari":"13","safari_ios":"13"}}},"wasm-simd":{"caniuse":"wasm-simd","compat_features":["webassembly.fixed-width-SIMD"],"description":"The 128-bit SIMD (Single Instruction Multiple Data) extension to WebAssembly performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.","description_html":"The 128-bit SIMD (Single Instruction Multiple Data) extension to WebAssembly performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.","name":"WebAssembly SIMD","spec":"https://webassembly.github.io/spec/core/bikeshed/#vector-instructions","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"91","chrome_android":"91","edge":"91","firefox":"89","firefox_android":"89","safari":"16.4","safari_ios":"16.4"}}},"web-animations":{"caniuse":"web-animation","compat_features":["api.Animation","api.Animation.Animation","api.Animation.cancel","api.Animation.cancel_event","api.Animation.commitStyles","api.Animation.currentTime","api.Animation.effect","api.Animation.finish","api.Animation.finish_event","api.Animation.finished","api.Animation.id","api.Animation.pause","api.Animation.pending","api.Animation.persist","api.Animation.play","api.Animation.playState","api.Animation.playbackRate","api.Animation.ready","api.Animation.remove_event","api.Animation.replaceState","api.Animation.reverse","api.Animation.startTime","api.Animation.timeline","api.Animation.updatePlaybackRate","api.AnimationEffect","api.AnimationEffect.getComputedTiming","api.AnimationEffect.getTiming","api.AnimationEffect.updateTiming","api.AnimationPlaybackEvent","api.AnimationPlaybackEvent.AnimationPlaybackEvent","api.AnimationPlaybackEvent.currentTime","api.AnimationPlaybackEvent.timelineTime","api.AnimationTimeline","api.AnimationTimeline.currentTime","api.Document.getAnimations","api.Document.timeline","api.DocumentTimeline","api.DocumentTimeline.DocumentTimeline","api.Element.animate","api.KeyframeEffect","api.KeyframeEffect.KeyframeEffect","api.KeyframeEffect.composite","api.KeyframeEffect.getKeyframes","api.KeyframeEffect.iterationComposite","api.KeyframeEffect.pseudoElement","api.KeyframeEffect.setKeyframes","api.KeyframeEffect.target"],"description":"The web animations API allows you to animate and synchronize the animations of DOM elements.","description_html":"The web animations API allows you to animate and synchronize the animations of DOM elements.","name":"Web animations","spec":"https://drafts.csswg.org/web-animations-1/","status":{"baseline":"high","baseline_high_date":"2022-09-24","baseline_low_date":"2020-03-24","support":{"chrome":"36","chrome_android":"36","edge":"79","firefox":"48","firefox_android":"48","safari":"13.1","safari_ios":"13.4"}}},"web-audio":{"caniuse":"audio-api","compat_features":["api.AnalyserNode","api.AnalyserNode.AnalyserNode","api.AnalyserNode.fftSize","api.AnalyserNode.frequencyBinCount","api.AnalyserNode.getByteFrequencyData","api.AnalyserNode.getByteTimeDomainData","api.AnalyserNode.getFloatFrequencyData","api.AnalyserNode.getFloatTimeDomainData","api.AnalyserNode.maxDecibels","api.AnalyserNode.minDecibels","api.AnalyserNode.smoothingTimeConstant","api.AudioBuffer","api.AudioBuffer.AudioBuffer","api.AudioBuffer.copyFromChannel","api.AudioBuffer.copyToChannel","api.AudioBuffer.duration","api.AudioBuffer.getChannelData","api.AudioBuffer.length","api.AudioBuffer.numberOfChannels","api.AudioBuffer.sampleRate","api.AudioBufferSourceNode","api.AudioBufferSourceNode.AudioBufferSourceNode","api.AudioBufferSourceNode.buffer","api.AudioBufferSourceNode.detune","api.AudioBufferSourceNode.loop","api.AudioBufferSourceNode.loopEnd","api.AudioBufferSourceNode.loopStart","api.AudioBufferSourceNode.playbackRate","api.AudioBufferSourceNode.start","api.AudioContext","api.AudioContext.AudioContext","api.AudioContext.baseLatency","api.AudioContext.close","api.AudioContext.createMediaElementSource","api.AudioContext.createMediaStreamDestination","api.AudioContext.createMediaStreamSource","api.AudioContext.createMediaStreamTrackSource","api.AudioContext.getOutputTimestamp","api.AudioContext.outputLatency","api.AudioContext.resume","api.AudioContext.suspend","api.AudioDestinationNode","api.AudioDestinationNode.maxChannelCount","api.AudioListener","api.AudioListener.forwardX","api.AudioListener.forwardY","api.AudioListener.forwardZ","api.AudioListener.positionX","api.AudioListener.positionY","api.AudioListener.positionZ","api.AudioListener.upX","api.AudioListener.upY","api.AudioListener.upZ","api.AudioNode","api.AudioNode.channelCount","api.AudioNode.channelCountMode","api.AudioNode.channelInterpretation","api.AudioNode.connect","api.AudioNode.context","api.AudioNode.disconnect","api.AudioNode.numberOfInputs","api.AudioNode.numberOfOutputs","api.AudioParam","api.AudioParam.automationRate","api.AudioParam.cancelAndHoldAtTime","api.AudioParam.cancelScheduledValues","api.AudioParam.defaultValue","api.AudioParam.exponentialRampToValueAtTime","api.AudioParam.linearRampToValueAtTime","api.AudioParam.maxValue","api.AudioParam.minValue","api.AudioParam.setTargetAtTime","api.AudioParam.setValueAtTime","api.AudioParam.setValueCurveAtTime","api.AudioParam.value","api.AudioParamMap","api.AudioScheduledSourceNode","api.AudioScheduledSourceNode.ended_event","api.AudioScheduledSourceNode.start","api.AudioScheduledSourceNode.stop","api.BaseAudioContext","api.BaseAudioContext.createAnalyser","api.BaseAudioContext.createBiquadFilter","api.BaseAudioContext.createBuffer","api.BaseAudioContext.createBufferSource","api.BaseAudioContext.createChannelMerger","api.BaseAudioContext.createChannelSplitter","api.BaseAudioContext.createConstantSource","api.BaseAudioContext.createConvolver","api.BaseAudioContext.createDelay","api.BaseAudioContext.createDynamicsCompressor","api.BaseAudioContext.createGain","api.BaseAudioContext.createIIRFilter","api.BaseAudioContext.createOscillator","api.BaseAudioContext.createPanner","api.BaseAudioContext.createPeriodicWave","api.BaseAudioContext.createStereoPanner","api.BaseAudioContext.createWaveShaper","api.BaseAudioContext.currentTime","api.BaseAudioContext.decodeAudioData","api.BaseAudioContext.destination","api.BaseAudioContext.listener","api.BaseAudioContext.sampleRate","api.BaseAudioContext.state","api.BaseAudioContext.statechange_event","api.BiquadFilterNode","api.BiquadFilterNode.BiquadFilterNode","api.BiquadFilterNode.Q","api.BiquadFilterNode.detune","api.BiquadFilterNode.frequency","api.BiquadFilterNode.gain","api.BiquadFilterNode.getFrequencyResponse","api.BiquadFilterNode.type","api.ChannelMergerNode","api.ChannelMergerNode.ChannelMergerNode","api.ChannelSplitterNode","api.ChannelSplitterNode.ChannelSplitterNode","api.ConstantSourceNode","api.ConstantSourceNode.ConstantSourceNode","api.ConstantSourceNode.offset","api.ConvolverNode","api.ConvolverNode.ConvolverNode","api.ConvolverNode.buffer","api.ConvolverNode.normalize","api.DelayNode","api.DelayNode.DelayNode","api.DelayNode.delayTime","api.DynamicsCompressorNode","api.DynamicsCompressorNode.DynamicsCompressorNode","api.DynamicsCompressorNode.attack","api.DynamicsCompressorNode.knee","api.DynamicsCompressorNode.ratio","api.DynamicsCompressorNode.reduction","api.DynamicsCompressorNode.release","api.DynamicsCompressorNode.threshold","api.GainNode","api.GainNode.GainNode","api.GainNode.gain","api.IIRFilterNode","api.IIRFilterNode.IIRFilterNode","api.IIRFilterNode.getFrequencyResponse","api.MediaElementAudioSourceNode","api.MediaElementAudioSourceNode.MediaElementAudioSourceNode","api.MediaElementAudioSourceNode.mediaElement","api.MediaStreamAudioDestinationNode","api.MediaStreamAudioDestinationNode.MediaStreamAudioDestinationNode","api.MediaStreamAudioDestinationNode.stream","api.MediaStreamAudioSourceNode","api.MediaStreamAudioSourceNode.MediaStreamAudioSourceNode","api.MediaStreamAudioSourceNode.mediaStream","api.MediaStreamTrackAudioSourceNode","api.MediaStreamTrackAudioSourceNode.MediaStreamTrackAudioSourceNode","api.OscillatorNode","api.OscillatorNode.OscillatorNode","api.OscillatorNode.detune","api.OscillatorNode.frequency","api.OscillatorNode.setPeriodicWave","api.OscillatorNode.type","api.PannerNode","api.PannerNode.PannerNode","api.PannerNode.coneInnerAngle","api.PannerNode.coneOuterAngle","api.PannerNode.coneOuterGain","api.PannerNode.distanceModel","api.PannerNode.maxDistance","api.PannerNode.orientationX","api.PannerNode.orientationY","api.PannerNode.orientationZ","api.PannerNode.panningModel","api.PannerNode.positionX","api.PannerNode.positionY","api.PannerNode.positionZ","api.PannerNode.refDistance","api.PannerNode.rolloffFactor","api.PeriodicWave","api.PeriodicWave.PeriodicWave","api.StereoPannerNode","api.StereoPannerNode.StereoPannerNode","api.StereoPannerNode.pan","api.WaveShaperNode","api.WaveShaperNode.WaveShaperNode","api.WaveShaperNode.curve","api.WaveShaperNode.oversample"],"description":"The Web Audio API creates graphs of audio nodes that handle sound inputs, synthesize sounds, apply effects, create visualizations, and output to audio devices.","description_html":"The Web Audio API creates graphs of audio nodes that handle sound inputs, synthesize sounds, apply effects, create visualizations, and output to audio devices.","group":"web-audio","name":"Web Audio","spec":"https://webaudio.github.io/web-audio-api/","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"35","chrome_android":"35","edge":"12","firefox":"25","firefox_android":"25","safari":"14.1","safari_ios":"14.5"}}},"web-bluetooth":{"caniuse":"web-bluetooth","compat_features":["api.Bluetooth","api.Bluetooth.getAvailability","api.Bluetooth.getDevices","api.Bluetooth.requestDevice","api.BluetoothCharacteristicProperties","api.BluetoothCharacteristicProperties.authenticatedSignedWrites","api.BluetoothCharacteristicProperties.broadcast","api.BluetoothCharacteristicProperties.indicate","api.BluetoothCharacteristicProperties.notify","api.BluetoothCharacteristicProperties.read","api.BluetoothCharacteristicProperties.reliableWrite","api.BluetoothCharacteristicProperties.writableAuxiliaries","api.BluetoothCharacteristicProperties.write","api.BluetoothCharacteristicProperties.writeWithoutResponse","api.BluetoothDevice","api.BluetoothDevice.gatt","api.BluetoothDevice.gattserverdisconnected_event","api.BluetoothDevice.id","api.BluetoothDevice.name","api.BluetoothRemoteGATTCharacteristic","api.BluetoothRemoteGATTCharacteristic.characteristicvaluechanged_event","api.BluetoothRemoteGATTCharacteristic.getDescriptor","api.BluetoothRemoteGATTCharacteristic.getDescriptors","api.BluetoothRemoteGATTCharacteristic.properties","api.BluetoothRemoteGATTCharacteristic.readValue","api.BluetoothRemoteGATTCharacteristic.service","api.BluetoothRemoteGATTCharacteristic.startNotifications","api.BluetoothRemoteGATTCharacteristic.stopNotifications","api.BluetoothRemoteGATTCharacteristic.uuid","api.BluetoothRemoteGATTCharacteristic.value","api.BluetoothRemoteGATTCharacteristic.writeValue","api.BluetoothRemoteGATTCharacteristic.writeValueWithResponse","api.BluetoothRemoteGATTCharacteristic.writeValueWithoutResponse","api.BluetoothRemoteGATTDescriptor","api.BluetoothRemoteGATTDescriptor.characteristic","api.BluetoothRemoteGATTDescriptor.readValue","api.BluetoothRemoteGATTDescriptor.uuid","api.BluetoothRemoteGATTDescriptor.value","api.BluetoothRemoteGATTDescriptor.writeValue","api.BluetoothRemoteGATTServer","api.BluetoothRemoteGATTServer.connect","api.BluetoothRemoteGATTServer.connected","api.BluetoothRemoteGATTServer.device","api.BluetoothRemoteGATTServer.disconnect","api.BluetoothRemoteGATTServer.getPrimaryService","api.BluetoothRemoteGATTServer.getPrimaryServices","api.BluetoothRemoteGATTService","api.BluetoothRemoteGATTService.device","api.BluetoothRemoteGATTService.getCharacteristic","api.BluetoothRemoteGATTService.getCharacteristics","api.BluetoothRemoteGATTService.isPrimary","api.BluetoothRemoteGATTService.uuid","api.BluetoothUUID","api.BluetoothUUID.canonicalUUID_static","api.BluetoothUUID.getCharacteristic_static","api.BluetoothUUID.getDescriptor_static","api.BluetoothUUID.getService_static","api.Navigator.bluetooth"],"description":"The Web Bluetooth API enables selecting and communicating with nearby Bluetooth devices.","description_html":"The Web Bluetooth API enables selecting and communicating with nearby Bluetooth devices.","name":"Web Bluetooth","spec":"https://webbluetoothcg.github.io/web-bluetooth/","status":{"baseline":false,"support":{"chrome":"70","chrome_android":"56","edge":"79"}}},"web-locks":{"compat_features":["api.Lock","api.Lock.mode","api.Lock.name","api.LockManager","api.LockManager.query","api.LockManager.request","api.Navigator.locks","api.WorkerNavigator.locks"],"description":"The navigator.locks API coordinates work with shared resources through mutually exclusive ownership of a resource's name. Also known as web locks.","description_html":"The <code>navigator.locks</code> API coordinates work with shared resources through mutually exclusive ownership of a resource's name. Also known as web locks.","name":"Locks","spec":"https://w3c.github.io/web-locks/","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"96","firefox_android":"96","safari":"15.4","safari_ios":"15.4"}}},"web-midi":{"caniuse":"midi","compat_features":["api.MIDIAccess","api.MIDIAccess.inputs","api.MIDIAccess.outputs","api.MIDIAccess.statechange_event","api.MIDIAccess.sysexEnabled","api.MIDIConnectionEvent","api.MIDIConnectionEvent.MIDIConnectionEvent","api.MIDIConnectionEvent.port","api.MIDIInput","api.MIDIInput.midimessage_event","api.MIDIInputMap","api.MIDIInputMap.@@iterator","api.MIDIInputMap.entries","api.MIDIInputMap.forEach","api.MIDIInputMap.get","api.MIDIInputMap.has","api.MIDIInputMap.keys","api.MIDIInputMap.size","api.MIDIInputMap.values","api.MIDIMessageEvent","api.MIDIMessageEvent.MIDIMessageEvent","api.MIDIMessageEvent.data","api.MIDIOutput","api.MIDIOutput.send","api.MIDIOutputMap","api.MIDIOutputMap.@@iterator","api.MIDIOutputMap.entries","api.MIDIOutputMap.forEach","api.MIDIOutputMap.get","api.MIDIOutputMap.has","api.MIDIOutputMap.keys","api.MIDIOutputMap.size","api.MIDIOutputMap.values","api.MIDIPort","api.MIDIPort.close","api.MIDIPort.connection","api.MIDIPort.id","api.MIDIPort.manufacturer","api.MIDIPort.name","api.MIDIPort.open","api.MIDIPort.state","api.MIDIPort.statechange_event","api.MIDIPort.type","api.MIDIPort.version","api.Navigator.requestMIDIAccess"],"description":"The Web MIDI API enables selecting MIDI input and output devices and sending and receiving MIDI messages.","description_html":"The Web MIDI API enables selecting MIDI input and output devices and sending and receiving MIDI messages.","name":"Web MIDI","spec":"https://webaudio.github.io/web-midi-api/","status":{"baseline":false,"support":{"chrome":"43","chrome_android":"43","edge":"79","firefox":"108"}}},"web-nfc":{"caniuse":"webnfc","compat_features":["api.NDEFMessage","api.NDEFMessage.NDEFMessage","api.NDEFMessage.records","api.NDEFMessage.secure_context_required","api.NDEFReader","api.NDEFReader.NDEFReader","api.NDEFReader.reading_event","api.NDEFReader.readingerror_event","api.NDEFReader.scan","api.NDEFReader.secure_context_required","api.NDEFReader.write","api.NDEFReadingEvent","api.NDEFReadingEvent.NDEFReadingEvent","api.NDEFReadingEvent.message","api.NDEFReadingEvent.secure_context_required","api.NDEFReadingEvent.serialNumber","api.NDEFRecord","api.NDEFRecord.NDEFRecord","api.NDEFRecord.data","api.NDEFRecord.encoding","api.NDEFRecord.id","api.NDEFRecord.lang","api.NDEFRecord.mediaType","api.NDEFRecord.recordType","api.NDEFRecord.secure_context_required","api.NDEFRecord.toRecords"],"description":"The NDEFReader API reads and writes messages to near-field communication (NFC) tags.","description_html":"The <code>NDEFReader</code> API reads and writes messages to near-field communication (NFC) tags.","name":"Web NFC","spec":"https://w3c.github.io/web-nfc/","status":{"baseline":false,"support":{"chrome_android":"89"}}},"webauthn-public-key-easy":{"compat_features":["api.AuthenticatorAttestationResponse.getAuthenticatorData","api.AuthenticatorAttestationResponse.getPublicKey","api.AuthenticatorAttestationResponse.getPublicKeyAlgorithm"],"description":"The getAuthenticatorData(), getPublicKey(), and getPublicKeyAlgorithm() methods of AuthenticatorAttestationResponse access credential data inside attestationObject without the need to parse it.","description_html":"The <code>getAuthenticatorData()</code>, <code>getPublicKey()</code>, and <code>getPublicKeyAlgorithm()</code> methods of <code>AuthenticatorAttestationResponse</code> access credential data inside <code>attestationObject</code> without the need to parse it.","name":"Web authentication easy public key access","spec":"https://w3c.github.io/webauthn/#sctn-public-key-easy","status":{"baseline":"low","baseline_low_date":"2023-10-24","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"119","firefox_android":"119","safari":"16","safari_ios":"16"}}},"webcodecs":{"caniuse":"webcodecs","compat_features":["api.AudioData","api.AudioData.AudioData","api.AudioData.allocationSize","api.AudioData.clone","api.AudioData.close","api.AudioData.copyTo","api.AudioData.duration","api.AudioData.format","api.AudioData.numberOfChannels","api.AudioData.numberOfFrames","api.AudioData.sampleRate","api.AudioData.timestamp","api.AudioDecoder","api.AudioDecoder.AudioDecoder","api.AudioDecoder.close","api.AudioDecoder.configure","api.AudioDecoder.decode","api.AudioDecoder.decodeQueueSize","api.AudioDecoder.dequeue_event","api.AudioDecoder.flush","api.AudioDecoder.isConfigSupported_static","api.AudioDecoder.reset","api.AudioDecoder.state","api.AudioEncoder","api.AudioEncoder.AudioEncoder","api.AudioEncoder.close","api.AudioEncoder.configure","api.AudioEncoder.configure.bitrateMode","api.AudioEncoder.configure.opus","api.AudioEncoder.configure.opus.opus_application","api.AudioEncoder.configure.opus.opus_signal","api.AudioEncoder.dequeue_event","api.AudioEncoder.encode","api.AudioEncoder.encodeQueueSize","api.AudioEncoder.flush","api.AudioEncoder.isConfigSupported_static","api.AudioEncoder.reset","api.AudioEncoder.state","api.EncodedAudioChunk","api.EncodedAudioChunk.EncodedAudioChunk","api.EncodedAudioChunk.byteLength","api.EncodedAudioChunk.copyTo","api.EncodedAudioChunk.duration","api.EncodedAudioChunk.timestamp","api.EncodedAudioChunk.type","api.EncodedVideoChunk","api.EncodedVideoChunk.EncodedVideoChunk","api.EncodedVideoChunk.byteLength","api.EncodedVideoChunk.copyTo","api.EncodedVideoChunk.duration","api.EncodedVideoChunk.timestamp","api.EncodedVideoChunk.type","api.ImageDecoder","api.ImageDecoder.ImageDecoder","api.ImageDecoder.close","api.ImageDecoder.complete","api.ImageDecoder.completed","api.ImageDecoder.decode","api.ImageDecoder.isTypeSupported_static","api.ImageDecoder.reset","api.ImageDecoder.tracks","api.ImageDecoder.type","api.ImageTrack","api.ImageTrack.animated","api.ImageTrack.frameCount","api.ImageTrack.repetitionCount","api.ImageTrack.selected","api.ImageTrackList","api.ImageTrackList.length","api.ImageTrackList.ready","api.ImageTrackList.selectedIndex","api.ImageTrackList.selectedTrack","api.VideoColorSpace","api.VideoColorSpace.VideoColorSpace","api.VideoColorSpace.fullRange","api.VideoColorSpace.matrix","api.VideoColorSpace.primaries","api.VideoColorSpace.toJSON","api.VideoColorSpace.transfer","api.VideoDecoder","api.VideoDecoder.VideoDecoder","api.VideoDecoder.close","api.VideoDecoder.configure","api.VideoDecoder.decode","api.VideoDecoder.decodeQueueSize","api.VideoDecoder.dequeue_event","api.VideoDecoder.flush","api.VideoDecoder.isConfigSupported_static","api.VideoDecoder.reset","api.VideoDecoder.state","api.VideoEncoder","api.VideoEncoder.VideoEncoder","api.VideoEncoder.close","api.VideoEncoder.configure","api.VideoEncoder.dequeue_event","api.VideoEncoder.encode","api.VideoEncoder.encodeQueueSize","api.VideoEncoder.flush","api.VideoEncoder.isConfigSupported_static","api.VideoEncoder.reset","api.VideoEncoder.state","api.VideoFrame","api.VideoFrame.VideoFrame","api.VideoFrame.allocationSize","api.VideoFrame.clone","api.VideoFrame.close","api.VideoFrame.codedHeight","api.VideoFrame.codedRect","api.VideoFrame.codedWidth","api.VideoFrame.colorSpace","api.VideoFrame.copyTo","api.VideoFrame.displayHeight","api.VideoFrame.displayWidth","api.VideoFrame.duration","api.VideoFrame.format","api.VideoFrame.timestamp","api.VideoFrame.visibleRect"],"description":"The WebCodecs API provides low-level access to individual video frames and chunks of audio samples, for full control over the way media is processed.","description_html":"The WebCodecs API provides low-level access to individual video frames and chunks of audio samples, for full control over the way media is processed.","name":"WebCodecs","spec":"https://w3c.github.io/webcodecs/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"webdriver-bidi":{"description":"WebDriver BiDi is a bidirectional protocol that allows a WebDriver client and a browser to communicate with each other.","description_html":"WebDriver BiDi is a bidirectional protocol that allows a WebDriver client and a browser to communicate with each other.","name":"WebDriver BiDi","spec":"https://w3c.github.io/webdriver-bidi/","status":{"baseline":false,"support":{"chrome":"106","chrome_android":"106","edge":"106","firefox":"102","firefox_android":"102"}}},"webgl-oes-draw-buffers-indexed":{"compat_features":["api.OES_draw_buffers_indexed","api.OES_draw_buffers_indexed.blendEquationSeparateiOES","api.OES_draw_buffers_indexed.blendEquationiOES","api.OES_draw_buffers_indexed.blendFuncSeparateiOES","api.OES_draw_buffers_indexed.blendFunciOES","api.OES_draw_buffers_indexed.colorMaskiOES","api.OES_draw_buffers_indexed.disableiOES","api.OES_draw_buffers_indexed.enableiOES"],"description":"The OES_draw_buffers_indexed extension to WebGL allows you to control blending on a per-color basis when writing to multiple color buffers simultaneously.","description_html":"The <code>OES_draw_buffers_indexed</code> extension to WebGL allows you to control blending on a per-color basis when writing to multiple color buffers simultaneously.","group":"webgl","name":"WebGL OES_draw_buffers_indexed extension","spec":"https://registry.khronos.org/webgl/extensions/OES_draw_buffers_indexed/","status":{"baseline":"low","baseline_low_date":"2022-12-13","support":{"chrome":"100","chrome_android":"100","edge":"100","firefox":"108","firefox_android":"108","safari":"16","safari_ios":"16"}}},"webhid":{"caniuse":"webhid","compat_features":["api.HID","api.HID.connect_event","api.HID.disconnect_event","api.HID.getDevices","api.HID.requestDevice","api.HIDConnectionEvent","api.HIDConnectionEvent.HIDConnectionEvent","api.HIDConnectionEvent.device","api.HIDDevice","api.HIDDevice.close","api.HIDDevice.collections","api.HIDDevice.inputreport_event","api.HIDDevice.open","api.HIDDevice.opened","api.HIDDevice.productId","api.HIDDevice.productName","api.HIDDevice.receiveFeatureReport","api.HIDDevice.sendFeatureReport","api.HIDDevice.sendReport","api.HIDDevice.vendorId","api.HIDInputReportEvent","api.HIDInputReportEvent.data","api.HIDInputReportEvent.device","api.HIDInputReportEvent.reportId","api.Navigator.hid","http.headers.Permissions-Policy.hid"],"description":"The WebHID API provides access to Human Interface Devices (HID) that are connected to the user's device.","description_html":"The WebHID API provides access to Human Interface Devices (HID) that are connected to the user's device.","name":"WebHID","spec":"https://wicg.github.io/webhid/","status":{"baseline":false,"support":{"chrome":"89","edge":"89"}}},"webnn":{"compat_features":["api.ML","api.ML.createContext","api.MLActivation","api.MLContext","api.MLContext.compute","api.MLGraph","api.MLGraphBuilder","api.MLGraphBuilder.MLGraphBuilder","api.MLGraphBuilder.abs","api.MLGraphBuilder.add","api.MLGraphBuilder.argMax","api.MLGraphBuilder.argMin","api.MLGraphBuilder.averagePool2d","api.MLGraphBuilder.batchNormalization","api.MLGraphBuilder.build","api.MLGraphBuilder.cast","api.MLGraphBuilder.ceil","api.MLGraphBuilder.clamp","api.MLGraphBuilder.concat","api.MLGraphBuilder.constant","api.MLGraphBuilder.conv2d","api.MLGraphBuilder.convTranspose2d","api.MLGraphBuilder.cos","api.MLGraphBuilder.div","api.MLGraphBuilder.elu","api.MLGraphBuilder.equal","api.MLGraphBuilder.erf","api.MLGraphBuilder.exp","api.MLGraphBuilder.expand","api.MLGraphBuilder.floor","api.MLGraphBuilder.gather","api.MLGraphBuilder.gemm","api.MLGraphBuilder.greater","api.MLGraphBuilder.greaterOrEqual","api.MLGraphBuilder.gru","api.MLGraphBuilder.gruCell","api.MLGraphBuilder.hardSigmoid","api.MLGraphBuilder.hardSwish","api.MLGraphBuilder.identity","api.MLGraphBuilder.input","api.MLGraphBuilder.instanceNormalization","api.MLGraphBuilder.l2Pool2d","api.MLGraphBuilder.layerNormalization","api.MLGraphBuilder.leakyRelu","api.MLGraphBuilder.lesser","api.MLGraphBuilder.lesserOrEqual","api.MLGraphBuilder.linear","api.MLGraphBuilder.log","api.MLGraphBuilder.lstm","api.MLGraphBuilder.lstmCell","api.MLGraphBuilder.matmul","api.MLGraphBuilder.max","api.MLGraphBuilder.maxPool2d","api.MLGraphBuilder.min","api.MLGraphBuilder.mul","api.MLGraphBuilder.neg","api.MLGraphBuilder.not","api.MLGraphBuilder.pad","api.MLGraphBuilder.pow","api.MLGraphBuilder.prelu","api.MLGraphBuilder.reciprocal","api.MLGraphBuilder.reduceL1","api.MLGraphBuilder.reduceL2","api.MLGraphBuilder.reduceLogSum","api.MLGraphBuilder.reduceLogSumExp","api.MLGraphBuilder.reduceMax","api.MLGraphBuilder.reduceMean","api.MLGraphBuilder.reduceMin","api.MLGraphBuilder.reduceProduct","api.MLGraphBuilder.reduceSum","api.MLGraphBuilder.reduceSumSquare","api.MLGraphBuilder.relu","api.MLGraphBuilder.resample2d","api.MLGraphBuilder.reshape","api.MLGraphBuilder.sigmoid","api.MLGraphBuilder.sin","api.MLGraphBuilder.slice","api.MLGraphBuilder.softmax","api.MLGraphBuilder.softplus","api.MLGraphBuilder.softsign","api.MLGraphBuilder.split","api.MLGraphBuilder.sqrt","api.MLGraphBuilder.sub","api.MLGraphBuilder.tan","api.MLGraphBuilder.tanh","api.MLGraphBuilder.transpose","api.MLGraphBuilder.triangular","api.MLGraphBuilder.where","api.MLOperand","api.MLOperand.dataType","api.MLOperand.shape","api.Navigator.ml","api.WorkerNavigator.ml"],"description":"The WebNN API constructs and executes computational graphs of neural networks by making use of the various machine learning capabilities and hardware accelerators available on the device. Also known as Web Neural Network API.","description_html":"The WebNN API constructs and executes computational graphs of neural networks by making use of the various machine learning capabilities and hardware accelerators available on the device. Also known as Web Neural Network API.","name":"WebNN","spec":"https://www.w3.org/TR/webnn/","status":{"baseline":false,"support":{}}},"webp":{"caniuse":"webp","description":"The WebP image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","description_html":"The WebP image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","name":"WebP","spec":"https://www.ietf.org/archive/id/draft-zern-webp-15.html","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"9","chrome_android":"18","edge":"18","firefox":"65","firefox_android":"65","safari":"14","safari_ios":"14"}}},"webrtc":{"caniuse":"rtcpeerconnection","compat_features":["api.RTCDataChannel","api.RTCPeerConnection"],"description":"The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.","description_html":"The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.","group":"webrtc","name":"WebRTC","spec":"https://w3c.github.io/webrtc-pc/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"56","chrome_android":"56","edge":"79","firefox":"44","firefox_android":"44","safari":"11","safari_ios":"11"}}},"webrtc-encoded-transform":{"compat_features":["api.DedicatedWorkerGlobalScope.rtctransform_event","api.RTCEncodedAudioFrame","api.RTCEncodedAudioFrame.data","api.RTCEncodedAudioFrame.getMetadata","api.RTCEncodedAudioFrame.timestamp","api.RTCEncodedVideoFrame","api.RTCEncodedVideoFrame.data","api.RTCEncodedVideoFrame.getMetadata","api.RTCEncodedVideoFrame.timestamp","api.RTCEncodedVideoFrame.type","api.RTCRtpReceiver.transform","api.RTCRtpScriptTransform","api.RTCRtpScriptTransform.RTCRtpScriptTransform","api.RTCRtpScriptTransformer","api.RTCRtpScriptTransformer.generateKeyFrame","api.RTCRtpScriptTransformer.options","api.RTCRtpScriptTransformer.readable","api.RTCRtpScriptTransformer.sendKeyFrameRequest","api.RTCRtpScriptTransformer.writable","api.RTCRtpSender.transform","api.RTCTransformEvent","api.RTCTransformEvent.transformer"],"description":"The WebRTC encoded transform API allows you to modify audio and video streams in WebRTC connections. For example, it can be used for visual effects or custom codecs.","description_html":"The WebRTC encoded transform API allows you to modify audio and video streams in WebRTC connections. For example, it can be used for visual effects or custom codecs.","group":"webrtc","name":"WebRTC encoded transform","spec":"https://w3c.github.io/webrtc-encoded-transform/","status":{"baseline":false,"support":{"firefox":"117","firefox_android":"117","safari":"15.4","safari_ios":"15.4"}}},"webrtc-sctp":{"compat_features":["api.RTCPeerConnection.sctp","api.RTCSctpTransport","api.RTCSctpTransport.maxChannels","api.RTCSctpTransport.maxMessageSize","api.RTCSctpTransport.state","api.RTCSctpTransport.statechange_event","api.RTCSctpTransport.transport"],"description":"The sctp object on RTCPeerConnection represents the negotiated SCTP transport. SCTP (Stream Control Transmission Protocol) is the protocol that RTCDataChannel uses.","description_html":"The <code>sctp</code> object on <code>RTCPeerConnection</code> represents the negotiated SCTP transport. SCTP (Stream Control Transmission Protocol) is the protocol that <code>RTCDataChannel</code> uses.","group":"webrtc","name":"WebRTC SCTP information","spec":"https://w3c.github.io/webrtc-pc/#rtcsctptransport-interface","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"113","firefox_android":"113","safari":"15.4","safari_ios":"15.4"}}},"websockets":{"caniuse":"websockets","compat_features":["api.CloseEvent","api.CloseEvent.CloseEvent","api.CloseEvent.code","api.CloseEvent.reason","api.CloseEvent.wasClean","api.WebSocket","api.WebSocket.WebSocket","api.WebSocket.binaryType","api.WebSocket.bufferedAmount","api.WebSocket.close","api.WebSocket.close_event","api.WebSocket.error_event","api.WebSocket.extensions","api.WebSocket.message_event","api.WebSocket.open_event","api.WebSocket.protocol","api.WebSocket.readyState","api.WebSocket.send","api.WebSocket.url","api.WebSocket.worker_support","api.WebSocketError","api.WebSocketError.WebSocketError","api.WebSocketError.closeCode","api.WebSocketError.reason"],"description":"The WebSocket API opens a two-way communication channel between the user's browser and a server.","description_html":"The <code>WebSocket</code> API opens a two-way communication channel between the user's browser and a server.","name":"WebSockets","spec":"https://websockets.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"11","firefox_android":"14","safari":"5","safari_ios":"4.2"}}},"webtransport":{"caniuse":"webtransport","compat_features":["api.WebTransport","api.WebTransport.WebTransport","api.WebTransport.close","api.WebTransport.closed","api.WebTransport.createBidirectionalStream","api.WebTransport.createUnidirectionalStream","api.WebTransport.datagrams","api.WebTransport.incomingBidirectionalStreams","api.WebTransport.incomingUnidirectionalStreams","api.WebTransport.ready","api.WebTransportBidirectionalStream","api.WebTransportBidirectionalStream.readable","api.WebTransportBidirectionalStream.writable","api.WebTransportDatagramDuplexStream","api.WebTransportDatagramDuplexStream.incomingHighWaterMark","api.WebTransportDatagramDuplexStream.incomingMaxAge","api.WebTransportDatagramDuplexStream.maxDatagramSize","api.WebTransportDatagramDuplexStream.outgoingHighWaterMark","api.WebTransportDatagramDuplexStream.outgoingMaxAge","api.WebTransportDatagramDuplexStream.readable","api.WebTransportDatagramDuplexStream.writable","api.WebTransportError","api.WebTransportError.WebTransportError","api.WebTransportError.source","api.WebTransportError.streamErrorCode"],"description":"The WebTransport API transmits data between a client and a server, by using the HTTP/3 protocol.","description_html":"The <code>WebTransport</code> API transmits data between a client and a server, by using the HTTP/3 protocol.","name":"WebTransport","spec":"https://w3c.github.io/webtransport/","status":{"baseline":false,"support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"114","firefox_android":"114"}}},"webusb":{"caniuse":"webusb","compat_features":["api.Navigator.usb","api.USB","api.USB.connect_event","api.USB.disconnect_event","api.USB.getDevices","api.USB.requestDevice","api.USBAlternateInterface","api.USBAlternateInterface.USBAlternateInterface","api.USBAlternateInterface.alternateSetting","api.USBAlternateInterface.endpoints","api.USBAlternateInterface.interfaceClass","api.USBAlternateInterface.interfaceName","api.USBAlternateInterface.interfaceProtocol","api.USBAlternateInterface.interfaceSubclass","api.USBConfiguration","api.USBConfiguration.USBConfiguration","api.USBConfiguration.configurationName","api.USBConfiguration.configurationValue","api.USBConfiguration.interfaces","api.USBConnectionEvent","api.USBConnectionEvent.USBConnectionEvent","api.USBConnectionEvent.device","api.USBDevice","api.USBDevice.claimInterface","api.USBDevice.clearHalt","api.USBDevice.close","api.USBDevice.configuration","api.USBDevice.configurations","api.USBDevice.controlTransferIn","api.USBDevice.controlTransferOut","api.USBDevice.deviceClass","api.USBDevice.deviceProtocol","api.USBDevice.deviceSubclass","api.USBDevice.deviceVersionMajor","api.USBDevice.deviceVersionMinor","api.USBDevice.deviceVersionSubminor","api.USBDevice.isochronousTransferIn","api.USBDevice.isochronousTransferOut","api.USBDevice.manufacturerName","api.USBDevice.open","api.USBDevice.opened","api.USBDevice.productId","api.USBDevice.productName","api.USBDevice.releaseInterface","api.USBDevice.reset","api.USBDevice.selectAlternateInterface","api.USBDevice.selectConfiguration","api.USBDevice.serialNumber","api.USBDevice.transferIn","api.USBDevice.transferOut","api.USBDevice.usbVersionMajor","api.USBDevice.usbVersionMinor","api.USBDevice.usbVersionSubminor","api.USBDevice.vendorId","api.USBEndpoint","api.USBEndpoint.USBEndpoint","api.USBEndpoint.direction","api.USBEndpoint.endpointNumber","api.USBEndpoint.packetSize","api.USBEndpoint.type","api.USBInTransferResult","api.USBInTransferResult.USBInTransferResult","api.USBInTransferResult.data","api.USBInTransferResult.status","api.USBInterface","api.USBInterface.USBInterface","api.USBInterface.alternate","api.USBInterface.alternates","api.USBInterface.claimed","api.USBInterface.interfaceNumber","api.USBIsochronousInTransferPacket","api.USBIsochronousInTransferPacket.USBIsochronousInTransferPacket","api.USBIsochronousInTransferPacket.data","api.USBIsochronousInTransferPacket.status","api.USBIsochronousInTransferResult","api.USBIsochronousInTransferResult.USBIsochronousInTransferResult","api.USBIsochronousInTransferResult.data","api.USBIsochronousInTransferResult.packets","api.USBIsochronousOutTransferPacket","api.USBIsochronousOutTransferPacket.USBIsochronousOutTransferPacket","api.USBIsochronousOutTransferPacket.bytesWritten","api.USBIsochronousOutTransferPacket.status","api.USBIsochronousOutTransferResult","api.USBIsochronousOutTransferResult.USBIsochronousOutTransferResult","api.USBIsochronousOutTransferResult.packets","api.USBOutTransferResult","api.USBOutTransferResult.USBOutTransferResult","api.USBOutTransferResult.bytesWritten","api.USBOutTransferResult.status"],"description":"The WebUSB API exposes USB compatible devices to web pages.","description_html":"The WebUSB API exposes USB compatible devices to web pages.","name":"WebUSB","spec":"https://wicg.github.io/webusb/","status":{"baseline":false,"support":{"chrome":"61","chrome_android":"61","edge":"79"}}},"webvtt":{"caniuse":"webvtt","compat_features":["api.VTTCue","api.VTTCue.getCueAsHTML","api.VTTCue.text"],"description":"WebVTT is a captions and subtitles format. WebVTT files are loaded using the <track> element, and the VTTCue API can be used to create or update cues dynamically.","description_html":"WebVTT is a captions and subtitles format. WebVTT files are loaded using the <code>&#x3C;track></code> element, and the <code>VTTCue</code> API can be used to create or update cues dynamically.","name":"WebVTT","spec":"https://w3c.github.io/webvtt/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"23","chrome_android":"25","edge":"12","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"8"}}},"webvtt-cue-alignment":{"compat_features":["api.VTTCue.lineAlign","api.VTTCue.positionAlign"],"description":"The WebVTT cue alignment settings control which part of the cue is aligned with the given line and position. Cue alignment is set using line and position settings in WebVTT files or the lineAlign and positionAlign properties of VTTCue using JavaScript.","description_html":"The WebVTT cue alignment settings control which part of the cue is aligned with the given line and position. Cue alignment is set using <code>line</code> and <code>position</code> settings in WebVTT files or the <code>lineAlign</code> and <code>positionAlign</code> properties of <code>VTTCue</code> using JavaScript.","name":"WebVTT cue alignment","spec":["https://w3c.github.io/webvtt/#dom-vttcue-linealign","https://w3c.github.io/webvtt/#dom-vttcue-positionalign"],"status":{"baseline":false,"support":{"firefox":"31","firefox_android":"31","safari":"14.1","safari_ios":"14.5"}}},"webvtt-regions":{"compat_features":["api.VTTRegion","api.VTTRegion.VTTRegion","api.VTTRegion.id","api.VTTRegion.regionAnchorX","api.VTTRegion.regionAnchorY","api.VTTRegion.scroll","api.VTTRegion.viewportAnchorX","api.VTTRegion.viewportAnchorY","api.VTTRegion.width"],"description":"WebVTT regions set the areas of the video where captions or subtitles should be rendered, such as placing roll-up captions used for live captions.","description_html":"WebVTT regions set the areas of the video where captions or subtitles should be rendered, such as placing roll-up captions used for live captions.","name":"WebVTT regions","spec":"https://w3c.github.io/webvtt/#regions","status":{"baseline":false,"support":{"firefox":"59","firefox_android":"59","safari":"7","safari_ios":"7"}}},"where":{"compat_features":["css.selectors.where","css.selectors.where.forgiving_selector_list"],"description":"The :where() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity.","description_html":"The <code>:where()</code> CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity.","name":":where()","spec":"https://drafts.csswg.org/selectors-4/#zero-matches","status":{"baseline":"high","baseline_high_date":"2023-07-21","baseline_low_date":"2021-01-21","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"82","firefox_android":"82","safari":"14","safari_ios":"14"}}},"will-change":{"caniuse":"will-change","compat_features":["css.properties.will-change","css.properties.will-change.auto","css.properties.will-change.contents","css.properties.will-change.scroll-position"],"description":"The will-change CSS property gives hints to the browser about expected changes to an element's scroll position, contents, or style. These hints allow browsers to optimize for upcoming style changes.","description_html":"The <code>will-change</code> CSS property gives hints to the browser about expected changes to an element's scroll position, contents, or style. These hints allow browsers to optimize for upcoming style changes.","group":"css","name":"will-change","spec":"https://drafts.csswg.org/css-will-change-1/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"36","chrome_android":"36","edge":"79","firefox":"36","firefox_android":"36","safari":"9.1","safari_ios":"9.3"}}},"xhr":{"compat_features":["api.FormData","api.FormData.FormData","api.FormData.append","api.FormData.append.filename_parameter","api.ProgressEvent","api.ProgressEvent.lengthComputable","api.ProgressEvent.loaded","api.ProgressEvent.total","api.XMLHttpRequest","api.XMLHttpRequest.XMLHttpRequest","api.XMLHttpRequest.abort","api.XMLHttpRequest.abort_event","api.XMLHttpRequest.error_event","api.XMLHttpRequest.getAllResponseHeaders","api.XMLHttpRequest.getResponseHeader","api.XMLHttpRequest.load_event","api.XMLHttpRequest.loadend_event","api.XMLHttpRequest.loadstart_event","api.XMLHttpRequest.open","api.XMLHttpRequest.overrideMimeType","api.XMLHttpRequest.progress_event","api.XMLHttpRequest.readyState","api.XMLHttpRequest.readystatechange_event","api.XMLHttpRequest.response","api.XMLHttpRequest.responseText","api.XMLHttpRequest.responseXML","api.XMLHttpRequest.send","api.XMLHttpRequest.send.body_ArrayBufferView_type","api.XMLHttpRequest.send.body_ArrayBuffer_type","api.XMLHttpRequest.send.body_Blob_type","api.XMLHttpRequest.send.body_FormData_type","api.XMLHttpRequest.setRequestHeader","api.XMLHttpRequest.status","api.XMLHttpRequest.statusText","api.XMLHttpRequest.timeout","api.XMLHttpRequest.timeout_event","api.XMLHttpRequest.upload","api.XMLHttpRequest.withCredentials","api.XMLHttpRequest.worker_support","api.XMLHttpRequestEventTarget","api.XMLHttpRequestUpload","api.XMLHttpRequestUpload.abort_event","api.XMLHttpRequestUpload.error_event","api.XMLHttpRequestUpload.load_event","api.XMLHttpRequestUpload.loadend_event","api.XMLHttpRequestUpload.loadstart_event","api.XMLHttpRequestUpload.progress_event","api.XMLHttpRequestUpload.timeout_event"],"description":"The XMLHttpRequest API makes HTTP requests. It's the predecessor to fetch(). Also known as XHR.","description_html":"The <code>XMLHttpRequest</code> API makes HTTP requests. It's the predecessor to <code>fetch()</code>. Also known as XHR.","name":"XMLHttpRequest","spec":"https://xhr.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"xml-serializer":{"compat_features":["api.XMLSerializer","api.XMLSerializer.XMLSerializer","api.XMLSerializer.serializeToString"],"description":"The XMLSerializer API provides the serializeToString() method to construct an XML string representing a DOM tree.","description_html":"The <code>XMLSerializer</code> API provides the <code>serializeToString()</code> method to construct an XML string representing a DOM tree.","name":"XMLSerializer","spec":"https://w3c.github.io/DOM-Parsing/#the-xmlserializer-interface","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"zoom":{"caniuse":"css-zoom","compat_features":["css.properties.zoom"],"description":"The zoom CSS property scales the size of an element. Unlike the transform property, a zoomed element affects page layout.","description_html":"The <code>zoom</code> CSS property scales the size of an element. Unlike the <code>transform</code> property, a zoomed element affects page layout.","name":"zoom","spec":"https://drafts.csswg.org/css-viewport/#zoom-property","status":{"baseline":"low","baseline_low_date":"2024-05-14","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"126","firefox_android":"126","safari":"3.1","safari_ios":"3"}}}},"groups":{"arrays":{"name":"Arrays","parent":"collections"},"canvas":{"name":"Canvas"},"clipboard":{"name":"Clipboard"},"collections":{"name":"Collections","parent":"javascript"},"css":{"name":"CSS"},"custom-elements":{"name":"Custom elements","parent":"html"},"flexbox":{"name":"Flexbox","parent":"layout"},"font-synthesis":{"name":"Font synthesis","parent":"fonts"},"fonts":{"name":"Fonts","parent":"css"},"forms":{"name":"Forms","parent":"html"},"gradients":{"name":"Gradients","parent":"css"},"grid":{"name":"Grid","parent":"layout"},"html":{"name":"HTML"},"html-elements":{"name":"HTML elements","parent":"html"},"intl":{"name":"Intl","parent":"javascript"},"iterators":{"name":"Iterators","parent":"javascript"},"javascript":{"name":"JavaScript"},"js-modules":{"name":"JavaScript modules"},"layout":{"name":"Layout","parent":"css"},"maps":{"name":"Maps","parent":"collections"},"media-elements":{"name":"Media elements","parent":"html"},"print":{"name":"Print media"},"promises":{"name":"Promises","parent":"javascript"},"resource-timing":{"name":"Resource timing"},"scrolling":{"name":"Scrolling"},"sensors":{"name":"Sensors"},"sets":{"name":"Sets","parent":"collections"},"speech":{"name":"Web Speech API"},"streams":{"name":"Streams"},"text-fragments":{"name":"Text fragments"},"transferable":{"name":"Transferable objects"},"transforms":{"name":"Transforms","parent":"css"},"typed-arrays":{"name":"Typed arrays","parent":"collections"},"web-audio":{"name":"Web Audio"},"web-components":{"name":"Web Components"},"webgl":{"name":"WebGL"},"webrtc":{"name":"WebRTC"}},"snapshots":{"ecmascript-1":{"name":"ECMAScript","spec":"https://ecma-international.org/wp-content/uploads/ECMA-262_1st_edition_june_1997.pdf"},"ecmascript-2015":{"name":"ECMAScript 2015","spec":"https://262.ecma-international.org/6.0/"},"ecmascript-2016":{"name":"ECMAScript 2016","spec":"https://262.ecma-international.org/7.0/"},"ecmascript-2017":{"name":"ECMAScript 2017","spec":"https://262.ecma-international.org/8.0/"},"ecmascript-2018":{"name":"ECMAScript 2018","spec":"https://262.ecma-international.org/9.0/"},"ecmascript-2019":{"name":"ECMAScript 2019","spec":"https://262.ecma-international.org/10.0/"},"ecmascript-2020":{"name":"ECMAScript 2020","spec":"https://262.ecma-international.org/11.0/"},"ecmascript-2021":{"name":"ECMAScript 2021","spec":"https://262.ecma-international.org/12.0/"},"ecmascript-2022":{"name":"ECMAScript 2022","spec":"https://262.ecma-international.org/13.0/"},"ecmascript-2023":{"name":"ECMAScript 2023","spec":"https://262.ecma-international.org/14.0/"},"ecmascript-5":{"name":"ECMAScript 5.1","spec":"https://262.ecma-international.org/5.1/"}}}
1
+ {"features":{"a":{"compat_features":["api.HTMLAnchorElement","api.HTMLAnchorElement.hash","api.HTMLAnchorElement.host","api.HTMLAnchorElement.hostname","api.HTMLAnchorElement.href","api.HTMLAnchorElement.hreflang","api.HTMLAnchorElement.origin","api.HTMLAnchorElement.password","api.HTMLAnchorElement.pathname","api.HTMLAnchorElement.port","api.HTMLAnchorElement.protocol","api.HTMLAnchorElement.rel","api.HTMLAnchorElement.relList","api.HTMLAnchorElement.search","api.HTMLAnchorElement.target","api.HTMLAnchorElement.text","api.HTMLAnchorElement.toString","api.HTMLAnchorElement.type","api.HTMLAnchorElement.username","html.elements.a","html.elements.a.href","html.elements.a.hreflang","html.elements.a.rel","html.elements.a.rel.noopener","html.elements.a.rel.noreferrer","html.elements.a.target","html.elements.a.type"],"description":"The <a> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.","description_html":"The <code>&#x3C;a></code> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.","group":"html-elements","name":"<a>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"abbr":{"compat_features":["html.elements.abbr"],"description":"The <abbr> HTML element represents an abbreviation or acronym.","description_html":"The <code>&#x3C;abbr></code> HTML element represents an abbreviation or acronym.","group":"html-elements","name":"<abbr>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-abbr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"abortable-fetch":{"compat_features":["api.Request.signal","api.fetch.init_signal_parameter"],"description":"If you construct a fetch request with an AbortSignal, you can cancel the request.","description_html":"If you construct a fetch request with an <code>AbortSignal</code>, you can cancel the request.","name":"Abortable fetch","spec":"https://fetch.spec.whatwg.org/#ref-for-dom-request-signal%E2%91%A1","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"66","chrome_android":"66","edge":"16","firefox":"57","firefox_android":"57","safari":"12.1","safari_ios":"12.2"}}},"aborting":{"caniuse":"abortcontroller","compat_features":["api.AbortController","api.AbortController.AbortController","api.AbortController.abort","api.AbortController.signal","api.AbortSignal","api.AbortSignal.abort_event","api.AbortSignal.aborted"],"description":"The AbortController and AbortSignal APIs allow you to cancel an ongoing operation, such as a fetch() request.","description_html":"The <code>AbortController</code> and <code>AbortSignal</code> APIs allow you to cancel an ongoing operation, such as a <code>fetch()</code> request.","name":"AbortController and AbortSignal","spec":"https://dom.spec.whatwg.org/#aborting-ongoing-activities","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"66","chrome_android":"66","edge":"16","firefox":"57","firefox_android":"57","safari":"12.1","safari_ios":"12.2"}}},"abortsignal-any":{"compat_features":["api.AbortSignal.any_static"],"description":"The AbortSignal.any() static method combines an iterable of abort signals into a single signal, with the abort reason taken from the first signal to abort.","description_html":"The <code>AbortSignal.any()</code> static method combines an iterable of abort signals into a single signal, with the abort reason taken from the first signal to abort.","name":"AbortSignal.any()","spec":"https://dom.spec.whatwg.org/#dom-abortsignal-any","status":{"baseline":"low","baseline_low_date":"2024-03-19","support":{"chrome":"116","chrome_android":"116","edge":"116","firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"abs-sign":{"compat_features":["css.types.abs","css.types.sign"],"description":"The abs() and sign() CSS functions compute the absolute value or the sign of the input.","description_html":"The <code>abs()</code> and <code>sign()</code> CSS functions compute the absolute value or the sign of the input.","name":"abs() and sign()","spec":"https://drafts.csswg.org/css-values-4/#sign-funcs","status":{"baseline":false,"support":{"firefox":"118","firefox_android":"118","safari":"15.4","safari_ios":"15.4"}}},"accelerometer":{"compat_features":["api.Accelerometer","api.Accelerometer.Accelerometer","api.Accelerometer.x","api.Accelerometer.y","api.Accelerometer.z","api.LinearAccelerationSensor","api.LinearAccelerationSensor.LinearAccelerationSensor","api.Permissions.permission_accelerometer","http.headers.Permissions-Policy.accelerometer"],"description":"The Accelerometer and LinearAccelerationSensor APIs read the acceleration applied to a device in three dimensions, either including the effect of gravity or not, respectively.","description_html":"The <code>Accelerometer</code> and <code>LinearAccelerationSensor</code> APIs read the acceleration applied to a device in three dimensions, either including the effect of gravity or not, respectively.","group":"sensors","name":"Accelerometer","spec":"https://w3c.github.io/accelerometer/#accelerometer-interface","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79"}}},"accent-color":{"compat_features":["css.properties.accent-color","css.properties.accent-color.auto"],"description":"The accent-color CSS property sets a color for checkboxes, radio buttons, and other form controls.","description_html":"The <code>accent-color</code> CSS property sets a color for checkboxes, radio buttons, and other form controls.","name":"accent-color","spec":"https://drafts.csswg.org/css-ui-4/#widget-accent","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"93","chrome_android":"93","edge":"93","firefox":"92","firefox_android":"92","safari":"15.4","safari_ios":"15.4"}}},"address":{"compat_features":["html.elements.address"],"description":"The <address> element represents contact information for a person or people, or for an organization.","description_html":"The <code>&#x3C;address></code> element represents contact information for a person or people, or for an organization.","group":"html-elements","name":"<address>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-address-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"anchor-positioning":{"caniuse":"css-anchor-positioning","compat_features":["api.CSSPositionTryDescriptors","api.CSSPositionTryDescriptors.align-self","api.CSSPositionTryDescriptors.alignSelf","api.CSSPositionTryDescriptors.block-size","api.CSSPositionTryDescriptors.blockSize","api.CSSPositionTryDescriptors.bottom","api.CSSPositionTryDescriptors.height","api.CSSPositionTryDescriptors.inline-size","api.CSSPositionTryDescriptors.inlineSize","api.CSSPositionTryDescriptors.inset","api.CSSPositionTryDescriptors.inset-block","api.CSSPositionTryDescriptors.inset-block-end","api.CSSPositionTryDescriptors.inset-block-start","api.CSSPositionTryDescriptors.inset-inline","api.CSSPositionTryDescriptors.inset-inline-end","api.CSSPositionTryDescriptors.inset-inline-start","api.CSSPositionTryDescriptors.insetBlock","api.CSSPositionTryDescriptors.insetBlockEnd","api.CSSPositionTryDescriptors.insetBlockStart","api.CSSPositionTryDescriptors.insetInline","api.CSSPositionTryDescriptors.insetInlineEnd","api.CSSPositionTryDescriptors.insetInlineStart","api.CSSPositionTryDescriptors.justify-self","api.CSSPositionTryDescriptors.justifySelf","api.CSSPositionTryDescriptors.left","api.CSSPositionTryDescriptors.margin","api.CSSPositionTryDescriptors.margin-block","api.CSSPositionTryDescriptors.margin-block-end","api.CSSPositionTryDescriptors.margin-block-start","api.CSSPositionTryDescriptors.margin-bottom","api.CSSPositionTryDescriptors.margin-inline","api.CSSPositionTryDescriptors.margin-inline-end","api.CSSPositionTryDescriptors.margin-inline-start","api.CSSPositionTryDescriptors.margin-left","api.CSSPositionTryDescriptors.margin-right","api.CSSPositionTryDescriptors.margin-top","api.CSSPositionTryDescriptors.marginBlock","api.CSSPositionTryDescriptors.marginBlockEnd","api.CSSPositionTryDescriptors.marginBlockStart","api.CSSPositionTryDescriptors.marginBottom","api.CSSPositionTryDescriptors.marginInline","api.CSSPositionTryDescriptors.marginInlineEnd","api.CSSPositionTryDescriptors.marginInlineStart","api.CSSPositionTryDescriptors.marginLeft","api.CSSPositionTryDescriptors.marginRight","api.CSSPositionTryDescriptors.marginTop","api.CSSPositionTryDescriptors.max-block-size","api.CSSPositionTryDescriptors.max-height","api.CSSPositionTryDescriptors.max-inline-size","api.CSSPositionTryDescriptors.max-width","api.CSSPositionTryDescriptors.maxBlockSize","api.CSSPositionTryDescriptors.maxHeight","api.CSSPositionTryDescriptors.maxInlineSize","api.CSSPositionTryDescriptors.maxWidth","api.CSSPositionTryDescriptors.min-block-size","api.CSSPositionTryDescriptors.min-height","api.CSSPositionTryDescriptors.min-inline-size","api.CSSPositionTryDescriptors.min-width","api.CSSPositionTryDescriptors.minBlockSize","api.CSSPositionTryDescriptors.minHeight","api.CSSPositionTryDescriptors.minInlineSize","api.CSSPositionTryDescriptors.minWidth","api.CSSPositionTryDescriptors.place-self","api.CSSPositionTryDescriptors.placeSelf","api.CSSPositionTryDescriptors.position-anchor","api.CSSPositionTryDescriptors.position-area","api.CSSPositionTryDescriptors.positionAnchor","api.CSSPositionTryDescriptors.positionArea","api.CSSPositionTryDescriptors.right","api.CSSPositionTryDescriptors.top","api.CSSPositionTryDescriptors.width","api.CSSPositionTryRule","api.CSSPositionTryRule.name","api.CSSPositionTryRule.style","css.at-rules.position-try","css.properties.align-items.anchor-center","css.properties.align-self.anchor-center","css.properties.anchor-name","css.properties.anchor-name.none","css.properties.block-size.anchor-size","css.properties.bottom.anchor","css.properties.height.anchor-size","css.properties.inline-size.anchor-size","css.properties.inset-area","css.properties.inset-area.block-end","css.properties.inset-area.block-start","css.properties.inset-area.bottom","css.properties.inset-area.center","css.properties.inset-area.end","css.properties.inset-area.inline-end","css.properties.inset-area.inline-start","css.properties.inset-area.left","css.properties.inset-area.none","css.properties.inset-area.right","css.properties.inset-area.self-end","css.properties.inset-area.self-start","css.properties.inset-area.span-all","css.properties.inset-area.span-block-end","css.properties.inset-area.span-block-start","css.properties.inset-area.span-bottom","css.properties.inset-area.span-end","css.properties.inset-area.span-inline-end","css.properties.inset-area.span-inline-start","css.properties.inset-area.span-start","css.properties.inset-area.span-top","css.properties.inset-area.span-x-end","css.properties.inset-area.span-x-start","css.properties.inset-area.span-y-end","css.properties.inset-area.span-y-start","css.properties.inset-area.start","css.properties.inset-area.top","css.properties.inset-area.x-end","css.properties.inset-area.x-self-end","css.properties.inset-area.x-self-start","css.properties.inset-area.x-start","css.properties.inset-area.y-end","css.properties.inset-area.y-self-end","css.properties.inset-area.y-self-start","css.properties.inset-area.y-start","css.properties.inset-block-end.anchor","css.properties.inset-block-start.anchor","css.properties.inset-block.anchor","css.properties.inset-inline-end.anchor","css.properties.inset-inline-start.anchor","css.properties.inset-inline.anchor","css.properties.inset.anchor","css.properties.justify-items.anchor-center","css.properties.justify-self.anchor-center","css.properties.left.anchor","css.properties.max-block-size.anchor-size","css.properties.max-height.anchor-size","css.properties.max-inline-size.anchor-size","css.properties.max-width.anchor-size","css.properties.min-block-size.anchor-size","css.properties.min-height.anchor-size","css.properties.min-inline-size.anchor-size","css.properties.min-width.anchor-size","css.properties.place-items.anchor-center","css.properties.place-self.anchor-center","css.properties.position-anchor","css.properties.position-anchor.auto","css.properties.position-try","css.properties.position-try-fallbacks","css.properties.position-try-fallbacks.flip-block","css.properties.position-try-fallbacks.flip-inline","css.properties.position-try-fallbacks.flip-start","css.properties.position-try-fallbacks.inset-area","css.properties.position-try-fallbacks.none","css.properties.position-try-order","css.properties.position-try-order.most-block-size","css.properties.position-try-order.most-height","css.properties.position-try-order.most-inline-size","css.properties.position-try-order.most-width","css.properties.position-try-order.normal","css.properties.position-visibility","css.properties.position-visibility.always","css.properties.position-visibility.anchors-visible","css.properties.position-visibility.no-overflow","css.properties.right.anchor","css.properties.top.anchor","css.properties.width.anchor-size","css.types.anchor","css.types.anchor-size"],"description":"Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.","description_html":"Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.","name":"Anchor positioning","spec":"https://drafts.csswg.org/css-anchor-position-1/#anchoring","status":{"baseline":false,"support":{"chrome":"125","chrome_android":"125","edge":"125"}}},"animation-composition":{"compat_features":["css.properties.animation-composition"],"description":"The animation-composition CSS property chooses how to combine animations that affect the same property.","description_html":"The <code>animation-composition</code> CSS property chooses how to combine animations that affect the same property.","name":"animation-composition","spec":"https://drafts.csswg.org/css-animations-2/#animation-composition","status":{"baseline":"low","baseline_low_date":"2023-07-04","support":{"chrome":"112","chrome_android":"112","edge":"112","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}},"appearance":{"compat_features":["css.properties.appearance","css.properties.appearance.auto","css.properties.appearance.button","css.properties.appearance.checkbox","css.properties.appearance.listbox","css.properties.appearance.menulist","css.properties.appearance.menulist-button","css.properties.appearance.meter","css.properties.appearance.none","css.properties.appearance.progress-bar","css.properties.appearance.radio","css.properties.appearance.searchfield","css.properties.appearance.textarea","css.properties.appearance.textfield"],"description":"The appearance CSS property controls the appearance of form controls. Using appearance: none disables any default native appearance and allows the elements to be styled with CSS.","description_html":"The <code>appearance</code> CSS property controls the appearance of form controls. Using <code>appearance: none</code> disables any default native appearance and allows the elements to be styled with CSS.","name":"appearance","spec":"https://drafts.csswg.org/css-ui-4/#appearance-switching","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"80","firefox_android":"80","safari":"15.4","safari_ios":"15.4"}}},"aria-attribute-reflection":{"compat_features":["api.Element.ariaAtomic","api.Element.ariaAutoComplete","api.Element.ariaBusy","api.Element.ariaChecked","api.Element.ariaColCount","api.Element.ariaColIndex","api.Element.ariaColSpan","api.Element.ariaCurrent","api.Element.ariaDisabled","api.Element.ariaExpanded","api.Element.ariaHasPopup","api.Element.ariaHidden","api.Element.ariaInvalid","api.Element.ariaKeyShortcuts","api.Element.ariaLabel","api.Element.ariaLevel","api.Element.ariaLive","api.Element.ariaModal","api.Element.ariaMultiLine","api.Element.ariaMultiSelectable","api.Element.ariaOrientation","api.Element.ariaPlaceholder","api.Element.ariaPosInSet","api.Element.ariaPressed","api.Element.ariaReadOnly","api.Element.ariaRelevant","api.Element.ariaRequired","api.Element.ariaRoleDescription","api.Element.ariaRowCount","api.Element.ariaRowIndex","api.Element.ariaRowSpan","api.Element.ariaSelected","api.Element.ariaSetSize","api.Element.ariaSort","api.Element.ariaValueMax","api.Element.ariaValueMin","api.Element.ariaValueNow","api.Element.ariaValueText","api.Element.role"],"description":"WAI-ARIA attributes have corresponding properties on Element and ElementInternals objects.","description_html":"WAI-ARIA attributes have corresponding properties on <code>Element</code> and <code>ElementInternals</code> objects.","name":"ARIA attribute reflection","spec":"https://w3c.github.io/aria/#accessibilityroleandproperties-correspondence","status":{"baseline":"low","baseline_low_date":"2023-10-24","support":{"chrome":"103","chrome_android":"103","edge":"103","firefox":"119","firefox_android":"119","safari":"12.1","safari_ios":"12.2"}}},"array":{"compat_features":["javascript.builtins.Array","javascript.builtins.Array.Array","javascript.builtins.Array.concat","javascript.builtins.Array.join","javascript.builtins.Array.length","javascript.builtins.Array.pop","javascript.builtins.Array.push","javascript.builtins.Array.reverse","javascript.builtins.Array.shift","javascript.builtins.Array.slice","javascript.builtins.Array.sort","javascript.builtins.Array.toLocaleString","javascript.builtins.Array.toString","javascript.builtins.Array.unshift","javascript.grammar.array_literals"],"description":"Arrays are ordered lists of JavaScript values.","description_html":"Arrays are ordered lists of JavaScript values.","group":"arrays","name":"Array (initial support)","snapshot":"ecmascript-1","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array-objects","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array-constructor","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.concat","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.join","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-properties-of-array-instances-length","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.pop","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.push","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.reverse","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.shift","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.slice","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.sort","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tolocalestring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tostring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.unshift","https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-array-initializer"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"array-at":{"compat_features":["javascript.builtins.Array.at","javascript.builtins.TypedArray.at"],"description":"The at() method of arrays and typed arrays returns the item at an index, including negative indices for getting items relative to the end of an array. Also known as the relative indexing method.","description_html":"The <code>at()</code> method of arrays and typed arrays returns the item at an index, including negative indices for getting items relative to the end of an array. Also known as the relative indexing method.","group":["arrays","typed-arrays"],"name":"Array at()","snapshot":"ecmascript-2022","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.at","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"92","chrome_android":"92","edge":"92","firefox":"90","firefox_android":"90","safari":"15.4","safari_ios":"15.4"}}},"array-by-copy":{"compat_features":["javascript.builtins.Array.toReversed","javascript.builtins.Array.toSorted","javascript.builtins.Array.toSpliced","javascript.builtins.Array.with","javascript.builtins.TypedArray.toReversed","javascript.builtins.TypedArray.toSorted","javascript.builtins.TypedArray.with"],"description":"The toReversed(), toSorted(), toSpliced(), and with() methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as sort() or reverse() that change arrays in place.","description_html":"The <code>toReversed()</code>, <code>toSorted()</code>, <code>toSpliced()</code>, and <code>with()</code> methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as <code>sort()</code> or <code>reverse()</code> that change arrays in place.","group":["arrays","typed-arrays"],"name":"Array by copy","snapshot":"ecmascript-2023","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.tospliced","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.with","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.toreversed","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tosorted","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.with"],"status":{"baseline":"low","baseline_low_date":"2023-07-04","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"115","firefox_android":"115","safari":"16","safari_ios":"16"}}},"array-copywithin":{"compat_features":["javascript.builtins.Array.copyWithin","javascript.builtins.TypedArray.copyWithin"],"description":"The copyWithin() method of arrays and typed arrays shifts or copies items of an array to another index of the array without changing its length.","description_html":"The <code>copyWithin()</code> method of arrays and typed arrays shifts or copies items of an array to another index of the array without changing its length.","group":["arrays","typed-arrays"],"name":"Array copyWithin()","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.copywithin","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"34","firefox_android":"34","safari":"10","safari_ios":"10"}}},"array-fill":{"compat_features":["javascript.builtins.Array.fill","javascript.builtins.TypedArray.fill"],"description":"The fill() method of arrays and typed arrays sets all or some items of an array to a given a value.","description_html":"The <code>fill()</code> method of arrays and typed arrays sets all or some items of an array to a given a value.","group":["arrays","typed-arrays"],"name":"Array fill()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.fill","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.fill"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"37","firefox_android":"37","safari":"10","safari_ios":"10"}}},"array-find":{"caniuse":["array-find","array-find-index"],"compat_features":["javascript.builtins.Array.find","javascript.builtins.Array.findIndex","javascript.builtins.TypedArray.find","javascript.builtins.TypedArray.findIndex"],"description":"The find() and findIndex() methods of arrays and typed arrays search an array for the first item that satisfies a test function.","description_html":"The <code>find()</code> and <code>findIndex()</code> methods of arrays and typed arrays search an array for the first item that satisfies a test function.","group":["arrays","typed-arrays"],"name":"Array find() and findIndex()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.findindex","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.find","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.findindex"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"37","firefox_android":"37","safari":"10","safari_ios":"10"}}},"array-findlast":{"compat_features":["javascript.builtins.Array.findLast","javascript.builtins.Array.findLastIndex","javascript.builtins.TypedArray.findLast","javascript.builtins.TypedArray.findLastIndex"],"description":"The findLast() and findLastIndex() methods of arrays and typed arrays search an array in reverse order for the first item that satisfies a test function.","description_html":"The <code>findLast()</code> and <code>findLastIndex()</code> methods of arrays and typed arrays search an array in reverse order for the first item that satisfies a test function.","group":["arrays","typed-arrays"],"name":"Array findLast() and findLastIndex()","snapshot":"ecmascript-2023","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.findlast","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.findlastindex","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.findlast","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.findlastindex"],"status":{"baseline":"low","baseline_low_date":"2022-08-23","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"104","firefox_android":"104","safari":"15.4","safari_ios":"15.4"}}},"array-flat":{"caniuse":"array-flat","compat_features":["javascript.builtins.Array.flat","javascript.builtins.Array.flatMap"],"description":"The flat() and flatMap() methods for arrays creates a new array such that each nested array item is concatenated into it.","description_html":"The <code>flat()</code> and <code>flatMap()</code> methods for arrays creates a new array such that each nested array item is concatenated into it.","group":"arrays","name":"Array flat() and flatMap()","snapshot":"ecmascript-2019","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.flat","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.flatmap"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"62","firefox_android":"62","safari":"12","safari_ios":"12"}}},"array-from":{"compat_features":["javascript.builtins.Array.from","javascript.builtins.TypedArray.from"],"description":"The Array.from() and typed array .from() static methods copy items from an iterable or array-like object to make a new array.","description_html":"The <code>Array.from()</code> and typed array <code>.from()</code> static methods copy items from an iterable or array-like object to make a new array.","group":["arrays","typed-arrays"],"name":"Array.from()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.from","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.of"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"38","firefox_android":"38","safari":"10","safari_ios":"10"}}},"array-fromasync":{"compat_features":["javascript.builtins.Array.fromAsync"],"description":"The Array.fromAsync() static method copies items from an async iterable object to make a new array.","description_html":"The <code>Array.fromAsync()</code> static method copies items from an async iterable object to make a new array.","group":"arrays","name":"Array.fromAsync()","spec":"https://tc39.es/proposal-array-from-async/#sec-array.fromAsync","status":{"baseline":"low","baseline_low_date":"2024-01-25","support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"115","firefox_android":"115","safari":"16.4","safari_ios":"16.4"}}},"array-group":{"compat_features":["javascript.builtins.Map.groupBy","javascript.builtins.Object.groupBy"],"description":"The Object.groupBy() and Map.groupBy() static methods group values of arrays and iterables based on a function that returns a key for each value.","description_html":"The <code>Object.groupBy()</code> and <code>Map.groupBy()</code> static methods group values of arrays and iterables based on a function that returns a key for each value.","group":"maps","name":"Array grouping","spec":"https://tc39.es/proposal-array-grouping/","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"119","firefox_android":"119","safari":"17.4","safari_ios":"17.4"}}},"array-includes":{"compat_features":["javascript.builtins.Array.includes","javascript.builtins.TypedArray.includes"],"description":"The includes() method of arrays and typed arrays returns whether a given value appears in the array.","description_html":"The <code>includes()</code> method of arrays and typed arrays returns whether a given value appears in the array.","group":["arrays","typed-arrays"],"name":"Array includes()","snapshot":"ecmascript-2016","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.includes","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.includes"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"47","chrome_android":"47","edge":"14","firefox":"43","firefox_android":"43","safari":"10","safari_ios":"10"}}},"array-isarray":{"compat_features":["javascript.builtins.Array.isArray"],"description":"The Array.isArray() static method checks whether a value is an array.","description_html":"The <code>Array.isArray()</code> static method checks whether a value is an array.","group":"arrays","name":"Array.isArray()","snapshot":"ecmascript-5","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.isarray","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"array-iteration-methods":{"compat_features":["javascript.builtins.Array.every","javascript.builtins.Array.filter","javascript.builtins.Array.forEach","javascript.builtins.Array.indexOf","javascript.builtins.Array.lastIndexOf","javascript.builtins.Array.map","javascript.builtins.Array.reduce","javascript.builtins.Array.reduceRight","javascript.builtins.Array.some"],"description":"Array iteration methods","description_html":"Array iteration methods","group":"arrays","name":"Array iteration methods","snapshot":"ecmascript-5","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.every","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.filter","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.foreach","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.indexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.lastindexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.map","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.reduce","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.reduceright","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.some"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"array-iterators":{"compat_features":["javascript.builtins.Array.@@iterator","javascript.builtins.Array.entries","javascript.builtins.Array.keys","javascript.builtins.Array.values"],"description":"Arrays are iterable with the for…of statement and enumerable with the methods entries(), keys(), and values().","description_html":"Arrays are iterable with the <code>for…of</code> statement and enumerable with the methods <code>entries()</code>, <code>keys()</code>, and <code>values()</code>.","group":["arrays","iterators"],"name":"Array iterators","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype-@@iterator","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.entries","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.keys","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.values"],"status":{"baseline":"high","baseline_high_date":"2020-11-09","baseline_low_date":"2018-05-09","support":{"chrome":"66","chrome_android":"66","edge":"14","firefox":"60","firefox_android":"60","safari":"10","safari_ios":"10"}}},"array-of":{"compat_features":["javascript.builtins.Array.of","javascript.builtins.TypedArray.of"],"description":"The Array.of() and typed array .of() static methods create new arrays from the values of any number of arguments.","description_html":"The <code>Array.of()</code> and typed array <code>.of()</code> static methods create new arrays from the values of any number of arguments.","group":["arrays","typed-arrays"],"name":"Array.of()","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.of","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.of"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"38","firefox_android":"38","safari":"10","safari_ios":"10"}}},"array-splice":{"compat_features":["javascript.builtins.Array.splice"],"description":"The array splice() method changes an array in-place. You can use it to delete items, overwrite items, or insert items, starting from an index.","description_html":"The array <code>splice()</code> method changes an array in-place. You can use it to delete items, overwrite items, or insert items, starting from an index.","group":"arrays","name":"Array splice()","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.splice","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"article":{"compat_features":["html.elements.article"],"description":"The <article> element represents self-contained content, which is intended to be independently distributable or reusable, such as a comment, a blog post, or news article.","description_html":"The <code>&#x3C;article></code> element represents self-contained content, which is intended to be independently distributable or reusable, such as a comment, a blog post, or news article.","group":"html-elements","name":"<article>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-article-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"aside":{"compat_features":["html.elements.aside"],"description":"The <aside> element represents a portion of a document whose content is only indirectly related to the document's main content.","description_html":"The <code>&#x3C;aside></code> element represents a portion of a document whose content is only indirectly related to the document's main content.","group":"html-elements","name":"<aside>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-aside-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"aspect-ratio":{"compat_features":["css.properties.aspect-ratio","html.elements.img.aspect_ratio_computed_from_attributes","html.elements.video.aspect_ratio_computed_from_attributes"],"description":"The aspect-ratio CSS property controls the width-to-height ratio of elements. For <img> and <video> elements, the width and height attributes used together with height: auto control the aspect ratio while the image/video is loading.","description_html":"The <code>aspect-ratio</code> CSS property controls the width-to-height ratio of elements. For <code>&#x3C;img></code> and <code>&#x3C;video></code> elements, the <code>width</code> and <code>height</code> attributes used together with <code>height: auto</code> control the aspect ratio while the image/video is loading.","name":"aspect-ratio","spec":"https://drafts.csswg.org/css-sizing-4/#aspect-ratio","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"89","firefox_android":"89","safari":"15","safari_ios":"15"}}},"async-await":{"caniuse":"async-functions","compat_features":["javascript.builtins.AsyncFunction","javascript.builtins.AsyncFunction.AsyncFunction","javascript.operators.async_function","javascript.operators.await","javascript.statements.async_function"],"description":"The async and await keywords allow you to use the asynchronous, promise-based behavior of a function without using promise chains.","description_html":"The <code>async</code> and <code>await</code> keywords allow you to use the asynchronous, promise-based behavior of a function without using promise chains.","group":"javascript","name":"Async functions","snapshot":"ecmascript-2017","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-async-function-definitions","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"55","chrome_android":"55","edge":"15","firefox":"52","firefox_android":"52","safari":"10.1","safari_ios":"10.3"}}},"async-clipboard":{"caniuse":"async-clipboard","compat_features":["api.Clipboard","api.Clipboard.read","api.Clipboard.readText","api.Clipboard.write","api.Clipboard.writeText","api.ClipboardItem","api.ClipboardItem.ClipboardItem","api.ClipboardItem.getType","api.ClipboardItem.presentationStyle","api.ClipboardItem.types","api.Navigator.clipboard"],"description":"The navigator.clipboard API asynchronously reads and writes to the system clipboard.","description_html":"The <code>navigator.clipboard</code> API asynchronously reads and writes to the system clipboard.","group":"clipboard","name":"Async clipboard","spec":"https://w3c.github.io/clipboard-apis/#async-clipboard-api","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"127","firefox_android":"127","safari":"13.1","safari_ios":"13.4"}}},"async-iterable-streams":{"compat_features":["api.ReadableStream.@@asyncIterator"],"description":"Asynchronous iteration of a stream allows you to use for await...of loops to iterate through a stream's incoming data.","description_html":"Asynchronous iteration of a stream allows you to use <code>for await...of</code> loops to iterate through a stream's incoming data.","group":"streams","name":"Asynchronously iterable streams","spec":"https://streams.spec.whatwg.org/#rs-asynciterator","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"110","firefox_android":"110"}}},"audio":{"caniuse":"audio","compat_features":["api.HTMLAudioElement","api.HTMLAudioElement.Audio","html.elements.audio","html.elements.audio.autoplay","html.elements.audio.controls","html.elements.audio.crossorigin","html.elements.audio.loop","html.elements.audio.muted","html.elements.audio.preload","html.elements.audio.src"],"description":"The <audio> element plays sound such as audio effects or music, optionally with controls provided by the browser.","description_html":"The <code>&#x3C;audio></code> element plays sound such as audio effects or music, optionally with controls provided by the browser.","group":["media-elements","html-elements"],"name":"<audio>","spec":"https://html.spec.whatwg.org/multipage/media.html#audio","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"3"}}},"audio-session":{"compat_features":["api.AudioSession","api.AudioSession.type","api.Navigator.audioSession"],"description":"The navigator.audioSession API controls how audio playback interacts with other applications. For example, playing music can pause audio from other applications, while ambient audio can play at the same time.","description_html":"The <code>navigator.audioSession</code> API controls how audio playback interacts with other applications. For example, playing music can pause audio from other applications, while ambient audio can play at the same time.","name":"Audio session","spec":"https://w3c.github.io/audio-session/","status":{"baseline":false,"support":{"safari":"16.4","safari_ios":"16.4"}}},"audio-video-tracks":{"caniuse":["audiotracks","videotracks"],"compat_features":["api.AudioTrack","api.AudioTrack.enabled","api.AudioTrack.id","api.AudioTrack.kind","api.AudioTrack.label","api.AudioTrack.language","api.AudioTrackList","api.AudioTrackList.addtrack_event","api.AudioTrackList.change_event","api.AudioTrackList.getTrackById","api.AudioTrackList.length","api.AudioTrackList.removetrack_event","api.HTMLMediaElement.audioTracks","api.HTMLMediaElement.videoTracks","api.VideoTrack","api.VideoTrack.id","api.VideoTrack.kind","api.VideoTrack.label","api.VideoTrack.language","api.VideoTrack.selected","api.VideoTrackList","api.VideoTrackList.addtrack_event","api.VideoTrackList.change_event","api.VideoTrackList.getTrackById","api.VideoTrackList.length","api.VideoTrackList.removetrack_event","api.VideoTrackList.selectedIndex"],"description":"The audioTracks and videoTracks APIs for media elements switch audio and video tracks during playback.","description_html":"The <code>audioTracks</code> and <code>videoTracks</code> APIs for media elements switch audio and video tracks during playback.","group":"media-elements","name":"Audio and video tracks","spec":"https://html.spec.whatwg.org/multipage/media.html#media-resources-with-multiple-media-tracks","status":{"baseline":false,"support":{"safari":"8","safari_ios":"8"}}},"audio-worklet":{"compat_features":["api.AudioWorklet","api.AudioWorkletGlobalScope","api.AudioWorkletGlobalScope.currentFrame","api.AudioWorkletGlobalScope.currentTime","api.AudioWorkletGlobalScope.registerProcessor","api.AudioWorkletGlobalScope.sampleRate","api.AudioWorkletNode","api.AudioWorkletNode.AudioWorkletNode","api.AudioWorkletNode.parameters","api.AudioWorkletNode.port","api.AudioWorkletNode.processorerror_event","api.AudioWorkletProcessor","api.AudioWorkletProcessor.AudioWorkletProcessor","api.AudioWorkletProcessor.port","api.BaseAudioContext.audioWorklet"],"description":"The AudioWorklet API runs module code in a separate thread, specifically for non-blocking, low latency audio processing.","description_html":"The <code>AudioWorklet</code> API runs module code in a separate thread, specifically for non-blocking, low latency audio processing.","group":"web-audio","name":"AudioWorklet","spec":"https://webaudio.github.io/web-audio-api/#AudioWorklet","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"76","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"autofill":{"compat_features":["css.selectors.autofill"],"description":"The :autofill pseudo-class matches <input> elements that have been filled in automatically by the browser.","description_html":"The <code>:autofill</code> pseudo-class matches <code>&#x3C;input></code> elements that have been filled in automatically by the browser.","group":"forms","name":":autofill","spec":"https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill","status":{"baseline":"low","baseline_low_date":"2023-02-09","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"86","firefox_android":"86","safari":"15","safari_ios":"15"}}},"autofocus":{"caniuse":"autofocus","compat_features":["api.HTMLElement.autofocus","api.MathMLElement.autofocus","api.SVGElement.autofocus","html.global_attributes.autofocus"],"description":"The autofocus HTML attribute gives focus to an element on page load.","description_html":"The <code>autofocus</code> HTML attribute gives focus to an element on page load.","name":"Autofocus","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-autofocus-attribute","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"autonomous-custom-elements":{"compat_features":["api.CustomElementRegistry","api.CustomElementRegistry.define","api.Window.customElements","css.selectors.defined"],"description":"Autonomous custom elements are HTML elements with a hyphenated tag name (like <example-element>) that have behaviors you define.","description_html":"Autonomous custom elements are HTML elements with a hyphenated tag name (like <code>&#x3C;example-element></code>) that have behaviors you define.","group":"custom-elements","name":"Autonomous custom elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#autonomous-custom-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"63","firefox_android":"63","safari":"10.1","safari_ios":"10.3"}}},"avif":{"caniuse":"avif","description":"AVIF (AV1 Image File Format) is an image format based on the AV1 video format.","description_html":"AVIF (AV1 Image File Format) is an image format based on the AV1 video format.","name":"AVIF","spec":"https://aomediacodec.github.io/av1-avif/","status":{"baseline":"low","baseline_low_date":"2024-01-26","support":{"chrome":"85","chrome_android":"85","edge":"121","firefox":"93","firefox_android":"93","safari":"16","safari_ios":"16"}}},"b":{"compat_features":["html.elements.b"],"description":"The <b> HTML element draws reader's attention to text, styling text as bold by default.","description_html":"The <code>&#x3C;b></code> HTML element draws reader's attention to text, styling text as bold by default.","group":"html-elements","name":"<b>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-b-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"backdrop-filter":{"caniuse":"css-backdrop-filter","compat_features":["css.properties.backdrop-filter"],"description":"The backdrop-filter CSS property applies graphical effects such as blurring or color shifting to the area behind an element.","description_html":"The <code>backdrop-filter</code> CSS property applies graphical effects such as blurring or color shifting to the area behind an element.","name":"backdrop-filter","spec":"https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty","status":{"baseline":false,"support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"103","firefox_android":"103"}}},"background-clip":{"compat_features":["css.properties.background-clip","css.properties.background-clip.border-box","css.properties.background-clip.content-box","css.properties.background-clip.padding-box"],"description":"The background-clip CSS property sets the extent of the background: the padding box, the content box, or the default border box.","description_html":"The <code>background-clip</code> CSS property sets the extent of the background: the padding box, the content box, or the default border box.","name":"background-clip","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-clip","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"background-clip-text":{"compat_features":["css.properties.background-clip.text"],"description":"The background-clip: text CSS declaration draws the background underneath only the text in the element.","description_html":"The <code>background-clip: text</code> CSS declaration draws the background underneath only the text in the element.","name":"background-clip: text","spec":"https://drafts.csswg.org/css-backgrounds-4/#background-clip","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"49","firefox_android":"49","safari":"14","safari_ios":"14"}}},"background-fetch":{"compat_features":["api.BackgroundFetchEvent","api.BackgroundFetchEvent.BackgroundFetchEvent","api.BackgroundFetchEvent.registration","api.BackgroundFetchManager","api.BackgroundFetchManager.fetch","api.BackgroundFetchManager.get","api.BackgroundFetchManager.getIds","api.BackgroundFetchRecord","api.BackgroundFetchRecord.request","api.BackgroundFetchRecord.responseReady","api.BackgroundFetchRegistration","api.BackgroundFetchRegistration.abort","api.BackgroundFetchRegistration.downloadTotal","api.BackgroundFetchRegistration.downloaded","api.BackgroundFetchRegistration.failureReason","api.BackgroundFetchRegistration.id","api.BackgroundFetchRegistration.match","api.BackgroundFetchRegistration.matchAll","api.BackgroundFetchRegistration.progress_event","api.BackgroundFetchRegistration.recordsAvailable","api.BackgroundFetchRegistration.result","api.BackgroundFetchRegistration.uploadTotal","api.BackgroundFetchRegistration.uploaded","api.BackgroundFetchUpdateUIEvent","api.BackgroundFetchUpdateUIEvent.BackgroundFetchUpdateUIEvent","api.BackgroundFetchUpdateUIEvent.updateUI","api.ServiceWorkerGlobalScope.backgroundfetchabort_event","api.ServiceWorkerGlobalScope.backgroundfetchclick_event","api.ServiceWorkerGlobalScope.backgroundfetchfail_event","api.ServiceWorkerGlobalScope.backgroundfetchsuccess_event","api.ServiceWorkerRegistration.backgroundFetch"],"description":"Background fetch downloads data in the background even when the web page is closed.","description_html":"Background fetch downloads data in the background even when the web page is closed.","name":"Background fetch","spec":"https://wicg.github.io/background-fetch/","status":{"baseline":false,"support":{"chrome":"74","chrome_android":"74","edge":"79"}}},"background-sync":{"compat_features":["api.ServiceWorkerGlobalScope.sync_event","api.ServiceWorkerRegistration.sync","api.SyncEvent","api.SyncEvent.SyncEvent","api.SyncEvent.lastChance","api.SyncEvent.tag","api.SyncManager","api.SyncManager.getTags","api.SyncManager.register"],"description":"The background synchronization API registers a service worker callback to run only when the device is no longer offline. You can use this to let users continue using your app while offline and synchronize with a server after reconnecting.","description_html":"The background synchronization API registers a service worker callback to run only when the device is no longer offline. You can use this to let users continue using your app while offline and synchronize with a server after reconnecting.","name":"Background sync","spec":"https://wicg.github.io/background-sync/spec/","status":{"baseline":false,"support":{"chrome":"49","chrome_android":"49","edge":"79"}}},"base":{"compat_features":["api.HTMLBaseElement","api.HTMLBaseElement.href","api.HTMLBaseElement.target","html.elements.base","html.elements.base.href","html.elements.base.href.forbid_data_javascript_urls","html.elements.base.href.relative_url","html.elements.base.target"],"description":"The <base> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.","description_html":"The <code>&#x3C;base></code> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.","group":"html-elements","name":"<base>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-base-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"baseline-source":{"compat_features":["css.properties.baseline-source","css.properties.baseline-source.auto","css.properties.baseline-source.first","css.properties.baseline-source.last"],"description":"The baseline-source CSS property controls how inline-level boxes with multiple lines of text are aligned with the surrounding text. By default, which typographic baseline is used depends on the display property value.","description_html":"The <code>baseline-source</code> CSS property controls how inline-level boxes with multiple lines of text are aligned with the surrounding text. By default, which typographic baseline is used depends on the <code>display</code> property value.","name":"baseline-source","spec":"https://drafts.csswg.org/css-inline-3/#baseline-source","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"115","firefox_android":"115"}}},"bigint":{"caniuse":"bigint","compat_features":["javascript.builtins.BigInt","javascript.builtins.BigInt.BigInt","javascript.builtins.BigInt.asIntN","javascript.builtins.BigInt.asUintN","javascript.builtins.BigInt.toLocaleString","javascript.builtins.BigInt.toString","javascript.builtins.BigInt.valueOf"],"description":"The BigInt JavaScript type represents integers of any size, including integers too large for the primitive Number type.","description_html":"The <code>BigInt</code> JavaScript type represents integers of any size, including integers too large for the primitive <code>Number</code> type.","group":"javascript","name":"BigInt","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-bigint-objects","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"67","chrome_android":"67","edge":"79","firefox":"68","firefox_android":"68","safari":"14","safari_ios":"14"}}},"blocking-render":{"compat_features":["api.HTMLLinkElement.blocking","api.HTMLScriptElement.blocking","api.HTMLStyleElement.blocking","html.elements.link.blocking","html.elements.script.blocking","html.elements.style.blocking"],"description":"The blocking=\"render\" attribute for <link>, <script>, and <style> elements blocks rendering until the external script or stylesheet has been loaded. For <link rel=\"expect\">, rendering is blocked until a specific element is in the DOM.","description_html":"The <code>blocking=\"render\"</code> attribute for <code>&#x3C;link></code>, <code>&#x3C;script></code>, and <code>&#x3C;style></code> elements blocks rendering until the external script or stylesheet has been loaded. For <code>&#x3C;link rel=\"expect\"></code>, rendering is blocked until a specific element is in the DOM.","group":"html","name":"blocking=\"render\"","spec":"https://html.spec.whatwg.org/multipage/urls-and-fetching.html#blocking-attributes","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105"}}},"blockquote":{"compat_features":["html.elements.blockquote","html.elements.blockquote.cite"],"description":"The <blockquote> element represents an extended quotation, styling contents as an indented block by default.","description_html":"The <code>&#x3C;blockquote></code> element represents an extended quotation, styling contents as an indented block by default.","group":"html-elements","name":"<blockquote>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-blockquote-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"body":{"compat_features":["api.HTMLBodyElement","html.elements.body"],"description":"The <body> element represents the content of an HTML document.","description_html":"The <code>&#x3C;body></code> element represents the content of an HTML document.","group":"html-elements","name":"<body>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-body-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"border-image":{"caniuse":"border-image","compat_features":["css.properties.border-image","css.properties.border-image-outset","css.properties.border-image-repeat","css.properties.border-image-repeat.round","css.properties.border-image-repeat.space","css.properties.border-image-slice","css.properties.border-image-source","css.properties.border-image-width","css.properties.border-image.fill","css.properties.border-image.gradient","css.properties.border-image.optional_border_image_slice"],"description":"The border-image CSS property draws an image around an element.","description_html":"The <code>border-image</code> CSS property draws an image around an element.","name":"Border images","spec":"https://drafts.csswg.org/css-backgrounds-3/#border-images","status":{"baseline":"high","baseline_high_date":"2019-08-01","baseline_low_date":"2017-02-01","support":{"chrome":"56","chrome_android":"56","edge":"12","firefox":"50","firefox_android":"50","safari":"9.1","safari_ios":"9.3"}}},"br":{"compat_features":["api.HTMLBRElement","html.elements.br"],"description":"The <br> element produces line breaks in text.","description_html":"The <code>&#x3C;br></code> element produces line breaks in text.","group":"html-elements","name":"<br>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-br-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"broadcast-channel":{"caniuse":"broadcastchannel","compat_features":["api.BroadcastChannel","api.BroadcastChannel.BroadcastChannel","api.BroadcastChannel.close","api.BroadcastChannel.message_event","api.BroadcastChannel.messageerror_event","api.BroadcastChannel.name","api.BroadcastChannel.postMessage"],"description":"The BroadcastChannel API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","description_html":"The <code>BroadcastChannel</code> API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","name":"BroadcastChannel","spec":"https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"38","firefox_android":"38","safari":"15.4","safari_ios":"15.4"}}},"button":{"compat_features":["api.HTMLButtonElement","api.HTMLButtonElement.disabled","api.HTMLButtonElement.form","api.HTMLButtonElement.formAction","api.HTMLButtonElement.formEnctype","api.HTMLButtonElement.formMethod","api.HTMLButtonElement.formNoValidate","api.HTMLButtonElement.formTarget","api.HTMLButtonElement.labels","api.HTMLButtonElement.name","api.HTMLButtonElement.type","api.HTMLButtonElement.value","html.elements.button","html.elements.button.disabled","html.elements.button.form","html.elements.button.formaction","html.elements.button.formenctype","html.elements.button.formmethod","html.elements.button.formnovalidate","html.elements.button.formtarget","html.elements.button.name","html.elements.button.type","html.elements.button.value"],"description":"The <button> element is an interactive element activated by a user gesture that performs an action such as submitting a form, or opening a dialog.","description_html":"The <code>&#x3C;button></code> element is an interactive element activated by a user gesture that performs an action such as submitting a form, or opening a dialog.","group":["forms","html-elements"],"name":"<button>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"calc":{"caniuse":"calc","compat_features":["css.types.calc"],"description":"The calc() CSS function computes mathematical expressions such a calc(100%/3 - 1em).","description_html":"The <code>calc()</code> CSS function computes mathematical expressions such a <code>calc(100%/3 - 1em)</code>.","name":"calc()","spec":"https://drafts.csswg.org/css-values-3/#calc-notation","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"28","edge":"12","firefox":"16","firefox_android":"16","safari":"7","safari_ios":"7"}}},"calc-constants":{"compat_features":["css.types.calc-constant","css.types.calc-constant.NaN","css.types.calc-constant.e","css.types.calc-constant.infinity","css.types.calc-constant.pi"],"description":"The e, pi, infinity, and NaN constants are accepted in CSS math functions such as calc().","description_html":"The <code>e</code>, <code>pi</code>, <code>infinity</code>, and <code>NaN</code> constants are accepted in CSS math functions such as <code>calc()</code>.","name":"calc() constants","spec":"https://drafts.csswg.org/css-values-4/#calc-keywords","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"114","firefox_android":"114","safari":"16","safari_ios":"16"}}},"canvas":{"compat_features":["api.HTMLCanvasElement","api.HTMLCanvasElement.getContext","api.HTMLCanvasElement.height","api.HTMLCanvasElement.toBlob","api.HTMLCanvasElement.toDataURL","api.HTMLCanvasElement.width","html.elements.canvas","html.elements.canvas.height","html.elements.canvas.width"],"description":"The <canvas> HTML element is a space to draw graphics in, using the 2D canvas API, WebGL, or WebGPU.","description_html":"The <code>&#x3C;canvas></code> HTML element is a space to draw graphics in, using the 2D canvas API, WebGL, or WebGPU.","group":["canvas","html-elements"],"name":"<canvas>","spec":"https://html.spec.whatwg.org/multipage/canvas.html#canvas","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1.5","firefox_android":"4","safari":"2","safari_ios":"1"}}},"canvas-context-lost":{"compat_features":["api.CanvasRenderingContext2D.isContextLost","api.HTMLCanvasElement.contextlost_event","api.HTMLCanvasElement.contextrestored_event","api.OffscreenCanvas.contextlost_event","api.OffscreenCanvas.contextrestored_event","api.OffscreenCanvasRenderingContext2D.isContextLost"],"description":"The contextlost event for <canvas> fires when the canvas backing storage is lost, while the contextrestored event fires when it is recreated.","description_html":"The <code>contextlost</code> event for <code>&#x3C;canvas></code> fires when the canvas backing storage is lost, while the <code>contextrestored</code> event fires when it is recreated.","group":"canvas","name":"contextlost and contextrestored","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#context-lost-steps","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"125","firefox_android":"125"}}},"canvas-createconicgradient":{"compat_features":["api.CanvasRenderingContext2D.createConicGradient","api.OffscreenCanvasRenderingContext2D.createConicGradient"],"description":"The createConicGradient() methods draw a conic gradient to a 2D canvas.","description_html":"The <code>createConicGradient()</code> methods draw a conic gradient to a 2D canvas.","group":"canvas","name":"Canvas createConicGradient()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-createconicgradient-dev","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"112","firefox_android":"112","safari":"16.4","safari_ios":"16.4"}}},"canvas-reset":{"compat_features":["api.CanvasRenderingContext2D.reset","api.OffscreenCanvasRenderingContext2D.reset"],"description":"The reset() method clears a canvas to its initial state.","description_html":"The <code>reset()</code> method clears a canvas to its initial state.","group":"canvas","name":"Canvas reset()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-reset","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"113","firefox_android":"113","safari":"17.2","safari_ios":"17.2"}}},"canvas-roundrect":{"compat_features":["api.CanvasRenderingContext2D.roundRect","api.OffscreenCanvasRenderingContext2D.roundRect"],"description":"The roundRect() methods draw a rounded rectangle to a 2D canvas.","description_html":"The <code>roundRect()</code> methods draw a rounded rectangle to a 2D canvas.","group":"canvas","name":"Canvas roundRect()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-roundrect","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"112","firefox_android":"112","safari":"16.4","safari_ios":"16.4"}}},"canvas-text":{"compat_features":["api.CanvasRenderingContext2D.fillText","api.CanvasRenderingContext2D.measureText","api.CanvasRenderingContext2D.strokeText","api.CanvasRenderingContext2D.textAlign","api.CanvasRenderingContext2D.textBaseline","api.TextMetrics","api.TextMetrics.width"],"description":"The fillText() and strokeText() methods draw text to a 2D canvas. The measureText() method measures the width and other metrics which can be used to position the text.","description_html":"The <code>fillText()</code> and <code>strokeText()</code> methods draw text to a 2D canvas. The <code>measureText()</code> method measures the width and other metrics which can be used to position the text.","group":"canvas","name":"Canvas text metrics","spec":"https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"31","safari":"4","safari_ios":"3.2"}}},"canvas-text-baselines":{"compat_features":["api.TextMetrics.alphabeticBaseline","api.TextMetrics.hangingBaseline","api.TextMetrics.ideographicBaseline"],"description":"The alphabeticBaseline, hangingBaseline, and ideographicBaseline canvas text metrics measure the distance from the used textBaseline to the respective typographic baseline.","description_html":"The <code>alphabeticBaseline</code>, <code>hangingBaseline</code>, and <code>ideographicBaseline</code> canvas text metrics measure the distance from the used <code>textBaseline</code> to the respective typographic baseline.","group":"canvas","name":"Canvas text baselines","spec":["https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-alphabeticbaseline-dev","https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-hangingbaseline-dev","https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-ideographicbaseline-dev"],"status":{"baseline":"low","baseline_low_date":"2023-10-13","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"116","firefox_android":"116","safari":"11.1","safari_ios":"11.3"}}},"cap":{"compat_features":["css.types.length.cap"],"description":"The CSS cap unit corresponds to the height of Latin capital letters.","description_html":"The CSS <code>cap</code> unit corresponds to the height of Latin capital letters.","name":"cap unit","spec":"https://drafts.csswg.org/css-values-4/#cap","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"97","firefox_android":"97","safari":"17.2","safari_ios":"17.2"}}},"cascade-layers":{"caniuse":"css-cascade-layers","compat_features":["api.CSSImportRule.layerName","api.CSSLayerBlockRule","api.CSSLayerBlockRule.name","api.CSSLayerStatementRule","api.CSSLayerStatementRule.nameList","css.at-rules.import.layer","css.at-rules.layer"],"description":"The @layer CSS at-rule avoids specificity conflicts by providing priority levels for different groups of CSS rules, such as low-priority styles like resets, and high-priority styles like UI components.","description_html":"The <code>@layer</code> CSS at-rule avoids specificity conflicts by providing priority levels for different groups of CSS rules, such as low-priority styles like resets, and high-priority styles like UI components.","name":"Cascade layers","spec":"https://drafts.csswg.org/css-cascade-5/#layering","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"97","firefox_android":"97","safari":"15.4","safari_ios":"15.4"}}},"check-visibility":{"compat_features":["api.Element.checkVisibility"],"description":"The checkVisibility() method checks if an element is potentially visible, with optional parameters for the kinds of visibility to check. For example, it checks whether the element has the style display: none, but can also check for visibility: hidden.","description_html":"The <code>checkVisibility()</code> method checks if an element is potentially visible, with optional parameters for the kinds of visibility to check. For example, it checks whether the element has the style <code>display: none</code>, but can also check for <code>visibility: hidden</code>.","name":"checkVisibility()","spec":"https://drafts.csswg.org/cssom-view-1/#dom-element-checkvisibility","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"106","firefox_android":"106","safari":"17.4","safari_ios":"17.4"}}},"cite":{"compat_features":["html.elements.cite"],"description":"The <cite> element represents the title of a quoted, referenced, or mentioned creative work, such as a film or book.","description_html":"The <code>&#x3C;cite></code> element represents the title of a quoted, referenced, or mentioned creative work, such as a film or book.","group":"html-elements","name":"<cite>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-cite-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"class-syntax":{"caniuse":"es6-class","compat_features":["javascript.classes","javascript.classes.constructor","javascript.classes.extends","javascript.classes.static","javascript.operators.super","javascript.statements.class"],"description":"Classes are an object-oriented syntax for JavaScript prototypes.","description_html":"Classes are an object-oriented syntax for JavaScript prototypes.","group":"javascript","name":"Classes","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-class-definitions","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"42","chrome_android":"42","edge":"13","firefox":"45","firefox_android":"45","safari":"10.1","safari_ios":"10.3"}}},"clipboard-supports":{"compat_features":["api.ClipboardItem.supports_static"],"description":"The ClipboardItem.supports() static method checks if the browser supports writing data types such as \"image/svg+xml\" or other custom formats to the system clipboard.","description_html":"The <code>ClipboardItem.supports()</code> static method checks if the browser supports writing data types such as \"image/svg+xml\" or other custom formats to the system clipboard.","group":"clipboard","name":"ClipboardItem.supports()","spec":"https://w3c.github.io/clipboard-apis/#dom-clipboarditem-supports","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"127","firefox_android":"127"}}},"clipboard-unsanitized-formats":{"compat_features":["api.Clipboard.read.formats_unsanitized_parameter"],"description":"The optional formats.unsanitized parameter of the navigator.clipboard.read() method reads unsanitized data from the system clipboard.","description_html":"The optional <code>formats.unsanitized</code> parameter of the <code>navigator.clipboard.read()</code> method reads unsanitized data from the system clipboard.","group":"clipboard","name":"Read unsanitized clipboard data","spec":"https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized","status":{"baseline":false,"support":{"chrome":"122","chrome_android":"122","edge":"122"}}},"code":{"compat_features":["html.elements.code"],"description":"The <code> element displays its contents as a fragment of computer code.","description_html":"The <code>&#x3C;code></code> element displays its contents as a fragment of computer code.","group":"html-elements","name":"<code>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"color-function":{"caniuse":"css-color-function","compat_features":["css.types.color.color","css.types.color.color.mixed_type_parameters"],"description":"The color() function defines a color within a given color space. Wide gamut color spaces like display-p3 allow showing more vibrant and saturated colors than the standard srgb color space.","description_html":"The <code>color()</code> function defines a color within a given color space. Wide gamut color spaces like <code>display-p3</code> allow showing more vibrant and saturated colors than the standard <code>srgb</code> color space.","name":"color()","spec":"https://drafts.csswg.org/css-color-4/#color-function","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"15","safari_ios":"15"}}},"color-mix":{"compat_features":["css.types.color.color-mix"],"description":"The color-mix() function mixes two colors in a given color space and by a given amount. Commonly, lighter or darker variations of a color are created by mixing with white or black.","description_html":"The <code>color-mix()</code> function mixes two colors in a given color space and by a given amount. Commonly, lighter or darker variations of a color are created by mixing with white or black.","name":"color-mix()","spec":"https://drafts.csswg.org/css-color-5/#color-mix","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"16.2","safari_ios":"16.2"}}},"color-scheme":{"compat_features":["css.properties.color-scheme","css.properties.color-scheme.only_dark","css.properties.color-scheme.only_light","html.elements.meta.name.color-scheme"],"description":"The color-scheme CSS property sets which color schemes (light or dark) an element uses and may prevent automatic dark mode adjustments by the browser.","description_html":"The <code>color-scheme</code> CSS property sets which color schemes (light or dark) an element uses and may prevent automatic dark mode adjustments by the browser.","name":"color-scheme","spec":"https://drafts.csswg.org/css-color-adjust-1/#color-scheme-prop","status":{"baseline":"low","baseline_low_date":"2022-02-03","support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"96","firefox_android":"96","safari":"13","safari_ios":"13"}}},"colrv1":{"caniuse":"colr-v1","compat_features":["css.at-rules.font-face.OpenType_COLRv1"],"description":"COLRv1 is a font format that supports multi-color glyphs.","description_html":"COLRv1 is a font format that supports multi-color glyphs.","group":"fonts","name":"COLRv1","spec":"https://www.iso.org/standard/87621.html","status":{"baseline":false,"support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"107","firefox_android":"107"}}},"column-breaks":{"compat_features":["css.properties.break-after.multicol_context","css.properties.break-after.multicol_context.avoid","css.properties.break-after.multicol_context.avoid-column","css.properties.break-after.multicol_context.column","css.properties.break-before.multicol_context","css.properties.break-before.multicol_context.avoid","css.properties.break-before.multicol_context.avoid-column","css.properties.break-before.multicol_context.column","css.properties.break-inside.multicol_context","css.properties.break-inside.multicol_context.avoid-column"],"description":"In columnar layouts (created by the columns or column-count CSS properties), the break-after, break-before, break-inside properties control where columns start or end.","description_html":"In columnar layouts (created by the <code>columns</code> or <code>column-count</code> CSS properties), the <code>break-after</code>, <code>break-before</code>, <code>break-inside</code> properties control where columns start or end.","group":"layout","name":"Column breaks","spec":"https://drafts.csswg.org/css-break-3/#breaking-controls","status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102"}}},"compression-streams":{"compat_features":["api.CompressionStream","api.CompressionStream.CompressionStream","api.CompressionStream.CompressionStream.deflate","api.CompressionStream.CompressionStream.deflate-raw","api.CompressionStream.CompressionStream.gzip","api.CompressionStream.readable","api.CompressionStream.writable","api.DecompressionStream","api.DecompressionStream.DecompressionStream","api.DecompressionStream.DecompressionStream.deflate","api.DecompressionStream.DecompressionStream.deflate-raw","api.DecompressionStream.DecompressionStream.gzip","api.DecompressionStream.readable","api.DecompressionStream.writable"],"description":"The CompressionStream and DecompressionStream interfaces compress and decompress data using the gzip or deflate formats.","description_html":"The <code>CompressionStream</code> and <code>DecompressionStream</code> interfaces compress and decompress data using the gzip or deflate formats.","name":"Compression streams","spec":"https://compression.spec.whatwg.org/","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"113","firefox_android":"113","safari":"16.4","safari_ios":"16.4"}}},"compute-pressure":{"compat_features":["api.Permissions.permission_compute-pressure","api.PressureObserver","api.PressureObserver.PressureObserver","api.PressureObserver.disconnect","api.PressureObserver.knownSources_static","api.PressureObserver.observe","api.PressureObserver.takeRecords","api.PressureObserver.unobserve","api.PressureRecord","api.PressureRecord.source","api.PressureRecord.state","api.PressureRecord.time","api.PressureRecord.toJSON","http.headers.Permissions-Policy.compute-pressure"],"description":"The PressureObserver API monitors CPU load, allowing you to adjust workloads in response to available computing resources. Also known as the Compute Pressure API.","description_html":"The <code>PressureObserver</code> API monitors CPU load, allowing you to adjust workloads in response to available computing resources. Also known as the Compute Pressure API.","name":"CPU compute pressure","spec":"https://w3c.github.io/compute-pressure/","status":{"baseline":false,"support":{"chrome":"125","edge":"125"}}},"conic-gradients":{"caniuse":"css-conic-gradients","compat_features":["css.types.image.gradient.conic-gradient","css.types.image.gradient.conic-gradient.doubleposition","css.types.image.gradient.conic-gradient.hue_interpolation_method","css.types.image.gradient.conic-gradient.interpolation_color_space","css.types.image.gradient.repeating-conic-gradient","css.types.image.gradient.repeating-conic-gradient.hue_interpolation_method","css.types.image.gradient.repeating-conic-gradient.interpolation_color_space"],"description":"The conic-gradient() and repeating-conic-gradient() CSS functions create backgrounds that progress between two or more colors around a center point.","description_html":"The <code>conic-gradient()</code> and <code>repeating-conic-gradient()</code> CSS functions create backgrounds that progress between two or more colors around a center point.","group":"gradients","name":"Conic gradients","spec":"https://drafts.csswg.org/css-images-4/#conic-gradients","status":{"baseline":"high","baseline_high_date":"2023-05-17","baseline_low_date":"2020-11-17","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"83","firefox_android":"83","safari":"12.1","safari_ios":"12.2"}}},"constraint-validation":{"caniuse":"constraint-validation","compat_features":["api.HTMLButtonElement.checkValidity","api.HTMLButtonElement.reportValidity","api.HTMLButtonElement.setCustomValidity","api.HTMLButtonElement.validationMessage","api.HTMLButtonElement.validity","api.HTMLButtonElement.willValidate","api.HTMLFieldSetElement.checkValidity","api.HTMLFieldSetElement.reportValidity","api.HTMLFieldSetElement.setCustomValidity","api.HTMLFieldSetElement.validationMessage","api.HTMLFieldSetElement.validity","api.HTMLFieldSetElement.willValidate","api.HTMLFormElement.checkValidity","api.HTMLFormElement.reportValidity","api.HTMLInputElement.checkValidity","api.HTMLInputElement.reportValidity","api.HTMLInputElement.setCustomValidity","api.HTMLInputElement.validationMessage","api.HTMLInputElement.validity","api.HTMLInputElement.willValidate","api.HTMLObjectElement.checkValidity","api.HTMLObjectElement.reportValidity","api.HTMLObjectElement.setCustomValidity","api.HTMLObjectElement.validationMessage","api.HTMLObjectElement.validity","api.HTMLObjectElement.willValidate","api.HTMLOutputElement.checkValidity","api.HTMLOutputElement.reportValidity","api.HTMLOutputElement.setCustomValidity","api.HTMLOutputElement.validationMessage","api.HTMLOutputElement.validity","api.HTMLOutputElement.willValidate","api.HTMLSelectElement.checkValidity","api.HTMLSelectElement.reportValidity","api.HTMLSelectElement.setCustomValidity","api.HTMLSelectElement.validationMessage","api.HTMLSelectElement.validity","api.HTMLSelectElement.willValidate","api.HTMLTextAreaElement.checkValidity","api.HTMLTextAreaElement.reportValidity","api.HTMLTextAreaElement.setCustomValidity","api.HTMLTextAreaElement.validationMessage","api.HTMLTextAreaElement.validity","api.HTMLTextAreaElement.willValidate","api.ValidityState","api.ValidityState.badInput","api.ValidityState.customError","api.ValidityState.patternMismatch","api.ValidityState.rangeOverflow","api.ValidityState.rangeUnderflow","api.ValidityState.stepMismatch","api.ValidityState.tooLong","api.ValidityState.tooShort","api.ValidityState.typeMismatch","api.ValidityState.valid","api.ValidityState.valueMissing"],"description":"Methods that validate form controls before submission, such as checkValidity(), reportValidity() and setCustomValidity().","description_html":"Methods that validate form controls before submission, such as <code>checkValidity()</code>, <code>reportValidity()</code> and <code>setCustomValidity()</code>.","group":"forms","name":"Constraint validation API","spec":"https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-constraint-validation-api","status":{"baseline":"high","baseline_high_date":"2021-06-11","baseline_low_date":"2018-12-11","support":{"chrome":"40","chrome_android":"40","edge":"18","firefox":"51","firefox_android":"64","safari":"10.1","safari_ios":"10.3"}}},"constructed-stylesheets":{"compat_features":["api.CSSStyleSheet.CSSStyleSheet","api.CSSStyleSheet.CSSStyleSheet.options_baseURL_parameter","api.CSSStyleSheet.replace","api.CSSStyleSheet.replaceSync","api.Document.adoptedStyleSheets","api.ShadowRoot.adoptedStyleSheets"],"description":"The CSSStyleSheet constructor creates a new stylesheet which can be shared between a document and multiple shadow roots using adoptedStyleSheets.","description_html":"The <code>CSSStyleSheet</code> constructor creates a new stylesheet which can be shared between a document and multiple shadow roots using <code>adoptedStyleSheets</code>.","name":"Constructed stylesheets","spec":["https://drafts.csswg.org/cssom-1/#dom-cssstylesheet-cssstylesheet","https://drafts.csswg.org/cssom-1/#dom-documentorshadowroot-adoptedstylesheets"],"status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"101","firefox_android":"101","safari":"16.4","safari_ios":"16.4"}}},"contact-picker":{"compat_features":["api.ContactAddress","api.ContactAddress.addressLine","api.ContactAddress.city","api.ContactAddress.country","api.ContactAddress.dependentLocality","api.ContactAddress.organization","api.ContactAddress.phone","api.ContactAddress.postalCode","api.ContactAddress.recipient","api.ContactAddress.region","api.ContactAddress.sortingCode","api.ContactAddress.toJSON","api.ContactsManager","api.ContactsManager.getProperties","api.ContactsManager.select","api.Navigator.contacts"],"description":"The navigator.contacts API allows you to ask users to share limited details about entries in their contact list with your application.","description_html":"The <code>navigator.contacts</code> API allows you to ask users to share limited details about entries in their contact list with your application.","name":"Contact picker","spec":"https://w3c.github.io/contact-picker/#contacts-manager","status":{"baseline":false,"support":{"chrome_android":"80"}}},"contain-inline-size":{"compat_features":["css.properties.contain.inline-size"],"description":"The contain: inline-size CSS declaration prevents the element's inline dimension from being set by the element's contents. This permits the browser to avoid slower layout calculations.","description_html":"The <code>contain: inline-size</code> CSS declaration prevents the element's inline dimension from being set by the element's contents. This permits the browser to avoid slower layout calculations.","group":"containment","name":"Inline-size containment","spec":"https://drafts.csswg.org/css-contain-3/#containment-inline-size","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"101","firefox_android":"101","safari":"16","safari_ios":"16"}}},"contain-intrinsic-size":{"compat_features":["css.properties.contain-intrinsic-block-size","css.properties.contain-intrinsic-height","css.properties.contain-intrinsic-inline-size","css.properties.contain-intrinsic-size","css.properties.contain-intrinsic-size.auto_none","css.properties.contain-intrinsic-width"],"description":"The contain-intrinsic-size CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.","description_html":"The <code>contain-intrinsic-size</code> CSS property sets the intrinsic size of an element. When using size containment, the browser will lay out the element as if it had a single child of this size.","group":"containment","name":"contain-intrinsic-size","spec":"https://drafts.csswg.org/css-sizing-4/#intrinsic-size-override","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"83","chrome_android":"83","edge":"83","firefox":"107","firefox_android":"107","safari":"17","safari_ios":"17"}}},"contain-layout":{"compat_features":["css.properties.contain.layout"],"description":"The contain: layout CSS declaration isolates the inside of an element such that it cannot affect the layout of the rest of the page or be affected by the rest of the page. This permits the browser to avoid slower layout calculations.","description_html":"The <code>contain: layout</code> CSS declaration isolates the inside of an element such that it cannot affect the layout of the rest of the page or be affected by the rest of the page. This permits the browser to avoid slower layout calculations.","group":"containment","name":"Layout containment","spec":"https://drafts.csswg.org/css-contain-2/#containment-layout","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"69","firefox_android":"79","safari":"15.4","safari_ios":"15.4"}}},"contain-paint":{"compat_features":["css.properties.contain.paint"],"description":"The contain: paint CSS declaration prevents an element's descendants from being drawn outside the boundaries of the containing element, with any overflow clipped. This permits the browser to avoid slower painting calculations.","description_html":"The <code>contain: paint</code> CSS declaration prevents an element's descendants from being drawn outside the boundaries of the containing element, with any overflow clipped. This permits the browser to avoid slower painting calculations.","group":"containment","name":"Paint containment","spec":"https://drafts.csswg.org/css-contain-2/#containment-paint","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"69","firefox_android":"79","safari":"15.4","safari_ios":"15.4"}}},"contain-size":{"compat_features":["css.properties.contain","css.properties.contain.size"],"description":"The contain: size CSS declaration sets an element's dimensions exclusively by its height and width properties, ignoring its contents and descendants. This permits the browser to avoid slower layout calculations.","description_html":"The <code>contain: size</code> CSS declaration sets an element's dimensions exclusively by its <code>height</code> and <code>width</code> properties, ignoring its contents and descendants. This permits the browser to avoid slower layout calculations.","group":"containment","name":"Size containment","spec":"https://drafts.csswg.org/css-contain-2/#containment-size","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"69","firefox_android":"79","safari":"15.4","safari_ios":"15.4"}}},"contain-style":{"compat_features":["css.properties.contain.style"],"description":"The contain: style CSS declaration permits the browser to avoid slower layout calculations by preventing modification to counter (counter-increment and counter-set) and quotation styles (content property quote values) beyond the element's descendants.","description_html":"The <code>contain: style</code> CSS declaration permits the browser to avoid slower layout calculations by preventing modification to counter (<code>counter-increment</code> and <code>counter-set</code>) and quotation styles (<code>content</code> property quote values) beyond the element's descendants.","group":"containment","name":"Style containment","spec":"https://drafts.csswg.org/css-contain-2/#containment-style","status":{"baseline":"low","baseline_low_date":"2022-07-26","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"103","firefox_android":"103","safari":"15.4","safari_ios":"15.4"}}},"container-queries":{"caniuse":"css-container-queries","compat_features":["api.CSSContainerRule","api.CSSContainerRule.containerName","api.CSSContainerRule.containerQuery","css.at-rules.container","css.properties.container","css.properties.container-name","css.properties.container-name.none","css.properties.container-type","css.properties.container-type.inline-size","css.properties.container-type.normal","css.properties.container-type.size","css.types.length.container_query_length_units"],"description":"Container size queries with the @container at-rule apply styles to an element based on the dimensions of its container.","description_html":"Container size queries with the <code>@container</code> at-rule apply styles to an element based on the dimensions of its container.","name":"Container queries","spec":"https://drafts.csswg.org/css-contain-3/#container-queries","status":{"baseline":"low","baseline_low_date":"2023-02-14","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"110","firefox_android":"110","safari":"16","safari_ios":"16"}}},"container-style-queries":{"caniuse":"css-container-queries-style","compat_features":["css.at-rules.container.style_queries_for_custom_properties"],"description":"Container style queries with the @container at-rule apply styles to an element based on the values of custom properties of its container.","description_html":"Container style queries with the <code>@container</code> at-rule apply styles to an element based on the values of custom properties of its container.","name":"Container style queries","spec":"https://drafts.csswg.org/css-contain-3/#style-container","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111"}}},"content-visibility":{"caniuse":"css-content-visibility","compat_features":["api.ContentVisibilityAutoStateChangeEvent","api.ContentVisibilityAutoStateChangeEvent.ContentVisibilityAutoStateChangeEvent","api.ContentVisibilityAutoStateChangeEvent.skipped","css.properties.content-visibility"],"description":"The content-visibility CSS property delays rendering an element, including layout and painting, until it is needed.","description_html":"The <code>content-visibility</code> CSS property delays rendering an element, including layout and painting, until it is needed.","name":"content-visibility","spec":"https://drafts.csswg.org/css-contain-2/#content-visibility","status":{"baseline":false,"support":{"chrome":"108","chrome_android":"108","edge":"108","firefox":"125","firefox_android":"125"}}},"controls-list":{"compat_features":["api.HTMLMediaElement.controlsList","html.elements.audio.controlslist","html.elements.video.controlslist"],"description":"The controlslist attribute for <audio> or <video> hides parts of the browser's built-in controls. For example, controlslist=\"nofullscreen\" removes the button to play the video in fullscreen.","description_html":"The <code>controlslist</code> attribute for <code>&#x3C;audio></code> or <code>&#x3C;video></code> hides parts of the browser's built-in controls. For example, <code>controlslist=\"nofullscreen\"</code> removes the button to play the video in fullscreen.","group":"media-elements","name":"controlslist","spec":"https://wicg.github.io/controls-list/","status":{"baseline":false,"support":{"chrome":"58","chrome_android":"58","edge":"79"}}},"counter-set":{"compat_features":["css.properties.counter-set","css.properties.counter-set.list-item","css.properties.counter-set.none"],"description":"The counter-set CSS property creates (and optionally sets a value for) a counter, the numbers for a series of headings or ordered list items.","description_html":"The <code>counter-set</code> CSS property creates (and optionally sets a value for) a counter, the numbers for a series of headings or ordered list items.","name":"counter-set","spec":"https://drafts.csswg.org/css-lists-3/#propdef-counter-set","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"68","firefox_android":"68","safari":"17.2","safari_ios":"17.2"}}},"counter-style":{"caniuse":"css-at-counter-style","compat_features":["api.CSSCounterStyleRule","api.CSSCounterStyleRule.additiveSymbols","api.CSSCounterStyleRule.fallback","api.CSSCounterStyleRule.name","api.CSSCounterStyleRule.negative","api.CSSCounterStyleRule.pad","api.CSSCounterStyleRule.prefix","api.CSSCounterStyleRule.range","api.CSSCounterStyleRule.speakAs","api.CSSCounterStyleRule.suffix","api.CSSCounterStyleRule.symbols","api.CSSCounterStyleRule.system","css.at-rules.counter-style","css.at-rules.counter-style.additive-symbols","css.at-rules.counter-style.fallback","css.at-rules.counter-style.negative","css.at-rules.counter-style.pad","css.at-rules.counter-style.prefix","css.at-rules.counter-style.range","css.at-rules.counter-style.speak-as","css.at-rules.counter-style.suffix","css.at-rules.counter-style.symbols","css.at-rules.counter-style.system"],"description":"The @counter-style CSS at-rule defines custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.","description_html":"The <code>@counter-style</code> CSS at-rule defines custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.","name":"@counter-style","spec":"https://drafts.csswg.org/css-counter-styles-3/","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"91","chrome_android":"91","edge":"91","firefox":"33","firefox_android":"33","safari":"17","safari_ios":"17"}}},"css-modules":{"compat_features":["javascript.statements.import.import_attributes.type_css"],"description":"Module `import ... with { type: \"css\" } statements load CSS modules as constructable stylesheets. Also known as CSS module scripts and formerly known as import assertions.","description_html":"Module `import ... with { type: \"css\" } statements load CSS modules as constructable stylesheets. Also known as CSS module scripts and formerly known as import assertions.","name":"CSS import attributes","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#css-module-script","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"custom-properties":{"caniuse":"css-variables","compat_features":["css.properties.custom-property","css.properties.custom-property.var"],"description":"Custom properties are CSS properties prefixed with -- that set values you can reuse with the var() function. For example, you can set a --key-color property to reuse as border-color: var(--key-color). Also known as CSS variables.","description_html":"Custom properties are CSS properties prefixed with <code>--</code> that set values you can reuse with the <code>var()</code> function. For example, you can set a <code>--key-color</code> property to reuse as <code>border-color: var(--key-color)</code>. Also known as CSS variables.","name":"Custom properties","spec":"https://drafts.csswg.org/css-variables-1/","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"49","chrome_android":"49","edge":"15","firefox":"31","firefox_android":"31","safari":"9.1","safari_ios":"9.3"}}},"customized-built-in-elements":{"compat_features":["api.CustomElementRegistry.builtin_element_support","html.global_attributes.is"],"description":"Customized built-in elements are HTML elements that extend built-in elements using the is attribute, to add new behaviors that you define.","description_html":"Customized built-in elements are HTML elements that extend built-in elements using the <code>is</code> attribute, to add new behaviors that you define.","group":"custom-elements","name":"Customized built-in elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#customized-built-in-element","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79","firefox":"63","firefox_android":"63"}}},"data":{"compat_features":["api.HTMLDataElement","api.HTMLDataElement.value","html.elements.data","html.elements.data.value"],"description":"The <data> element links a given piece of content with a machine-readable translation.","description_html":"The <code>&#x3C;data></code> element links a given piece of content with a machine-readable translation.","group":"html-elements","name":"<data>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-data-element","status":{"baseline":"high","baseline_high_date":"2020-04-24","baseline_low_date":"2017-10-24","support":{"chrome":"62","chrome_android":"62","edge":"14","firefox":"22","firefox_android":"22","safari":"10","safari_ios":"10"}}},"datalist":{"caniuse":"datalist","compat_features":["api.HTMLDataListElement","api.HTMLDataListElement.options","html.elements.datalist"],"description":"The <datalist> element defines a set of recommended values for an <input> element. Browsers may show a dropdown menu of all options, or matching options as the user types.","description_html":"The <code>&#x3C;datalist></code> element defines a set of recommended values for an <code>&#x3C;input></code> element. Browsers may show a dropdown menu of all options, or matching options as the user types.","group":"forms","name":"<datalist>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-datalist-element","status":{"baseline":false,"support":{"chrome":"69","chrome_android":"69","edge":"12","firefox":"110","safari":"12.1","safari_ios":"12.2"}}},"declarative-shadow-dom":{"caniuse":"declarative-shadow-dom","compat_features":["api.HTMLTemplateElement.shadowRootMode","html.elements.template.shadowrootmode"],"description":"The shadowrootmode attribute on <template> creates a shadow root without the use of JavaScript. It is a declarative alternative to the attachShadow() method.","description_html":"The <code>shadowrootmode</code> attribute on <code>&#x3C;template></code> creates a shadow root without the use of JavaScript. It is a declarative alternative to the <code>attachShadow()</code> method.","group":["html","web-components"],"name":"Declarative shadow DOM","spec":"https://html.spec.whatwg.org/multipage/scripting.html#attr-template-shadowrootmode","status":{"baseline":"low","baseline_low_date":"2024-02-20","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"123","firefox_android":"123","safari":"16.4","safari_ios":"16.4"}}},"default":{"caniuse":"css-default-pseudo","compat_features":["css.selectors.default"],"description":"The :default CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the checked attribute.","description_html":"The <code>:default</code> CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the <code>checked</code> attribute.","name":":default","spec":"https://drafts.csswg.org/selectors-4/#the-default-pseudo","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"10","chrome_android":"18","edge":"79","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"del":{"compat_features":["api.HTMLModElement","api.HTMLModElement.cite","api.HTMLModElement.dateTime","html.elements.del","html.elements.del.cite","html.elements.del.datetime"],"description":"The <del> element element represents a range of text that has been deleted from a document, styling text as strikethrough by default.","description_html":"The <code>&#x3C;del></code> element element represents a range of text that has been deleted from a document, styling text as strikethrough by default.","group":"html-elements","name":"<del>","spec":"https://html.spec.whatwg.org/multipage/edits.html#the-del-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"details":{"caniuse":"details","compat_features":["api.HTMLDetailsElement","api.HTMLDetailsElement.open","html.elements.details","html.elements.details.open"],"description":"The <details> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <summary> element is visible.","description_html":"The <code>&#x3C;details></code> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <code>&#x3C;summary></code> element is visible.","group":"html-elements","name":"<details>","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#the-details-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"12","chrome_android":"18","edge":"79","firefox":"49","firefox_android":"49","safari":"6","safari_ios":"6"}}},"details-name":{"compat_features":["api.HTMLDetailsElement.name","html.elements.details.name"],"description":"Multiple <details> elements which use the same name attribute are mutually exclusive. When one member of the group is opened, all other members are closed.","description_html":"Multiple <code>&#x3C;details></code> elements which use the same <code>name</code> attribute are mutually exclusive. When one member of the group is opened, all other members are closed.","group":"html-elements","name":"Mutually exclusive <details> elements","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-details-name","status":{"baseline":false,"support":{"chrome":"120","chrome_android":"120","edge":"120","safari":"17.2","safari_ios":"17.2"}}},"device-orientation-events":{"caniuse":"deviceorientation","compat_features":["api.DeviceMotionEvent","api.DeviceMotionEvent.acceleration","api.DeviceMotionEvent.accelerationIncludingGravity","api.DeviceMotionEvent.interval","api.DeviceMotionEvent.rotationRate","api.DeviceOrientationEvent","api.DeviceOrientationEvent.alpha","api.DeviceOrientationEvent.beta","api.DeviceOrientationEvent.gamma","api.Window.devicemotion_event","api.Window.deviceorientation_event"],"description":"The DeviceMotion and DeviceOrientation events report the movement and orientation of the browser's device in physical space.","description_html":"The <code>DeviceMotion</code> and <code>DeviceOrientation</code> events report the movement and orientation of the browser's device in physical space.","group":"sensors","name":"Device orientation events","spec":"https://w3c.github.io/deviceorientation/","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"31","chrome_android":"31","edge":"12","firefox":"6","firefox_android":"6","safari":"17","safari_ios":"4.2"}}},"device-posture":{"compat_features":["api.DevicePosture","api.DevicePosture.change_event","api.DevicePosture.type","api.Navigator.devicePosture","css.at-rules.media.device-posture"],"description":"The device posture API provides information about the physical posture of a device, such as whether a foldable device is folded or unfolded.","description_html":"The device posture API provides information about the physical posture of a device, such as whether a foldable device is folded or unfolded.","name":"Device posture","spec":"https://w3c.github.io/device-posture/","status":{"baseline":false,"support":{}}},"dfn":{"compat_features":["html.elements.dfn"],"description":"The <dfn> element marks a term to be defined, styling text as italic by default.","description_html":"The <code>&#x3C;dfn></code> element marks a term to be defined, styling text as italic by default.","group":"html-elements","name":"<dfn>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-dfn-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"15","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"6","safari_ios":"6"}}},"dialog":{"caniuse":"dialog","compat_features":["api.HTMLDialogElement","api.HTMLDialogElement.cancel_event","api.HTMLDialogElement.close","api.HTMLDialogElement.close_event","api.HTMLDialogElement.open","api.HTMLDialogElement.returnValue","api.HTMLDialogElement.show","api.HTMLDialogElement.showModal","css.selectors.backdrop.dialog","html.elements.dialog","html.elements.dialog.open"],"description":"The <dialog> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data.","description_html":"The <code>&#x3C;dialog></code> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data.","group":"html-elements","name":"<dialog>","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"37","chrome_android":"37","edge":"79","firefox":"98","firefox_android":"98","safari":"15.4","safari_ios":"15.4"}}},"dir-pseudo":{"caniuse":"css-dir-pseudo","compat_features":["css.selectors.dir"],"description":"The :dir() CSS functional pseudo-class matches elements by text direction, either right to left (rtl) or left to right (ltr).","description_html":"The <code>:dir()</code> CSS functional pseudo-class matches elements by text direction, either right to left (<code>rtl</code>) or left to right (<code>ltr</code>).","group":"css","name":":dir()","spec":"https://drafts.csswg.org/selectors-4/#the-dir-pseudo","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"49","firefox_android":"49","safari":"16.4","safari_ios":"16.4"}}},"dirname":{"compat_features":["api.HTMLInputElement.dirName","api.HTMLTextAreaElement.dirName","html.elements.input.dirname","html.elements.textarea.dirname"],"description":"The dirname attribute of <textarea> and <input> HTML elements includes the field's writing direction as form data on submission.","description_html":"The <code>dirname</code> attribute of <code>&#x3C;textarea></code> and <code>&#x3C;input></code> HTML elements includes the field's writing direction as form data on submission.","name":"dirname","spec":"https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname","status":{"baseline":"low","baseline_low_date":"2023-08-01","support":{"chrome":"17","chrome_android":"18","edge":"79","firefox":"116","firefox_android":"116","safari":"6","safari_ios":"6"}}},"display-animation":{"compat_features":["css.properties.content-visibility.is_transitionable","css.properties.content-visibility.keyframe_animatable","css.properties.display.is_transitionable","css.properties.display.keyframe_animatable"],"description":"You can animate elements between display: none and any other display value or animate between content-visibility: hidden and any other content-visibility value. This also applies to transitions.","description_html":"You can animate elements between <code>display: none</code> and any other <code>display</code> value or animate between <code>content-visibility: hidden</code> and any other <code>content-visibility</code> value. This also applies to transitions.","name":"display animation","spec":["https://drafts.csswg.org/css-display-4/#display-animation","https://drafts.csswg.org/css-contain-3/#content-visibility-animation"],"status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"div":{"compat_features":["api.HTMLDivElement","html.elements.div"],"description":"The <div> HTML element is the generic container for content.","description_html":"The <code>&#x3C;div></code> HTML element is the generic container for content.","group":"html-elements","name":"<div>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-div-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"document-caretpositionfrompoint":{"compat_features":["api.Document.caretPositionFromPoint"],"description":"The document.caretPositionFromPoint() method finds an insertion point, represented by a DOM node and an offset within that node, for given coordinates in the viewport.","description_html":"The <code>document.caretPositionFromPoint()</code> method finds an insertion point, represented by a DOM node and an offset within that node, for given coordinates in the viewport.","name":"document.caretPositionFromPoint()","spec":"https://drafts.csswg.org/cssom-view-1/#dom-document-caretpositionfrompoint","status":{"baseline":false,"support":{"firefox":"20","firefox_android":"20"}}},"document-picture-in-picture":{"compat_features":["api.DocumentPictureInPicture","api.DocumentPictureInPicture.enter_event","api.DocumentPictureInPicture.requestWindow","api.DocumentPictureInPicture.window","api.DocumentPictureInPictureEvent","api.DocumentPictureInPictureEvent.DocumentPictureInPictureEvent","api.DocumentPictureInPictureEvent.window","api.Window.documentPictureInPicture"],"description":"The document picture-in-picture API creates an always-on-top window from arbitrary HTML content.","description_html":"The document picture-in-picture API creates an always-on-top window from arbitrary HTML content.","name":"Document picture-in-picture","spec":"https://wicg.github.io/document-picture-in-picture/","status":{"baseline":false,"support":{"chrome":"116","edge":"116"}}},"edit-context":{"compat_features":["api.CharacterBoundsUpdateEvent","api.CharacterBoundsUpdateEvent.CharacterBoundsUpdateEvent","api.CharacterBoundsUpdateEvent.rangeEnd","api.CharacterBoundsUpdateEvent.rangeStart","api.EditContext","api.EditContext.EditContext","api.EditContext.attachedElements","api.EditContext.characterBounds","api.EditContext.characterBoundsRangeStart","api.EditContext.characterboundsupdate_event","api.EditContext.compositionend_event","api.EditContext.compositionstart_event","api.EditContext.selectionEnd","api.EditContext.selectionStart","api.EditContext.text","api.EditContext.textformatupdate_event","api.EditContext.textupdate_event","api.EditContext.updateCharacterBounds","api.EditContext.updateControlBounds","api.EditContext.updateSelection","api.EditContext.updateSelectionBounds","api.EditContext.updateText","api.HTMLElement.editContext","api.TextFormat","api.TextFormat.TextFormat","api.TextFormat.rangeEnd","api.TextFormat.rangeStart","api.TextFormat.underlineStyle","api.TextFormat.underlineThickness","api.TextFormatUpdateEvent","api.TextFormatUpdateEvent.TextFormatUpdateEvent","api.TextFormatUpdateEvent.getTextFormats","api.TextUpdateEvent","api.TextUpdateEvent.TextUpdateEvent","api.TextUpdateEvent.selectionEnd","api.TextUpdateEvent.selectionStart","api.TextUpdateEvent.text","api.TextUpdateEvent.updateRangeEnd","api.TextUpdateEvent.updateRangeStart"],"description":"The EditContext API allows you to build rich text editors that support advanced text input, such as Input Method Editor (IME) composition, an emoji picker, or other platform-specific editing UI.","description_html":"The <code>EditContext</code> API allows you to build rich text editors that support advanced text input, such as Input Method Editor (IME) composition, an emoji picker, or other platform-specific editing UI.","name":"EditContext","spec":"https://w3c.github.io/edit-context/","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121"}}},"em":{"compat_features":["html.elements.em"],"description":"The <em> HTML element emphasizes or stresses the content, styling text as italic by default.","description_html":"The <code>&#x3C;em></code> HTML element emphasizes or stresses the content, styling text as italic by default.","group":"html-elements","name":"<em>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-em-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"embed":{"compat_features":["api.HTMLEmbedElement","api.HTMLEmbedElement.getSVGDocument","api.HTMLEmbedElement.height","api.HTMLEmbedElement.src","api.HTMLEmbedElement.type","api.HTMLEmbedElement.width","html.elements.embed","html.elements.embed.height","html.elements.embed.src","html.elements.embed.type","html.elements.embed.width"],"description":"The <embed> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","description_html":"The <code>&#x3C;embed></code> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","group":"html-elements","name":"<embed>","spec":["https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element","https://html.spec.whatwg.org/multipage/obsolete.html#noembed"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"1","chrome_android":"18","edge":"79","firefox":"1.5","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"exp-functions":{"compat_features":["css.types.exp","css.types.hypot","css.types.log","css.types.pow","css.types.sqrt"],"description":"The pow(), sqrt(), hypot(), log(), and exp() CSS functions compute various exponential functions.","description_html":"The <code>pow()</code>, <code>sqrt()</code>, <code>hypot()</code>, <code>log()</code>, and <code>exp()</code> CSS functions compute various exponential functions.","name":"pow(), sqrt(), hypot(), log(), and exp()","spec":"https://drafts.csswg.org/css-values-4/#exponent-funcs","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"118","firefox_android":"118","safari":"15.4","safari_ios":"15.4"}}},"eyedropper":{"compat_features":["api.EyeDropper","api.EyeDropper.EyeDropper","api.EyeDropper.open"],"description":"The EyeDropper API opens an eyedropper tool, a color picker that allows users to select a color from their screen.","description_html":"The <code>EyeDropper</code> API opens an eyedropper tool, a color picker that allows users to select a color from their screen.","name":"Eyedropper","spec":"https://wicg.github.io/eyedropper-api/","status":{"baseline":false,"support":{"chrome":"95","edge":"95"}}},"fast-seek":{"compat_features":["api.HTMLMediaElement.fastSeek"],"description":"The fastSeek() method seeks an <audio> or <video> element as fast as possible, by seeking to a keyframe instead of exactly the requested time.","description_html":"The <code>fastSeek()</code> method seeks an <code>&#x3C;audio></code> or <code>&#x3C;video></code> element as fast as possible, by seeking to a keyframe instead of exactly the requested time.","group":"media-elements","name":"fastSeek()","spec":"https://html.spec.whatwg.org/multipage/media.html#dom-media-fastseek-dev","status":{"baseline":false,"support":{"firefox":"31","firefox_android":"31","safari":"8","safari_ios":"8"}}},"fetch":{"caniuse":"fetch","compat_features":["api.Headers","api.Headers.Headers","api.Headers.append","api.Headers.delete","api.Headers.get","api.Headers.has","api.Headers.set","api.Request","api.Request.Request","api.Request.arrayBuffer","api.Request.blob","api.Request.bodyUsed","api.Request.clone","api.Request.credentials","api.Request.headers","api.Request.json","api.Request.method","api.Request.mode","api.Request.text","api.Request.url","api.Response","api.Response.Response","api.Response.arrayBuffer","api.Response.blob","api.Response.bodyUsed","api.Response.clone","api.Response.headers","api.Response.json","api.Response.json_static","api.Response.ok","api.Response.status","api.Response.statusText","api.Response.text","api.Response.type","api.Response.url","api.fetch"],"description":"The fetch() method makes asynchronous HTTP requests.","description_html":"The <code>fetch()</code> method makes asynchronous HTTP requests.","name":"Fetch","spec":"https://fetch.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"42","chrome_android":"42","edge":"14","firefox":"39","firefox_android":"39","safari":"10.1","safari_ios":"10.3"}}},"fetch-metadata":{"compat_features":["http.headers.Sec-Fetch-Dest","http.headers.Sec-Fetch-Mode","http.headers.Sec-Fetch-Site","http.headers.Sec-Fetch-User"],"description":"The Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site, and Sec-Fetch-User` HTTP headers provide extra information about the way a request was made, to help servers reject certain kinds of malicious requests.","description_html":"The <code>Sec-Fetch-Dest</code>, <code>Sec-Fetch-Mode, </code>Sec-Fetch-Site<code>, and </code>Sec-Fetch-User` HTTP headers provide extra information about the way a request was made, to help servers reject certain kinds of malicious requests.","name":"Fetch metadata request headers","spec":"https://w3c.github.io/webappsec-fetch-metadata/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"90","firefox_android":"90","safari":"16.4","safari_ios":"16.4"}}},"fetch-priority":{"compat_features":["api.HTMLImageElement.fetchPriority","api.HTMLLinkElement.fetchPriority","api.HTMLScriptElement.fetchPriority","api.Request.Request.init_priority_parameter","api.fetch.init_priority_parameter","html.elements.img.fetchpriority","html.elements.link.fetchpriority","html.elements.script.fetchpriority"],"description":"The fetch() priority option and the fetchPriority HTML attribute give hints to the browser about which requests to do before other requests of the same type.","description_html":"The <code>fetch()</code> <code>priority</code> option and the <code>fetchPriority</code> HTML attribute give hints to the browser about which requests to do before other requests of the same type.","name":"Fetch priority","spec":["https://fetch.spec.whatwg.org/#request-priority","https://html.spec.whatwg.org/multipage/urls-and-fetching.html#fetch-priority-attributes"],"status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102","safari":"17.2","safari_ios":"17.2"}}},"field-sizing":{"compat_features":["css.properties.field-sizing","css.properties.field-sizing.content","css.properties.field-sizing.fixed"],"description":"The field-sizing CSS property allows form controls such as <textarea> to be sized based on their content.","description_html":"The <code>field-sizing</code> CSS property allows form controls such as <code>&#x3C;textarea></code> to be sized based on their content.","name":"field-sizing","spec":"https://drafts.csswg.org/css-ui-4/#field-sizing","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"fieldset":{"compat_features":["api.HTMLFieldSetElement","api.HTMLFieldSetElement.disabled","api.HTMLFieldSetElement.elements","api.HTMLFieldSetElement.elements.type_HTMLCollection","api.HTMLFieldSetElement.form","api.HTMLFieldSetElement.name","api.HTMLFieldSetElement.type","api.HTMLLegendElement","api.HTMLLegendElement.form","html.elements.fieldset","html.elements.fieldset.disabled","html.elements.fieldset.form","html.elements.fieldset.name","html.elements.legend"],"description":"The <fieldset> and <legend> elements group several form control elements within a web form.","description_html":"The <code>&#x3C;fieldset></code> and <code>&#x3C;legend></code> elements group several form control elements within a web form.","group":["forms","html-elements"],"name":"<fieldset> and <legend>","spec":["https://html.spec.whatwg.org/multipage/form-elements.html#the-fieldset-element","https://html.spec.whatwg.org/multipage/form-elements.html#the-legend-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"figure":{"compat_features":["html.elements.figcaption","html.elements.figure"],"description":"The <figure> and <figcaption> HTML elements represent an illustration, diagram, text, or other self-contained reference content, with an optional caption.","description_html":"The <code>&#x3C;figure></code> and <code>&#x3C;figcaption></code> HTML elements represent an illustration, diagram, text, or other self-contained reference content, with an optional caption.","group":"html-elements","name":"<figure> and <figcaption>","spec":["https://html.spec.whatwg.org/multipage/grouping-content.html#the-figure-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-figcaption-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"8","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"flexbox":{"caniuse":"flexbox","compat_features":["css.properties.align-content.flex_context","css.properties.align-content.flex_context.stretch","css.properties.align-items.flex_context","css.properties.align-items.flex_context.baseline","css.properties.align-self.flex_context","css.properties.align-self.flex_context.baseline","css.properties.align-self.flex_context.stretch","css.properties.display.flex","css.properties.display.inline-flex","css.properties.flex","css.properties.flex-basis","css.properties.flex-basis.auto","css.properties.flex-direction","css.properties.flex-flow","css.properties.flex-grow","css.properties.flex-shrink","css.properties.flex-wrap","css.properties.justify-content.flex_context","css.properties.justify-content.flex_context.stretch","css.properties.justify-items.flex_context","css.properties.order","css.properties.place-content.flex_context","css.properties.place-items.flex_context","css.properties.place-self.flex_context"],"description":"Flexbox is a one-dimensional layout system, which places content either horizontally or vertically, with optional wrapping.","description_html":"Flexbox is a one-dimensional layout system, which places content either horizontally or vertically, with optional wrapping.","group":"flexbox","name":"Flexbox","spec":"https://drafts.csswg.org/css-flexbox-1/","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"29","chrome_android":"29","edge":"12","firefox":"28","firefox_android":"28","safari":"9","safari_ios":"9"}}},"flexbox-gap":{"caniuse":"flexbox-gap","compat_features":["css.properties.column-gap.flex_context","css.properties.gap.flex_context","css.properties.row-gap.flex_context"],"description":"The gap CSS property in a flexbox layout sets the size of the space between items.","description_html":"The <code>gap</code> CSS property in a flexbox layout sets the size of the space between items.","group":"flexbox","name":"Flexbox gap","spec":"https://drafts.csswg.org/css-align-3/#gaps","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"63","firefox_android":"63","safari":"14.1","safari_ios":"14.5"}}},"focus-visible":{"caniuse":"css-focus-visible","compat_features":["css.selectors.focus-visible"],"description":"The :focus-visible CSS pseudo-class selects elements that match the :focus pseudo-class and meets the browser's criteria for visually emphasizing focused elements.","description_html":"The <code>:focus-visible</code> CSS pseudo-class selects elements that match the <code>:focus</code> pseudo-class and meets the browser's criteria for visually emphasizing focused elements.","name":":focus-visible","spec":"https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"85","firefox_android":"85","safari":"15.4","safari_ios":"15.4"}}},"font-face":{"caniuse":"fontface","compat_features":["css.at-rules.font-face","css.at-rules.font-face.WOFF","css.at-rules.font-face.WOFF_2","css.at-rules.font-face.font-family","css.at-rules.font-face.src"],"description":"The @font-face CSS at-rule creates a custom font-family value. The at-rule's descriptors set the font's name, source, and various display settings.","description_html":"The <code>@font-face</code> CSS at-rule creates a custom <code>font-family</code> value. The at-rule's descriptors set the font's name, source, and various display settings.","group":"fonts","name":"@font-face","spec":"https://drafts.csswg.org/css-fonts-5/","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"36","chrome_android":"36","edge":"14","firefox":"39","firefox_android":"39","safari":"10","safari_ios":"10"}}},"font-optical-sizing":{"compat_features":["css.properties.font-optical-sizing"],"description":"The font-optical-sizing CSS property sets whether text rendering is optimized for viewing at different sizes.","description_html":"The <code>font-optical-sizing</code> CSS property sets whether text rendering is optimized for viewing at different sizes.","group":"fonts","name":"font-optical-sizing","spec":"https://drafts.csswg.org/css-fonts-4/#font-optical-sizing-def","status":{"baseline":"high","baseline_high_date":"2022-06-17","baseline_low_date":"2019-12-17","support":{"chrome":"79","chrome_android":"79","edge":"17","firefox":"62","firefox_android":"62","safari":"11","safari_ios":"11"}}},"font-palette":{"caniuse":"css-font-palette","compat_features":["api.CSSFontPaletteValuesRule","api.CSSFontPaletteValuesRule.basePalette","api.CSSFontPaletteValuesRule.fontFamily","api.CSSFontPaletteValuesRule.name","api.CSSFontPaletteValuesRule.overrideColors","css.at-rules.font-palette-values","css.at-rules.font-palette-values.base-palette","css.at-rules.font-palette-values.font-family","css.at-rules.font-palette-values.override-colors","css.properties.font-palette"],"description":"The font-palette CSS property selects a color palette from the font, optionally overriding individual colors in the @font-palette-values at-rule.","description_html":"The <code>font-palette</code> CSS property selects a color palette from the font, optionally overriding individual colors in the <code>@font-palette-values</code> at-rule.","group":"fonts","name":"font-palette","spec":["https://drafts.csswg.org/css-fonts-4/#font-palette-prop","https://drafts.csswg.org/css-fonts-4/#font-palette-values"],"status":{"baseline":"low","baseline_low_date":"2022-11-15","support":{"chrome":"101","chrome_android":"101","edge":"101","firefox":"107","firefox_android":"107","safari":"15.4","safari_ios":"15.4"}}},"font-palette-animation":{"compat_features":["css.properties.font-palette.animation_computed","css.properties.font-palette.palette-mix_function"],"description":"You can animate color fonts between two font-palette values.","description_html":"You can animate color fonts between two <code>font-palette</code> values.","group":"fonts","name":"font-palette animation","spec":"https://drafts.csswg.org/css-fonts-4/#font-palette-prop","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121"}}},"font-size-adjust":{"caniuse":"font-size-adjust","compat_features":["css.properties.font-size-adjust","css.properties.font-size-adjust.from-font","css.properties.font-size-adjust.none","css.properties.font-size-adjust.two-values","svg.global_attributes.font-size-adjust"],"description":"The font-size-adjust CSS property preserves apparent text size, regardless of the font used, by scaling fonts to the same size with respect to a specific metric, such as x-height. This can help make fallback fonts look the same size.","description_html":"The <code>font-size-adjust</code> CSS property preserves apparent text size, regardless of the font used, by scaling fonts to the same size with respect to a specific metric, such as x-height. This can help make fallback fonts look the same size.","group":"fonts","name":"font-size-adjust","spec":"https://drafts.csswg.org/css-fonts-5/#font-size-adjust-prop","status":{"baseline":"low","baseline_low_date":"2024-07-25","support":{"chrome":"127","chrome_android":"127","edge":"127","firefox":"118","firefox_android":"118","safari":"17","safari_ios":"17"}}},"font-synthesis":{"compat_features":["css.properties.font-synthesis"],"description":"The font-synthesis CSS shorthand property disables all font synthesis except the given kinds. To disable a specific kind of font synthesis, instead use the longhand properties such as font-synthesis-style and font-synthesis-weight.","description_html":"The <code>font-synthesis</code> CSS shorthand property disables all font synthesis except the given kinds. To disable a specific kind of font synthesis, instead use the longhand properties such as <code>font-synthesis-style</code> and <code>font-synthesis-weight</code>.","group":"font-synthesis","name":"font-synthesis","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis","status":{"baseline":"high","baseline_high_date":"2024-07-06","baseline_low_date":"2022-01-06","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"34","firefox_android":"34","safari":"9","safari_ios":"9"}}},"font-synthesis-position":{"compat_features":["css.properties.font-synthesis-position","css.properties.font-synthesis-position.auto","css.properties.font-synthesis-position.none"],"description":"The font-synthesis-position CSS property sets whether or not the browser should synthesize subscript and superscript typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-position</code> CSS property sets whether or not the browser should synthesize subscript and superscript typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-position","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-position","status":{"baseline":false,"support":{"firefox":"118","firefox_android":"118"}}},"font-synthesis-small-caps":{"compat_features":["css.properties.font-synthesis-small-caps","css.properties.font-synthesis-small-caps.auto","css.properties.font-synthesis-small-caps.none"],"description":"The font-synthesis-small-caps CSS property sets whether or not the browser should synthesize small caps typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-small-caps</code> CSS property sets whether or not the browser should synthesize small caps typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-small-caps","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-small-caps","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"font-synthesis-style":{"compat_features":["css.properties.font-synthesis-style","css.properties.font-synthesis-style.auto","css.properties.font-synthesis-style.none"],"description":"The font-synthesis-style CSS property sets whether or not the browser should synthesize italic and oblique typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-style</code> CSS property sets whether or not the browser should synthesize italic and oblique typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-style","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-style","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"font-synthesis-weight":{"compat_features":["css.properties.font-synthesis-weight","css.properties.font-synthesis-weight.auto","css.properties.font-synthesis-weight.none"],"description":"The font-synthesis-weight CSS property sets whether or not the browser should synthesize bold typefaces when they're missing from the font.","description_html":"The <code>font-synthesis-weight</code> CSS property sets whether or not the browser should synthesize bold typefaces when they're missing from the font.","group":"font-synthesis","name":"font-synthesis-weight","spec":"https://drafts.csswg.org/css-fonts-4/#font-synthesis-weight","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"font-variant-alternates":{"caniuse":"font-variant-alternates","compat_features":["api.CSSFontFeatureValuesRule","api.CSSFontFeatureValuesRule.fontFamily","css.at-rules.font-feature-values","css.at-rules.font-feature-values.annotation","css.at-rules.font-feature-values.character-variant","css.at-rules.font-feature-values.historical-forms","css.at-rules.font-feature-values.ornaments","css.at-rules.font-feature-values.styleset","css.at-rules.font-feature-values.stylistic","css.at-rules.font-feature-values.swash","css.properties.font-variant-alternates","css.properties.font-variant-alternates.annotation","css.properties.font-variant-alternates.character_variant","css.properties.font-variant-alternates.ornaments","css.properties.font-variant-alternates.styleset","css.properties.font-variant-alternates.stylistic","css.properties.font-variant-alternates.swash"],"description":"The font-variant-alternates CSS property, along with the @font-feature-values at-rule, chooses when to use a font's alternate glyphs.","description_html":"The <code>font-variant-alternates</code> CSS property, along with the <code>@font-feature-values</code> at-rule, chooses when to use a font's alternate glyphs.","group":"fonts","name":"font-variant-alternates","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-alternates-prop","status":{"baseline":"low","baseline_low_date":"2023-03-13","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"34","firefox_android":"34","safari":"16.2","safari_ios":"16.2"}}},"form-associated-custom-elements":{"compat_features":["api.ElementInternals","api.ElementInternals.checkValidity","api.ElementInternals.form","api.ElementInternals.labels","api.ElementInternals.reportValidity","api.ElementInternals.setFormValue","api.ElementInternals.setValidity","api.ElementInternals.validationMessage","api.ElementInternals.validity","api.ElementInternals.willValidate","api.HTMLElement.attachInternals"],"description":"Custom elements may act like built-in form elements, via the the attachInternals() method of HTMLElement and the ElementInternals API.","description_html":"Custom elements may act like built-in form elements, via the the <code>attachInternals()</code> method of <code>HTMLElement</code> and the <code>ElementInternals</code> API.","group":["custom-elements","forms"],"name":"Form-associated custom elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#form-associated-custom-elements","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"98","firefox_android":"98","safari":"16.4","safari_ios":"16.4"}}},"fullscreen":{"caniuse":"fullscreen","compat_features":["api.Document.exitFullscreen","api.Document.exitFullscreen.returns_promise","api.Document.fullscreenElement","api.Document.fullscreenEnabled","api.Document.fullscreenchange_event","api.Document.fullscreenerror_event","api.Element.fullscreenchange_event","api.Element.fullscreenerror_event","api.Element.requestFullscreen","api.Element.requestFullscreen.returns_promise","api.HTMLIFrameElement.allowFullscreen","api.ShadowRoot.fullscreenElement","css.selectors.backdrop.fullscreen","css.selectors.fullscreen","html.elements.iframe.allowfullscreen"],"description":"The fullscreen API makes a specific element fill the whole screen and hides most browser UI.","description_html":"The fullscreen API makes a specific element fill the whole screen and hides most browser UI.","name":"Fullscreen API","spec":"https://fullscreen.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"71","chrome_android":"71","edge":"79","firefox":"64","firefox_android":"64","safari":"16.4"}}},"gravity-sensor":{"compat_features":["api.GravitySensor","api.GravitySensor.GravitySensor"],"description":"The GravitySensor API reads the gravity applied to a device in three dimensions.","description_html":"The <code>GravitySensor</code> API reads the gravity applied to a device in three dimensions.","group":"sensors","name":"Gravity sensor","spec":"https://w3c.github.io/accelerometer/#gravity-sensor-model","status":{"baseline":false,"support":{"chrome":"91","chrome_android":"91","edge":"91"}}},"grid":{"caniuse":"css-grid","compat_features":["css.properties.align-content.grid_context","css.properties.align-items.grid_context","css.properties.align-items.grid_context.start_end","css.properties.align-self.grid_context","css.properties.column-gap.grid_context","css.properties.display.grid","css.properties.display.inline-grid","css.properties.gap.grid_context","css.properties.gap.grid_context.calc_values","css.properties.gap.grid_context.percentage_values","css.properties.grid","css.properties.grid-area","css.properties.grid-auto-columns","css.properties.grid-auto-flow","css.properties.grid-auto-rows","css.properties.grid-column","css.properties.grid-column-end","css.properties.grid-column-start","css.properties.grid-row","css.properties.grid-row-end","css.properties.grid-row-start","css.properties.grid-template","css.properties.grid-template-areas","css.properties.grid-template-columns","css.properties.grid-template-columns.fit-content","css.properties.grid-template-columns.minmax","css.properties.grid-template-columns.repeat","css.properties.grid-template-rows","css.properties.grid-template-rows.fit-content","css.properties.grid-template-rows.minmax","css.properties.grid-template-rows.repeat","css.properties.justify-content.grid_context","css.properties.justify-items.grid_context","css.properties.justify-self.grid_context","css.properties.place-content.grid_context","css.properties.place-items.grid_context","css.properties.place-self.grid_context","css.properties.row-gap.grid_context","css.types.flex"],"description":"CSS Grid is a two-dimensional layout system, which lays content out in rows and columns.","description_html":"CSS Grid is a two-dimensional layout system, which lays content out in rows and columns.","group":"grid","name":"Grid","spec":"https://drafts.csswg.org/css-grid-3/","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"76","firefox_android":"79","safari":"12.1","safari_ios":"12.2"}}},"grid-animation":{"compat_features":["css.properties.grid-template-columns.animation","css.properties.grid-template-rows.animation"],"description":"Grid animation allows you to animate the grid-template-columns and grid-template-rows CSS properties.","description_html":"Grid animation allows you to animate the <code>grid-template-columns</code> and <code>grid-template-rows</code> CSS properties.","group":"grid","name":"Grid animation","spec":"https://drafts.csswg.org/css-grid-2/#track-sizing","status":{"baseline":"low","baseline_low_date":"2022-10-27","support":{"chrome":"107","chrome_android":"107","edge":"107","firefox":"66","firefox_android":"66","safari":"16","safari_ios":"16"}}},"growable-sharedarraybuffer":{"compat_features":["javascript.builtins.SharedArrayBuffer.SharedArrayBuffer.maxByteLength_option","javascript.builtins.SharedArrayBuffer.grow","javascript.builtins.SharedArrayBuffer.growable","javascript.builtins.SharedArrayBuffer.maxByteLength"],"description":"The grow() method of a SharedArrayBuffer, constructed with the maxByteLength option, increases the size of the buffer in place.","description_html":"The <code>grow()</code> method of a <code>SharedArrayBuffer</code>, constructed with the <code>maxByteLength</code> option, increases the size of the buffer in place.","name":"Growable SharedArrayBuffer","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-get-sharedarraybuffer.prototype.growable","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"gyroscope":{"compat_features":["api.Gyroscope","api.Gyroscope.Gyroscope","api.Gyroscope.x","api.Gyroscope.y","api.Gyroscope.z","api.Permissions.permission_gyroscope"],"description":"The Gyroscope API reads the angular velocity of a device in three dimensions.","description_html":"The <code>Gyroscope</code> API reads the angular velocity of a device in three dimensions.","group":"sensors","name":"Gyroscope","spec":"https://w3c.github.io/gyroscope/#gyroscope-interface","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79"}}},"has":{"caniuse":"css-has","compat_features":["css.selectors.has"],"description":"The :has() CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.","description_html":"The <code>:has()</code> CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.","name":":has()","spec":"https://drafts.csswg.org/selectors-4/#relational","status":{"baseline":"low","baseline_low_date":"2023-12-19","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"121","firefox_android":"121","safari":"15.4","safari_ios":"15.4"}}},"head":{"compat_features":["api.HTMLHeadElement","html.elements.head"],"description":"The <head> element contains machine-readable information (metadata) about the document, such as the title, <script> and <style> elements, and <meta> elements.","description_html":"The <code>&#x3C;head></code> element contains machine-readable information (metadata) about the document, such as the title, <code>&#x3C;script></code> and <code>&#x3C;style></code> elements, and <code>&#x3C;meta></code> elements.","group":"html-elements","name":"<head>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-head-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"header-footer":{"compat_features":["html.elements.footer","html.elements.header"],"description":"The <header> and <footer> HTML elements represent content that precedes and follows the main page content, respectively.","description_html":"The <code>&#x3C;header></code> and <code>&#x3C;footer></code> HTML elements represent content that precedes and follows the main page content, respectively.","group":"html-elements","name":"<header> and <footer>","spec":["https://html.spec.whatwg.org/multipage/sections.html#the-header-element","https://html.spec.whatwg.org/multipage/sections.html#the-footer-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"headings":{"compat_features":["api.HTMLHeadingElement","html.elements.h1","html.elements.h2","html.elements.h3","html.elements.h4","html.elements.h5","html.elements.h6"],"description":"The <h1> through <h6> HTML elements represent six levels of section headings, in order of decreasing importance.","description_html":"The <code>&#x3C;h1></code> through <code>&#x3C;h6></code> HTML elements represent six levels of section headings, in order of decreasing importance.","group":"html-elements","name":"<h1> through <h6>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"hgroup":{"compat_features":["html.elements.hgroup"],"description":"The <hgroup> element represents a heading and related content.","description_html":"The <code>&#x3C;hgroup></code> element represents a heading and related content.","group":"html-elements","name":"<hgroup>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-hgroup-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"hidden-until-found":{"compat_features":["html.global_attributes.hidden.until-found_value"],"description":"The hidden=\"until-found\" attribute hides an element until it is found using the browser's find-in-page search or it is directly navigated to by following a URL fragment.","description_html":"The <code>hidden=\"until-found\"</code> attribute hides an element until it is found using the browser's find-in-page search or it is directly navigated to by following a URL fragment.","group":"html","name":"hidden=\"until-found\"","spec":"https://html.spec.whatwg.org/multipage/interaction.html#attr-hidden-until-found","status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102"}}},"highlight":{"compat_features":["api.CSS.highlights_static","api.Highlight","api.Highlight.@@iterator","api.Highlight.Highlight","api.Highlight.add","api.Highlight.clear","api.Highlight.delete","api.Highlight.entries","api.Highlight.forEach","api.Highlight.has","api.Highlight.keys","api.Highlight.priority","api.Highlight.size","api.Highlight.type","api.Highlight.values","api.HighlightRegistry","api.HighlightRegistry.@@iterator","api.HighlightRegistry.clear","api.HighlightRegistry.delete","api.HighlightRegistry.entries","api.HighlightRegistry.forEach","api.HighlightRegistry.get","api.HighlightRegistry.has","api.HighlightRegistry.keys","api.HighlightRegistry.set","api.HighlightRegistry.size","api.HighlightRegistry.values","css.selectors.highlight"],"description":"Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.","description_html":"Custom highlights style arbitrary text ranges, without adding extra elements to the DOM.","name":"Custom highlights","spec":"https://drafts.csswg.org/css-highlight-api-1/","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105","safari":"17.2","safari_ios":"17.2"}}},"hr":{"compat_features":["api.HTMLHRElement","html.elements.hr"],"description":"The <hr> element represents a thematic break between paragraphs, often shown as a horizontal rule.","description_html":"The <code>&#x3C;hr></code> element represents a thematic break between paragraphs, often shown as a horizontal rule.","group":"html-elements","name":"<hr>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-hr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"html":{"compat_features":["api.HTMLHtmlElement","html.elements.html"],"description":"The <html> element represents the top-level of an HTML document and is referred to as the root element.","description_html":"The <code>&#x3C;html></code> element represents the top-level of an HTML document and is referred to as the root element.","group":"html-elements","name":"<html>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-html-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"html-media-capture":{"caniuse":"html-media-capture","compat_features":["api.HTMLInputElement.capture","html.elements.input.capture"],"description":"The capture HTML attribute for <input type=\"file\"> elements allows the user to capture media using the device's camera or microphone.","description_html":"The <code>capture</code> HTML attribute for <code>&#x3C;input type=\"file\"></code> elements allows the user to capture media using the device's camera or microphone.","name":"HTML media capture","spec":"https://w3c.github.io/html-media-capture/","status":{"baseline":false,"support":{"chrome_android":"25","firefox_android":"79","safari_ios":"10"}}},"http11":{"compat_features":["http.methods.GET"],"description":"HTTP/1.1 is a network protocol used by browsers and servers. It has been superseded by HTTP/2 and HTTP/3.","description_html":"HTTP/1.1 is a network protocol used by browsers and servers. It has been superseded by HTTP/2 and HTTP/3.","name":"HTTP/1.1","spec":"https://httpwg.org/specs/rfc9112.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"http2":{"caniuse":"http2","description":"The HTTP/2 protocol is a major revision of the HTTP network protocol, providing improved performance and efficiency by using a single TCP connection to send multiple streams of data at once.","description_html":"The HTTP/2 protocol is a major revision of the HTTP network protocol, providing improved performance and efficiency by using a single TCP connection to send multiple streams of data at once.","name":"HTTP/2","spec":"https://httpwg.org/specs/rfc9113.html","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"36","firefox_android":"36","safari":"9","safari_ios":"9"}}},"http3":{"caniuse":"http3","description":"HTTP/3 is a major revision of the HTTP network protocol, providing improved performance and efficiency by using QUIC as the underlying transport protocol.","description_html":"HTTP/3 is a major revision of the HTTP network protocol, providing improved performance and efficiency by using QUIC as the underlying transport protocol.","name":"HTTP/3","spec":"https://httpwg.org/specs/rfc9114.html","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"88","firefox_android":"88"}}},"hyphens":{"caniuse":"css-hyphens","compat_features":["css.properties.hyphens"],"description":"The hyphens CSS property controls when long words are broken by line wrapping. Although called hyphens, the property applies to word-splitting behavior across languages, such as customary spelling changes or the use of other characters to mark an intraword line break.","description_html":"The <code>hyphens</code> CSS property controls when long words are broken by line wrapping. Although called <code>hyphens</code>, the property applies to word-splitting behavior across languages, such as customary spelling changes or the use of other characters to mark an intraword line break.","name":"Hyphenation","spec":"https://drafts.csswg.org/css-text-3/#hyphens-property","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"55","chrome_android":"55","edge":"79","firefox":"43","firefox_android":"43","safari":"17","safari_ios":"17"}}},"i":{"compat_features":["html.elements.i"],"description":"The <i> HTML element identifies idiomatic content, styling text as italic by default.","description_html":"The <code>&#x3C;i></code> HTML element identifies idiomatic content, styling text as italic by default.","group":"html-elements","name":"<i>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-i-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"ic":{"compat_features":["css.types.length.ic"],"description":"The CSS ic unit corresponds to the width of CJK ideographic characters.","description_html":"The CSS <code>ic</code> unit corresponds to the width of CJK ideographic characters.","name":"ic unit","spec":"https://drafts.csswg.org/css-values-4/#ic","status":{"baseline":"low","baseline_low_date":"2022-10-03","support":{"chrome":"106","chrome_android":"106","edge":"106","firefox":"97","firefox_android":"97","safari":"15.4","safari_ios":"15.4"}}},"idle-detection":{"compat_features":["api.IdleDetector","api.IdleDetector.IdleDetector","api.IdleDetector.change_event","api.IdleDetector.requestPermission_static","api.IdleDetector.screenState","api.IdleDetector.start","api.IdleDetector.userState","http.headers.Permissions-Policy.idle-detection"],"description":"The IdleDetector API is used to notify a webpage of the user's idle, active, and locked state.","description_html":"The <code>IdleDetector</code> API is used to notify a webpage of the user's idle, active, and locked state.","name":"Idle detection","spec":"https://wicg.github.io/idle-detection/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"114"}}},"iframe":{"compat_features":["api.HTMLIFrameElement","api.HTMLIFrameElement.allow","api.HTMLIFrameElement.contentDocument","api.HTMLIFrameElement.contentWindow","api.HTMLIFrameElement.getSVGDocument","api.HTMLIFrameElement.height","api.HTMLIFrameElement.name","api.HTMLIFrameElement.src","api.HTMLIFrameElement.width","html.elements.iframe","html.elements.iframe.allow","html.elements.iframe.height","html.elements.iframe.name","html.elements.iframe.src","html.elements.iframe.width"],"description":"The <iframe> element embeds another HTML page into the current page.","description_html":"The <code>&#x3C;iframe></code> element embeds another HTML page into the current page.","group":"html-elements","name":"<iframe>","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"iframe-credentialless":{"compat_features":["api.HTMLIFrameElement.credentialless","api.Window.credentialless","html.elements.iframe.credentialless"],"description":"The credentialless attribute for the <iframe> HTML element loads third-party content in an ephemeral context and does not send any credentials such as cookies. When using cross-origin isolation, this allows you to embed content that does not send Cross-Origin-Embedder-Policy headers.","description_html":"The <code>credentialless</code> attribute for the <code>&#x3C;iframe></code> HTML element loads third-party content in an ephemeral context and does not send any credentials such as cookies. When using cross-origin isolation, this allows you to embed content that does not send <code>Cross-Origin-Embedder-Policy</code> headers.","name":"Credentialless iframes","spec":"https://wicg.github.io/anonymous-iframe/","status":{"baseline":false,"support":{"chrome":"110","chrome_android":"110","edge":"110"}}},"image-maps":{"compat_features":["api.HTMLAreaElement","api.HTMLAreaElement.alt","api.HTMLAreaElement.coords","api.HTMLAreaElement.hash","api.HTMLAreaElement.host","api.HTMLAreaElement.hostname","api.HTMLAreaElement.href","api.HTMLAreaElement.origin","api.HTMLAreaElement.password","api.HTMLAreaElement.pathname","api.HTMLAreaElement.port","api.HTMLAreaElement.protocol","api.HTMLAreaElement.rel","api.HTMLAreaElement.relList","api.HTMLAreaElement.search","api.HTMLAreaElement.shape","api.HTMLAreaElement.target","api.HTMLAreaElement.toString","api.HTMLAreaElement.username","api.HTMLImageElement.isMap","api.HTMLImageElement.useMap","api.HTMLMapElement","api.HTMLMapElement.areas","api.HTMLMapElement.name","html.elements.area","html.elements.area.alt","html.elements.area.coords","html.elements.area.href","html.elements.area.implicit_noopener","html.elements.area.rel","html.elements.area.rel.noopener","html.elements.area.rel.noreferrer","html.elements.area.shape","html.elements.area.target","html.elements.img.ismap","html.elements.img.usemap","html.elements.map","html.elements.map.name"],"description":"The <area> and <map> elements define a clickable area on an image.","description_html":"The <code>&#x3C;area></code> and <code>&#x3C;map></code> elements define a clickable area on an image.","group":"html-elements","name":"Image maps","spec":"https://html.spec.whatwg.org/multipage/image-maps.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"image-set":{"caniuse":"css-image-set","compat_features":["css.properties.background-image.image-set","css.properties.content.image-set","css.types.image.image-set"],"description":"The image-set() CSS function provides a set of images at different resolutions or pixel densities, which the browser can pick from, depending on the device capabilities.","description_html":"The <code>image-set()</code> CSS function provides a set of images at different resolutions or pixel densities, which the browser can pick from, depending on the device capabilities.","name":"image-set()","spec":"https://drafts.csswg.org/css-images-4/#image-set-notation","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"113","chrome_android":"113","edge":"113","firefox":"89","firefox_android":"89","safari":"17","safari_ios":"17"}}},"img":{"compat_features":["api.HTMLImageElement","api.HTMLImageElement.Image","api.HTMLImageElement.alt","api.HTMLImageElement.complete","api.HTMLImageElement.crossOrigin","api.HTMLImageElement.decode","api.HTMLImageElement.decoding","api.HTMLImageElement.height","api.HTMLImageElement.naturalHeight","api.HTMLImageElement.naturalWidth","api.HTMLImageElement.src","api.HTMLImageElement.width","html.elements.img","html.elements.img.alt","html.elements.img.crossorigin","html.elements.img.decoding","html.elements.img.height","html.elements.img.src","html.elements.img.width"],"description":"The <img> element adds an image into the document.","description_html":"The <code>&#x3C;img></code> element adds an image into the document.","group":"html-elements","name":"<img>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"import-maps":{"caniuse":"import-maps","compat_features":["html.elements.script.type.importmap"],"description":"A <script type=\"importmap\"> HTML element provides an import map as a JSON string. An import map controls how the browser should resolve module specifiers when importing JavaScript modules.","description_html":"A <code>&#x3C;script type=\"importmap\"></code> HTML element provides an import map as a JSON string. An import map controls how the browser should resolve module specifiers when importing JavaScript modules.","name":"Import maps","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#import-maps","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"108","firefox_android":"108","safari":"16.4","safari_ios":"16.4"}}},"indeterminate":{"caniuse":"css-indeterminate-pseudo","compat_features":["css.selectors.indeterminate","css.selectors.indeterminate.checkbox","css.selectors.indeterminate.progress","css.selectors.indeterminate.radio"],"description":"The :indeterminate CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.","description_html":"The <code>:indeterminate</code> CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.","group":"forms","name":":indeterminate","spec":["https://drafts.csswg.org/selectors-4/#indeterminate","https://html.spec.whatwg.org/multipage/semantics-other.html#selector-indeterminate"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"39","chrome_android":"39","edge":"79","firefox":"51","firefox_android":"51","safari":"10","safari_ios":"10"}}},"individual-transforms":{"compat_features":["css.properties.rotate","css.properties.scale","css.properties.translate"],"description":"Transform elements with separate translate, rotate, and scale CSS properties.","description_html":"Transform elements with separate <code>translate</code>, <code>rotate</code>, and <code>scale</code> CSS properties.","group":"transforms","name":"Individual transform properties","spec":"https://drafts.csswg.org/css-transforms-2/#individual-transforms","status":{"baseline":"low","baseline_low_date":"2022-08-05","support":{"chrome":"104","chrome_android":"104","edge":"104","firefox":"72","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"inert":{"compat_features":["api.HTMLElement.inert","html.global_attributes.inert"],"description":"The inert HTML attribute marks an element and its descendants as non-interactive. Inert elements don't get focus or fire click events.","description_html":"The <code>inert</code> HTML attribute marks an element and its descendants as non-interactive. Inert elements don't get focus or fire <code>click</code> events.","group":"html","name":"Inert elements","spec":"https://html.spec.whatwg.org/multipage/interaction.html#inert-subtrees","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"102","chrome_android":"102","edge":"102","firefox":"112","firefox_android":"112","safari":"15.5","safari_ios":"15.5"}}},"input-event":{"caniuse":"input-event","compat_features":["api.Element.input_event","api.InputEvent","api.InputEvent.InputEvent","api.InputEvent.data","api.InputEvent.dataTransfer","api.InputEvent.getTargetRanges","api.InputEvent.inputType","api.InputEvent.isComposing"],"description":"The input event fires when a form control changes or an element with the contenteditable attribute changes.","description_html":"The <code>input</code> event fires when a form control changes or an element with the <code>contenteditable</code> attribute changes.","name":"input (event)","spec":"https://w3c.github.io/uievents/#event-type-input","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"87","firefox_android":"87","safari":"16.4","safari_ios":"16.4"}}},"ins":{"compat_features":["html.elements.ins","html.elements.ins.cite","html.elements.ins.datetime"],"description":"The <ins> element element represents a range of text that has been inserted into a document, styling text as underlined by default.","description_html":"The <code>&#x3C;ins></code> element element represents a range of text that has been inserted into a document, styling text as underlined by default.","group":"html-elements","name":"<ins>","spec":"https://html.spec.whatwg.org/multipage/edits.html#the-ins-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"intersection-observer":{"caniuse":"intersectionobserver","compat_features":["api.IntersectionObserver","api.IntersectionObserver.IntersectionObserver","api.IntersectionObserver.disconnect","api.IntersectionObserver.observe","api.IntersectionObserver.root","api.IntersectionObserver.rootMargin","api.IntersectionObserver.takeRecords","api.IntersectionObserver.thresholds","api.IntersectionObserver.unobserve","api.IntersectionObserverEntry","api.IntersectionObserverEntry.boundingClientRect","api.IntersectionObserverEntry.intersectionRatio","api.IntersectionObserverEntry.intersectionRect","api.IntersectionObserverEntry.isIntersecting","api.IntersectionObserverEntry.rootBounds","api.IntersectionObserverEntry.target","api.IntersectionObserverEntry.time"],"description":"The Intersection Observer API asynchronously observes changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.","description_html":"The Intersection Observer API asynchronously observes changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.","name":"Intersection observer","spec":"https://w3c.github.io/IntersectionObserver/","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"58","chrome_android":"58","edge":"16","firefox":"55","firefox_android":"55","safari":"12.1","safari_ios":"12.2"}}},"intersection-observer-v2":{"caniuse":"intersectionobserver-v2","description":"The trackVisibility parameter for the IntersectionObserver constructor enables tracking the visibility of an element, to detect if it may be obscured by other content or visual effects. Also known as IntersectionObserver v2.","description_html":"The <code>trackVisibility</code> parameter for the <code>IntersectionObserver</code> constructor enables tracking the visibility of an element, to detect if it may be obscured by other content or visual effects. Also known as IntersectionObserver v2.","name":"Intersection observer visibility tracking","spec":"https://w3c.github.io/IntersectionObserver/#calculate-visibility-algo","status":{"baseline":false,"support":{"chrome":"74","chrome_android":"74","edge":"79"}}},"intl-segmenter":{"compat_features":["javascript.builtins.Intl.Segmenter","javascript.builtins.Intl.Segmenter.Segmenter","javascript.builtins.Intl.Segmenter.resolvedOptions","javascript.builtins.Intl.Segmenter.segment","javascript.builtins.Intl.Segmenter.supportedLocalesOf","javascript.builtins.Intl.Segments","javascript.builtins.Intl.Segments.@@iterator","javascript.builtins.Intl.Segments.containing"],"description":"The Intl.Segmenter API creates a locale-aware text splitter that can separate a string into meaningful graphemes, words, or sentences.","description_html":"The <code>Intl.Segmenter</code> API creates a locale-aware text splitter that can separate a string into meaningful graphemes, words, or sentences.","group":"intl","name":"Intl.Segmenter","spec":"https://tc39.es/ecma402/#segmenter-objects","status":{"baseline":"low","baseline_low_date":"2024-04-16","support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"125","firefox_android":"125","safari":"14.1","safari_ios":"14.5"}}},"is":{"caniuse":"css-matches-pseudo","compat_features":["css.selectors.is","css.selectors.is.forgiving_selector_list"],"description":"The :is() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.","description_html":"The <code>:is()</code> CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.","name":":is()","spec":"https://drafts.csswg.org/selectors-4/#matches","status":{"baseline":"high","baseline_high_date":"2023-07-21","baseline_low_date":"2021-01-21","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"82","firefox_android":"82","safari":"14","safari_ios":"14"}}},"jpegxl":{"caniuse":"jpegxl","description":"The JPEG XL image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","description_html":"The JPEG XL image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","name":"JPEG XL","spec":"https://www.iso.org/standard/85253.html","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17"}}},"js-modules":{"caniuse":"es6-module","compat_features":["html.elements.script.nomodule","html.elements.script.type.module","javascript.statements.export","javascript.statements.export.default","javascript.statements.import"],"description":"JavaScript modules allow code to be organized into reusable units. Modules use import to load other modules and export to declare what is available to import from other modules. In HTML, modules are loaded with <script type=\"module\">.","description_html":"JavaScript modules allow code to be organized into reusable units. Modules use <code>import</code> to load other modules and <code>export</code> to declare what is available to import from other modules. In HTML, modules are loaded with <code>&#x3C;script type=\"module\"></code>.","group":"js-modules","name":"JavaScript modules","snapshot":"ecmascript-2015","spec":["https://html.spec.whatwg.org/multipage/webappapis.html#javascript-module-script","https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-modules"],"status":{"baseline":"high","baseline_high_date":"2020-11-09","baseline_low_date":"2018-05-09","support":{"chrome":"61","chrome_android":"61","edge":"16","firefox":"60","firefox_android":"60","safari":"11","safari_ios":"11"}}},"js-modules-service-workers":{"compat_features":["api.ServiceWorker.ecmascript_modules","javascript.statements.import.service_worker_support"],"description":"The navigator.serviceWorker.register() method accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in service workers.","description_html":"The <code>navigator.serviceWorker.register()</code> method accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in service workers.","group":"js-modules","name":"JavaScript modules in service workers","spec":"https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type","status":{"baseline":false,"support":{"chrome":"91","chrome_android":"91","edge":"91","safari":"15","safari_ios":"15"}}},"js-modules-shared-workers":{"compat_features":["api.SharedWorker.SharedWorker.ecmascript_modules","api.SharedWorker.SharedWorker.options_type_parameter"],"description":"The SharedWorker() constructor accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in shared workers.","description_html":"The <code>SharedWorker()</code> constructor accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in shared workers.","group":"js-modules","name":"JavaScript modules in shared workers","spec":"https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface:dom-sharedworker-2","status":{"baseline":false,"support":{"chrome":"80","edge":"80","firefox":"114","firefox_android":"114","safari":"16","safari_ios":"16"}}},"js-modules-workers":{"compat_features":["api.Worker.Worker.ecmascript_modules","api.Worker.Worker.options_type_parameter","javascript.operators.import.worker_support","javascript.statements.import.worker_support"],"description":"The Worker() constructor accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in workers.","description_html":"The <code>Worker()</code> constructor accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in workers.","group":"js-modules","name":"JavaScript modules in workers","spec":"https://html.spec.whatwg.org/multipage/workers.html#dom-worker-dev","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"114","firefox_android":"114","safari":"15","safari_ios":"15"}}},"json-modules":{"compat_features":["javascript.statements.import.import_attributes.type_json"],"description":"Module import ... with { type: \"json\" } statements load JSON data. Also known as JSON module scripts and formerly known as import assertions.","description_html":"Module <code>import ... with { type: \"json\" }</code> statements load JSON data. Also known as JSON module scripts and formerly known as import assertions.","name":"JSON import attributes","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#json-module-script","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123","safari":"17.2","safari_ios":"17.2"}}},"kbd":{"compat_features":["html.elements.kbd"],"description":"The <kbd> element represents textual user input, such as keyboard or voice input, styling text in monospaced type by default.","description_html":"The <code>&#x3C;kbd></code> element represents textual user input, such as keyboard or voice input, styling text in monospaced type by default.","group":"html-elements","name":"<kbd>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-kbd-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"keyboard-lock":{"compat_features":["api.Keyboard","api.Keyboard.lock","api.Keyboard.unlock","api.Navigator.keyboard"],"description":"The navigator.keyboard.lock() API allows you to capture keys that are normally reserved by the operating system. It can be used to provide an immersive fullscreen experience such as games.","description_html":"The <code>navigator.keyboard.lock()</code> API allows you to capture keys that are normally reserved by the operating system. It can be used to provide an immersive fullscreen experience such as games.","name":"Keyboard lock","spec":"https://wicg.github.io/keyboard-lock/","status":{"baseline":false,"support":{"chrome":"68","chrome_android":"68","edge":"79"}}},"keyboard-map":{"compat_features":["api.Keyboard.getLayoutMap","api.KeyboardLayoutMap"],"description":"The navigator.keyboard.getLayoutMap() API returns a map from key codes to human readable key names. It can be used to describe buttons to the user when using the keyboard as a set of buttons, such as in games.","description_html":"The <code>navigator.keyboard.getLayoutMap()</code> API returns a map from key codes to human readable key names. It can be used to describe buttons to the user when using the keyboard as a set of buttons, such as in games.","name":"Keyboard map","spec":"https://wicg.github.io/keyboard-map/","status":{"baseline":false,"support":{"chrome":"69","chrome_android":"69","edge":"79"}}},"lab":{"caniuse":"css-lch-lab","compat_features":["css.types.color.lab","css.types.color.lch"],"description":"The CIE Lab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is. LCH is a variant of Lab with polar coordinates. These color spaces can be used with the CSS color(), lab(), and lch() functions. Also known as CIELAB and CIELCH.","description_html":"The CIE Lab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is. LCH is a variant of Lab with polar coordinates. These color spaces can be used with the CSS <code>color()</code>, <code>lab()</code>, and <code>lch()</code> functions. Also known as CIELAB and CIELCH.","name":"Lab and LCH","spec":"https://drafts.csswg.org/css-color-4/#cie-lab","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"15","safari_ios":"15"}}},"lh":{"compat_features":["css.types.length.lh"],"description":"The CSS lh unit corresponds to the requested line height, the computed value of the line-height property. Some lines may be higher than this based on their content.","description_html":"The CSS <code>lh</code> unit corresponds to the requested line height, the computed value of the <code>line-height</code> property. Some lines may be higher than this based on their content.","name":"lh unit","spec":"https://drafts.csswg.org/css-values-4/#lh","status":{"baseline":"low","baseline_low_date":"2023-11-21","support":{"chrome":"109","chrome_android":"109","edge":"109","firefox":"120","firefox_android":"120","safari":"16.4","safari_ios":"16.4"}}},"light-dark":{"compat_features":["css.types.color.light-dark"],"description":"The light-dark() CSS function accepts two colors and uses one depending on the current color scheme.","description_html":"The <code>light-dark()</code> CSS function accepts two colors and uses one depending on the current color scheme.","name":"light-dark()","spec":"https://drafts.csswg.org/css-color-5/#light-dark","status":{"baseline":"low","baseline_low_date":"2024-05-13","support":{"chrome":"123","chrome_android":"123","edge":"123","firefox":"120","firefox_android":"120","safari":"17.5","safari_ios":"17.5"}}},"line-clamp":{"caniuse":"css-line-clamp","compat_features":["css.properties.line-clamp"],"description":"The line-clamp CSS property limits the text in a block container to a certain number of lines. The prefixed -webkit-line-clamp is widely supported but only works with -webkit-box-orient: vertical in combination with display: -webkit-box or display: -webkit-inline-box.","description_html":"The <code>line-clamp</code> CSS property limits the text in a block container to a certain number of lines. The prefixed <code>-webkit-line-clamp</code> is widely supported but only works with <code>-webkit-box-orient: vertical</code> in combination with <code>display: -webkit-box</code> or <code>display: -webkit-inline-box</code>.","name":"line-clamp","spec":"https://drafts.csswg.org/css-overflow-4/#line-clamp","status":{"baseline":false,"support":{}}},"linear-easing":{"compat_features":["css.types.easing-function.linear-function"],"description":"The linear() easing function for animations and transitions interpolates linearly between the control points, and can be used to approximate complex easing functions, such as a bounce effect.","description_html":"The <code>linear()</code> easing function for animations and transitions interpolates linearly between the control points, and can be used to approximate complex easing functions, such as a bounce effect.","name":"linear() easing","spec":"https://drafts.csswg.org/css-easing-2/#the-linear-easing-function","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"113","chrome_android":"113","edge":"113","firefox":"112","firefox_android":"112","safari":"17.2","safari_ios":"17.2"}}},"list-elements":{"compat_features":["api.HTMLLIElement","api.HTMLLIElement.value","api.HTMLOListElement","api.HTMLOListElement.reversed","api.HTMLOListElement.start","api.HTMLOListElement.type","api.HTMLUListElement","html.elements.li","html.elements.li.value","html.elements.ol","html.elements.ol.reversed","html.elements.ol.start","html.elements.ol.type","html.elements.ul"],"description":"The <ol>, <ul>, and <li> HTML elements represent ordered and unordered lists.","description_html":"The <code>&#x3C;ol></code>, <code>&#x3C;ul></code>, and <code>&#x3C;li></code> HTML elements represent ordered and unordered lists.","group":"html-elements","name":"<ol>, <ul>, and <li>","spec":["https://html.spec.whatwg.org/multipage/grouping-content.html#the-ol-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-ul-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-li-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"loading-lazy":{"caniuse":"loading-lazy-attr","compat_features":["api.HTMLIFrameElement.loading","api.HTMLImageElement.loading","html.elements.iframe.loading","html.elements.img.loading"],"description":"The loading=\"lazy\" attribute for <img> and <iframe> elements blocks loading the external resource until the user scrolls to that element's part of the page.","description_html":"The <code>loading=\"lazy\"</code> attribute for <code>&#x3C;img></code> and <code>&#x3C;iframe></code> elements blocks loading the external resource until the user scrolls to that element's part of the page.","name":"Lazy-loading images and iframes","spec":"https://html.spec.whatwg.org/multipage/urls-and-fetching.html#lazy-loading-attributes","status":{"baseline":"low","baseline_low_date":"2023-12-19","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"121","firefox_android":"121","safari":"16.4","safari_ios":"16.4"}}},"main":{"compat_features":["html.elements.main"],"description":"The <main> element represents the dominant content of a document. It is commonly used together with <header> and <footer>.","description_html":"The <code>&#x3C;main></code> element represents the dominant content of a document. It is commonly used together with <code>&#x3C;header></code> and <code>&#x3C;footer></code>.","group":"html-elements","name":"<main>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-main-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"21","firefox_android":"21","safari":"7","safari_ios":"7"}}},"managed-media-source":{"compat_features":["api.ManagedMediaSource","api.ManagedMediaSource.ManagedMediaSource","api.ManagedMediaSource.endstreaming_event","api.ManagedMediaSource.startstreaming_event","api.ManagedMediaSource.streaming","api.ManagedSourceBuffer","api.ManagedSourceBuffer.bufferedchange_event"],"description":"The ManagedMediaSource API is a MediaSource where the browser manages the memory of source buffers and may evict data if needed.","description_html":"The <code>ManagedMediaSource</code> API is a <code>MediaSource</code> where the browser manages the memory of source buffers and may evict data if needed.","name":"Managed media source","spec":"https://w3c.github.io/media-source/#managedmediasource-interface","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17.1"}}},"map":{"compat_features":["javascript.builtins.Map","javascript.builtins.Map.@@iterator","javascript.builtins.Map.Map","javascript.builtins.Map.Map.iterable_allowed","javascript.builtins.Map.Map.null_allowed","javascript.builtins.Map.clear","javascript.builtins.Map.delete","javascript.builtins.Map.entries","javascript.builtins.Map.forEach","javascript.builtins.Map.get","javascript.builtins.Map.has","javascript.builtins.Map.key_equality_for_zeros","javascript.builtins.Map.keys","javascript.builtins.Map.set","javascript.builtins.Map.size","javascript.builtins.Map.values"],"description":"Map objects hold key-value pairs and remember the original insertion order of the keys.","description_html":"Map objects hold key-value pairs and remember the original insertion order of the keys.","group":"maps","name":"Map (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map-objects","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map-constructor","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.clear","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.delete","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.entries","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.foreach","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.get","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.has","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.keys","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.set","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-get-map.prototype.size","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype.values","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-map.prototype-@@iterator","https://tc39.es/ecma262/multipage/keyed-collections.html#sec-get-map-@@species"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"38","chrome_android":"38","edge":"12","firefox":"13","firefox_android":"14","safari":"8","safari_ios":"8"}}},"margin-trim":{"compat_features":["css.properties.margin-trim","css.properties.margin-trim.block","css.properties.margin-trim.block-end","css.properties.margin-trim.block-start","css.properties.margin-trim.inline","css.properties.margin-trim.inline-end","css.properties.margin-trim.inline-start","css.properties.margin-trim.none"],"description":"The margin-trim CSS property removes the margins of child elements when they meet the edges of the container.","description_html":"The <code>margin-trim</code> CSS property removes the margins of child elements when they meet the edges of the container.","name":"margin-trim","spec":"https://drafts.csswg.org/css-box-4/#margin-trim","status":{"baseline":false,"support":{"safari":"16.4","safari_ios":"16.4"}}},"mark":{"compat_features":["html.elements.mark"],"description":"The <mark> element represents text which is marked or highlighted for reference or notation purposes.","description_html":"The <code>&#x3C;mark></code> element represents text which is marked or highlighted for reference or notation purposes.","group":"html-elements","name":"<mark>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-mark-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"masks":{"caniuse":"css-masks","compat_features":["css.properties.mask","css.properties.mask-clip","css.properties.mask-composite","css.properties.mask-image","css.properties.mask-mode","css.properties.mask-origin","css.properties.mask-position","css.properties.mask-repeat","css.properties.mask-size"],"description":"The mask CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.","description_html":"The <code>mask</code> CSS property (and several longhand properties) partially or completely hides an element according to the shape and depth of an image.","name":"Masks","spec":"https://drafts.fxtf.org/css-masking-1/#positioned-masks","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"53","firefox_android":"53","safari":"15.4","safari_ios":"15.4"}}},"masonry":{"compat_features":["css.properties.grid-template-columns.masonry","css.properties.grid-template-rows.masonry","css.properties.masonry-auto-flow"],"description":"Masonry is a type of CSS grid layout where the items on one of the axes are tightly packed together, like brickwork, instead of leaving gaps to align across the other axis.","description_html":"Masonry is a type of CSS grid layout where the items on one of the axes are tightly packed together, like brickwork, instead of leaving gaps to align across the other axis.","group":"layout","name":"Masonry","spec":"https://drafts.csswg.org/css-grid-3/","status":{"baseline":false,"support":{}}},"mathml":{"caniuse":"mathml","description":"MathML, or the Mathematical Markup Language, describes mathematical notation, such as expressions and formulas. Also known as MathML Core.","description_html":"MathML, or the Mathematical Markup Language, describes mathematical notation, such as expressions and formulas. Also known as MathML Core.","name":"MathML","spec":"https://w3c.github.io/mathml-core/","status":{"baseline":"low","baseline_low_date":"2023-01-12","support":{"chrome":"109","chrome_android":"109","edge":"109","firefox":"4","firefox_android":"4","safari":"10","safari_ios":"10"}}},"media-capture":{"caniuse":"stream","compat_features":["api.MediaDeviceInfo","api.MediaDeviceInfo.deviceId","api.MediaDeviceInfo.groupId","api.MediaDeviceInfo.kind","api.MediaDeviceInfo.label","api.MediaDevices","api.MediaDevices.enumerateDevices","api.MediaDevices.getUserMedia","api.MediaStream.getAudioTracks","api.MediaStream.getTracks","api.MediaStream.getVideoTracks","api.MediaStreamTrack","api.MediaStreamTrack.enabled","api.MediaStreamTrack.id","api.MediaStreamTrack.kind","api.MediaStreamTrack.label","api.MediaStreamTrack.stop"],"description":"The navigator.mediaDevices.getUserMedia() API requests access to devices that produce audio or video streams, such as microphones or video cameras.","description_html":"The <code>navigator.mediaDevices.getUserMedia()</code> API requests access to devices that produce audio or video streams, such as microphones or video cameras.","name":"Media capture","spec":"https://w3c.github.io/mediacapture-main/","status":{"baseline":"high","baseline_high_date":"2020-03-19","baseline_low_date":"2017-09-19","support":{"chrome":"53","chrome_android":"53","edge":"12","firefox":"36","firefox_android":"36","safari":"11","safari_ios":"11"}}},"media-pseudos":{"compat_features":["css.selectors.buffering","css.selectors.muted","css.selectors.paused","css.selectors.playing","css.selectors.seeking","css.selectors.stalled","css.selectors.volume-locked"],"description":"The :playing, :paused, :seeking, :buffering, :stalled, :muted, and :volume-locked CSS pseudo-classes match <audio> and <video> elements based on their state.","description_html":"The <code>:playing</code>, <code>:paused</code>, <code>:seeking</code>, <code>:buffering</code>, <code>:stalled</code>, <code>:muted</code>, and <code>:volume-locked</code> CSS pseudo-classes match <code>&#x3C;audio></code> and <code>&#x3C;video></code> elements based on their state.","group":"media-elements","name":"Media element pseudo-classes","spec":["https://drafts.csswg.org/selectors-4/#resource-pseudos","https://html.spec.whatwg.org/multipage/semantics-other.html#pseudo-classes"],"status":{"baseline":false,"support":{"safari":"15.4","safari_ios":"15.4"}}},"media-query-range-syntax":{"caniuse":"css-media-range-syntax","compat_features":["css.at-rules.media.range_syntax"],"description":"The range syntax of CSS media queries allows you to use mathematical comparison operators such as <, >, <=, and >= to define a range of values for a media feature. For example, (400px < width < 1000px) returns true if the viewport width is between 400px and 1000px.","description_html":"The range syntax of CSS media queries allows you to use mathematical comparison operators such as <code>&#x3C;</code>, <code>></code>, <code>&#x3C;=</code>, and <code>>=</code> to define a range of values for a media feature. For example, <code>(400px &#x3C; width &#x3C; 1000px)</code> returns true if the viewport width is between 400px and 1000px.","name":"Media query range syntax","spec":"https://drafts.csswg.org/mediaqueries-4/#mq-range-context","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"104","chrome_android":"104","edge":"104","firefox":"102","firefox_android":"102","safari":"16.4","safari_ios":"16.4"}}},"media-session":{"compat_features":["api.MediaMetadata","api.MediaMetadata.MediaMetadata","api.MediaMetadata.album","api.MediaMetadata.artist","api.MediaMetadata.artwork","api.MediaMetadata.title","api.MediaSession","api.MediaSession.metadata","api.MediaSession.playbackState","api.MediaSession.setActionHandler","api.MediaSession.setActionHandler.nexttrack_type","api.MediaSession.setActionHandler.pause_type","api.MediaSession.setActionHandler.play_type","api.MediaSession.setActionHandler.previoustrack_type","api.MediaSession.setActionHandler.seekbackward_type","api.MediaSession.setActionHandler.seekforward_type","api.Navigator.mediaSession"],"description":"The navigator.mediaSession API integrates with platform UI for media playback. It can be used to set metadata such as title and artwork, and to handle user actions like playing, pausing, or seeking.","description_html":"The <code>navigator.mediaSession</code> API integrates with platform UI for media playback. It can be used to set metadata such as title and artwork, and to handle user actions like playing, pausing, or seeking.","name":"Media session","spec":"https://w3c.github.io/mediasession/","status":{"baseline":false,"support":{"chrome":"73","chrome_android":"57","edge":"79","firefox":"82","safari":"15","safari_ios":"15"}}},"media-source":{"caniuse":"mediasource","compat_features":["api.MediaSource","api.SourceBuffer","api.SourceBufferList"],"description":"The MediaSource API is a custom data source for media elements commonly used for adaptive streaming. Also known as Media Source Extensions (MSE).","description_html":"The <code>MediaSource</code> API is a custom data source for media elements commonly used for adaptive streaming. Also known as Media Source Extensions (MSE).","name":"Media source","spec":"https://w3c.github.io/media-source/","status":{"baseline":false,"support":{"chrome":"31","chrome_android":"31","edge":"12","firefox":"42","firefox_android":"42","safari":"8"}}},"messageerror":{"compat_features":["api.DedicatedWorkerGlobalScope.messageerror_event","api.MessagePort.messageerror_event","api.ServiceWorkerContainer.messageerror_event","api.Window.messageerror_event"],"description":"The messageerror event fires on a target, such as a window or worker, when an incoming message cannot be deserialized. This event can fire for many types of messages, such as cross-document messages or broadcast channel messages.","description_html":"The <code>messageerror</code> event fires on a target, such as a window or worker, when an incoming message cannot be deserialized. This event can fire for many types of messages, such as cross-document messages or broadcast channel messages.","name":"messageerror","spec":["https://html.spec.whatwg.org/multipage/indices.html#event-messageerror","https://w3c.github.io/ServiceWorker/#eventdef-serviceworkerglobalscope-messageerror"],"status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"65","firefox_android":"65","safari":"16.4","safari_ios":"16.4"}}},"meta":{"compat_features":["api.HTMLMetaElement","api.HTMLMetaElement.content","api.HTMLMetaElement.httpEquiv","api.HTMLMetaElement.media","api.HTMLMetaElement.name","html.elements.meta","html.elements.meta.charset","html.elements.meta.content","html.elements.meta.http-equiv","html.elements.meta.http-equiv.refresh","html.elements.meta.name","html.elements.meta.name.referrer"],"description":"The <meta> element represents metadata about the page used by the browser or search engines, including description, keywords, and character sets.","description_html":"The <code>&#x3C;meta></code> element represents metadata about the page used by the browser or search engines, including description, keywords, and character sets.","group":"html-elements","name":"<meta>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#meta","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"min-max-clamp":{"compat_features":["css.types.clamp","css.types.max","css.types.min"],"description":"The min() and max() CSS functions return the minimum or maximum of the arguments, while clamp() clamps a value to a given range.","description_html":"The <code>min()</code> and <code>max()</code> CSS functions return the minimum or maximum of the arguments, while <code>clamp()</code> clamps a value to a given range.","name":"min(), max(), and clamp()","spec":"https://drafts.csswg.org/css-values-4/#comp-func","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"79","chrome_android":"79","edge":"79","firefox":"75","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"modal":{"compat_features":["css.selectors.modal"],"description":"The :modal pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <dialog> element used with showModal().","description_html":"The <code>:modal</code> pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <code>&#x3C;dialog></code> element used with <code>showModal()</code>.","group":"css","name":":modal","spec":"https://drafts.csswg.org/selectors-4/#modal-state","status":{"baseline":"low","baseline_low_date":"2022-09-02","support":{"chrome":"105","chrome_android":"105","edge":"105","firefox":"103","firefox_android":"103","safari":"15.6","safari_ios":"15.6"}}},"modulepreload":{"caniuse":"link-rel-modulepreload","compat_features":["html.elements.link.rel.modulepreload"],"description":"The rel=\"modulepreload\" attribute for the <link> HTML element indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution.","description_html":"The <code>rel=\"modulepreload\"</code> attribute for the <code>&#x3C;link></code> HTML element indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution.","name":"<link rel=\"modulepreload\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-modulepreload","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"66","chrome_android":"66","edge":"≤79","firefox":"115","firefox_android":"115","safari":"17","safari_ios":"17"}}},"motion-path":{"caniuse":"css-motion-paths","compat_features":["css.properties.offset","css.properties.offset-anchor","css.properties.offset-distance","css.properties.offset-path","css.properties.offset-path.path","css.properties.offset-rotate"],"description":"The offset CSS property animates an element along a defined motion path.","description_html":"The <code>offset</code> CSS property animates an element along a defined motion path.","name":"Motion path","spec":"https://drafts.fxtf.org/motion-1/","status":{"baseline":"low","baseline_low_date":"2023-08-21","support":{"chrome":"116","chrome_android":"116","edge":"116","firefox":"72","firefox_android":"79","safari":"16","safari_ios":"16"}}},"mouse-events":{"compat_features":["api.Element.click_event","api.Element.dblclick_event","api.Element.mousedown_event","api.Element.mouseenter_event","api.Element.mouseleave_event","api.Element.mousemove_event","api.Element.mouseout_event","api.Element.mouseover_event","api.Element.mouseup_event","api.MouseEvent","api.MouseEvent.MouseEvent","api.MouseEvent.altKey","api.MouseEvent.button","api.MouseEvent.buttons","api.MouseEvent.clientX","api.MouseEvent.clientY","api.MouseEvent.ctrlKey","api.MouseEvent.getModifierState","api.MouseEvent.metaKey","api.MouseEvent.movementX","api.MouseEvent.movementY","api.MouseEvent.offsetX","api.MouseEvent.offsetY","api.MouseEvent.pageX","api.MouseEvent.pageY","api.MouseEvent.relatedTarget","api.MouseEvent.screenX","api.MouseEvent.screenY","api.MouseEvent.shiftKey","api.MouseEvent.x","api.MouseEvent.y"],"description":"Mouse events, such as click, mousedown, or mousemove, fire when users interact with an input or pointing device such as a mouse, trackpad, or touchscreen.","description_html":"Mouse events, such as <code>click</code>, <code>mousedown</code>, or <code>mousemove</code>, fire when users interact with an input or pointing device such as a mouse, trackpad, or touchscreen.","name":"Mouse events","spec":"https://w3c.github.io/uievents/#events-mouse-types","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"nav":{"compat_features":["html.elements.nav"],"description":"The <nav> element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents.","description_html":"The <code>&#x3C;nav></code> element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents.","group":"html-elements","name":"<nav>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-nav-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"navigation":{"compat_features":["api.NavigateEvent","api.NavigateEvent.NavigateEvent","api.NavigateEvent.destination","api.NavigateEvent.downloadRequest","api.NavigateEvent.formData","api.NavigateEvent.hashChange","api.NavigateEvent.info","api.NavigateEvent.navigationType","api.NavigateEvent.signal","api.NavigateEvent.userInitiated","api.Navigation","api.Navigation.back","api.Navigation.canGoBack","api.Navigation.canGoForward","api.Navigation.currentEntry","api.Navigation.currententrychange_event","api.Navigation.entries","api.Navigation.forward","api.Navigation.navigate","api.Navigation.navigate_event","api.Navigation.navigateerror_event","api.Navigation.navigatesuccess_event","api.Navigation.reload","api.Navigation.transition","api.Navigation.traverseTo","api.Navigation.updateCurrentEntry","api.NavigationCurrentEntryChangeEvent","api.NavigationCurrentEntryChangeEvent.NavigationCurrentEntryChangeEvent","api.NavigationCurrentEntryChangeEvent.from","api.NavigationCurrentEntryChangeEvent.navigationType","api.NavigationDestination","api.NavigationDestination.getState","api.NavigationDestination.id","api.NavigationDestination.index","api.NavigationDestination.key","api.NavigationDestination.sameDocument","api.NavigationDestination.url","api.NavigationHistoryEntry","api.NavigationHistoryEntry.dispose_event","api.NavigationHistoryEntry.getState","api.NavigationHistoryEntry.id","api.NavigationHistoryEntry.index","api.NavigationHistoryEntry.key","api.NavigationHistoryEntry.sameDocument","api.NavigationHistoryEntry.url","api.NavigationTransition","api.NavigationTransition.finished","api.NavigationTransition.from","api.NavigationTransition.navigationType","api.Window.navigation"],"description":"The navigation API provides mechanisms to initiate, intercept, and manage browser navigation actions.","description_html":"The <code>navigation</code> API provides mechanisms to initiate, intercept, and manage browser navigation actions.","name":"Navigation API","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigation-api","status":{"baseline":false,"support":{"chrome":"102","chrome_android":"102","edge":"102"}}},"nesting":{"caniuse":"css-nesting","compat_features":["api.CSSStyleRule.cssRules","api.CSSStyleRule.deleteRule","api.CSSStyleRule.insertRule","css.selectors.nesting"],"description":"CSS nesting allows for shorter selectors, easier reading, and more modularity by nesting rules inside others.","description_html":"CSS nesting allows for shorter selectors, easier reading, and more modularity by nesting rules inside others.","group":"css","name":"Nesting","spec":"https://drafts.csswg.org/css-nesting-1/","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"117","firefox_android":"117","safari":"17.2","safari_ios":"17.2"}}},"notifications":{"caniuse":"notifications","description":"The notifications API sends system notifications to the user, often even when the page or browser is not the foreground application.","description_html":"The notifications API sends system notifications to the user, often even when the page or browser is not the foreground application.","name":"Notifications","spec":"https://notifications.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"20","chrome_android":"42","edge":"14","firefox":"22","firefox_android":"22","safari":"6"}}},"nth-child":{"compat_features":["css.selectors.nth-child","css.selectors.nth-last-child"],"description":"The :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements by the relative position of elements (first, second, third, fourth, and so on), counted from the first or last sibling.","description_html":"The <code>:nth-child()</code> and <code>:nth-last-child()</code> CSS functional pseudo-classes match elements by the relative position of elements (first, second, third, fourth, and so on), counted from the first or last sibling.","group":"css","name":":nth-child() (initial support)","spec":["https://drafts.csswg.org/selectors-3/#nth-child-pseudo","https://drafts.csswg.org/selectors-3/#nth-last-child-pseudo"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"2"}}},"nth-child-of":{"caniuse":"css-nth-child-of","compat_features":["css.selectors.nth-child.of_syntax","css.selectors.nth-last-child.of_syntax"],"description":"The of syntax for the :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements by the relative position of elements, counted from the first or last sibling matching a selector list.","description_html":"The <code>of</code> syntax for the <code>:nth-child()</code> and <code>:nth-last-child()</code> CSS functional pseudo-classes match elements by the relative position of elements, counted from the first or last sibling matching a selector list.","group":"css","name":":nth-child() of <selector>","spec":["https://drafts.csswg.org/selectors-4/#the-nth-child-pseudo","https://drafts.csswg.org/selectors-4/#the-nth-last-child-pseudo"],"status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"9","safari_ios":"9"}}},"object":{"compat_features":["api.HTMLObjectElement","api.HTMLObjectElement.contentDocument","api.HTMLObjectElement.contentWindow","api.HTMLObjectElement.data","api.HTMLObjectElement.form","api.HTMLObjectElement.getSVGDocument","api.HTMLObjectElement.height","api.HTMLObjectElement.name","api.HTMLObjectElement.type","api.HTMLObjectElement.width","html.elements.object","html.elements.object.data","html.elements.object.form","html.elements.object.height","html.elements.object.name","html.elements.object.type","html.elements.object.width"],"description":"The <object> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","description_html":"The <code>&#x3C;object></code> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","group":"html-elements","name":"<object>","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"object-view-box":{"compat_features":["css.properties.object-view-box"],"description":"The object-view-box CSS property crops and zooms to an inset area of an image.","description_html":"The <code>object-view-box</code> CSS property crops and zooms to an inset area of an image.","name":"object-view-box","spec":"https://drafts.csswg.org/css-images-5/#the-object-view-box","status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104"}}},"offline-audio-context":{"compat_features":["api.OfflineAudioCompletionEvent","api.OfflineAudioCompletionEvent.OfflineAudioCompletionEvent","api.OfflineAudioCompletionEvent.renderedBuffer","api.OfflineAudioContext","api.OfflineAudioContext.OfflineAudioContext","api.OfflineAudioContext.complete_event","api.OfflineAudioContext.length","api.OfflineAudioContext.resume","api.OfflineAudioContext.startRendering","api.OfflineAudioContext.suspend"],"description":"The OfflineAudioContext API represents an audio processing graph that writes to an AudioBuffer instead of an output device.","description_html":"The <code>OfflineAudioContext</code> API represents an audio processing graph that writes to an <code>AudioBuffer</code> instead of an output device.","group":"web-audio","name":"OfflineAudioContext","spec":"https://webaudio.github.io/web-audio-api/#OfflineAudioContext","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"35","chrome_android":"35","edge":"12","firefox":"25","firefox_android":"25","safari":"14.1","safari_ios":"14.5"}}},"offscreen-canvas":{"caniuse":"offscreencanvas","compat_features":["api.HTMLCanvasElement.transferControlToOffscreen","api.OffscreenCanvas","api.OffscreenCanvas.OffscreenCanvas","api.OffscreenCanvas.convertToBlob","api.OffscreenCanvas.getContext","api.OffscreenCanvas.getContext.2d_context","api.OffscreenCanvas.getContext.bitmaprenderer_context","api.OffscreenCanvas.height","api.OffscreenCanvas.transferToImageBitmap","api.OffscreenCanvas.width","api.OffscreenCanvasRenderingContext2D","api.OffscreenCanvasRenderingContext2D.arc","api.OffscreenCanvasRenderingContext2D.arcTo","api.OffscreenCanvasRenderingContext2D.beginPath","api.OffscreenCanvasRenderingContext2D.bezierCurveTo","api.OffscreenCanvasRenderingContext2D.canvas","api.OffscreenCanvasRenderingContext2D.clearRect","api.OffscreenCanvasRenderingContext2D.clip","api.OffscreenCanvasRenderingContext2D.closePath","api.OffscreenCanvasRenderingContext2D.createImageData","api.OffscreenCanvasRenderingContext2D.createLinearGradient","api.OffscreenCanvasRenderingContext2D.createPattern","api.OffscreenCanvasRenderingContext2D.createRadialGradient","api.OffscreenCanvasRenderingContext2D.direction","api.OffscreenCanvasRenderingContext2D.drawImage","api.OffscreenCanvasRenderingContext2D.ellipse","api.OffscreenCanvasRenderingContext2D.fill","api.OffscreenCanvasRenderingContext2D.fillRect","api.OffscreenCanvasRenderingContext2D.fillStyle","api.OffscreenCanvasRenderingContext2D.fillText","api.OffscreenCanvasRenderingContext2D.font","api.OffscreenCanvasRenderingContext2D.getImageData","api.OffscreenCanvasRenderingContext2D.getLineDash","api.OffscreenCanvasRenderingContext2D.getTransform","api.OffscreenCanvasRenderingContext2D.globalAlpha","api.OffscreenCanvasRenderingContext2D.globalCompositeOperation","api.OffscreenCanvasRenderingContext2D.imageSmoothingEnabled","api.OffscreenCanvasRenderingContext2D.isPointInPath","api.OffscreenCanvasRenderingContext2D.isPointInStroke","api.OffscreenCanvasRenderingContext2D.lineCap","api.OffscreenCanvasRenderingContext2D.lineDashOffset","api.OffscreenCanvasRenderingContext2D.lineJoin","api.OffscreenCanvasRenderingContext2D.lineTo","api.OffscreenCanvasRenderingContext2D.lineWidth","api.OffscreenCanvasRenderingContext2D.measureText","api.OffscreenCanvasRenderingContext2D.miterLimit","api.OffscreenCanvasRenderingContext2D.moveTo","api.OffscreenCanvasRenderingContext2D.putImageData","api.OffscreenCanvasRenderingContext2D.quadraticCurveTo","api.OffscreenCanvasRenderingContext2D.rect","api.OffscreenCanvasRenderingContext2D.resetTransform","api.OffscreenCanvasRenderingContext2D.restore","api.OffscreenCanvasRenderingContext2D.rotate","api.OffscreenCanvasRenderingContext2D.save","api.OffscreenCanvasRenderingContext2D.scale","api.OffscreenCanvasRenderingContext2D.setLineDash","api.OffscreenCanvasRenderingContext2D.setTransform","api.OffscreenCanvasRenderingContext2D.shadowBlur","api.OffscreenCanvasRenderingContext2D.shadowColor","api.OffscreenCanvasRenderingContext2D.shadowOffsetX","api.OffscreenCanvasRenderingContext2D.shadowOffsetY","api.OffscreenCanvasRenderingContext2D.stroke","api.OffscreenCanvasRenderingContext2D.strokeRect","api.OffscreenCanvasRenderingContext2D.strokeStyle","api.OffscreenCanvasRenderingContext2D.strokeText","api.OffscreenCanvasRenderingContext2D.textAlign","api.OffscreenCanvasRenderingContext2D.textBaseline","api.OffscreenCanvasRenderingContext2D.transform","api.OffscreenCanvasRenderingContext2D.translate"],"description":"The OffscreenCanvas API provides a canvas that can be drawn to off screen, with no dependencies on the DOM, which can be used to run heavy rendering operations inside a worker context.","description_html":"The <code>OffscreenCanvas</code> API provides a canvas that can be drawn to off screen, with no dependencies on the DOM, which can be used to run heavy rendering operations inside a worker context.","group":"canvas","name":"Offscreen canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#the-offscreencanvas-interface","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"105","firefox_android":"105","safari":"16.4","safari_ios":"16.4"}}},"oklab":{"compat_features":["css.types.color.oklab","css.types.color.oklch"],"description":"The Oklab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is, aiming to match how humans perceive colors. Oklch is a variant of Oklab with polar coordinates. These color spaces can be used with the CSS color(), oklab(), and oklch() functions.","description_html":"The Oklab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is, aiming to match how humans perceive colors. Oklch is a variant of Oklab with polar coordinates. These color spaces can be used with the CSS <code>color()</code>, <code>oklab()</code>, and <code>oklch()</code> functions.","name":"Oklab and Oklch","spec":"https://drafts.csswg.org/css-color-4/#ok-lab","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"113","firefox_android":"113","safari":"15.4","safari_ios":"15.4"}}},"orientation-sensor":{"compat_features":["api.AbsoluteOrientationSensor","api.AbsoluteOrientationSensor.AbsoluteOrientationSensor","api.OrientationSensor","api.OrientationSensor.populateMatrix","api.OrientationSensor.quaternion","api.RelativeOrientationSensor","api.RelativeOrientationSensor.RelativeOrientationSensor"],"description":"The AbsoluteOrientationSensor and RelativeOrientationSensor APIs describe the physical orientation of a device in three-dimensional space, either in relation to the Earth's coordinate system or in relation to the device's own orientation, respectively.","description_html":"The <code>AbsoluteOrientationSensor</code> and <code>RelativeOrientationSensor</code> APIs describe the physical orientation of a device in three-dimensional space, either in relation to the Earth's coordinate system or in relation to the device's own orientation, respectively.","group":"sensors","name":"Orientation Sensor","spec":["https://w3c.github.io/orientation-sensor/#absoluteorientationsensor-interface","https://w3c.github.io/orientation-sensor/#relativeorientationsensor-interface"],"status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79"}}},"origin-private-file-system":{"compat_features":["api.FileSystemDirectoryHandle","api.FileSystemDirectoryHandle.entries","api.FileSystemDirectoryHandle.getDirectoryHandle","api.FileSystemDirectoryHandle.getFileHandle","api.FileSystemDirectoryHandle.keys","api.FileSystemDirectoryHandle.removeEntry","api.FileSystemDirectoryHandle.resolve","api.FileSystemDirectoryHandle.values","api.FileSystemFileHandle","api.FileSystemFileHandle.createSyncAccessHandle","api.FileSystemFileHandle.getFile","api.FileSystemHandle","api.FileSystemHandle.isSameEntry","api.FileSystemHandle.kind","api.FileSystemHandle.name","api.FileSystemSyncAccessHandle","api.FileSystemSyncAccessHandle.close","api.FileSystemSyncAccessHandle.flush","api.FileSystemSyncAccessHandle.getSize","api.FileSystemSyncAccessHandle.read","api.FileSystemSyncAccessHandle.truncate","api.FileSystemSyncAccessHandle.write","api.StorageManager.getDirectory"],"description":"The navigator.storage.getDirectory() method returns a FileSystemDirectoryHandle that is restricted to a specific origin and invisible to the user's actual file system for faster file-based applications, such as SQLite databases.","description_html":"The <code>navigator.storage.getDirectory()</code> method returns a <code>FileSystemDirectoryHandle</code> that is restricted to a specific origin and invisible to the user's actual file system for faster file-based applications, such as SQLite databases.","name":"Origin private file system","spec":"https://fs.spec.whatwg.org/#origin-private-file-system","status":{"baseline":"low","baseline_low_date":"2023-03-14","support":{"chrome":"102","chrome_android":"109","edge":"102","firefox":"111","firefox_android":"111","safari":"15.2","safari_ios":"15.2"}}},"output":{"compat_features":["api.HTMLOutputElement","api.HTMLOutputElement.HTMLOutputElement","api.HTMLOutputElement.defaultValue","api.HTMLOutputElement.form","api.HTMLOutputElement.htmlFor","api.HTMLOutputElement.labels","api.HTMLOutputElement.name","api.HTMLOutputElement.type","api.HTMLOutputElement.value","html.elements.output","html.elements.output.for","html.elements.output.form","html.elements.output.name"],"description":"The <output> element represents the result of a calculation, user action, or form entry.","description_html":"The <code>&#x3C;output></code> element represents the result of a calculation, user action, or form entry.","group":["forms","html-elements"],"name":"<output>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-output-element","status":{"baseline":"high","baseline_high_date":"≤2021-04-02","baseline_low_date":"≤2018-10-02","support":{"chrome":"10","chrome_android":"18","edge":"≤18","firefox":"4","firefox_android":"4","safari":"7","safari_ios":"7"}}},"overflow-shorthand":{"caniuse":"css-overflow","compat_features":["css.properties.overflow","css.properties.overflow-x","css.properties.overflow-x.clip","css.properties.overflow-y","css.properties.overflow-y.clip","css.properties.overflow.clip","css.properties.overflow.multiple_keywords","css.types.overflow","css.types.overflow.clip"],"description":"The overflow CSS property sets the behavior for when content doesn't fit in an element.","description_html":"The <code>overflow</code> CSS property sets the behavior for when content doesn't fit in an element.","name":"overflow","spec":"https://drafts.csswg.org/css-overflow-3/#propdef-overflow","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"90","chrome_android":"90","edge":"90","firefox":"81","firefox_android":"81","safari":"16","safari_ios":"16"}}},"overlay":{"compat_features":["css.properties.overlay"],"description":"The overlay CSS property, used as an allow-discrete CSS transition, prevents a top layer element, such as a popover or a <dialog>, from being removed from the top layer before it has finished animating. You can't set the value of the overlay property; only use it as transition property.","description_html":"The <code>overlay</code> CSS property, used as an <code>allow-discrete</code> CSS transition, prevents a top layer element, such as a popover or a <code>&#x3C;dialog></code>, from being removed from the top layer before it has finished animating. You can't set the value of the <code>overlay</code> property; only use it as transition property.","name":"overlay","spec":"https://drafts.csswg.org/css-position-4/#overlay","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"p":{"compat_features":["api.HTMLParagraphElement","html.elements.p"],"description":"The <p> element represents a paragraph of text.","description_html":"The <code>&#x3C;p></code> element represents a paragraph of text.","group":"html-elements","name":"<p>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-p-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"page-breaks":{"caniuse":"css-page-break","compat_features":["css.properties.break-after","css.properties.break-after.paged_context","css.properties.break-after.paged_context.page","css.properties.break-before","css.properties.break-before.paged_context","css.properties.break-before.paged_context.page","css.properties.break-inside","css.properties.break-inside.paged_context","css.properties.page-break-after","css.properties.page-break-after.avoid","css.properties.page-break-before","css.properties.page-break-before.avoid","css.properties.page-break-inside","css.properties.page-break-inside.avoid"],"description":"The break-after, break-before, break-inside CSS properties (along with page-break- aliases) control where printed pages start and end. Also known as pagination or page breaking.","description_html":"The <code>break-after</code>, <code>break-before</code>, <code>break-inside</code> CSS properties (along with <code>page-break-</code> aliases) control where printed pages start and end. Also known as pagination or page breaking.","group":"layout","name":"Page breaks","spec":"https://drafts.csswg.org/css-break-3/#breaking-controls","status":{"baseline":false,"support":{"chrome":"50","chrome_android":"50","edge":"12"}}},"paint":{"caniuse":"css-paint-api","compat_features":["api.CSS.paintWorklet_static","api.PaintWorkletGlobalScope","css.types.image.paint"],"description":"The paint() CSS function creates a custom image, drawn using a paint worklet, for an element's background or border.","description_html":"The <code>paint()</code> CSS function creates a custom image, drawn using a paint worklet, for an element's background or border.","group":"css","name":"paint()","spec":"https://drafts.css-houdini.org/css-paint-api-1/","status":{"baseline":false,"support":{"chrome":"65","chrome_android":"65","edge":"79"}}},"parse-html-unsafe":{"compat_features":["api.Document.parseHTMLUnsafe_static","api.Element.setHTMLUnsafe","api.ShadowRoot.setHTMLUnsafe"],"description":"The Document.parseHTMLUnsafe() static method parses HTML into a DOM tree, while the setHTMLUnsafe() method of Element and ShadowRoot parses and inserts HTML into an existing tree. No sanitization applies to these methods, so never call them with user-provided HTML strings.","description_html":"The <code>Document.parseHTMLUnsafe()</code> static method parses HTML into a DOM tree, while the <code>setHTMLUnsafe()</code> method of <code>Element</code> and <code>ShadowRoot</code> parses and inserts HTML into an existing tree. No sanitization applies to these methods, so never call them with user-provided HTML strings.","name":"Unsanitized HTML parsing methods","spec":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#unsafe-html-parsing-methods","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"128","firefox_android":"128","safari":"17.4","safari_ios":"17.4"}}},"permissions":{"caniuse":"permissions-api","compat_features":["api.Navigator.permissions","api.PermissionStatus","api.PermissionStatus.state","api.Permissions","api.Permissions.query"],"description":"The navigator.permissions API checks whether a permission, such as access to geolocation data, has been granted.","description_html":"The <code>navigator.permissions</code> API checks whether a permission, such as access to geolocation data, has been granted.","name":"Permissions","spec":"https://w3c.github.io/permissions/","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"44","chrome_android":"44","edge":"79","firefox":"46","firefox_android":"46","safari":"16","safari_ios":"16"}}},"picture":{"caniuse":"picture","compat_features":["api.HTMLPictureElement","html.elements.picture"],"description":"The <picture> element is used for art direction in responsive images, where a different image is displayed based on the <source> element.","description_html":"The <code>&#x3C;picture></code> element is used for art direction in responsive images, where a different image is displayed based on the <code>&#x3C;source></code> element.","group":"html-elements","name":"<picture>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element","status":{"baseline":"high","baseline_high_date":"2018-09-21","baseline_low_date":"2016-03-21","support":{"chrome":"38","chrome_android":"38","edge":"13","firefox":"38","firefox_android":"38","safari":"9.1","safari_ios":"9.3"}}},"picture-in-picture":{"caniuse":"picture-in-picture","compat_features":["api.Document.exitPictureInPicture","api.Document.pictureInPictureElement","api.Document.pictureInPictureEnabled","api.HTMLVideoElement.disablePictureInPicture","api.HTMLVideoElement.enterpictureinpicture_event","api.HTMLVideoElement.leavepictureinpicture_event","api.HTMLVideoElement.requestPictureInPicture","api.PictureInPictureWindow","api.PictureInPictureWindow.height","api.PictureInPictureWindow.resize_event","api.PictureInPictureWindow.width","api.ShadowRoot.pictureInPictureElement","html.elements.video.disablepictureinpicture"],"description":"The picture-in-picture API allow websites to create a floating, always-on-top video window. Also known as PiP or pop-out video.","description_html":"The picture-in-picture API allow websites to create a floating, always-on-top video window. Also known as PiP or pop-out video.","name":"Picture-in-picture (video)","spec":"https://w3c.github.io/picture-in-picture/","status":{"baseline":false,"support":{"chrome":"69","chrome_android":"105","edge":"79","safari":"13.1","safari_ios":"13.4"}}},"pointer-lock":{"caniuse":"pointerlock","compat_features":["api.Document.exitPointerLock","api.Document.pointerLockElement","api.Document.pointerlockchange_event","api.Document.pointerlockerror_event","api.Element.requestPointerLock"],"description":"Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor.","description_html":"Provides access to raw mouse movement by locking the target of mouse events to a single element and hiding the mouse cursor.","name":"Pointer lock","spec":"https://w3c.github.io/pointerlock/","status":{"baseline":false,"support":{"chrome":"37","chrome_android":"37","edge":"13","firefox":"50","firefox_android":"50","safari":"10.1"}}},"popover":{"compat_features":["api.HTMLButtonElement.popoverTargetAction","api.HTMLButtonElement.popoverTargetElement","api.HTMLElement.beforetoggle_event","api.HTMLElement.hidePopover","api.HTMLElement.popover","api.HTMLElement.showPopover","api.HTMLElement.togglePopover","api.HTMLElement.toggle_event","api.HTMLInputElement.popoverTargetAction","api.HTMLInputElement.popoverTargetElement","api.ToggleEvent","api.ToggleEvent.ToggleEvent","api.ToggleEvent.newState","api.ToggleEvent.oldState","css.selectors.backdrop.popover","css.selectors.popover-open","html.elements.button.popovertarget","html.elements.button.popovertargetaction","html.elements.input.popovertarget","html.elements.input.popovertargetaction","html.global_attributes.popover"],"description":"The popover HTML attribute creates an overlay to display content on top of other page content. Popovers can be shown declaratively using HTML, or using the showPopover() method.","description_html":"The <code>popover</code> HTML attribute creates an overlay to display content on top of other page content. Popovers can be shown declaratively using HTML, or using the <code>showPopover()</code> method.","group":"html","name":"Popover","spec":"https://html.spec.whatwg.org/multipage/popover.html","status":{"baseline":"low","baseline_low_date":"2024-04-16","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"125","firefox_android":"125","safari":"17","safari_ios":"17"}}},"pre":{"compat_features":["api.HTMLPreElement","html.elements.pre"],"description":"The <pre> element represents a block element of preformatted text that is presented exactly as written, including all white space.","description_html":"The <code>&#x3C;pre></code> element represents a block element of preformatted text that is presented exactly as written, including all white space.","group":"html-elements","name":"<pre>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"prefers-color-scheme":{"compat_features":["css.at-rules.media.prefers-color-scheme"],"description":"The prefers-color-scheme CSS media query detects the requested color scheme, light or dark.","description_html":"The <code>prefers-color-scheme</code> CSS media query detects the requested color scheme, light or dark.","name":"prefers-color-scheme","spec":"https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"67","firefox_android":"67","safari":"12.1","safari_ios":"13"}}},"preloading-responsive-images":{"compat_features":["api.HTMLLinkElement.imageSizes","api.HTMLLinkElement.imageSrcset","html.elements.link.imagesizes","html.elements.link.imagesrcset"],"description":"The imagesrcset and imagesizes attributes with the rel=\"preload\" attribute for the <link> HTML element starts fetching responsive images before they're found in the body of the document.","description_html":"The <code>imagesrcset</code> and <code>imagesizes</code> attributes with the <code>rel=\"preload\"</code> attribute for the <code>&#x3C;link></code> HTML element starts fetching responsive images before they're found in the body of the document.","name":"Preloading responsive images","spec":"https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"78","firefox_android":"79","safari":"17.2","safari_ios":"17.2"}}},"preserves-pitch":{"compat_features":["api.HTMLMediaElement.preservesPitch"],"description":"The preservesPitch property for <audio> or <video> adjusts the pitch of audio to sound more natural when the playback rate is faster or slower than the default.","description_html":"The <code>preservesPitch</code> property for <code>&#x3C;audio></code> or <code>&#x3C;video></code> adjusts the pitch of audio to sound more natural when the playback rate is faster or slower than the default.","group":"media-elements","name":"preservesPitch","spec":"https://html.spec.whatwg.org/multipage/media.html#dom-media-preservespitch-dev","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"101","firefox_android":"101","safari":"17.2","safari_ios":"17.2"}}},"print":{"compat_features":["api.Window.print"],"description":"The window.print() method opens the browser's print dialog.","description_html":"The <code>window.print()</code> method opens the browser's print dialog.","group":"print","name":"window.print()","spec":"https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#printing","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"114","safari":"1.1","safari_ios":"1"}}},"print-events":{"caniuse":"beforeafterprint","compat_features":["api.Window.afterprint_event","api.Window.beforeprint_event"],"description":"An alternative to @media print queries, the beforeprint and afterprint events allow you to change the page for printing and and restore the page after printing.","description_html":"An alternative to <code>@media print</code> queries, the <code>beforeprint</code> and <code>afterprint</code> events allow you to change the page for printing and and restore the page after printing.","group":"print","name":"Print events","spec":["https://html.spec.whatwg.org/multipage/indices.html#event-afterprint","https://html.spec.whatwg.org/multipage/indices.html#event-beforeprint"],"status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"63","chrome_android":"63","edge":"12","firefox":"6","firefox_android":"6","safari":"13","safari_ios":"13"}}},"progress":{"caniuse":"progress","compat_features":["api.HTMLProgressElement","api.HTMLProgressElement.labels","api.HTMLProgressElement.max","api.HTMLProgressElement.position","api.HTMLProgressElement.value","html.elements.progress","html.elements.progress.max","html.elements.progress.value"],"description":"The <progress> element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.","description_html":"The <code>&#x3C;progress></code> element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.","group":["forms","html-elements"],"name":"<progress>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-progress-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"6","chrome_android":"18","edge":"12","firefox":"6","firefox_android":"6","safari":"6","safari_ios":"7"}}},"promise":{"caniuse":"promises","compat_features":["javascript.builtins.Promise","javascript.builtins.Promise.Promise","javascript.builtins.Promise.all","javascript.builtins.Promise.catch","javascript.builtins.Promise.race","javascript.builtins.Promise.reject","javascript.builtins.Promise.resolve","javascript.builtins.Promise.then"],"description":"A promise represents an asynchronous operation which eventually succeeds or fails.","description_html":"A promise represents an asynchronous operation which eventually succeeds or fails.","group":"promises","name":"Promise (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-objects","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-get-promise-@@species","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-constructor","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.all","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.prototype.catch","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.race","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.reject","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.resolve","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.prototype.then"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"32","chrome_android":"32","edge":"12","firefox":"29","firefox_android":"29","safari":"8","safari_ios":"8"}}},"promise-allsettled":{"compat_features":["javascript.builtins.Promise.allSettled"],"description":"The Promise.allSettled() static method waits for an array of promises to settle (resolve or reject).","description_html":"The <code>Promise.allSettled()</code> static method waits for an array of promises to settle (resolve or reject).","group":"promises","name":"Promise.allSettled()","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.allsettled","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"71","firefox_android":"79","safari":"13","safari_ios":"13"}}},"promise-any":{"compat_features":["javascript.builtins.Promise.any"],"description":"The Promise.any() static method returns a promise that fulfills as soon as the first of an iterable of promises fulfills, with that promise's value. Otherwise, it rejects with an AggregateError when all of the promises have rejected.","description_html":"The <code>Promise.any()</code> static method returns a promise that fulfills as soon as the first of an iterable of promises fulfills, with that promise's value. Otherwise, it rejects with an <code>AggregateError</code> when all of the promises have rejected.","group":"promises","name":"Promise.any()","snapshot":"ecmascript-2021","spec":"https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.any","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"79","firefox_android":"79","safari":"14","safari_ios":"14"}}},"promise-finally":{"caniuse":"promise-finally","compat_features":["javascript.builtins.Promise.finally"],"description":"The promise finally() method executes a function when the promise settles (resolves or rejects).","description_html":"The promise <code>finally()</code> method executes a function when the promise settles (resolves or rejects).","group":"promises","name":"Promise finally()","snapshot":"ecmascript-2018","spec":"https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise.prototype.finally","status":{"baseline":"high","baseline_high_date":"2021-04-02","baseline_low_date":"2018-10-02","support":{"chrome":"63","chrome_android":"63","edge":"18","firefox":"58","firefox_android":"58","safari":"11.1","safari_ios":"11.3"}}},"promise-withresolvers":{"compat_features":["javascript.builtins.Promise.withResolvers"],"description":"The Promise.withResolvers() static method is an alternative to the Promise() constructor that returns both the promise and resolution functions. You can use this to access resolve and reject outside the scope of the executor function.","description_html":"The <code>Promise.withResolvers()</code> static method is an alternative to the <code>Promise()</code> constructor that returns both the promise and resolution functions. You can use this to access <code>resolve</code> and <code>reject</code> outside the scope of the executor function.","group":"promises","name":"Promise.withResolvers()","spec":"https://tc39.es/proposal-promise-with-resolvers/#sec-promise.withResolvers","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"121","firefox_android":"121","safari":"17.4","safari_ios":"17.4"}}},"push":{"caniuse":"push-api","compat_features":["api.PushEvent","api.PushEvent.PushEvent","api.PushEvent.data","api.PushManager","api.PushManager.getSubscription","api.PushManager.permissionState","api.PushMessageData","api.PushMessageData.arrayBuffer","api.PushMessageData.blob","api.PushMessageData.json","api.PushMessageData.text","api.PushSubscription","api.PushSubscription.endpoint","api.PushSubscription.getKey","api.PushSubscription.toJSON","api.PushSubscription.unsubscribe","api.ServiceWorkerGlobalScope.push_event","api.ServiceWorkerRegistration.pushManager"],"description":"The Push API subscribes to and receives server-initiated messages. Subscribers receive pushed messages in the background, even after periods inactive or offline.","description_html":"The Push API subscribes to and receives server-initiated messages. Subscribers receive pushed messages in the background, even after periods inactive or offline.","name":"Push messages","spec":"https://w3c.github.io/push-api/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"50","chrome_android":"50","edge":"17","firefox":"44","firefox_android":"48","safari":"16","safari_ios":"16.4"}}},"q":{"compat_features":["api.HTMLQuoteElement","api.HTMLQuoteElement.cite","html.elements.q","html.elements.q.cite"],"description":"The <q> element represents a short inline quotation.","description_html":"The <code>&#x3C;q></code> element represents a short inline quotation.","group":"html-elements","name":"<q>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-q-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"read-write-pseudos":{"caniuse":"css-read-only-write","compat_features":["css.selectors.read-only","css.selectors.read-write"],"description":"The :read-only and :read-write CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, :read-only matches <input> and <textarea> elements with the readonly attribute.","description_html":"The <code>:read-only</code> and <code>:read-write</code> CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, <code>:read-only</code> matches <code>&#x3C;input></code> and <code>&#x3C;textarea></code> elements with the <code>readonly</code> attribute.","group":"forms","name":":read-only and :read-write","spec":["https://html.spec.whatwg.org/multipage/semantics-other.html#selector-read-only","https://drafts.csswg.org/selectors-4/#rw-pseudos"],"status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"1","chrome_android":"18","edge":"13","firefox":"78","firefox_android":"79","safari":"4","safari_ios":"3.2"}}},"referrer-policy":{"caniuse":"referrer-policy","compat_features":["api.HTMLAnchorElement.referrerPolicy","api.HTMLAreaElement.referrerPolicy","api.HTMLIFrameElement.referrerPolicy","api.HTMLImageElement.referrerPolicy","api.HTMLLinkElement.referrerPolicy","api.HTMLScriptElement.referrerPolicy","html.elements.a.referrerpolicy","html.elements.area.referrerpolicy","html.elements.iframe.referrerpolicy","html.elements.img.referrerpolicy","html.elements.link.referrerpolicy","html.elements.script.referrerpolicy","http.headers.Referrer-Policy","http.headers.Referrer-Policy.default_strict-origin-when-cross-origin"],"description":"The Referrer-Policy HTTP header and referrerpolicy HTML attributes control whether requests have the Referer header and what information the header contains.","description_html":"The <code>Referrer-Policy</code> HTTP header and <code>referrerpolicy</code> HTML attributes control whether requests have the <code>Referer</code> header and what information the header contains.","name":"Referrer policy","spec":"https://w3c.github.io/webappsec-referrer-policy/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"87","firefox_android":"87","safari":"15","safari_ios":"15"}}},"registered-custom-properties":{"compat_features":["api.CSS.registerProperty_static","api.CSSPropertyRule","api.CSSPropertyRule.inherits","api.CSSPropertyRule.initialValue","api.CSSPropertyRule.name","api.CSSPropertyRule.syntax","css.at-rules.property","css.at-rules.property.inherits","css.at-rules.property.initial-value","css.at-rules.property.syntax"],"description":"The CSS.registerProperty() static method and the @property CSS at-rule register custom properties for which types and behaviors can be defined.","description_html":"The <code>CSS.registerProperty()</code> static method and the <code>@property</code> CSS at-rule register custom properties for which types and behaviors can be defined.","name":"Registered custom properties","spec":"https://drafts.css-houdini.org/css-properties-values-api-1/","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"relative-color":{"caniuse":"css-relative-colors","compat_features":["css.types.color.lab.relative_syntax","css.types.color.oklab.relative_syntax"],"description":"The from keyword for color functions (color(), hsl(), oklch(), etc.) creates a new color based on a given color by modifying the values of the input color. Also known as relative color syntax (RCS).","description_html":"The <code>from</code> keyword for color functions (<code>color()</code>, <code>hsl()</code>, <code>oklch()</code>, etc.) creates a new color based on a given color by modifying the values of the input color. Also known as relative color syntax (RCS).","name":"Relative colors","spec":"https://drafts.csswg.org/css-color-5/#relative-colors","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"request-animation-frame":{"caniuse":"requestanimationframe","compat_features":["api.Window.cancelAnimationFrame","api.Window.requestAnimationFrame"],"description":"The requestAnimationFrame() method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.","description_html":"The <code>requestAnimationFrame()</code> method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.","name":"requestAnimationFrame()","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"24","chrome_android":"25","edge":"12","firefox":"23","firefox_android":"23","safari":"7","safari_ios":"7"}}},"request-animation-frame-workers":{"compat_features":["api.DedicatedWorkerGlobalScope.cancelAnimationFrame","api.DedicatedWorkerGlobalScope.requestAnimationFrame"],"description":"The requestAnimationFrame() method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker.","description_html":"The <code>requestAnimationFrame()</code> method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker.","name":"requestAnimationFrame() in workers","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"99","firefox_android":"99","safari":"16.4","safari_ios":"16.4"}}},"request-video-frame-callback":{"compat_features":["api.HTMLVideoElement.cancelVideoFrameCallback","api.HTMLVideoElement.requestVideoFrameCallback"],"description":"The requestVideoFrameCallback() method for <video> schedules a function that runs with the next video frame. It is similar to requestAnimationFrame(), but for video.","description_html":"The <code>requestVideoFrameCallback()</code> method for <code>&#x3C;video></code> schedules a function that runs with the next video frame. It is similar to <code>requestAnimationFrame()</code>, but for video.","group":"media-elements","name":"requestVideoFrameCallback()","spec":"https://wicg.github.io/video-rvfc/","status":{"baseline":false,"support":{"chrome":"83","chrome_android":"83","edge":"83","safari":"15.4","safari_ios":"15.4"}}},"resizable-arraybuffer":{"compat_features":["javascript.builtins.ArrayBuffer.ArrayBuffer.maxByteLength_option","javascript.builtins.ArrayBuffer.maxByteLength","javascript.builtins.ArrayBuffer.resizable","javascript.builtins.ArrayBuffer.resize"],"description":"The resize() method of an ArrayBuffer, constructed with the maxByteLength option, changes the size of the buffer in place.","description_html":"The <code>resize()</code> method of an <code>ArrayBuffer</code>, constructed with the <code>maxByteLength</code> option, changes the size of the buffer in place.","name":"Resizable ArrayBuffer","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-get-arraybuffer.prototype.resizable","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"128","firefox_android":"128","safari":"16.4","safari_ios":"16.4"}}},"resource-size":{"compat_features":["api.PerformanceResourceTiming.decodedBodySize","api.PerformanceResourceTiming.encodedBodySize","api.PerformanceResourceTiming.transferSize"],"description":"The decodedSize, encodedSize, and transferSize properties of the PerformanceResourceTiming API reports the size of resources loaded.","description_html":"The <code>decodedSize</code>, <code>encodedSize</code>, and <code>transferSize</code> properties of the <code>PerformanceResourceTiming</code> API reports the size of resources loaded.","group":"resource-timing","name":"Resource size","spec":["https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-decodedbodysize","https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-encodedbodysize","https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-transfersize"],"status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"54","chrome_android":"54","edge":"17","firefox":"45","firefox_android":"45","safari":"16.4","safari_ios":"16.4"}}},"resource-timing":{"caniuse":"resource-timing","compat_features":["api.PerformanceResourceTiming","api.PerformanceResourceTiming.connectEnd","api.PerformanceResourceTiming.connectStart","api.PerformanceResourceTiming.domainLookupEnd","api.PerformanceResourceTiming.domainLookupStart","api.PerformanceResourceTiming.fetchStart","api.PerformanceResourceTiming.initiatorType","api.PerformanceResourceTiming.redirectEnd","api.PerformanceResourceTiming.redirectStart","api.PerformanceResourceTiming.requestStart","api.PerformanceResourceTiming.responseEnd","api.PerformanceResourceTiming.responseStart"],"description":"PerformanceResourceTiming entries report when network events happen while loading a resource, such as when connections start and end. You can use this information to measure loading times.","description_html":"<code>PerformanceResourceTiming</code> entries report when network events happen while loading a resource, such as when connections start and end. You can use this information to measure loading times.","group":"resource-timing","name":"Resource timing (initial support)","spec":"https://w3c.github.io/resource-timing/","status":{"baseline":"high","baseline_high_date":"2020-03-19","baseline_low_date":"2017-09-19","support":{"chrome":"43","chrome_android":"43","edge":"12","firefox":"35","firefox_android":"35","safari":"11","safari_ios":"11"}}},"round-mod-rem":{"compat_features":["css.types.mod","css.types.rem","css.types.round"],"description":"The round(), mod(), and rem() CSS functions compute rounded values and the remainder after division.","description_html":"The <code>round()</code>, <code>mod()</code>, and <code>rem()</code> CSS functions compute rounded values and the remainder after division.","name":"round(), mod(), and rem()","spec":"https://drafts.csswg.org/css-values-4/#round-func","status":{"baseline":"low","baseline_low_date":"2024-05-17","support":{"chrome":"125","chrome_android":"125","edge":"125","firefox":"118","firefox_android":"118","safari":"15.4","safari_ios":"15.4"}}},"ruby":{"caniuse":"ruby","compat_features":["html.elements.rp","html.elements.rt","html.elements.ruby"],"description":"The <ruby> element produces small annotations that are rendered with its base text.","description_html":"The <code>&#x3C;ruby></code> element produces small annotations that are rendered with its base text.","group":"html","name":"<ruby>","spec":["https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-rp-element","https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-rt-element","https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-ruby-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"38","firefox_android":"38","safari":"5","safari_ios":"4.2"}}},"samp":{"compat_features":["html.elements.samp"],"description":"The <small> element represents side-comments and small print, like copyright and legal text, styling text in a reduced font size by default.","description_html":"The <code>&#x3C;small></code> element represents side-comments and small print, like copyright and legal text, styling text in a reduced font size by default.","group":"html-elements","name":"<samp>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-samp-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"scheduler":{"compat_features":["api.Scheduler","api.Scheduler.postTask","api.TaskController","api.TaskController.TaskController","api.TaskController.setPriority","api.TaskPriorityChangeEvent","api.TaskPriorityChangeEvent.TaskPriorityChangeEvent","api.TaskPriorityChangeEvent.previousPriority","api.TaskSignal","api.TaskSignal.priority","api.scheduler"],"description":"The scheduler API provides a way to prioritize all tasks belonging to an application.","description_html":"The <code>scheduler</code> API provides a way to prioritize all tasks belonging to an application.","name":"Scheduler API","spec":"https://wicg.github.io/scheduling-apis/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"scope":{"caniuse":"css-cascade-scope","compat_features":["api.CSSScopeRule","api.CSSScopeRule.end","api.CSSScopeRule.start","css.at-rules.scope"],"description":"The @scope CSS at-rule sets the scope for a group of rules.","description_html":"The <code>@scope</code> CSS at-rule sets the scope for a group of rules.","name":"@scope","spec":"https://drafts.csswg.org/css-cascade-6/#scope-atrule","status":{"baseline":false,"support":{"chrome":"118","chrome_android":"118","edge":"118","safari":"17.4","safari_ios":"17.4"}}},"screen-orientation":{"caniuse":"screen-orientation","compat_features":["api.Screen.orientation","api.ScreenOrientation","api.ScreenOrientation.angle","api.ScreenOrientation.change_event","api.ScreenOrientation.type"],"description":"The screen.orientation API gets information about the orientation of the viewport, such as landscape or portrait. With this API, you can adapt an application's layout or behavior in response to changes in orientation.","description_html":"The <code>screen.orientation</code> API gets information about the orientation of the viewport, such as landscape or portrait. With this API, you can adapt an application's layout or behavior in response to changes in orientation.","name":"Screen orientation","spec":"https://w3c.github.io/screen-orientation/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"38","chrome_android":"39","edge":"79","firefox":"43","firefox_android":"43","safari":"16.4","safari_ios":"16.4"}}},"screen-orientation-lock":{"compat_features":["api.ScreenOrientation.lock","api.ScreenOrientation.unlock"],"description":"The screen.orientation.lock() method prevents changes to the screen orientation, typically in fullscreen applications such as games. For example, while locked, rotating a phone to the side won't change the screen orientation from landscape to portrait.","description_html":"The <code>screen.orientation.lock()</code> method prevents changes to the screen orientation, typically in fullscreen applications such as games. For example, while locked, rotating a phone to the side won't change the screen orientation from landscape to portrait.","name":"Screen orientation lock","spec":"https://w3c.github.io/screen-orientation/#lock-method","status":{"baseline":false,"support":{"chrome_android":"38"}}},"screen-wake-lock":{"caniuse":"wake-lock","compat_features":["api.Navigator.wakeLock","api.Permissions.permission_screen-wake-lock","api.WakeLock","api.WakeLock.request","api.WakeLockSentinel","api.WakeLockSentinel.release","api.WakeLockSentinel.release_event","api.WakeLockSentinel.released","api.WakeLockSentinel.type","http.headers.Permissions-Policy.screen-wake-lock"],"description":"The navigator.wakeLock.request(\"screen\") API prevents the device's screen from dimming or being turned off.","description_html":"The <code>navigator.wakeLock.request(\"screen\")</code> API prevents the device's screen from dimming or being turned off.","name":"Screen wake lock","spec":"https://w3c.github.io/screen-wake-lock/","status":{"baseline":false,"support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"126","firefox_android":"126","safari":"16.4"}}},"scroll-driven-animations":{"compat_features":["api.ScrollTimeline","api.ScrollTimeline.ScrollTimeline","api.ScrollTimeline.axis","api.ScrollTimeline.source","api.ViewTimeline","api.ViewTimeline.ViewTimeline","api.ViewTimeline.endOffset","api.ViewTimeline.startOffset","api.ViewTimeline.subject","css.properties.animation-range","css.properties.animation-range-end","css.properties.animation-range-start","css.properties.animation-timeline","css.properties.animation-timeline.scroll","css.properties.animation-timeline.view","css.properties.scroll-timeline","css.properties.scroll-timeline-axis","css.properties.scroll-timeline-name","css.properties.view-timeline","css.properties.view-timeline-axis","css.properties.view-timeline-inset","css.properties.view-timeline-name"],"description":"CSS scroll-driven animations are a type of CSS animations that don't run over time, but are instead driven by the user's scroll position.","description_html":"CSS scroll-driven animations are a type of CSS animations that don't run over time, but are instead driven by the user's scroll position.","group":"scrolling","name":"Scroll-driven animations","spec":"https://drafts.csswg.org/scroll-animations-1/","status":{"baseline":false,"support":{"chrome":"115","chrome_android":"115","edge":"115"}}},"scroll-into-view":{"caniuse":"scrollintoview","compat_features":["api.Element.scrollIntoView","api.Element.scrollIntoView.options_parameter"],"description":"The scrollIntoView() method scrolls an element's ancestor containers such that the element is visible to the user.","description_html":"The <code>scrollIntoView()</code> method scrolls an element's ancestor containers such that the element is visible to the user.","group":"scrolling","name":"scrollIntoView()","spec":"https://drafts.csswg.org/cssom-view-1/#dom-element-scrollintoview","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"36","firefox_android":"36","safari":"14","safari_ios":"14"}}},"scroll-snap":{"caniuse":"css-snappoints","compat_features":["css.properties.scroll-margin","css.properties.scroll-margin-block","css.properties.scroll-margin-block-end","css.properties.scroll-margin-block-start","css.properties.scroll-margin-bottom","css.properties.scroll-margin-inline","css.properties.scroll-margin-inline-end","css.properties.scroll-margin-inline-start","css.properties.scroll-margin-left","css.properties.scroll-margin-right","css.properties.scroll-margin-top","css.properties.scroll-padding","css.properties.scroll-padding-block","css.properties.scroll-padding-block-end","css.properties.scroll-padding-block-start","css.properties.scroll-padding-bottom","css.properties.scroll-padding-inline","css.properties.scroll-padding-inline-end","css.properties.scroll-padding-inline-start","css.properties.scroll-padding-left","css.properties.scroll-padding-right","css.properties.scroll-padding-top","css.properties.scroll-snap-align","css.properties.scroll-snap-stop","css.properties.scroll-snap-type"],"description":"CSS scroll snap controls the panning and scrolling behavior within a scroll container.","description_html":"CSS scroll snap controls the panning and scrolling behavior within a scroll container.","group":"scrolling","name":"Scroll snap","spec":"https://drafts.csswg.org/css-scroll-snap-1/","status":{"baseline":"high","baseline_high_date":"2022-01-09","baseline_low_date":"2019-07-09","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"68","firefox_android":"68","safari":"11","safari_ios":"11"}}},"scroll-to-text-fragment":{"caniuse":"url-scroll-to-text-fragment","description":"Text fragments are URL fragments on the form #:~:text=snippet and link to a snippet of text within a page. The browser may scroll, highlight, or otherwise bring that text to the reader's attention.","description_html":"Text fragments are URL fragments on the form <code>#:~:text=snippet</code> and link to a snippet of text within a page. The browser may scroll, highlight, or otherwise bring that text to the reader's attention.","group":["text-fragments","scrolling"],"name":"Scroll to text fragment","spec":"https://wicg.github.io/scroll-to-text-fragment/","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"81","edge":"83","safari":"16.1","safari_ios":"16.1"}}},"scrollbar-color":{"compat_features":["css.properties.scrollbar-color"],"description":"The scrollbar-color CSS property sets the color of the scrollbar track and thumb.","description_html":"The <code>scrollbar-color</code> CSS property sets the color of the scrollbar track and thumb.","group":"scrolling","name":"scrollbar-color","spec":"https://drafts.csswg.org/css-scrollbars-1/#scrollbar-color","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"64","firefox_android":"64"}}},"scrollbar-gutter":{"compat_features":["css.properties.scrollbar-gutter"],"description":"The scrollbar-gutter CSS property reserves space for the scrollbar, preventing unwanted layout changes as the scrollbar appears and disappears.","description_html":"The <code>scrollbar-gutter</code> CSS property reserves space for the scrollbar, preventing unwanted layout changes as the scrollbar appears and disappears.","group":"scrolling","name":"scrollbar-gutter","spec":"https://drafts.csswg.org/css-overflow-3/#scrollbar-gutter-property","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94","firefox":"97","firefox_android":"97"}}},"scrollbar-width":{"compat_features":["css.properties.scrollbar-width"],"description":"The scrollbar-width CSS property sets the width of the scrollbar.","description_html":"The <code>scrollbar-width</code> CSS property sets the width of the scrollbar.","group":"scrolling","name":"scrollbar-width","spec":"https://drafts.csswg.org/css-scrollbars-1/#scrollbar-width","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"64","firefox_android":"64"}}},"scrollend":{"compat_features":["api.Document.scrollend_event","api.Element.scrollend_event"],"description":"The scrollend event fires when an element or document has finished scrolling.","description_html":"The <code>scrollend</code> event fires when an element or document has finished scrolling.","group":"scrolling","name":"scrollend","spec":"https://drafts.csswg.org/cssom-view-1/#eventdef-document-scrollend","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"109","firefox_android":"109"}}},"search":{"compat_features":["html.elements.search"],"description":"The <search> HTML element is a container that represents the parts of the web page with search functionality.","description_html":"The <code>&#x3C;search></code> HTML element is a container that represents the parts of the web page with search functionality.","group":"html-elements","name":"<search>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-search-element","status":{"baseline":"low","baseline_low_date":"2023-10-13","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"118","firefox_android":"118","safari":"17","safari_ios":"17"}}},"search-input-type":{"caniuse":"input-search","compat_features":["html.elements.input.type_search"],"description":"The <input> HTML element with the type=\"search\" attribute represents a text field for search queries, which might be styled differently by the browser.","description_html":"The <code>&#x3C;input></code> HTML element with the <code>type=\"search\"</code> attribute represents a text field for search queries, which might be styled differently by the browser.","group":"forms","name":"<input type=\"search\">","spec":"https://html.spec.whatwg.org/multipage/input.html#text-(type=text)-state-and-search-state-(type=search)","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"section":{"compat_features":["html.elements.section"],"description":"The <section> element is a generic standalone section of a document, which doesn't have a more specific semantic element to represent it.","description_html":"The <code>&#x3C;section></code> element is a generic standalone section of a document, which doesn't have a more specific semantic element to represent it.","group":"html-elements","name":"<section>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-section-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"server-timing":{"caniuse":"server-timing","compat_features":["api.PerformanceResourceTiming.serverTiming","api.PerformanceServerTiming","api.PerformanceServerTiming.description","api.PerformanceServerTiming.duration","api.PerformanceServerTiming.name","api.PerformanceServerTiming.toJSON","http.headers.Server-Timing"],"description":"The serverTiming property of the PerformanceResourceTiming API contains server timing information about network requests.","description_html":"The <code>serverTiming</code> property of the <code>PerformanceResourceTiming</code> API contains server timing information about network requests.","name":"Server timing","spec":"https://w3c.github.io/server-timing/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"61","firefox_android":"61","safari":"16.4","safari_ios":"16.4"}}},"set":{"compat_features":["javascript.builtins.Set","javascript.builtins.Set.@@iterator","javascript.builtins.Set.Set","javascript.builtins.Set.Set.iterable_allowed","javascript.builtins.Set.Set.null_allowed","javascript.builtins.Set.add","javascript.builtins.Set.clear","javascript.builtins.Set.delete","javascript.builtins.Set.entries","javascript.builtins.Set.forEach","javascript.builtins.Set.has","javascript.builtins.Set.key_equality_for_zeros","javascript.builtins.Set.keys","javascript.builtins.Set.size","javascript.builtins.Set.values"],"description":"Set objects store unique values of any type.","description_html":"Set objects store unique values of any type.","group":"sets","name":"Set (initial support)","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/keyed-collections.html#sec-set-objects","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"38","chrome_android":"38","edge":"12","firefox":"13","firefox_android":"14","safari":"8","safari_ios":"8"}}},"set-methods":{"compat_features":["javascript.builtins.Set.difference","javascript.builtins.Set.intersection","javascript.builtins.Set.isDisjointFrom","javascript.builtins.Set.isSubsetOf","javascript.builtins.Set.isSupersetOf","javascript.builtins.Set.symmetricDifference","javascript.builtins.Set.union"],"description":"The difference(), intersection(), isDisjointFrom(), isSubsetOf(), isSupersetOf(), symmetricDifference(), and union() methods of the JavaScript Set object performs operations between two sets.","description_html":"The <code>difference()</code>, <code>intersection()</code>, <code>isDisjointFrom()</code>, <code>isSubsetOf()</code>, <code>isSupersetOf()</code>, <code>symmetricDifference()</code>, and <code>union()</code> methods of the JavaScript <code>Set</code> object performs operations between two sets.","group":"sets","name":"Set methods","spec":"https://tc39.es/proposal-set-methods/","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"122","chrome_android":"122","edge":"122","firefox":"127","firefox_android":"127","safari":"17","safari_ios":"17"}}},"shadow-dom":{"caniuse":"shadowdomv1","compat_features":["api.Element.attachShadow","api.Element.shadowRoot","api.Event.composed","api.Event.composedPath","api.Node.getRootNode","api.Node.isConnected","api.ShadowRoot","api.ShadowRoot.clonable","api.ShadowRoot.host","api.ShadowRoot.mode"],"description":"Shadow DOM allows you to attach encapsulated \"shadow\" DOM trees to elements. A shadow DOM tree is a separate component, isolated from the scripts and styles in other parts of the document. This is a part of Web Components.","description_html":"Shadow DOM allows you to attach encapsulated \"shadow\" DOM trees to elements. A shadow DOM tree is a separate component, isolated from the scripts and styles in other parts of the document. This is a part of Web Components.","group":"web-components","name":"Shadow DOM","spec":"https://dom.spec.whatwg.org/#shadow-trees","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"53","chrome_android":"53","edge":"79","firefox":"63","firefox_android":"63","safari":"10","safari_ios":"10"}}},"show-picker-input":{"compat_features":["api.HTMLInputElement.showPicker","api.HTMLInputElement.showPicker.color_input","api.HTMLInputElement.showPicker.date_input","api.HTMLInputElement.showPicker.datetime_local_input","api.HTMLInputElement.showPicker.file_input"],"description":"The showPicker() method for <input> elements shows the user interface for picking a value. For example, for <input type=\"date\"> it shows the interface for picking a date.","description_html":"The <code>showPicker()</code> method for <code>&#x3C;input></code> elements shows the user interface for picking a value. For example, for <code>&#x3C;input type=\"date\"></code> it shows the interface for picking a date.","group":"forms","name":"showPicker() for <input>","spec":"https://html.spec.whatwg.org/multipage/input.html#dom-input-showpicker","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"101","firefox_android":"101","safari":"17.4"}}},"show-picker-select":{"compat_features":["api.HTMLSelectElement.showPicker"],"description":"The showPicker() method for <select> elements shows the dropdown menu or other user interface for picking one of the options.","description_html":"The <code>showPicker()</code> method for <code>&#x3C;select></code> elements shows the dropdown menu or other user interface for picking one of the options.","group":"forms","name":"showPicker() for <select>","spec":"https://html.spec.whatwg.org/multipage/input.html#dom-select-showpicker","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"122","firefox_android":"122"}}},"slot":{"compat_features":["api.Element.assignedSlot","api.Element.slot","api.HTMLSlotElement","api.HTMLSlotElement.assignedElements","api.HTMLSlotElement.assignedNodes","api.HTMLSlotElement.name","api.HTMLSlotElement.slotchange_event","api.Text.assignedSlot","css.selectors.slotted","html.elements.slot","html.elements.slot.name","html.global_attributes.slot"],"description":"The <slot> HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.","description_html":"The <code>&#x3C;slot></code> HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.","group":["html-elements","web-components"],"name":"<slot>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-slot-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"53","chrome_android":"53","edge":"79","firefox":"63","firefox_android":"63","safari":"10","safari_ios":"10"}}},"slot-assign":{"compat_features":["api.HTMLSlotElement.assign","api.ShadowRoot.slotAssignment"],"description":"The assign() method for <slot> elements assigns nodes to the slot, as an alternative to using the slot and name HTML attributes. The nodes must be children of a shadow host and the shadow root must be created with the slotAssignment set to \"manual\". Also known as manual slot assignment.","description_html":"The <code>assign()</code> method for <code>&#x3C;slot></code> elements assigns nodes to the slot, as an alternative to using the <code>slot</code> and <code>name</code> HTML attributes. The nodes must be children of a shadow host and the shadow root must be created with the <code>slotAssignment</code> set to \"manual\". Also known as manual slot assignment.","group":"web-components","name":"Imperative slot assignment","spec":"https://html.spec.whatwg.org/multipage/scripting.html#dom-slot-assign","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"92","firefox_android":"92","safari":"16.4","safari_ios":"16.4"}}},"small":{"compat_features":["html.elements.small"],"description":"The <small> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. Styled in a reduced font size by default.","description_html":"The <code>&#x3C;small></code> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. Styled in a reduced font size by default.","group":"html-elements","name":"<small>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-small-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"source":{"compat_features":["html.elements.source","html.elements.source.height","html.elements.source.media","html.elements.source.src","html.elements.source.type","html.elements.source.width"],"description":"The <source> element sets a media resource for the <picture>, <video>, and <audio> elements.","description_html":"The <code>&#x3C;source></code> element sets a media resource for the <code>&#x3C;picture></code>, <code>&#x3C;video></code>, and <code>&#x3C;audio></code> elements.","group":["media-elements","html-elements"],"name":"<source>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"2"}}},"span":{"compat_features":["api.HTMLSpanElement","html.elements.span"],"description":"The <span> HTML element is the generic inline container for content.","description_html":"The <code>&#x3C;span></code> HTML element is the generic inline container for content.","group":"html-elements","name":"<span>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-span-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"speech-synthesis":{"caniuse":"speech-synthesis","compat_features":["api.SpeechSynthesis","api.SpeechSynthesis.cancel","api.SpeechSynthesis.getVoices","api.SpeechSynthesis.pause","api.SpeechSynthesis.paused","api.SpeechSynthesis.pending","api.SpeechSynthesis.resume","api.SpeechSynthesis.speak","api.SpeechSynthesis.speaking","api.SpeechSynthesisEvent","api.SpeechSynthesisEvent.charIndex","api.SpeechSynthesisEvent.elapsedTime","api.SpeechSynthesisEvent.name","api.SpeechSynthesisEvent.utterance","api.SpeechSynthesisUtterance","api.SpeechSynthesisUtterance.SpeechSynthesisUtterance","api.SpeechSynthesisUtterance.end_event","api.SpeechSynthesisUtterance.error_event","api.SpeechSynthesisUtterance.lang","api.SpeechSynthesisUtterance.mark_event","api.SpeechSynthesisUtterance.pause_event","api.SpeechSynthesisUtterance.pitch","api.SpeechSynthesisUtterance.rate","api.SpeechSynthesisUtterance.resume_event","api.SpeechSynthesisUtterance.start_event","api.SpeechSynthesisUtterance.text","api.SpeechSynthesisUtterance.voice","api.SpeechSynthesisUtterance.volume","api.SpeechSynthesisVoice","api.SpeechSynthesisVoice.default","api.SpeechSynthesisVoice.lang","api.SpeechSynthesisVoice.localService","api.SpeechSynthesisVoice.name","api.SpeechSynthesisVoice.voiceURI","api.Window.speechSynthesis"],"description":"The SpeechSynthesis API converts text into audio using a synthetic voice.","description_html":"The <code>SpeechSynthesis</code> API converts text into audio using a synthetic voice.","group":"speech","name":"Speech synthesis","spec":"https://wicg.github.io/speech-api/#tts-section","status":{"baseline":"high","baseline_high_date":"2021-03-05","baseline_low_date":"2018-09-05","support":{"chrome":"33","chrome_android":"33","edge":"14","firefox":"49","firefox_android":"62","safari":"7","safari_ios":"7"}}},"spelling-grammar-error":{"compat_features":["css.selectors.grammar-error","css.selectors.spelling-error"],"description":"The ::spelling-error and ::grammar-error CSS pseudo-elements match text that is highlighted as misspelled and grammatically incorrect, respectively.","description_html":"The <code>::spelling-error</code> and <code>::grammar-error</code> CSS pseudo-elements match text that is highlighted as misspelled and grammatically incorrect, respectively.","name":"::spelling-error and ::grammar-error","spec":["https://drafts.csswg.org/css-pseudo-4/#selectordef-spelling-error","https://drafts.csswg.org/css-pseudo-4/#selectordef-grammar-error"],"status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","safari":"17.4","safari_ios":"17.4"}}},"stable-array-sort":{"compat_features":["javascript.builtins.Array.sort.stable_sorting"],"description":"Stable array sort() function","description_html":"Stable array sort() function","group":"arrays","name":"Stable array sort","snapshot":"ecmascript-2019","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.sort","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"70","chrome_android":"70","edge":"79","firefox":"3","firefox_android":"4","safari":"10.1","safari_ios":"10.3"}}},"starting-style":{"compat_features":["api.CSSStartingStyleRule","css.at-rules.starting-style"],"description":"The @starting-style CSS at-rule defines the starting values for properties that are transitioning when the target element's style is first updated.","description_html":"The <code>@starting-style</code> CSS at-rule defines the starting values for properties that are transitioning when the target element's style is first updated.","name":"@starting-style","spec":"https://drafts.csswg.org/css-transitions-2/#defining-before-change-style","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117","safari":"17.5","safari_ios":"17.5"}}},"state":{"compat_features":["api.CustomStateSet","api.CustomStateSet.@@iterator","api.CustomStateSet.add","api.CustomStateSet.clear","api.CustomStateSet.delete","api.CustomStateSet.entries","api.CustomStateSet.forEach","api.CustomStateSet.has","api.CustomStateSet.keys","api.CustomStateSet.size","api.CustomStateSet.values","api.ElementInternals.states","css.selectors.state"],"description":"The :state() CSS pseudo-class matches custom elements based on their custom state, set through the ElementInternals.states API.","description_html":"The <code>:state()</code> CSS pseudo-class matches custom elements based on their custom state, set through the <code>ElementInternals.states</code> API.","group":"custom-elements","name":":state()","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#custom-state-pseudo-class","status":{"baseline":"low","baseline_low_date":"2024-05-17","support":{"chrome":"125","chrome_android":"125","edge":"125","firefox":"126","firefox_android":"126","safari":"17.4","safari_ios":"17.4"}}},"sticky-positioning":{"caniuse":"css-sticky","compat_features":["css.properties.position.position_sticky_table_elements","css.properties.position.sticky"],"description":"The position: sticky CSS declaration positions an element in the normal flow until it crosses a specified threshold, at which points it becomes fixed (stuck) at that position.","description_html":"The <code>position: sticky</code> CSS declaration positions an element in the normal flow until it crosses a specified threshold, at which points it becomes fixed (stuck) at that position.","name":"Sticky positioning","spec":"https://drafts.csswg.org/css-position-3/#stickypos-insets","status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"56","chrome_android":"56","edge":"16","firefox":"59","firefox_android":"59","safari":"13","safari_ios":"13"}}},"storage-access":{"compat_features":["api.Document.hasStorageAccess","api.Document.requestStorageAccess"],"description":"The document.requestStorageAccess() method allows content in iframes to request storing and reading cookies and other site data, while the document.hasStorageAccess() method checks if such access is granted.","description_html":"The <code>document.requestStorageAccess()</code> method allows content in iframes to request storing and reading cookies and other site data, while the <code>document.hasStorageAccess()</code> method checks if such access is granted.","name":"Storage access","spec":"https://privacycg.github.io/storage-access/","status":{"baseline":"low","baseline_low_date":"2023-12-05","support":{"chrome":"119","chrome_android":"120","edge":"85","firefox":"65","firefox_android":"65","safari":"11.1","safari_ios":"11.3"}}},"storage-buckets":{"compat_features":["api.Navigator.storageBuckets","api.StorageBucket","api.StorageBucket.caches","api.StorageBucket.estimate","api.StorageBucket.expires","api.StorageBucket.getDirectory","api.StorageBucket.indexedDB","api.StorageBucket.name","api.StorageBucket.persist","api.StorageBucket.persisted","api.StorageBucket.setExpires","api.StorageBucketManager","api.StorageBucketManager.delete","api.StorageBucketManager.keys","api.StorageBucketManager.open","api.WorkerNavigator.storageBuckets"],"description":"The navigator.storageBuckets API allows you to organize locally stored data into groups called storage buckets. Each bucket can have different settings, allowing the browser to manage and delete buckets independently rather than applying the same treatment to all.","description_html":"The <code>navigator.storageBuckets</code> API allows you to organize locally stored data into groups called storage buckets. Each bucket can have different settings, allowing the browser to manage and delete buckets independently rather than applying the same treatment to all.","name":"Storage buckets","spec":"https://wicg.github.io/storage-buckets/","status":{"baseline":false,"support":{"chrome":"122","chrome_android":"122","edge":"122"}}},"streams":{"caniuse":"streams","compat_features":["api.ByteLengthQueuingStrategy","api.ByteLengthQueuingStrategy.ByteLengthQueuingStrategy","api.ByteLengthQueuingStrategy.highWaterMark","api.ByteLengthQueuingStrategy.size","api.CountQueuingStrategy","api.CountQueuingStrategy.CountQueuingStrategy","api.CountQueuingStrategy.highWaterMark","api.CountQueuingStrategy.size","api.ReadableStream","api.ReadableStream.ReadableStream","api.ReadableStream.cancel","api.ReadableStream.getReader","api.ReadableStream.locked","api.ReadableStream.pipeThrough","api.ReadableStream.pipeTo","api.ReadableStream.tee","api.WritableStream","api.WritableStream.WritableStream","api.WritableStream.abort","api.WritableStream.getWriter","api.WritableStream.locked","api.WritableStreamDefaultController","api.WritableStreamDefaultController.error","api.WritableStreamDefaultWriter","api.WritableStreamDefaultWriter.abort","api.WritableStreamDefaultWriter.close","api.WritableStreamDefaultWriter.closed","api.WritableStreamDefaultWriter.desiredSize","api.WritableStreamDefaultWriter.ready","api.WritableStreamDefaultWriter.releaseLock","api.WritableStreamDefaultWriter.write"],"description":"The streams API creates, composes, and consumes continuously generated data.","description_html":"The streams API creates, composes, and consumes continuously generated data.","group":"streams","name":"Streams","spec":"https://streams.spec.whatwg.org/","status":{"baseline":"low","baseline_low_date":"2022-06-28","support":{"chrome":"59","chrome_android":"59","edge":"79","firefox":"102","firefox_android":"102","safari":"14.1","safari_ios":"14.5"}}},"strong":{"compat_features":["html.elements.strong"],"description":"The <strong> HTML element brings attention to the content, styling text as bold by default.","description_html":"The <code>&#x3C;strong></code> HTML element brings attention to the content, styling text as bold by default.","group":"html-elements","name":"<strong>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-strong-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"structured-clone":{"compat_features":["api.structuredClone"],"description":"The structuredClone() global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.","description_html":"The <code>structuredClone()</code> global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.","name":"structuredClone()","spec":"https://html.spec.whatwg.org/multipage/structured-data.html#structured-cloning","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"94","firefox_android":"94","safari":"15.4","safari_ios":"15.4"}}},"style":{"compat_features":["api.HTMLStyleElement","api.HTMLStyleElement.disabled","api.HTMLStyleElement.media","html.elements.style","html.elements.style.media"],"description":"The <style> element embeds an inline CSS stylesheet in a document.","description_html":"The <code>&#x3C;style></code> element embeds an inline CSS stylesheet in a document.","group":"html-elements","name":"<style>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-style-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"sub-sup":{"compat_features":["html.elements.sub","html.elements.sup"],"description":"The <sub> and <sup> elements sets inline text to be displayed as subscript or superscript for solely typographical reasons.","description_html":"The <code>&#x3C;sub></code> and <code>&#x3C;sup></code> elements sets inline text to be displayed as subscript or superscript for solely typographical reasons.","group":"html-elements","name":"<sub> and <sup>","spec":["https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-sub-element","https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-sup-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"subgrid":{"caniuse":"css-subgrid","compat_features":["css.properties.grid-template-columns.subgrid","css.properties.grid-template-rows.subgrid"],"description":"The subgrid value for the grid-template-columns and grid-template-rows properties allows a grid item to inherit the grid definition of its parent grid container.","description_html":"The <code>subgrid</code> value for the <code>grid-template-columns</code> and <code>grid-template-rows</code> properties allows a grid item to inherit the grid definition of its parent grid container.","group":"grid","name":"Subgrid","spec":"https://drafts.csswg.org/css-grid-2/#subgrids","status":{"baseline":"low","baseline_low_date":"2023-09-15","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"71","firefox_android":"79","safari":"16","safari_ios":"16"}}},"tabindex":{"caniuse":"tabindex-attr","compat_features":["api.HTMLElement.tabIndex","html.global_attributes.tabindex"],"description":"The tabindex HTML attribute make an element focusable, and defines the element's relative ordering for sequential focus navigation.","description_html":"The <code>tabindex</code> HTML attribute make an element focusable, and defines the element's relative ordering for sequential focus navigation.","group":"html","name":"tabindex","spec":"https://html.spec.whatwg.org/multipage/interaction.html#attr-tabindex","status":{"baseline":"high","baseline_high_date":"2021-04-02","baseline_low_date":"2018-10-02","support":{"chrome":"1","chrome_android":"18","edge":"18","firefox":"1.5","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"table":{"compat_features":["api.HTMLTableCaptionElement","api.HTMLTableCellElement","api.HTMLTableCellElement.abbr","api.HTMLTableCellElement.cellIndex","api.HTMLTableCellElement.colSpan","api.HTMLTableCellElement.headers","api.HTMLTableCellElement.rowSpan","api.HTMLTableCellElement.scope","api.HTMLTableColElement","api.HTMLTableColElement.span","api.HTMLTableElement","api.HTMLTableElement.caption","api.HTMLTableElement.createCaption","api.HTMLTableElement.createTBody","api.HTMLTableElement.createTFoot","api.HTMLTableElement.createTHead","api.HTMLTableElement.deleteCaption","api.HTMLTableElement.deleteRow","api.HTMLTableElement.deleteTFoot","api.HTMLTableElement.deleteTHead","api.HTMLTableElement.insertRow","api.HTMLTableElement.rows","api.HTMLTableElement.tBodies","api.HTMLTableElement.tFoot","api.HTMLTableElement.tHead","api.HTMLTableRowElement","api.HTMLTableRowElement.cells","api.HTMLTableRowElement.deleteCell","api.HTMLTableRowElement.insertCell","api.HTMLTableRowElement.insertCell.index_parameter_negative_one","api.HTMLTableRowElement.insertCell.index_parameter_optional","api.HTMLTableRowElement.rowIndex","api.HTMLTableRowElement.sectionRowIndex","api.HTMLTableSectionElement","api.HTMLTableSectionElement.deleteRow","api.HTMLTableSectionElement.insertRow","api.HTMLTableSectionElement.rows","html.elements.caption","html.elements.col","html.elements.col.span","html.elements.colgroup","html.elements.colgroup.span","html.elements.table","html.elements.tbody","html.elements.td","html.elements.td.colspan","html.elements.td.headers","html.elements.td.rowspan","html.elements.tfoot","html.elements.th","html.elements.th.abbr","html.elements.th.colspan","html.elements.th.headers","html.elements.th.rowspan","html.elements.th.scope","html.elements.thead","html.elements.tr"],"description":"The <table> HTML element, with several related elements, represents tabular data in rows and columns of cells.","description_html":"The <code>&#x3C;table></code> HTML element, with several related elements, represents tabular data in rows and columns of cells.","group":"html-elements","name":"Tables","spec":"https://html.spec.whatwg.org/multipage/tables.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"target-text":{"compat_features":["css.selectors.target-text"],"description":"The ::target-text pseudo-element allows you to style text highlighted by a URL text fragment such as #:~:text=snippet.","description_html":"The <code>::target-text</code> pseudo-element allows you to style text highlighted by a URL text fragment such as <code>#:~:text=snippet</code>.","group":"text-fragments","name":"::target-text","spec":"https://drafts.csswg.org/css-pseudo-4/#selectordef-target-text","status":{"baseline":false,"support":{"chrome":"89","chrome_android":"89","edge":"89"}}},"template":{"caniuse":"template","compat_features":["api.HTMLTemplateElement","api.HTMLTemplateElement.content","html.elements.template"],"description":"The <template> HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.","description_html":"The <code>&#x3C;template></code> HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.","group":["html-elements","web-components"],"name":"<template>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-template-element","status":{"baseline":"high","baseline_high_date":"2018-05-12","baseline_low_date":"2015-11-12","support":{"chrome":"26","chrome_android":"26","edge":"13","firefox":"22","firefox_android":"22","safari":"8","safari_ios":"8"}}},"temporal":{"caniuse":"temporal","compat_features":["javascript.builtins.Temporal","javascript.builtins.Temporal.Calendar","javascript.builtins.Temporal.Calendar.Calendar","javascript.builtins.Temporal.Calendar.dateAdd","javascript.builtins.Temporal.Calendar.dateFromFields","javascript.builtins.Temporal.Calendar.dateUntil","javascript.builtins.Temporal.Calendar.day","javascript.builtins.Temporal.Calendar.dayOfWeek","javascript.builtins.Temporal.Calendar.dayOfYear","javascript.builtins.Temporal.Calendar.daysInMonth","javascript.builtins.Temporal.Calendar.daysInWeek","javascript.builtins.Temporal.Calendar.daysInYear","javascript.builtins.Temporal.Calendar.era","javascript.builtins.Temporal.Calendar.eraYear","javascript.builtins.Temporal.Calendar.fields","javascript.builtins.Temporal.Calendar.from","javascript.builtins.Temporal.Calendar.id","javascript.builtins.Temporal.Calendar.inLeapYear","javascript.builtins.Temporal.Calendar.mergeFields","javascript.builtins.Temporal.Calendar.month","javascript.builtins.Temporal.Calendar.monthCode","javascript.builtins.Temporal.Calendar.monthDayFromFields","javascript.builtins.Temporal.Calendar.monthsInYear","javascript.builtins.Temporal.Calendar.toJSON","javascript.builtins.Temporal.Calendar.toString","javascript.builtins.Temporal.Calendar.weekOfYear","javascript.builtins.Temporal.Calendar.year","javascript.builtins.Temporal.Calendar.yearMonthFromFields","javascript.builtins.Temporal.Duration","javascript.builtins.Temporal.Duration.Duration","javascript.builtins.Temporal.Duration.abs","javascript.builtins.Temporal.Duration.add","javascript.builtins.Temporal.Duration.blank","javascript.builtins.Temporal.Duration.compare","javascript.builtins.Temporal.Duration.days","javascript.builtins.Temporal.Duration.from","javascript.builtins.Temporal.Duration.hours","javascript.builtins.Temporal.Duration.microseconds","javascript.builtins.Temporal.Duration.milliseconds","javascript.builtins.Temporal.Duration.minutes","javascript.builtins.Temporal.Duration.months","javascript.builtins.Temporal.Duration.nanoseconds","javascript.builtins.Temporal.Duration.negated","javascript.builtins.Temporal.Duration.round","javascript.builtins.Temporal.Duration.seconds","javascript.builtins.Temporal.Duration.sign","javascript.builtins.Temporal.Duration.subtract","javascript.builtins.Temporal.Duration.toJSON","javascript.builtins.Temporal.Duration.toLocaleString","javascript.builtins.Temporal.Duration.toString","javascript.builtins.Temporal.Duration.total","javascript.builtins.Temporal.Duration.valueOf","javascript.builtins.Temporal.Duration.weeks","javascript.builtins.Temporal.Duration.with","javascript.builtins.Temporal.Duration.years","javascript.builtins.Temporal.Instant","javascript.builtins.Temporal.Instant.Instant","javascript.builtins.Temporal.Instant.add","javascript.builtins.Temporal.Instant.compare","javascript.builtins.Temporal.Instant.epochMicroseconds","javascript.builtins.Temporal.Instant.epochMilliseconds","javascript.builtins.Temporal.Instant.epochNanoseconds","javascript.builtins.Temporal.Instant.epochSeconds","javascript.builtins.Temporal.Instant.equals","javascript.builtins.Temporal.Instant.from","javascript.builtins.Temporal.Instant.fromEpochMicroseconds","javascript.builtins.Temporal.Instant.fromEpochMilliseconds","javascript.builtins.Temporal.Instant.fromEpochNanoseconds","javascript.builtins.Temporal.Instant.fromEpochSeconds","javascript.builtins.Temporal.Instant.round","javascript.builtins.Temporal.Instant.since","javascript.builtins.Temporal.Instant.subtract","javascript.builtins.Temporal.Instant.toJSON","javascript.builtins.Temporal.Instant.toLocaleString","javascript.builtins.Temporal.Instant.toString","javascript.builtins.Temporal.Instant.toZonedDateTime","javascript.builtins.Temporal.Instant.toZonedDateTimeISO","javascript.builtins.Temporal.Instant.until","javascript.builtins.Temporal.Instant.valueOf","javascript.builtins.Temporal.Now","javascript.builtins.Temporal.Now.instant","javascript.builtins.Temporal.Now.plainDate","javascript.builtins.Temporal.Now.plainDateISO","javascript.builtins.Temporal.Now.plainDateTime","javascript.builtins.Temporal.Now.plainDateTimeISO","javascript.builtins.Temporal.Now.timeZone","javascript.builtins.Temporal.Now.zonedDateTime","javascript.builtins.Temporal.Now.zonedDateTimeISO","javascript.builtins.Temporal.PlainDate","javascript.builtins.Temporal.PlainDate.PlainDate","javascript.builtins.Temporal.PlainDate.add","javascript.builtins.Temporal.PlainDate.calendar","javascript.builtins.Temporal.PlainDate.compare","javascript.builtins.Temporal.PlainDate.day","javascript.builtins.Temporal.PlainDate.dayOfWeek","javascript.builtins.Temporal.PlainDate.dayOfYear","javascript.builtins.Temporal.PlainDate.daysInMonth","javascript.builtins.Temporal.PlainDate.daysInWeek","javascript.builtins.Temporal.PlainDate.daysInYear","javascript.builtins.Temporal.PlainDate.equals","javascript.builtins.Temporal.PlainDate.era","javascript.builtins.Temporal.PlainDate.eraYear","javascript.builtins.Temporal.PlainDate.from","javascript.builtins.Temporal.PlainDate.getISOFields","javascript.builtins.Temporal.PlainDate.inLeapYear","javascript.builtins.Temporal.PlainDate.month","javascript.builtins.Temporal.PlainDate.monthCode","javascript.builtins.Temporal.PlainDate.monthsInYear","javascript.builtins.Temporal.PlainDate.since","javascript.builtins.Temporal.PlainDate.subtract","javascript.builtins.Temporal.PlainDate.toJSON","javascript.builtins.Temporal.PlainDate.toLocaleString","javascript.builtins.Temporal.PlainDate.toPlainDateTime","javascript.builtins.Temporal.PlainDate.toPlainMonthDay","javascript.builtins.Temporal.PlainDate.toPlainYearMonth","javascript.builtins.Temporal.PlainDate.toString","javascript.builtins.Temporal.PlainDate.toZonedDateTime","javascript.builtins.Temporal.PlainDate.until","javascript.builtins.Temporal.PlainDate.valueOf","javascript.builtins.Temporal.PlainDate.weekOfYear","javascript.builtins.Temporal.PlainDate.with","javascript.builtins.Temporal.PlainDate.withCalendar","javascript.builtins.Temporal.PlainDate.year","javascript.builtins.Temporal.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.add","javascript.builtins.Temporal.PlainDateTime.calendar","javascript.builtins.Temporal.PlainDateTime.compare","javascript.builtins.Temporal.PlainDateTime.day","javascript.builtins.Temporal.PlainDateTime.dayOfWeek","javascript.builtins.Temporal.PlainDateTime.dayOfYear","javascript.builtins.Temporal.PlainDateTime.daysInMonth","javascript.builtins.Temporal.PlainDateTime.daysInWeek","javascript.builtins.Temporal.PlainDateTime.daysInYear","javascript.builtins.Temporal.PlainDateTime.equals","javascript.builtins.Temporal.PlainDateTime.era","javascript.builtins.Temporal.PlainDateTime.eraYear","javascript.builtins.Temporal.PlainDateTime.from","javascript.builtins.Temporal.PlainDateTime.getISOFields","javascript.builtins.Temporal.PlainDateTime.hour","javascript.builtins.Temporal.PlainDateTime.inLeapYear","javascript.builtins.Temporal.PlainDateTime.microsecond","javascript.builtins.Temporal.PlainDateTime.millisecond","javascript.builtins.Temporal.PlainDateTime.minute","javascript.builtins.Temporal.PlainDateTime.month","javascript.builtins.Temporal.PlainDateTime.monthCode","javascript.builtins.Temporal.PlainDateTime.monthsInYear","javascript.builtins.Temporal.PlainDateTime.nanosecond","javascript.builtins.Temporal.PlainDateTime.round","javascript.builtins.Temporal.PlainDateTime.second","javascript.builtins.Temporal.PlainDateTime.since","javascript.builtins.Temporal.PlainDateTime.subtract","javascript.builtins.Temporal.PlainDateTime.toJSON","javascript.builtins.Temporal.PlainDateTime.toLocaleString","javascript.builtins.Temporal.PlainDateTime.toPlainDate","javascript.builtins.Temporal.PlainDateTime.toPlainMonthDay","javascript.builtins.Temporal.PlainDateTime.toPlainTime","javascript.builtins.Temporal.PlainDateTime.toPlainYearMonth","javascript.builtins.Temporal.PlainDateTime.toString","javascript.builtins.Temporal.PlainDateTime.toZonedDateTime","javascript.builtins.Temporal.PlainDateTime.until","javascript.builtins.Temporal.PlainDateTime.valueOf","javascript.builtins.Temporal.PlainDateTime.weekOfYear","javascript.builtins.Temporal.PlainDateTime.with","javascript.builtins.Temporal.PlainDateTime.withCalendar","javascript.builtins.Temporal.PlainDateTime.withPlainDate","javascript.builtins.Temporal.PlainDateTime.withPlainTime","javascript.builtins.Temporal.PlainDateTime.year","javascript.builtins.Temporal.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.calendar","javascript.builtins.Temporal.PlainMonthDay.day","javascript.builtins.Temporal.PlainMonthDay.equals","javascript.builtins.Temporal.PlainMonthDay.from","javascript.builtins.Temporal.PlainMonthDay.getISOFields","javascript.builtins.Temporal.PlainMonthDay.monthCode","javascript.builtins.Temporal.PlainMonthDay.toJSON","javascript.builtins.Temporal.PlainMonthDay.toLocaleString","javascript.builtins.Temporal.PlainMonthDay.toPlainDate","javascript.builtins.Temporal.PlainMonthDay.toString","javascript.builtins.Temporal.PlainMonthDay.valueOf","javascript.builtins.Temporal.PlainMonthDay.with","javascript.builtins.Temporal.PlainTime","javascript.builtins.Temporal.PlainTime.PlainTime","javascript.builtins.Temporal.PlainTime.add","javascript.builtins.Temporal.PlainTime.calendar","javascript.builtins.Temporal.PlainTime.compare","javascript.builtins.Temporal.PlainTime.equals","javascript.builtins.Temporal.PlainTime.from","javascript.builtins.Temporal.PlainTime.getISOFields","javascript.builtins.Temporal.PlainTime.hour","javascript.builtins.Temporal.PlainTime.microsecond","javascript.builtins.Temporal.PlainTime.millisecond","javascript.builtins.Temporal.PlainTime.minute","javascript.builtins.Temporal.PlainTime.nanosecond","javascript.builtins.Temporal.PlainTime.round","javascript.builtins.Temporal.PlainTime.second","javascript.builtins.Temporal.PlainTime.since","javascript.builtins.Temporal.PlainTime.subtract","javascript.builtins.Temporal.PlainTime.toJSON","javascript.builtins.Temporal.PlainTime.toLocaleString","javascript.builtins.Temporal.PlainTime.toPlainDateTime","javascript.builtins.Temporal.PlainTime.toString","javascript.builtins.Temporal.PlainTime.toZonedDateTime","javascript.builtins.Temporal.PlainTime.until","javascript.builtins.Temporal.PlainTime.valueOf","javascript.builtins.Temporal.PlainTime.with","javascript.builtins.Temporal.PlainYearMonth","javascript.builtins.Temporal.PlainYearMonth.PlainYearMonth","javascript.builtins.Temporal.PlainYearMonth.add","javascript.builtins.Temporal.PlainYearMonth.calendar","javascript.builtins.Temporal.PlainYearMonth.compare","javascript.builtins.Temporal.PlainYearMonth.daysInMonth","javascript.builtins.Temporal.PlainYearMonth.daysInYear","javascript.builtins.Temporal.PlainYearMonth.equals","javascript.builtins.Temporal.PlainYearMonth.era","javascript.builtins.Temporal.PlainYearMonth.eraYear","javascript.builtins.Temporal.PlainYearMonth.from","javascript.builtins.Temporal.PlainYearMonth.getISOFields","javascript.builtins.Temporal.PlainYearMonth.inLeapYear","javascript.builtins.Temporal.PlainYearMonth.month","javascript.builtins.Temporal.PlainYearMonth.monthCode","javascript.builtins.Temporal.PlainYearMonth.monthsInYear","javascript.builtins.Temporal.PlainYearMonth.since","javascript.builtins.Temporal.PlainYearMonth.subtract","javascript.builtins.Temporal.PlainYearMonth.toJSON","javascript.builtins.Temporal.PlainYearMonth.toLocaleString","javascript.builtins.Temporal.PlainYearMonth.toPlainDate","javascript.builtins.Temporal.PlainYearMonth.toString","javascript.builtins.Temporal.PlainYearMonth.until","javascript.builtins.Temporal.PlainYearMonth.valueOf","javascript.builtins.Temporal.PlainYearMonth.with","javascript.builtins.Temporal.PlainYearMonth.year","javascript.builtins.Temporal.TimeZone","javascript.builtins.Temporal.TimeZone.TimeZone","javascript.builtins.Temporal.TimeZone.from","javascript.builtins.Temporal.TimeZone.getInstantFor","javascript.builtins.Temporal.TimeZone.getNextTransition","javascript.builtins.Temporal.TimeZone.getOffsetNanosecondsFor","javascript.builtins.Temporal.TimeZone.getOffsetStringFor","javascript.builtins.Temporal.TimeZone.getPlainDateTimeFor","javascript.builtins.Temporal.TimeZone.getPossibleInstantsFor","javascript.builtins.Temporal.TimeZone.getPreviousTransition","javascript.builtins.Temporal.TimeZone.id","javascript.builtins.Temporal.TimeZone.toJSON","javascript.builtins.Temporal.TimeZone.toString","javascript.builtins.Temporal.ZonedDateTime","javascript.builtins.Temporal.ZonedDateTime.ZonedDateTime","javascript.builtins.Temporal.ZonedDateTime.add","javascript.builtins.Temporal.ZonedDateTime.calendar","javascript.builtins.Temporal.ZonedDateTime.compare","javascript.builtins.Temporal.ZonedDateTime.day","javascript.builtins.Temporal.ZonedDateTime.dayOfWeek","javascript.builtins.Temporal.ZonedDateTime.dayOfYear","javascript.builtins.Temporal.ZonedDateTime.daysInMonth","javascript.builtins.Temporal.ZonedDateTime.daysInWeek","javascript.builtins.Temporal.ZonedDateTime.daysInYear","javascript.builtins.Temporal.ZonedDateTime.epochMicroseconds","javascript.builtins.Temporal.ZonedDateTime.epochMilliseconds","javascript.builtins.Temporal.ZonedDateTime.epochNanoseconds","javascript.builtins.Temporal.ZonedDateTime.epochSeconds","javascript.builtins.Temporal.ZonedDateTime.equals","javascript.builtins.Temporal.ZonedDateTime.era","javascript.builtins.Temporal.ZonedDateTime.eraYear","javascript.builtins.Temporal.ZonedDateTime.from","javascript.builtins.Temporal.ZonedDateTime.getISOFields","javascript.builtins.Temporal.ZonedDateTime.hour","javascript.builtins.Temporal.ZonedDateTime.hoursInDay","javascript.builtins.Temporal.ZonedDateTime.inLeapYear","javascript.builtins.Temporal.ZonedDateTime.microsecond","javascript.builtins.Temporal.ZonedDateTime.millisecond","javascript.builtins.Temporal.ZonedDateTime.minute","javascript.builtins.Temporal.ZonedDateTime.month","javascript.builtins.Temporal.ZonedDateTime.monthCode","javascript.builtins.Temporal.ZonedDateTime.monthsInYear","javascript.builtins.Temporal.ZonedDateTime.nanosecond","javascript.builtins.Temporal.ZonedDateTime.offset","javascript.builtins.Temporal.ZonedDateTime.offsetNanoseconds","javascript.builtins.Temporal.ZonedDateTime.round","javascript.builtins.Temporal.ZonedDateTime.second","javascript.builtins.Temporal.ZonedDateTime.since","javascript.builtins.Temporal.ZonedDateTime.startOfDay","javascript.builtins.Temporal.ZonedDateTime.subtract","javascript.builtins.Temporal.ZonedDateTime.timeZone","javascript.builtins.Temporal.ZonedDateTime.toInstant","javascript.builtins.Temporal.ZonedDateTime.toJSON","javascript.builtins.Temporal.ZonedDateTime.toLocaleString","javascript.builtins.Temporal.ZonedDateTime.toPlainDate","javascript.builtins.Temporal.ZonedDateTime.toPlainDateTime","javascript.builtins.Temporal.ZonedDateTime.toPlainMonthDay","javascript.builtins.Temporal.ZonedDateTime.toPlainTime","javascript.builtins.Temporal.ZonedDateTime.toPlainYearMonth","javascript.builtins.Temporal.ZonedDateTime.toString","javascript.builtins.Temporal.ZonedDateTime.until","javascript.builtins.Temporal.ZonedDateTime.valueOf","javascript.builtins.Temporal.ZonedDateTime.weekOfYear","javascript.builtins.Temporal.ZonedDateTime.with","javascript.builtins.Temporal.ZonedDateTime.withCalendar","javascript.builtins.Temporal.ZonedDateTime.withPlainDate","javascript.builtins.Temporal.ZonedDateTime.withPlainTime","javascript.builtins.Temporal.ZonedDateTime.withTimeZone","javascript.builtins.Temporal.ZonedDateTime.year"],"description":"The Temporal API allows you to work with dates, times, time zones, and durations. It is more powerful than the Date API.","description_html":"The <code>Temporal</code> API allows you to work with dates, times, time zones, and durations. It is more powerful than the <code>Date</code> API.","group":"javascript","name":"Temporal","spec":"https://tc39.es/proposal-temporal/","status":{"baseline":false,"support":{}}},"text-indent":{"caniuse":"css-text-indent","compat_features":["css.properties.text-indent"],"description":"The text-indent CSS property sets the size of the empty space (indentation) at the beginning of lines in a text.","description_html":"The <code>text-indent</code> CSS property sets the size of the empty space (indentation) at the beginning of lines in a text.","name":"text-indent","spec":"https://drafts.csswg.org/css-text-3/#text-indent-property","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"text-spacing-trim":{"compat_features":["css.properties.text-spacing-trim"],"description":"The text-spacing-trim CSS property controls spacing around CJK characters, avoiding excessive whitespace when using full-width punctuation characters.","description_html":"The <code>text-spacing-trim</code> CSS property controls spacing around CJK characters, avoiding excessive whitespace when using full-width punctuation characters.","name":"text-spacing-trim","spec":"https://drafts.csswg.org/css-text-4/#text-spacing-trim-property","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"text-tracks":{"compat_features":["api.HTMLMediaElement.addTextTrack","api.HTMLTrackElement","api.HTMLTrackElement.cuechange_event","api.HTMLTrackElement.default","api.HTMLTrackElement.kind","api.HTMLTrackElement.label","api.HTMLTrackElement.readyState","api.HTMLTrackElement.src","api.HTMLTrackElement.srclang","api.HTMLTrackElement.track","api.TextTrack","api.TextTrack.activeCues","api.TextTrack.addCue","api.TextTrack.cuechange_event","api.TextTrack.cues","api.TextTrack.id","api.TextTrack.inBandMetadataTrackDispatchType","api.TextTrack.kind","api.TextTrack.label","api.TextTrack.language","api.TextTrack.mode","api.TextTrack.removeCue","api.TextTrackCue","api.TextTrackCue.endTime","api.TextTrackCue.enter_event","api.TextTrackCue.exit_event","api.TextTrackCue.id","api.TextTrackCue.pauseOnExit","api.TextTrackCue.startTime","api.TextTrackCue.track","api.TextTrackCueList","api.TextTrackCueList.getCueById","api.TextTrackCueList.length","api.TextTrackList","api.TextTrackList.addtrack_event","api.TextTrackList.change_event","api.TextTrackList.getTrackById","api.TextTrackList.length","api.TextTrackList.removetrack_event","html.elements.track","html.elements.track.default","html.elements.track.kind","html.elements.track.label","html.elements.track.src","html.elements.track.srclang"],"description":"The <track> element is used as a child of the media elements that lets you specify a timed text track to be displayed in parallel with the media element.","description_html":"The <code>&#x3C;track></code> element is used as a child of the media elements that lets you specify a timed text track to be displayed in parallel with the media element.","group":["media-elements","html-elements"],"name":"Text tracks","spec":"https://html.spec.whatwg.org/multipage/media.html#timed-text-tracks","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"23","chrome_android":"25","edge":"12","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"6"}}},"text-wrap-balance":{"compat_features":["css.properties.text-wrap.balance"],"description":"The text-wrap: balance CSS declaration balances the length of each line when text is broken into multiple lines. Also known as headline balancing.","description_html":"The <code>text-wrap: balance</code> CSS declaration balances the length of each line when text is broken into multiple lines. Also known as headline balancing.","name":"text-wrap: balance","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-style-balance","status":{"baseline":"low","baseline_low_date":"2024-05-13","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"121","firefox_android":"121","safari":"17.5","safari_ios":"17.5"}}},"text-wrap-nowrap":{"compat_features":["css.properties.text-wrap.nowrap","css.properties.text-wrap.wrap"],"description":"The text-wrap: nowrap CSS declaration prevents text breaking into multiple lines. Text that doesn't fit overflows instead.","description_html":"The <code>text-wrap: nowrap</code> CSS declaration prevents text breaking into multiple lines. Text that doesn't fit overflows instead.","name":"text-wrap: nowrap","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-mode-nowrap","status":{"baseline":"low","baseline_low_date":"2024-03-19","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"text-wrap-pretty":{"compat_features":["css.properties.text-wrap.pretty"],"description":"The text-wrap: pretty CSS declaration prioritizes better layout over speed when text is broken into multiple lines.","description_html":"The <code>text-wrap: pretty</code> CSS declaration prioritizes better layout over speed when text is broken into multiple lines.","name":"text-wrap: pretty","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-style-pretty","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"textarea":{"compat_features":["api.HTMLTextAreaElement","api.HTMLTextAreaElement.autocomplete","api.HTMLTextAreaElement.cols","api.HTMLTextAreaElement.defaultValue","api.HTMLTextAreaElement.disabled","api.HTMLTextAreaElement.form","api.HTMLTextAreaElement.labels","api.HTMLTextAreaElement.maxLength","api.HTMLTextAreaElement.minLength","api.HTMLTextAreaElement.name","api.HTMLTextAreaElement.placeholder","api.HTMLTextAreaElement.readOnly","api.HTMLTextAreaElement.required","api.HTMLTextAreaElement.rows","api.HTMLTextAreaElement.select","api.HTMLTextAreaElement.select_event","api.HTMLTextAreaElement.selectionDirection","api.HTMLTextAreaElement.selectionEnd","api.HTMLTextAreaElement.selectionStart","api.HTMLTextAreaElement.setRangeText","api.HTMLTextAreaElement.setSelectionRange","api.HTMLTextAreaElement.textLength","api.HTMLTextAreaElement.type","api.HTMLTextAreaElement.value","api.HTMLTextAreaElement.wrap","html.elements.textarea","html.elements.textarea.autocomplete","html.elements.textarea.cols","html.elements.textarea.disabled","html.elements.textarea.form","html.elements.textarea.maxlength","html.elements.textarea.minlength","html.elements.textarea.name","html.elements.textarea.placeholder","html.elements.textarea.placeholder.line_breaks","html.elements.textarea.readonly","html.elements.textarea.required","html.elements.textarea.rows","html.elements.textarea.spellcheck","html.elements.textarea.wrap","html.elements.textarea.wrap.hard"],"description":"The <textarea> element represents an editing control that allows users to enter multi-line, free-form, plain text.","description_html":"The <code>&#x3C;textarea></code> element represents an editing control that allows users to enter multi-line, free-form, plain text.","group":["forms","html-elements"],"name":"<textarea>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3"}}},"time":{"compat_features":["api.HTMLTimeElement","api.HTMLTimeElement.dateTime","html.elements.time","html.elements.time.datetime"],"description":"The <time> HTML element represents a time, such as a calendar date, clock time, or duration. It may include the datetime attribute to translate dates into machine-readable format.","description_html":"The <code>&#x3C;time></code> HTML element represents a time, such as a calendar date, clock time, or duration. It may include the <code>datetime</code> attribute to translate dates into machine-readable format.","group":"html-elements","name":"<time>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element","status":{"baseline":"high","baseline_high_date":"2020-04-24","baseline_low_date":"2017-10-24","support":{"chrome":"62","chrome_android":"62","edge":"14","firefox":"22","firefox_android":"22","safari":"10","safari_ios":"10"}}},"title":{"compat_features":["api.HTMLTitleElement","api.HTMLTitleElement.text","html.elements.title"],"description":"The <title> element sets the title of the document and exposes it to users via the UI of the browser or app they're using and through assistive technology.","description_html":"The <code>&#x3C;title></code> element sets the title of the document and exposes it to users via the UI of the browser or app they're using and through assistive technology.","group":"html-elements","name":"<title>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-title-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"transferable-arraybuffer":{"compat_features":["javascript.builtins.ArrayBuffer.detached","javascript.builtins.ArrayBuffer.transfer","javascript.builtins.ArrayBuffer.transferToFixedLength"],"description":"The transfer() and transferToFixedLength() methods of ArrayBuffer move a buffer from one context to another (for example, to a worker).","description_html":"The <code>transfer()</code> and <code>transferToFixedLength()</code> methods of <code>ArrayBuffer</code> move a buffer from one context to another (for example, to a worker).","name":"Transferable ArrayBuffer","spec":"https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"122","firefox_android":"122","safari":"17.4","safari_ios":"17.4"}}},"transforms2d":{"caniuse":"transforms2d","compat_features":["css.properties.transform","css.properties.transform-origin","css.types.transform-function","css.types.transform-function.matrix","css.types.transform-function.rotate","css.types.transform-function.scale","css.types.transform-function.scaleX","css.types.transform-function.scaleY","css.types.transform-function.skew","css.types.transform-function.skewX","css.types.transform-function.skewY","css.types.transform-function.translate","css.types.transform-function.translateX","css.types.transform-function.translateY"],"description":"The transform CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.","description_html":"The <code>transform</code> CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.","group":"transforms","name":"2D transforms","spec":"https://drafts.csswg.org/css-transforms-1/","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"16","firefox_android":"16","safari":"9","safari_ios":"9"}}},"transforms3d":{"caniuse":"transforms3d","compat_features":["css.properties.backface-visibility","css.properties.perspective","css.properties.perspective-origin","css.properties.perspective-origin.bottom","css.properties.perspective-origin.center","css.properties.perspective-origin.left","css.properties.perspective-origin.right","css.properties.perspective-origin.top","css.properties.perspective.none","css.properties.transform-style","css.properties.transform.3d","css.types.transform-function.matrix3d","css.types.transform-function.perspective","css.types.transform-function.rotate3d","css.types.transform-function.rotateX","css.types.transform-function.rotateY","css.types.transform-function.rotateZ","css.types.transform-function.scale3d","css.types.transform-function.scaleZ","css.types.transform-function.translate3d","css.types.transform-function.translateZ"],"description":"The transform CSS property and its 3D transform functions allow rotations and other transforms in three dimensions, including perspective transforms.","description_html":"The <code>transform</code> CSS property and its 3D transform functions allow rotations and other transforms in three dimensions, including perspective transforms.","group":"transforms","name":"3D transforms","spec":"https://drafts.csswg.org/css-transforms-2/","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"16","firefox_android":"16","safari":"15.4","safari_ios":"15.4"}}},"transition-behavior":{"compat_features":["css.properties.transition-behavior"],"description":"The transition-behavior: allow-discrete CSS declaration allows transitions for properties whose animation behavior is discrete. Such properties can't be interpolated and swap from their start value to the end value at 50%.","description_html":"The <code>transition-behavior: allow-discrete</code> CSS declaration allows transitions for properties whose animation behavior is discrete. Such properties can't be interpolated and swap from their start value to the end value at 50%.","name":"transition-behavior","spec":"https://drafts.csswg.org/css-transitions-2/#transition-behavior-property","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117","safari":"17.4","safari_ios":"17.4"}}},"translate":{"compat_features":["api.HTMLElement.translate","html.global_attributes.translate"],"description":"The translate HTML attribute marks whether an element's text should be translated.","description_html":"The <code>translate</code> HTML attribute marks whether an element's text should be translated.","name":"translate attribute","spec":"https://html.spec.whatwg.org/multipage/dom.html#attr-translate","status":{"baseline":"low","baseline_low_date":"2023-03-14","support":{"chrome":"19","chrome_android":"25","edge":"79","firefox":"111","firefox_android":"111","safari":"6","safari_ios":"6"}}},"trig-functions":{"compat_features":["css.types.acos","css.types.asin","css.types.atan","css.types.atan2","css.types.cos","css.types.sin","css.types.tan"],"description":"The sin(), cos(), tan(), asin(), acos(), atan(), and atan2() CSS functions compute various trigonometric functions.","description_html":"The <code>sin()</code>, <code>cos()</code>, <code>tan()</code>, <code>asin()</code>, <code>acos()</code>, <code>atan()</code>, and <code>atan2()</code> CSS functions compute various trigonometric functions.","name":"sin(), cos(), tan(), asin(), acos(), atan(), and atan2()","spec":"https://drafts.csswg.org/css-values-4/#trig-funcs","status":{"baseline":"low","baseline_low_date":"2023-03-13","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"108","firefox_android":"108","safari":"15.4","safari_ios":"15.4"}}},"trusted-types":{"caniuse":"trusted-types","compat_features":["api.TrustedHTML","api.TrustedHTML.toJSON","api.TrustedHTML.toString","api.TrustedScript","api.TrustedScript.toJSON","api.TrustedScript.toString","api.TrustedScriptURL","api.TrustedScriptURL.toJSON","api.TrustedScriptURL.toString","api.TrustedTypePolicy","api.TrustedTypePolicy.createHTML","api.TrustedTypePolicy.createScript","api.TrustedTypePolicy.createScriptURL","api.TrustedTypePolicy.name","api.TrustedTypePolicyFactory","api.TrustedTypePolicyFactory.createPolicy","api.TrustedTypePolicyFactory.defaultPolicy","api.TrustedTypePolicyFactory.emptyHTML","api.TrustedTypePolicyFactory.emptyScript","api.TrustedTypePolicyFactory.getAttributeType","api.TrustedTypePolicyFactory.getPropertyType","api.TrustedTypePolicyFactory.isHTML","api.TrustedTypePolicyFactory.isScript","api.TrustedTypePolicyFactory.isScriptURL","api.trustedTypes","http.headers.Content-Security-Policy.require-trusted-types-for","http.headers.Content-Security-Policy.trusted-types"],"description":"Trusted types allow you to lock down insecure parts of the DOM API and prevent client-side cross-site scripting (XSS) attacks.","description_html":"Trusted types allow you to lock down insecure parts of the DOM API and prevent client-side cross-site scripting (XSS) attacks.","name":"Trusted types","spec":"https://w3c.github.io/trusted-types/dist/spec/","status":{"baseline":false,"support":{"chrome":"83","chrome_android":"83","edge":"83"}}},"two-value-display":{"compat_features":["css.properties.display.multi-keyword_values"],"description":"The display CSS property accepts multiple keyword values, such as inline flex or block flow, to explicitly set an element's inner and outer layout mode. Also known as 2-value, multi-keyword, or multiple value syntax.","description_html":"The <code>display</code> CSS property accepts multiple keyword values, such as <code>inline flex</code> or <code>block flow</code>, to explicitly set an element's inner and outer layout mode. Also known as 2-value, multi-keyword, or multiple value syntax.","name":"Two-value display property","spec":"https://drafts.csswg.org/css-display-3/#the-display-properties","status":{"baseline":"low","baseline_low_date":"2023-07-21","support":{"chrome":"115","chrome_android":"115","edge":"115","firefox":"70","firefox_android":"79","safari":"15","safari_ios":"15"}}},"typed-array-iteration-methods":{"compat_features":["javascript.builtins.TypedArray.every","javascript.builtins.TypedArray.filter","javascript.builtins.TypedArray.forEach","javascript.builtins.TypedArray.indexOf","javascript.builtins.TypedArray.lastIndexOf","javascript.builtins.TypedArray.map","javascript.builtins.TypedArray.reduce","javascript.builtins.TypedArray.reduceRight","javascript.builtins.TypedArray.some"],"description":"Typed array iteration methods","description_html":"Typed array iteration methods","group":"typed-arrays","name":"Typed array iteration methods","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.every","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.filter","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.foreach","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.indexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.lastindexof","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.map","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reduce","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reduceright","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.some"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"38","firefox_android":"38","safari":"10","safari_ios":"10"}}},"typed-array-iterators":{"compat_features":["javascript.builtins.TypedArray.@@iterator","javascript.builtins.TypedArray.entries","javascript.builtins.TypedArray.keys","javascript.builtins.TypedArray.values"],"description":"Typed arrays are iterable with the for…of statement and enumerable with the methods entries(), keys(), and values().","description_html":"Typed arrays are iterable with the <code>for…of</code> statement and enumerable with the methods <code>entries()</code>, <code>keys()</code>, and <code>values()</code>.","group":["iterators","typed-arrays"],"name":"Typed array iterators","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype-@@iterator","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.entries","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.keys","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.values"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"37","firefox_android":"37","safari":"10","safari_ios":"10"}}},"typed-arrays":{"caniuse":"typedarrays","compat_features":["javascript.builtins.Float32Array","javascript.builtins.Float32Array.Float32Array","javascript.builtins.Float32Array.Float32Array.constructor_without_parameters","javascript.builtins.Float32Array.Float32Array.iterable_allowed","javascript.builtins.Float64Array","javascript.builtins.Float64Array.Float64Array","javascript.builtins.Float64Array.Float64Array.constructor_without_parameters","javascript.builtins.Float64Array.Float64Array.iterable_allowed","javascript.builtins.Int16Array","javascript.builtins.Int16Array.Int16Array","javascript.builtins.Int16Array.Int16Array.constructor_without_parameters","javascript.builtins.Int32Array","javascript.builtins.Int32Array.Int32Array","javascript.builtins.Int32Array.Int32Array.constructor_without_parameters","javascript.builtins.Int32Array.Int32Array.iterable_allowed","javascript.builtins.Int8Array","javascript.builtins.Int8Array.Int8Array","javascript.builtins.Int8Array.Int8Array.constructor_without_parameters","javascript.builtins.Int8Array.Int8Array.iterable_allowed","javascript.builtins.TypedArray","javascript.builtins.TypedArray.BYTES_PER_ELEMENT","javascript.builtins.TypedArray.buffer","javascript.builtins.TypedArray.byteLength","javascript.builtins.TypedArray.byteOffset","javascript.builtins.TypedArray.constructor_without_parameters","javascript.builtins.TypedArray.join","javascript.builtins.TypedArray.length","javascript.builtins.TypedArray.name","javascript.builtins.TypedArray.named_properties","javascript.builtins.TypedArray.reverse","javascript.builtins.TypedArray.set","javascript.builtins.TypedArray.slice","javascript.builtins.TypedArray.sort","javascript.builtins.TypedArray.subarray","javascript.builtins.TypedArray.toLocaleString","javascript.builtins.TypedArray.toString","javascript.builtins.Uint16Array","javascript.builtins.Uint16Array.Uint16Array","javascript.builtins.Uint16Array.Uint16Array.constructor_without_parameters","javascript.builtins.Uint16Array.Uint16Array.iterable_allowed","javascript.builtins.Uint32Array","javascript.builtins.Uint32Array.Uint32Array","javascript.builtins.Uint32Array.Uint32Array.constructor_without_parameters","javascript.builtins.Uint32Array.Uint32Array.iterable_allowed","javascript.builtins.Uint8Array","javascript.builtins.Uint8Array.Uint8Array","javascript.builtins.Uint8Array.Uint8Array.constructor_without_parameters","javascript.builtins.Uint8Array.Uint8Array.iterable_allowed","javascript.builtins.Uint8ClampedArray","javascript.builtins.Uint8ClampedArray.Uint8ClampedArray","javascript.builtins.Uint8ClampedArray.Uint8ClampedArray.iterable_allowed"],"description":"Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.","description_html":"Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.","group":"typed-arrays","name":"Typed arrays (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#table-49","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-constructors","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-objects","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray.bytes_per_element","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.buffer","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.bytelength","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.byteoffset","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.join","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.length","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-properties-of-the-typedarray-constructors","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reverse","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.set","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.slice","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.sort","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.subarray","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tolocalestring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tostring"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"4.2"}}},"u":{"compat_features":["html.elements.u"],"description":"The <u> HTML element makes non-textual annotations, styling text as underlined by default.","description_html":"The <code>&#x3C;u></code> HTML element makes non-textual annotations, styling text as underlined by default.","group":"html-elements","name":"<u>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-u-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"url-canparse":{"compat_features":["api.URL.canParse_static"],"description":"The URL.canParse() static method checks whether a URL can be parsed into a valid URL object. It's an alternative to calling new URL() in a try…catch statement.","description_html":"The <code>URL.canParse()</code> static method checks whether a URL can be parsed into a valid <code>URL</code> object. It's an alternative to calling <code>new URL()</code> in a <code>try…catch</code> statement.","name":"URL.canParse()","spec":"https://url.spec.whatwg.org/#dom-url-canparse","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"115","firefox_android":"115","safari":"17","safari_ios":"17"}}},"urlpattern":{"compat_features":["api.URLPattern","api.URLPattern.URLPattern","api.URLPattern.URLPattern.ignoreCase_option","api.URLPattern.exec","api.URLPattern.hasRegExpGroups","api.URLPattern.hash","api.URLPattern.hostname","api.URLPattern.password","api.URLPattern.pathname","api.URLPattern.port","api.URLPattern.protocol","api.URLPattern.search","api.URLPattern.test","api.URLPattern.username"],"description":"The URLPattern API creates patterns that can be matched against URLs or URL components.","description_html":"The <code>URLPattern</code> API creates patterns that can be matched against URLs or URL components.","name":"URLPattern","spec":"https://urlpattern.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"95","chrome_android":"95","edge":"95"}}},"user-activation":{"compat_features":["api.Navigator.userActivation","api.UserActivation","api.UserActivation.hasBeenActive","api.UserActivation.isActive"],"description":"The navigator.userActivation API reveals whether the user has interacted with the page through an \"activation\" gesture such as a click, tap, or key press. User activation gated APIs (such as the fullscreen API) fail without user interaction, and this API allows you to predict such a failure.","description_html":"The <code>navigator.userActivation</code> API reveals whether the user has interacted with the page through an \"activation\" gesture such as a click, tap, or key press. User activation gated APIs (such as the fullscreen API) fail without user interaction, and this API allows you to predict such a failure.","name":"User activation","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface","status":{"baseline":"low","baseline_low_date":"2023-11-21","support":{"chrome":"72","chrome_android":"72","edge":"79","firefox":"120","firefox_android":"120","safari":"16.4","safari_ios":"16.4"}}},"user-pseudos":{"compat_features":["css.selectors.user-invalid","css.selectors.user-valid"],"description":"The :user-valid and :user-invalid pseudo-classes match form controls that have been marked as valid or invalid based on their validation constraints.","description_html":"The <code>:user-valid</code> and <code>:user-invalid</code> pseudo-classes match form controls that have been marked as valid or invalid based on their validation constraints.","name":":user-valid and :user-invalid","spec":"https://drafts.csswg.org/selectors-4/#user-pseudos","status":{"baseline":"low","baseline_low_date":"2023-11-02","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"88","firefox_android":"88","safari":"16.5","safari_ios":"16.5"}}},"var":{"compat_features":["html.elements.var"],"description":"The <var> element represents the name of a variable in a mathematical expression or a programming context.","description_html":"The <code>&#x3C;var></code> element represents the name of a variable in a mathematical expression or a programming context.","group":"html-elements","name":"<var>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-var-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"video":{"caniuse":"video","compat_features":["api.HTMLMediaElement","api.HTMLMediaElement.abort_event","api.HTMLMediaElement.autoplay","api.HTMLMediaElement.buffered","api.HTMLMediaElement.canPlayType","api.HTMLMediaElement.canplay_event","api.HTMLMediaElement.canplaythrough_event","api.HTMLMediaElement.controls","api.HTMLMediaElement.crossOrigin","api.HTMLMediaElement.currentSrc","api.HTMLMediaElement.currentTime","api.HTMLMediaElement.defaultMuted","api.HTMLMediaElement.defaultPlaybackRate","api.HTMLMediaElement.duration","api.HTMLMediaElement.durationchange_event","api.HTMLMediaElement.emptied_event","api.HTMLMediaElement.ended","api.HTMLMediaElement.ended_event","api.HTMLMediaElement.error","api.HTMLMediaElement.error_event","api.HTMLMediaElement.load","api.HTMLMediaElement.loadeddata_event","api.HTMLMediaElement.loadedmetadata_event","api.HTMLMediaElement.loadstart_event","api.HTMLMediaElement.loop","api.HTMLMediaElement.muted","api.HTMLMediaElement.networkState","api.HTMLMediaElement.pause","api.HTMLMediaElement.pause_event","api.HTMLMediaElement.paused","api.HTMLMediaElement.play","api.HTMLMediaElement.play.returns_promise","api.HTMLMediaElement.play_event","api.HTMLMediaElement.playbackRate","api.HTMLMediaElement.played","api.HTMLMediaElement.playing_event","api.HTMLMediaElement.preload","api.HTMLMediaElement.progress_event","api.HTMLMediaElement.ratechange_event","api.HTMLMediaElement.readyState","api.HTMLMediaElement.seekable","api.HTMLMediaElement.seeked_event","api.HTMLMediaElement.seeking","api.HTMLMediaElement.seeking_event","api.HTMLMediaElement.src","api.HTMLMediaElement.stalled_event","api.HTMLMediaElement.suspend_event","api.HTMLMediaElement.timeupdate_event","api.HTMLMediaElement.volume","api.HTMLMediaElement.volumechange_event","api.HTMLMediaElement.waiting_event","api.HTMLVideoElement","api.HTMLVideoElement.height","api.HTMLVideoElement.poster","api.HTMLVideoElement.resize_event","api.HTMLVideoElement.videoHeight","api.HTMLVideoElement.videoWidth","api.HTMLVideoElement.width","html.elements.video","html.elements.video.autoplay","html.elements.video.controls","html.elements.video.crossorigin","html.elements.video.height","html.elements.video.loop","html.elements.video.muted","html.elements.video.poster","html.elements.video.preload","html.elements.video.src","html.elements.video.width"],"description":"The <video> element plays videos or movies, optionally with controls provided by the browser.","description_html":"The <code>&#x3C;video></code> element plays videos or movies, optionally with controls provided by the browser.","group":["media-elements","html-elements"],"name":"<video>","spec":"https://html.spec.whatwg.org/multipage/media.html#video","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"3"}}},"view-transitions":{"caniuse":"view-transitions","compat_features":["api.Document.startViewTransition","api.ViewTransition","api.ViewTransition.finished","api.ViewTransition.ready","api.ViewTransition.skipTransition","api.ViewTransition.updateCallbackDone","css.properties.view-transition-name","css.selectors.view-transition","css.selectors.view-transition-group","css.selectors.view-transition-image-pair","css.selectors.view-transition-new","css.selectors.view-transition-old"],"description":"View transitions allow you to create animated visual transitions between different states of a document, or between different documents.","description_html":"View transitions allow you to create animated visual transitions between different states of a document, or between different documents.","name":"View transitions","spec":"https://drafts.csswg.org/css-view-transitions-1/","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111"}}},"viewport-unit-variants":{"caniuse":"viewport-unit-variants","compat_features":["css.types.length.vb","css.types.length.vi","css.types.length.viewport_percentage_units_dynamic","css.types.length.viewport_percentage_units_large","css.types.length.viewport_percentage_units_small"],"description":"The sv*, lv*, and dv* CSS viewport units are relative to the smallest, largest, and current (dynamic) viewport size. They are used to size elements in relation to the viewport's dimensions.","description_html":"The <code>sv*</code>, <code>lv*</code>, and <code>dv*</code> CSS viewport units are relative to the smallest, largest, and current (dynamic) viewport size. They are used to size elements in relation to the viewport's dimensions.","name":"Small, large, and dynamic viewport units","spec":["https://drafts.csswg.org/css-values-4/#viewport-variants","https://drafts.csswg.org/css-values-4/#viewport-relative-lengths"],"status":{"baseline":"low","baseline_low_date":"2022-12-05","support":{"chrome":"108","chrome_android":"108","edge":"108","firefox":"101","firefox_android":"101","safari":"15.4","safari_ios":"15.4"}}},"viewport-units":{"caniuse":"viewport-units","compat_features":["css.types.length.vh","css.types.length.vmax","css.types.length.vmin","css.types.length.vw"],"description":"The vw, vh, vmin, and vmax CSS viewport units are relative to the size of the viewport, and are used to size elements in relation to the viewport's dimensions.","description_html":"The <code>vw</code>, <code>vh</code>, <code>vmin</code>, and <code>vmax</code> CSS viewport units are relative to the size of the viewport, and are used to size elements in relation to the viewport's dimensions.","name":"Viewport units","spec":"https://drafts.csswg.org/css-values-4/#viewport-relative-lengths","status":{"baseline":"high","baseline_high_date":"2020-04-17","baseline_low_date":"2017-10-17","support":{"chrome":"26","chrome_android":"26","edge":"16","firefox":"19","firefox_android":"19","safari":"7","safari_ios":"7"}}},"visual-viewport":{"compat_features":["api.VisualViewport","api.VisualViewport.height","api.VisualViewport.offsetLeft","api.VisualViewport.offsetTop","api.VisualViewport.pageLeft","api.VisualViewport.pageTop","api.VisualViewport.scale","api.VisualViewport.width","api.Window.visualViewport"],"description":"The visualViewport API provides a way to query and modify the user-visible viewport of a web page.","description_html":"The <code>visualViewport</code> API provides a way to query and modify the user-visible viewport of a web page.","name":"Visual viewport API","spec":"https://drafts.csswg.org/cssom-view-1/#visualViewport","status":{"baseline":"high","baseline_high_date":"2024-02-10","baseline_low_date":"2021-08-10","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"91","firefox_android":"68","safari":"13","safari_ios":"13"}}},"wasm-simd":{"caniuse":"wasm-simd","compat_features":["webassembly.fixed-width-SIMD"],"description":"The 128-bit SIMD (Single Instruction Multiple Data) extension to WebAssembly performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.","description_html":"The 128-bit SIMD (Single Instruction Multiple Data) extension to WebAssembly performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.","name":"WebAssembly SIMD","spec":"https://webassembly.github.io/spec/core/bikeshed/#vector-instructions","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"91","chrome_android":"91","edge":"91","firefox":"89","firefox_android":"89","safari":"16.4","safari_ios":"16.4"}}},"wbr":{"caniuse":"wbr-element","compat_features":["html.elements.wbr"],"description":"The <wbr> HTML element represents a word break opportunity, to explicitly mark a place within a word where a line might be broken.","description_html":"The <code>&#x3C;wbr></code> HTML element represents a word break opportunity, to explicitly mark a place within a word where a line might be broken.","group":"html-elements","name":"<wbr>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-wbr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"web-animations":{"caniuse":"web-animation","compat_features":["api.Animation","api.Animation.Animation","api.Animation.cancel","api.Animation.cancel_event","api.Animation.commitStyles","api.Animation.currentTime","api.Animation.effect","api.Animation.finish","api.Animation.finish_event","api.Animation.finished","api.Animation.id","api.Animation.pause","api.Animation.pending","api.Animation.persist","api.Animation.play","api.Animation.playState","api.Animation.playbackRate","api.Animation.ready","api.Animation.remove_event","api.Animation.replaceState","api.Animation.reverse","api.Animation.startTime","api.Animation.timeline","api.Animation.updatePlaybackRate","api.AnimationEffect","api.AnimationEffect.getComputedTiming","api.AnimationEffect.getTiming","api.AnimationEffect.updateTiming","api.AnimationPlaybackEvent","api.AnimationPlaybackEvent.AnimationPlaybackEvent","api.AnimationPlaybackEvent.currentTime","api.AnimationPlaybackEvent.timelineTime","api.AnimationTimeline","api.AnimationTimeline.currentTime","api.Document.getAnimations","api.Document.timeline","api.DocumentTimeline","api.DocumentTimeline.DocumentTimeline","api.Element.animate","api.KeyframeEffect","api.KeyframeEffect.KeyframeEffect","api.KeyframeEffect.composite","api.KeyframeEffect.getKeyframes","api.KeyframeEffect.iterationComposite","api.KeyframeEffect.pseudoElement","api.KeyframeEffect.setKeyframes","api.KeyframeEffect.target"],"description":"The web animations API allows you to animate and synchronize the animations of DOM elements.","description_html":"The web animations API allows you to animate and synchronize the animations of DOM elements.","name":"Web animations","spec":"https://drafts.csswg.org/web-animations-1/","status":{"baseline":"high","baseline_high_date":"2022-09-24","baseline_low_date":"2020-03-24","support":{"chrome":"36","chrome_android":"36","edge":"79","firefox":"48","firefox_android":"48","safari":"13.1","safari_ios":"13.4"}}},"web-audio":{"caniuse":"audio-api","compat_features":["api.AnalyserNode","api.AnalyserNode.AnalyserNode","api.AnalyserNode.fftSize","api.AnalyserNode.frequencyBinCount","api.AnalyserNode.getByteFrequencyData","api.AnalyserNode.getByteTimeDomainData","api.AnalyserNode.getFloatFrequencyData","api.AnalyserNode.getFloatTimeDomainData","api.AnalyserNode.maxDecibels","api.AnalyserNode.minDecibels","api.AnalyserNode.smoothingTimeConstant","api.AudioBuffer","api.AudioBuffer.AudioBuffer","api.AudioBuffer.copyFromChannel","api.AudioBuffer.copyToChannel","api.AudioBuffer.duration","api.AudioBuffer.getChannelData","api.AudioBuffer.length","api.AudioBuffer.numberOfChannels","api.AudioBuffer.sampleRate","api.AudioBufferSourceNode","api.AudioBufferSourceNode.AudioBufferSourceNode","api.AudioBufferSourceNode.buffer","api.AudioBufferSourceNode.detune","api.AudioBufferSourceNode.loop","api.AudioBufferSourceNode.loopEnd","api.AudioBufferSourceNode.loopStart","api.AudioBufferSourceNode.playbackRate","api.AudioBufferSourceNode.start","api.AudioContext","api.AudioContext.AudioContext","api.AudioContext.baseLatency","api.AudioContext.close","api.AudioContext.createMediaElementSource","api.AudioContext.createMediaStreamDestination","api.AudioContext.createMediaStreamSource","api.AudioContext.createMediaStreamTrackSource","api.AudioContext.getOutputTimestamp","api.AudioContext.outputLatency","api.AudioContext.resume","api.AudioContext.suspend","api.AudioDestinationNode","api.AudioDestinationNode.maxChannelCount","api.AudioListener","api.AudioListener.forwardX","api.AudioListener.forwardY","api.AudioListener.forwardZ","api.AudioListener.positionX","api.AudioListener.positionY","api.AudioListener.positionZ","api.AudioListener.upX","api.AudioListener.upY","api.AudioListener.upZ","api.AudioNode","api.AudioNode.channelCount","api.AudioNode.channelCountMode","api.AudioNode.channelInterpretation","api.AudioNode.connect","api.AudioNode.context","api.AudioNode.disconnect","api.AudioNode.numberOfInputs","api.AudioNode.numberOfOutputs","api.AudioParam","api.AudioParam.automationRate","api.AudioParam.cancelAndHoldAtTime","api.AudioParam.cancelScheduledValues","api.AudioParam.defaultValue","api.AudioParam.exponentialRampToValueAtTime","api.AudioParam.linearRampToValueAtTime","api.AudioParam.maxValue","api.AudioParam.minValue","api.AudioParam.setTargetAtTime","api.AudioParam.setValueAtTime","api.AudioParam.setValueCurveAtTime","api.AudioParam.value","api.AudioParamMap","api.AudioScheduledSourceNode","api.AudioScheduledSourceNode.ended_event","api.AudioScheduledSourceNode.start","api.AudioScheduledSourceNode.stop","api.BaseAudioContext","api.BaseAudioContext.createAnalyser","api.BaseAudioContext.createBiquadFilter","api.BaseAudioContext.createBuffer","api.BaseAudioContext.createBufferSource","api.BaseAudioContext.createChannelMerger","api.BaseAudioContext.createChannelSplitter","api.BaseAudioContext.createConstantSource","api.BaseAudioContext.createConvolver","api.BaseAudioContext.createDelay","api.BaseAudioContext.createDynamicsCompressor","api.BaseAudioContext.createGain","api.BaseAudioContext.createIIRFilter","api.BaseAudioContext.createOscillator","api.BaseAudioContext.createPanner","api.BaseAudioContext.createPeriodicWave","api.BaseAudioContext.createStereoPanner","api.BaseAudioContext.createWaveShaper","api.BaseAudioContext.currentTime","api.BaseAudioContext.decodeAudioData","api.BaseAudioContext.destination","api.BaseAudioContext.listener","api.BaseAudioContext.sampleRate","api.BaseAudioContext.state","api.BaseAudioContext.statechange_event","api.BiquadFilterNode","api.BiquadFilterNode.BiquadFilterNode","api.BiquadFilterNode.Q","api.BiquadFilterNode.detune","api.BiquadFilterNode.frequency","api.BiquadFilterNode.gain","api.BiquadFilterNode.getFrequencyResponse","api.BiquadFilterNode.type","api.ChannelMergerNode","api.ChannelMergerNode.ChannelMergerNode","api.ChannelSplitterNode","api.ChannelSplitterNode.ChannelSplitterNode","api.ConstantSourceNode","api.ConstantSourceNode.ConstantSourceNode","api.ConstantSourceNode.offset","api.ConvolverNode","api.ConvolverNode.ConvolverNode","api.ConvolverNode.buffer","api.ConvolverNode.normalize","api.DelayNode","api.DelayNode.DelayNode","api.DelayNode.delayTime","api.DynamicsCompressorNode","api.DynamicsCompressorNode.DynamicsCompressorNode","api.DynamicsCompressorNode.attack","api.DynamicsCompressorNode.knee","api.DynamicsCompressorNode.ratio","api.DynamicsCompressorNode.reduction","api.DynamicsCompressorNode.release","api.DynamicsCompressorNode.threshold","api.GainNode","api.GainNode.GainNode","api.GainNode.gain","api.IIRFilterNode","api.IIRFilterNode.IIRFilterNode","api.IIRFilterNode.getFrequencyResponse","api.MediaElementAudioSourceNode","api.MediaElementAudioSourceNode.MediaElementAudioSourceNode","api.MediaElementAudioSourceNode.mediaElement","api.MediaStreamAudioDestinationNode","api.MediaStreamAudioDestinationNode.MediaStreamAudioDestinationNode","api.MediaStreamAudioDestinationNode.stream","api.MediaStreamAudioSourceNode","api.MediaStreamAudioSourceNode.MediaStreamAudioSourceNode","api.MediaStreamAudioSourceNode.mediaStream","api.MediaStreamTrackAudioSourceNode","api.MediaStreamTrackAudioSourceNode.MediaStreamTrackAudioSourceNode","api.OscillatorNode","api.OscillatorNode.OscillatorNode","api.OscillatorNode.detune","api.OscillatorNode.frequency","api.OscillatorNode.setPeriodicWave","api.OscillatorNode.type","api.PannerNode","api.PannerNode.PannerNode","api.PannerNode.coneInnerAngle","api.PannerNode.coneOuterAngle","api.PannerNode.coneOuterGain","api.PannerNode.distanceModel","api.PannerNode.maxDistance","api.PannerNode.orientationX","api.PannerNode.orientationY","api.PannerNode.orientationZ","api.PannerNode.panningModel","api.PannerNode.positionX","api.PannerNode.positionY","api.PannerNode.positionZ","api.PannerNode.refDistance","api.PannerNode.rolloffFactor","api.PeriodicWave","api.PeriodicWave.PeriodicWave","api.StereoPannerNode","api.StereoPannerNode.StereoPannerNode","api.StereoPannerNode.pan","api.WaveShaperNode","api.WaveShaperNode.WaveShaperNode","api.WaveShaperNode.curve","api.WaveShaperNode.oversample"],"description":"The Web Audio API creates graphs of audio nodes that handle sound inputs, synthesize sounds, apply effects, create visualizations, and output to audio devices.","description_html":"The Web Audio API creates graphs of audio nodes that handle sound inputs, synthesize sounds, apply effects, create visualizations, and output to audio devices.","group":"web-audio","name":"Web Audio","spec":"https://webaudio.github.io/web-audio-api/","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"35","chrome_android":"35","edge":"12","firefox":"25","firefox_android":"25","safari":"14.1","safari_ios":"14.5"}}},"web-bluetooth":{"caniuse":"web-bluetooth","compat_features":["api.Bluetooth","api.Bluetooth.getAvailability","api.Bluetooth.getDevices","api.Bluetooth.requestDevice","api.BluetoothCharacteristicProperties","api.BluetoothCharacteristicProperties.authenticatedSignedWrites","api.BluetoothCharacteristicProperties.broadcast","api.BluetoothCharacteristicProperties.indicate","api.BluetoothCharacteristicProperties.notify","api.BluetoothCharacteristicProperties.read","api.BluetoothCharacteristicProperties.reliableWrite","api.BluetoothCharacteristicProperties.writableAuxiliaries","api.BluetoothCharacteristicProperties.write","api.BluetoothCharacteristicProperties.writeWithoutResponse","api.BluetoothDevice","api.BluetoothDevice.gatt","api.BluetoothDevice.gattserverdisconnected_event","api.BluetoothDevice.id","api.BluetoothDevice.name","api.BluetoothRemoteGATTCharacteristic","api.BluetoothRemoteGATTCharacteristic.characteristicvaluechanged_event","api.BluetoothRemoteGATTCharacteristic.getDescriptor","api.BluetoothRemoteGATTCharacteristic.getDescriptors","api.BluetoothRemoteGATTCharacteristic.properties","api.BluetoothRemoteGATTCharacteristic.readValue","api.BluetoothRemoteGATTCharacteristic.service","api.BluetoothRemoteGATTCharacteristic.startNotifications","api.BluetoothRemoteGATTCharacteristic.stopNotifications","api.BluetoothRemoteGATTCharacteristic.uuid","api.BluetoothRemoteGATTCharacteristic.value","api.BluetoothRemoteGATTCharacteristic.writeValueWithResponse","api.BluetoothRemoteGATTCharacteristic.writeValueWithoutResponse","api.BluetoothRemoteGATTDescriptor","api.BluetoothRemoteGATTDescriptor.characteristic","api.BluetoothRemoteGATTDescriptor.readValue","api.BluetoothRemoteGATTDescriptor.uuid","api.BluetoothRemoteGATTDescriptor.value","api.BluetoothRemoteGATTDescriptor.writeValue","api.BluetoothRemoteGATTServer","api.BluetoothRemoteGATTServer.connect","api.BluetoothRemoteGATTServer.connected","api.BluetoothRemoteGATTServer.device","api.BluetoothRemoteGATTServer.disconnect","api.BluetoothRemoteGATTServer.getPrimaryService","api.BluetoothRemoteGATTServer.getPrimaryServices","api.BluetoothRemoteGATTService","api.BluetoothRemoteGATTService.device","api.BluetoothRemoteGATTService.getCharacteristic","api.BluetoothRemoteGATTService.getCharacteristics","api.BluetoothRemoteGATTService.isPrimary","api.BluetoothRemoteGATTService.uuid","api.BluetoothUUID","api.BluetoothUUID.canonicalUUID_static","api.BluetoothUUID.getCharacteristic_static","api.BluetoothUUID.getDescriptor_static","api.BluetoothUUID.getService_static","api.Navigator.bluetooth"],"description":"The Web Bluetooth API enables selecting and communicating with nearby Bluetooth devices.","description_html":"The Web Bluetooth API enables selecting and communicating with nearby Bluetooth devices.","name":"Web Bluetooth","spec":"https://webbluetoothcg.github.io/web-bluetooth/","status":{"baseline":false,"support":{"chrome":"70","chrome_android":"56","edge":"79"}}},"web-locks":{"compat_features":["api.Lock","api.Lock.mode","api.Lock.name","api.LockManager","api.LockManager.query","api.LockManager.request","api.Navigator.locks","api.WorkerNavigator.locks"],"description":"The navigator.locks API coordinates work with shared resources through mutually exclusive ownership of a resource's name. Also known as web locks.","description_html":"The <code>navigator.locks</code> API coordinates work with shared resources through mutually exclusive ownership of a resource's name. Also known as web locks.","name":"Locks","spec":"https://w3c.github.io/web-locks/","status":{"baseline":"low","baseline_low_date":"2022-03-14","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"96","firefox_android":"96","safari":"15.4","safari_ios":"15.4"}}},"web-midi":{"caniuse":"midi","compat_features":["api.MIDIAccess","api.MIDIAccess.inputs","api.MIDIAccess.outputs","api.MIDIAccess.statechange_event","api.MIDIAccess.sysexEnabled","api.MIDIConnectionEvent","api.MIDIConnectionEvent.MIDIConnectionEvent","api.MIDIConnectionEvent.port","api.MIDIInput","api.MIDIInput.midimessage_event","api.MIDIInputMap","api.MIDIInputMap.@@iterator","api.MIDIInputMap.entries","api.MIDIInputMap.forEach","api.MIDIInputMap.get","api.MIDIInputMap.has","api.MIDIInputMap.keys","api.MIDIInputMap.size","api.MIDIInputMap.values","api.MIDIMessageEvent","api.MIDIMessageEvent.MIDIMessageEvent","api.MIDIMessageEvent.data","api.MIDIOutput","api.MIDIOutput.send","api.MIDIOutputMap","api.MIDIOutputMap.@@iterator","api.MIDIOutputMap.entries","api.MIDIOutputMap.forEach","api.MIDIOutputMap.get","api.MIDIOutputMap.has","api.MIDIOutputMap.keys","api.MIDIOutputMap.size","api.MIDIOutputMap.values","api.MIDIPort","api.MIDIPort.close","api.MIDIPort.connection","api.MIDIPort.id","api.MIDIPort.manufacturer","api.MIDIPort.name","api.MIDIPort.open","api.MIDIPort.state","api.MIDIPort.statechange_event","api.MIDIPort.type","api.MIDIPort.version","api.Navigator.requestMIDIAccess"],"description":"The Web MIDI API enables selecting MIDI input and output devices and sending and receiving MIDI messages.","description_html":"The Web MIDI API enables selecting MIDI input and output devices and sending and receiving MIDI messages.","name":"Web MIDI","spec":"https://webaudio.github.io/web-midi-api/","status":{"baseline":false,"support":{"chrome":"43","chrome_android":"43","edge":"79","firefox":"108"}}},"web-nfc":{"caniuse":"webnfc","compat_features":["api.NDEFMessage","api.NDEFMessage.NDEFMessage","api.NDEFMessage.records","api.NDEFMessage.secure_context_required","api.NDEFReader","api.NDEFReader.NDEFReader","api.NDEFReader.reading_event","api.NDEFReader.readingerror_event","api.NDEFReader.scan","api.NDEFReader.secure_context_required","api.NDEFReader.write","api.NDEFReadingEvent","api.NDEFReadingEvent.NDEFReadingEvent","api.NDEFReadingEvent.message","api.NDEFReadingEvent.secure_context_required","api.NDEFReadingEvent.serialNumber","api.NDEFRecord","api.NDEFRecord.NDEFRecord","api.NDEFRecord.data","api.NDEFRecord.encoding","api.NDEFRecord.id","api.NDEFRecord.lang","api.NDEFRecord.mediaType","api.NDEFRecord.recordType","api.NDEFRecord.secure_context_required","api.NDEFRecord.toRecords"],"description":"The NDEFReader API reads and writes messages to near-field communication (NFC) tags.","description_html":"The <code>NDEFReader</code> API reads and writes messages to near-field communication (NFC) tags.","name":"Web NFC","spec":"https://w3c.github.io/web-nfc/","status":{"baseline":false,"support":{"chrome_android":"89"}}},"webauthn-public-key-easy":{"compat_features":["api.AuthenticatorAttestationResponse.getAuthenticatorData","api.AuthenticatorAttestationResponse.getPublicKey","api.AuthenticatorAttestationResponse.getPublicKeyAlgorithm"],"description":"The getAuthenticatorData(), getPublicKey(), and getPublicKeyAlgorithm() methods of AuthenticatorAttestationResponse access credential data inside attestationObject without the need to parse it.","description_html":"The <code>getAuthenticatorData()</code>, <code>getPublicKey()</code>, and <code>getPublicKeyAlgorithm()</code> methods of <code>AuthenticatorAttestationResponse</code> access credential data inside <code>attestationObject</code> without the need to parse it.","name":"Web authentication easy public key access","spec":"https://w3c.github.io/webauthn/#sctn-public-key-easy","status":{"baseline":"low","baseline_low_date":"2023-10-24","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"119","firefox_android":"119","safari":"16","safari_ios":"16"}}},"webcodecs":{"caniuse":"webcodecs","compat_features":["api.AudioData","api.AudioData.AudioData","api.AudioData.allocationSize","api.AudioData.clone","api.AudioData.close","api.AudioData.copyTo","api.AudioData.duration","api.AudioData.format","api.AudioData.numberOfChannels","api.AudioData.numberOfFrames","api.AudioData.sampleRate","api.AudioData.timestamp","api.AudioDecoder","api.AudioDecoder.AudioDecoder","api.AudioDecoder.close","api.AudioDecoder.configure","api.AudioDecoder.decode","api.AudioDecoder.decodeQueueSize","api.AudioDecoder.dequeue_event","api.AudioDecoder.flush","api.AudioDecoder.isConfigSupported_static","api.AudioDecoder.reset","api.AudioDecoder.state","api.AudioEncoder","api.AudioEncoder.AudioEncoder","api.AudioEncoder.close","api.AudioEncoder.configure","api.AudioEncoder.configure.bitrateMode","api.AudioEncoder.configure.opus","api.AudioEncoder.configure.opus.opus_application","api.AudioEncoder.configure.opus.opus_signal","api.AudioEncoder.dequeue_event","api.AudioEncoder.encode","api.AudioEncoder.encodeQueueSize","api.AudioEncoder.flush","api.AudioEncoder.isConfigSupported_static","api.AudioEncoder.reset","api.AudioEncoder.state","api.EncodedAudioChunk","api.EncodedAudioChunk.EncodedAudioChunk","api.EncodedAudioChunk.byteLength","api.EncodedAudioChunk.copyTo","api.EncodedAudioChunk.duration","api.EncodedAudioChunk.timestamp","api.EncodedAudioChunk.type","api.EncodedVideoChunk","api.EncodedVideoChunk.EncodedVideoChunk","api.EncodedVideoChunk.byteLength","api.EncodedVideoChunk.copyTo","api.EncodedVideoChunk.duration","api.EncodedVideoChunk.timestamp","api.EncodedVideoChunk.type","api.ImageDecoder","api.ImageDecoder.ImageDecoder","api.ImageDecoder.close","api.ImageDecoder.complete","api.ImageDecoder.completed","api.ImageDecoder.decode","api.ImageDecoder.isTypeSupported_static","api.ImageDecoder.reset","api.ImageDecoder.tracks","api.ImageDecoder.type","api.ImageTrack","api.ImageTrack.animated","api.ImageTrack.frameCount","api.ImageTrack.repetitionCount","api.ImageTrack.selected","api.ImageTrackList","api.ImageTrackList.length","api.ImageTrackList.ready","api.ImageTrackList.selectedIndex","api.ImageTrackList.selectedTrack","api.VideoColorSpace","api.VideoColorSpace.VideoColorSpace","api.VideoColorSpace.fullRange","api.VideoColorSpace.matrix","api.VideoColorSpace.primaries","api.VideoColorSpace.toJSON","api.VideoColorSpace.transfer","api.VideoDecoder","api.VideoDecoder.VideoDecoder","api.VideoDecoder.close","api.VideoDecoder.configure","api.VideoDecoder.decode","api.VideoDecoder.decodeQueueSize","api.VideoDecoder.dequeue_event","api.VideoDecoder.flush","api.VideoDecoder.isConfigSupported_static","api.VideoDecoder.reset","api.VideoDecoder.state","api.VideoEncoder","api.VideoEncoder.VideoEncoder","api.VideoEncoder.close","api.VideoEncoder.configure","api.VideoEncoder.dequeue_event","api.VideoEncoder.encode","api.VideoEncoder.encodeQueueSize","api.VideoEncoder.flush","api.VideoEncoder.isConfigSupported_static","api.VideoEncoder.reset","api.VideoEncoder.state","api.VideoFrame","api.VideoFrame.VideoFrame","api.VideoFrame.allocationSize","api.VideoFrame.clone","api.VideoFrame.close","api.VideoFrame.codedHeight","api.VideoFrame.codedRect","api.VideoFrame.codedWidth","api.VideoFrame.colorSpace","api.VideoFrame.copyTo","api.VideoFrame.displayHeight","api.VideoFrame.displayWidth","api.VideoFrame.duration","api.VideoFrame.format","api.VideoFrame.timestamp","api.VideoFrame.visibleRect"],"description":"The WebCodecs API provides low-level access to individual video frames and chunks of audio samples, for full control over the way media is processed.","description_html":"The WebCodecs API provides low-level access to individual video frames and chunks of audio samples, for full control over the way media is processed.","name":"WebCodecs","spec":"https://w3c.github.io/webcodecs/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"webdriver-bidi":{"description":"WebDriver BiDi is a bidirectional protocol that allows a WebDriver client and a browser to communicate with each other.","description_html":"WebDriver BiDi is a bidirectional protocol that allows a WebDriver client and a browser to communicate with each other.","name":"WebDriver BiDi","spec":"https://w3c.github.io/webdriver-bidi/","status":{"baseline":false,"support":{"chrome":"106","chrome_android":"106","edge":"106","firefox":"102","firefox_android":"102"}}},"webgl-oes-draw-buffers-indexed":{"compat_features":["api.OES_draw_buffers_indexed","api.OES_draw_buffers_indexed.blendEquationSeparateiOES","api.OES_draw_buffers_indexed.blendEquationiOES","api.OES_draw_buffers_indexed.blendFuncSeparateiOES","api.OES_draw_buffers_indexed.blendFunciOES","api.OES_draw_buffers_indexed.colorMaskiOES","api.OES_draw_buffers_indexed.disableiOES","api.OES_draw_buffers_indexed.enableiOES"],"description":"The OES_draw_buffers_indexed extension to WebGL allows you to control blending on a per-color basis when writing to multiple color buffers simultaneously.","description_html":"The <code>OES_draw_buffers_indexed</code> extension to WebGL allows you to control blending on a per-color basis when writing to multiple color buffers simultaneously.","group":"webgl","name":"WebGL OES_draw_buffers_indexed extension","spec":"https://registry.khronos.org/webgl/extensions/OES_draw_buffers_indexed/","status":{"baseline":"low","baseline_low_date":"2022-12-13","support":{"chrome":"100","chrome_android":"100","edge":"100","firefox":"108","firefox_android":"108","safari":"16","safari_ios":"16"}}},"webhid":{"caniuse":"webhid","compat_features":["api.HID","api.HID.connect_event","api.HID.disconnect_event","api.HID.getDevices","api.HID.requestDevice","api.HIDConnectionEvent","api.HIDConnectionEvent.HIDConnectionEvent","api.HIDConnectionEvent.device","api.HIDDevice","api.HIDDevice.close","api.HIDDevice.collections","api.HIDDevice.inputreport_event","api.HIDDevice.open","api.HIDDevice.opened","api.HIDDevice.productId","api.HIDDevice.productName","api.HIDDevice.receiveFeatureReport","api.HIDDevice.sendFeatureReport","api.HIDDevice.sendReport","api.HIDDevice.vendorId","api.HIDInputReportEvent","api.HIDInputReportEvent.data","api.HIDInputReportEvent.device","api.HIDInputReportEvent.reportId","api.Navigator.hid","http.headers.Permissions-Policy.hid"],"description":"The WebHID API provides access to Human Interface Devices (HID) that are connected to the user's device.","description_html":"The WebHID API provides access to Human Interface Devices (HID) that are connected to the user's device.","name":"WebHID","spec":"https://wicg.github.io/webhid/","status":{"baseline":false,"support":{"chrome":"89","edge":"89"}}},"webnn":{"compat_features":["api.ML","api.ML.createContext","api.MLContext","api.MLContext.compute","api.MLGraph","api.MLGraphBuilder","api.MLGraphBuilder.MLGraphBuilder","api.MLGraphBuilder.abs","api.MLGraphBuilder.add","api.MLGraphBuilder.argMax","api.MLGraphBuilder.argMin","api.MLGraphBuilder.averagePool2d","api.MLGraphBuilder.batchNormalization","api.MLGraphBuilder.build","api.MLGraphBuilder.cast","api.MLGraphBuilder.ceil","api.MLGraphBuilder.clamp","api.MLGraphBuilder.concat","api.MLGraphBuilder.constant","api.MLGraphBuilder.conv2d","api.MLGraphBuilder.convTranspose2d","api.MLGraphBuilder.cos","api.MLGraphBuilder.div","api.MLGraphBuilder.elu","api.MLGraphBuilder.equal","api.MLGraphBuilder.erf","api.MLGraphBuilder.exp","api.MLGraphBuilder.expand","api.MLGraphBuilder.floor","api.MLGraphBuilder.gather","api.MLGraphBuilder.gemm","api.MLGraphBuilder.greater","api.MLGraphBuilder.greaterOrEqual","api.MLGraphBuilder.gru","api.MLGraphBuilder.gruCell","api.MLGraphBuilder.hardSigmoid","api.MLGraphBuilder.hardSwish","api.MLGraphBuilder.identity","api.MLGraphBuilder.input","api.MLGraphBuilder.instanceNormalization","api.MLGraphBuilder.l2Pool2d","api.MLGraphBuilder.layerNormalization","api.MLGraphBuilder.leakyRelu","api.MLGraphBuilder.lesser","api.MLGraphBuilder.lesserOrEqual","api.MLGraphBuilder.linear","api.MLGraphBuilder.log","api.MLGraphBuilder.logicalNot","api.MLGraphBuilder.lstm","api.MLGraphBuilder.lstmCell","api.MLGraphBuilder.matmul","api.MLGraphBuilder.max","api.MLGraphBuilder.maxPool2d","api.MLGraphBuilder.min","api.MLGraphBuilder.mul","api.MLGraphBuilder.neg","api.MLGraphBuilder.pad","api.MLGraphBuilder.pow","api.MLGraphBuilder.prelu","api.MLGraphBuilder.reciprocal","api.MLGraphBuilder.reduceL1","api.MLGraphBuilder.reduceL2","api.MLGraphBuilder.reduceLogSum","api.MLGraphBuilder.reduceLogSumExp","api.MLGraphBuilder.reduceMax","api.MLGraphBuilder.reduceMean","api.MLGraphBuilder.reduceMin","api.MLGraphBuilder.reduceProduct","api.MLGraphBuilder.reduceSum","api.MLGraphBuilder.reduceSumSquare","api.MLGraphBuilder.relu","api.MLGraphBuilder.resample2d","api.MLGraphBuilder.reshape","api.MLGraphBuilder.sigmoid","api.MLGraphBuilder.sin","api.MLGraphBuilder.slice","api.MLGraphBuilder.softmax","api.MLGraphBuilder.softplus","api.MLGraphBuilder.softsign","api.MLGraphBuilder.split","api.MLGraphBuilder.sqrt","api.MLGraphBuilder.sub","api.MLGraphBuilder.tan","api.MLGraphBuilder.tanh","api.MLGraphBuilder.transpose","api.MLGraphBuilder.triangular","api.MLGraphBuilder.where","api.MLOperand","api.MLOperand.dataType","api.MLOperand.shape","api.Navigator.ml","api.WorkerNavigator.ml"],"description":"The WebNN API constructs and executes computational graphs of neural networks by making use of the various machine learning capabilities and hardware accelerators available on the device. Also known as Web Neural Network API.","description_html":"The WebNN API constructs and executes computational graphs of neural networks by making use of the various machine learning capabilities and hardware accelerators available on the device. Also known as Web Neural Network API.","name":"WebNN","spec":"https://www.w3.org/TR/webnn/","status":{"baseline":false,"support":{}}},"webp":{"caniuse":"webp","description":"The WebP image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","description_html":"The WebP image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.","name":"WebP","spec":"https://www.ietf.org/archive/id/draft-zern-webp-15.html","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"9","chrome_android":"18","edge":"18","firefox":"65","firefox_android":"65","safari":"14","safari_ios":"14"}}},"webrtc":{"caniuse":"rtcpeerconnection","compat_features":["api.RTCDataChannel","api.RTCPeerConnection"],"description":"The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.","description_html":"The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.","group":"webrtc","name":"WebRTC","spec":"https://w3c.github.io/webrtc-pc/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"56","chrome_android":"56","edge":"79","firefox":"44","firefox_android":"44","safari":"11","safari_ios":"11"}}},"webrtc-encoded-transform":{"compat_features":["api.DedicatedWorkerGlobalScope.rtctransform_event","api.RTCEncodedAudioFrame","api.RTCEncodedAudioFrame.data","api.RTCEncodedAudioFrame.getMetadata","api.RTCEncodedVideoFrame","api.RTCEncodedVideoFrame.data","api.RTCEncodedVideoFrame.getMetadata","api.RTCEncodedVideoFrame.type","api.RTCRtpReceiver.transform","api.RTCRtpScriptTransform","api.RTCRtpScriptTransform.RTCRtpScriptTransform","api.RTCRtpScriptTransformer","api.RTCRtpScriptTransformer.generateKeyFrame","api.RTCRtpScriptTransformer.options","api.RTCRtpScriptTransformer.readable","api.RTCRtpScriptTransformer.sendKeyFrameRequest","api.RTCRtpScriptTransformer.writable","api.RTCRtpSender.transform","api.RTCTransformEvent","api.RTCTransformEvent.transformer"],"description":"The WebRTC encoded transform API allows you to modify audio and video streams in WebRTC connections. For example, it can be used for visual effects or custom codecs.","description_html":"The WebRTC encoded transform API allows you to modify audio and video streams in WebRTC connections. For example, it can be used for visual effects or custom codecs.","group":"webrtc","name":"WebRTC encoded transform","spec":"https://w3c.github.io/webrtc-encoded-transform/","status":{"baseline":false,"support":{"firefox":"117","firefox_android":"117","safari":"15.4","safari_ios":"15.4"}}},"webrtc-sctp":{"compat_features":["api.RTCPeerConnection.sctp","api.RTCSctpTransport","api.RTCSctpTransport.maxChannels","api.RTCSctpTransport.maxMessageSize","api.RTCSctpTransport.state","api.RTCSctpTransport.statechange_event","api.RTCSctpTransport.transport"],"description":"The sctp object on RTCPeerConnection represents the negotiated SCTP transport. SCTP (Stream Control Transmission Protocol) is the protocol that RTCDataChannel uses.","description_html":"The <code>sctp</code> object on <code>RTCPeerConnection</code> represents the negotiated SCTP transport. SCTP (Stream Control Transmission Protocol) is the protocol that <code>RTCDataChannel</code> uses.","group":"webrtc","name":"WebRTC SCTP information","spec":"https://w3c.github.io/webrtc-pc/#rtcsctptransport-interface","status":{"baseline":"low","baseline_low_date":"2023-05-09","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"113","firefox_android":"113","safari":"15.4","safari_ios":"15.4"}}},"websockets":{"caniuse":"websockets","compat_features":["api.CloseEvent","api.CloseEvent.CloseEvent","api.CloseEvent.code","api.CloseEvent.reason","api.CloseEvent.wasClean","api.WebSocket","api.WebSocket.WebSocket","api.WebSocket.binaryType","api.WebSocket.bufferedAmount","api.WebSocket.close","api.WebSocket.close_event","api.WebSocket.error_event","api.WebSocket.extensions","api.WebSocket.message_event","api.WebSocket.open_event","api.WebSocket.protocol","api.WebSocket.readyState","api.WebSocket.send","api.WebSocket.url","api.WebSocket.worker_support","api.WebSocketError","api.WebSocketError.WebSocketError","api.WebSocketError.closeCode","api.WebSocketError.reason"],"description":"The WebSocket API opens a two-way communication channel between the user's browser and a server.","description_html":"The <code>WebSocket</code> API opens a two-way communication channel between the user's browser and a server.","name":"WebSockets","spec":"https://websockets.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"11","firefox_android":"14","safari":"5","safari_ios":"4.2"}}},"webtransport":{"caniuse":"webtransport","compat_features":["api.WebTransport","api.WebTransport.WebTransport","api.WebTransport.close","api.WebTransport.closed","api.WebTransport.createBidirectionalStream","api.WebTransport.createUnidirectionalStream","api.WebTransport.datagrams","api.WebTransport.incomingBidirectionalStreams","api.WebTransport.incomingUnidirectionalStreams","api.WebTransport.ready","api.WebTransportBidirectionalStream","api.WebTransportBidirectionalStream.readable","api.WebTransportBidirectionalStream.writable","api.WebTransportDatagramDuplexStream","api.WebTransportDatagramDuplexStream.incomingHighWaterMark","api.WebTransportDatagramDuplexStream.incomingMaxAge","api.WebTransportDatagramDuplexStream.maxDatagramSize","api.WebTransportDatagramDuplexStream.outgoingHighWaterMark","api.WebTransportDatagramDuplexStream.outgoingMaxAge","api.WebTransportDatagramDuplexStream.readable","api.WebTransportDatagramDuplexStream.writable","api.WebTransportError","api.WebTransportError.WebTransportError","api.WebTransportError.source","api.WebTransportError.streamErrorCode"],"description":"The WebTransport API transmits data between a client and a server, by using the HTTP/3 protocol.","description_html":"The <code>WebTransport</code> API transmits data between a client and a server, by using the HTTP/3 protocol.","name":"WebTransport","spec":"https://w3c.github.io/webtransport/","status":{"baseline":false,"support":{"chrome":"97","chrome_android":"97","edge":"97","firefox":"114","firefox_android":"114"}}},"webusb":{"caniuse":"webusb","compat_features":["api.Navigator.usb","api.USB","api.USB.connect_event","api.USB.disconnect_event","api.USB.getDevices","api.USB.requestDevice","api.USBAlternateInterface","api.USBAlternateInterface.USBAlternateInterface","api.USBAlternateInterface.alternateSetting","api.USBAlternateInterface.endpoints","api.USBAlternateInterface.interfaceClass","api.USBAlternateInterface.interfaceName","api.USBAlternateInterface.interfaceProtocol","api.USBAlternateInterface.interfaceSubclass","api.USBConfiguration","api.USBConfiguration.USBConfiguration","api.USBConfiguration.configurationName","api.USBConfiguration.configurationValue","api.USBConfiguration.interfaces","api.USBConnectionEvent","api.USBConnectionEvent.USBConnectionEvent","api.USBConnectionEvent.device","api.USBDevice","api.USBDevice.claimInterface","api.USBDevice.clearHalt","api.USBDevice.close","api.USBDevice.configuration","api.USBDevice.configurations","api.USBDevice.controlTransferIn","api.USBDevice.controlTransferOut","api.USBDevice.deviceClass","api.USBDevice.deviceProtocol","api.USBDevice.deviceSubclass","api.USBDevice.deviceVersionMajor","api.USBDevice.deviceVersionMinor","api.USBDevice.deviceVersionSubminor","api.USBDevice.isochronousTransferIn","api.USBDevice.isochronousTransferOut","api.USBDevice.manufacturerName","api.USBDevice.open","api.USBDevice.opened","api.USBDevice.productId","api.USBDevice.productName","api.USBDevice.releaseInterface","api.USBDevice.reset","api.USBDevice.selectAlternateInterface","api.USBDevice.selectConfiguration","api.USBDevice.serialNumber","api.USBDevice.transferIn","api.USBDevice.transferOut","api.USBDevice.usbVersionMajor","api.USBDevice.usbVersionMinor","api.USBDevice.usbVersionSubminor","api.USBDevice.vendorId","api.USBEndpoint","api.USBEndpoint.USBEndpoint","api.USBEndpoint.direction","api.USBEndpoint.endpointNumber","api.USBEndpoint.packetSize","api.USBEndpoint.type","api.USBInTransferResult","api.USBInTransferResult.USBInTransferResult","api.USBInTransferResult.data","api.USBInTransferResult.status","api.USBInterface","api.USBInterface.USBInterface","api.USBInterface.alternate","api.USBInterface.alternates","api.USBInterface.claimed","api.USBInterface.interfaceNumber","api.USBIsochronousInTransferPacket","api.USBIsochronousInTransferPacket.USBIsochronousInTransferPacket","api.USBIsochronousInTransferPacket.data","api.USBIsochronousInTransferPacket.status","api.USBIsochronousInTransferResult","api.USBIsochronousInTransferResult.USBIsochronousInTransferResult","api.USBIsochronousInTransferResult.data","api.USBIsochronousInTransferResult.packets","api.USBIsochronousOutTransferPacket","api.USBIsochronousOutTransferPacket.USBIsochronousOutTransferPacket","api.USBIsochronousOutTransferPacket.bytesWritten","api.USBIsochronousOutTransferPacket.status","api.USBIsochronousOutTransferResult","api.USBIsochronousOutTransferResult.USBIsochronousOutTransferResult","api.USBIsochronousOutTransferResult.packets","api.USBOutTransferResult","api.USBOutTransferResult.USBOutTransferResult","api.USBOutTransferResult.bytesWritten","api.USBOutTransferResult.status"],"description":"The WebUSB API exposes USB compatible devices to web pages.","description_html":"The WebUSB API exposes USB compatible devices to web pages.","name":"WebUSB","spec":"https://wicg.github.io/webusb/","status":{"baseline":false,"support":{"chrome":"61","chrome_android":"61","edge":"79"}}},"webvtt":{"caniuse":"webvtt","compat_features":["api.VTTCue","api.VTTCue.getCueAsHTML","api.VTTCue.text"],"description":"WebVTT is a captions and subtitles format. WebVTT files are loaded using the <track> element, and the VTTCue API can be used to create or update cues dynamically.","description_html":"WebVTT is a captions and subtitles format. WebVTT files are loaded using the <code>&#x3C;track></code> element, and the <code>VTTCue</code> API can be used to create or update cues dynamically.","name":"WebVTT","spec":"https://w3c.github.io/webvtt/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"23","chrome_android":"25","edge":"12","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"8"}}},"webvtt-cue-alignment":{"compat_features":["api.VTTCue.lineAlign","api.VTTCue.positionAlign"],"description":"The WebVTT cue alignment settings control which part of the cue is aligned with the given line and position. Cue alignment is set using line and position settings in WebVTT files or the lineAlign and positionAlign properties of VTTCue using JavaScript.","description_html":"The WebVTT cue alignment settings control which part of the cue is aligned with the given line and position. Cue alignment is set using <code>line</code> and <code>position</code> settings in WebVTT files or the <code>lineAlign</code> and <code>positionAlign</code> properties of <code>VTTCue</code> using JavaScript.","name":"WebVTT cue alignment","spec":["https://w3c.github.io/webvtt/#dom-vttcue-linealign","https://w3c.github.io/webvtt/#dom-vttcue-positionalign"],"status":{"baseline":false,"support":{"firefox":"31","firefox_android":"31","safari":"14.1","safari_ios":"14.5"}}},"webvtt-regions":{"compat_features":["api.VTTRegion","api.VTTRegion.VTTRegion","api.VTTRegion.id","api.VTTRegion.regionAnchorX","api.VTTRegion.regionAnchorY","api.VTTRegion.scroll","api.VTTRegion.viewportAnchorX","api.VTTRegion.viewportAnchorY","api.VTTRegion.width"],"description":"WebVTT regions set the areas of the video where captions or subtitles should be rendered, such as placing roll-up captions used for live captions.","description_html":"WebVTT regions set the areas of the video where captions or subtitles should be rendered, such as placing roll-up captions used for live captions.","name":"WebVTT regions","spec":"https://w3c.github.io/webvtt/#regions","status":{"baseline":false,"support":{"firefox":"59","firefox_android":"59","safari":"7","safari_ios":"7"}}},"where":{"compat_features":["css.selectors.where","css.selectors.where.forgiving_selector_list"],"description":"The :where() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity.","description_html":"The <code>:where()</code> CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity.","name":":where()","spec":"https://drafts.csswg.org/selectors-4/#zero-matches","status":{"baseline":"high","baseline_high_date":"2023-07-21","baseline_low_date":"2021-01-21","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"82","firefox_android":"82","safari":"14","safari_ios":"14"}}},"will-change":{"caniuse":"will-change","compat_features":["css.properties.will-change","css.properties.will-change.auto","css.properties.will-change.contents","css.properties.will-change.scroll-position"],"description":"The will-change CSS property gives hints to the browser about expected changes to an element's scroll position, contents, or style. These hints allow browsers to optimize for upcoming style changes.","description_html":"The <code>will-change</code> CSS property gives hints to the browser about expected changes to an element's scroll position, contents, or style. These hints allow browsers to optimize for upcoming style changes.","group":"css","name":"will-change","spec":"https://drafts.csswg.org/css-will-change-1/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"36","chrome_android":"36","edge":"79","firefox":"36","firefox_android":"36","safari":"9.1","safari_ios":"9.3"}}},"xhr":{"compat_features":["api.FormData","api.FormData.FormData","api.FormData.append","api.FormData.append.filename_parameter","api.ProgressEvent","api.ProgressEvent.lengthComputable","api.ProgressEvent.loaded","api.ProgressEvent.total","api.XMLHttpRequest","api.XMLHttpRequest.XMLHttpRequest","api.XMLHttpRequest.abort","api.XMLHttpRequest.abort_event","api.XMLHttpRequest.error_event","api.XMLHttpRequest.getAllResponseHeaders","api.XMLHttpRequest.getResponseHeader","api.XMLHttpRequest.load_event","api.XMLHttpRequest.loadend_event","api.XMLHttpRequest.loadstart_event","api.XMLHttpRequest.open","api.XMLHttpRequest.overrideMimeType","api.XMLHttpRequest.progress_event","api.XMLHttpRequest.readyState","api.XMLHttpRequest.readystatechange_event","api.XMLHttpRequest.response","api.XMLHttpRequest.responseText","api.XMLHttpRequest.responseXML","api.XMLHttpRequest.send","api.XMLHttpRequest.send.body_ArrayBufferView_type","api.XMLHttpRequest.send.body_ArrayBuffer_type","api.XMLHttpRequest.send.body_Blob_type","api.XMLHttpRequest.send.body_FormData_type","api.XMLHttpRequest.setRequestHeader","api.XMLHttpRequest.status","api.XMLHttpRequest.statusText","api.XMLHttpRequest.timeout","api.XMLHttpRequest.timeout_event","api.XMLHttpRequest.upload","api.XMLHttpRequest.withCredentials","api.XMLHttpRequest.worker_support","api.XMLHttpRequestEventTarget","api.XMLHttpRequestUpload","api.XMLHttpRequestUpload.abort_event","api.XMLHttpRequestUpload.error_event","api.XMLHttpRequestUpload.load_event","api.XMLHttpRequestUpload.loadend_event","api.XMLHttpRequestUpload.loadstart_event","api.XMLHttpRequestUpload.progress_event","api.XMLHttpRequestUpload.timeout_event"],"description":"The XMLHttpRequest API makes HTTP requests. It's the predecessor to fetch(). Also known as XHR.","description_html":"The <code>XMLHttpRequest</code> API makes HTTP requests. It's the predecessor to <code>fetch()</code>. Also known as XHR.","name":"XMLHttpRequest","spec":"https://xhr.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"xml-serializer":{"compat_features":["api.XMLSerializer","api.XMLSerializer.XMLSerializer","api.XMLSerializer.serializeToString"],"description":"The XMLSerializer API provides the serializeToString() method to construct an XML string representing a DOM tree.","description_html":"The <code>XMLSerializer</code> API provides the <code>serializeToString()</code> method to construct an XML string representing a DOM tree.","name":"XMLSerializer","spec":"https://w3c.github.io/DOM-Parsing/#the-xmlserializer-interface","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"zoom":{"caniuse":"css-zoom","compat_features":["css.properties.zoom"],"description":"The zoom CSS property scales the size of an element. Unlike the transform property, a zoomed element affects page layout.","description_html":"The <code>zoom</code> CSS property scales the size of an element. Unlike the <code>transform</code> property, a zoomed element affects page layout.","name":"zoom","spec":"https://drafts.csswg.org/css-viewport/#zoom-property","status":{"baseline":"low","baseline_low_date":"2024-05-14","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"126","firefox_android":"126","safari":"3.1","safari_ios":"3"}}}},"groups":{"arrays":{"name":"Arrays","parent":"collections"},"canvas":{"name":"Canvas"},"clipboard":{"name":"Clipboard"},"collections":{"name":"Collections","parent":"javascript"},"containment":{"name":"Containment","parent":"css"},"css":{"name":"CSS"},"custom-elements":{"name":"Custom elements","parent":"html"},"flexbox":{"name":"Flexbox","parent":"layout"},"font-synthesis":{"name":"Font synthesis","parent":"fonts"},"fonts":{"name":"Fonts","parent":"css"},"forms":{"name":"Forms","parent":"html"},"gradients":{"name":"Gradients","parent":"css"},"grid":{"name":"Grid","parent":"layout"},"html":{"name":"HTML"},"html-elements":{"name":"HTML elements","parent":"html"},"intl":{"name":"Intl","parent":"javascript"},"iterators":{"name":"Iterators","parent":"javascript"},"javascript":{"name":"JavaScript"},"js-modules":{"name":"JavaScript modules"},"layout":{"name":"Layout","parent":"css"},"maps":{"name":"Maps","parent":"collections"},"media-elements":{"name":"Media elements","parent":"html"},"print":{"name":"Print media"},"promises":{"name":"Promises","parent":"javascript"},"resource-timing":{"name":"Resource timing"},"scrolling":{"name":"Scrolling"},"sensors":{"name":"Sensors"},"sets":{"name":"Sets","parent":"collections"},"speech":{"name":"Web Speech API"},"streams":{"name":"Streams"},"text-fragments":{"name":"Text fragments"},"transforms":{"name":"Transforms","parent":"css"},"typed-arrays":{"name":"Typed arrays","parent":"collections"},"web-audio":{"name":"Web Audio"},"web-components":{"name":"Web Components"},"webgl":{"name":"WebGL"},"webrtc":{"name":"WebRTC"}},"snapshots":{"ecmascript-1":{"name":"ECMAScript","spec":"https://ecma-international.org/wp-content/uploads/ECMA-262_1st_edition_june_1997.pdf"},"ecmascript-2015":{"name":"ECMAScript 2015","spec":"https://262.ecma-international.org/6.0/"},"ecmascript-2016":{"name":"ECMAScript 2016","spec":"https://262.ecma-international.org/7.0/"},"ecmascript-2017":{"name":"ECMAScript 2017","spec":"https://262.ecma-international.org/8.0/"},"ecmascript-2018":{"name":"ECMAScript 2018","spec":"https://262.ecma-international.org/9.0/"},"ecmascript-2019":{"name":"ECMAScript 2019","spec":"https://262.ecma-international.org/10.0/"},"ecmascript-2020":{"name":"ECMAScript 2020","spec":"https://262.ecma-international.org/11.0/"},"ecmascript-2021":{"name":"ECMAScript 2021","spec":"https://262.ecma-international.org/12.0/"},"ecmascript-2022":{"name":"ECMAScript 2022","spec":"https://262.ecma-international.org/13.0/"},"ecmascript-2023":{"name":"ECMAScript 2023","spec":"https://262.ecma-international.org/14.0/"},"ecmascript-5":{"name":"ECMAScript 5.1","spec":"https://262.ecma-international.org/5.1/"}}}