web-features 1.3.0 → 1.4.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 +1 -1
- package/package.json +2 -2
package/data.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"browsers":{"chrome":{"name":"Chrome","releases":[{"date":"2008-12-11","version":"1"},{"date":"2009-05-21","version":"2"},{"date":"2009-09-15","version":"3"},{"date":"2010-01-25","version":"4"},{"date":"2010-05-25","version":"5"},{"date":"2010-09-02","version":"6"},{"date":"2010-10-19","version":"7"},{"date":"2010-12-02","version":"8"},{"date":"2011-02-03","version":"9"},{"date":"2011-03-08","version":"10"},{"date":"2011-04-27","version":"11"},{"date":"2011-06-07","version":"12"},{"date":"2011-08-02","version":"13"},{"date":"2011-09-16","version":"14"},{"date":"2011-10-25","version":"15"},{"date":"2011-12-13","version":"16"},{"date":"2012-02-08","version":"17"},{"date":"2012-03-28","version":"18"},{"date":"2012-05-15","version":"19"},{"date":"2012-06-26","version":"20"},{"date":"2012-07-31","version":"21"},{"date":"2012-09-25","version":"22"},{"date":"2012-11-06","version":"23"},{"date":"2013-01-10","version":"24"},{"date":"2013-02-21","version":"25"},{"date":"2013-03-26","version":"26"},{"date":"2013-05-21","version":"27"},{"date":"2013-07-09","version":"28"},{"date":"2013-08-20","version":"29"},{"date":"2013-10-01","version":"30"},{"date":"2013-11-12","version":"31"},{"date":"2014-01-14","version":"32"},{"date":"2014-02-20","version":"33"},{"date":"2014-04-08","version":"34"},{"date":"2014-05-20","version":"35"},{"date":"2014-07-16","version":"36"},{"date":"2014-08-26","version":"37"},{"date":"2014-10-07","version":"38"},{"date":"2014-11-18","version":"39"},{"date":"2015-01-21","version":"40"},{"date":"2015-03-03","version":"41"},{"date":"2015-04-14","version":"42"},{"date":"2015-05-19","version":"43"},{"date":"2015-07-21","version":"44"},{"date":"2015-09-01","version":"45"},{"date":"2015-10-13","version":"46"},{"date":"2015-12-01","version":"47"},{"date":"2016-01-20","version":"48"},{"date":"2016-03-02","version":"49"},{"date":"2016-04-13","version":"50"},{"date":"2016-05-25","version":"51"},{"date":"2016-07-20","version":"52"},{"date":"2016-08-31","version":"53"},{"date":"2016-10-12","version":"54"},{"date":"2016-12-01","version":"55"},{"date":"2017-01-25","version":"56"},{"date":"2017-03-09","version":"57"},{"date":"2017-04-19","version":"58"},{"date":"2017-06-05","version":"59"},{"date":"2017-07-25","version":"60"},{"date":"2017-09-05","version":"61"},{"date":"2017-10-17","version":"62"},{"date":"2017-12-06","version":"63"},{"date":"2018-01-23","version":"64"},{"date":"2018-03-06","version":"65"},{"date":"2018-04-17","version":"66"},{"date":"2018-05-29","version":"67"},{"date":"2018-07-24","version":"68"},{"date":"2018-09-04","version":"69"},{"date":"2018-10-16","version":"70"},{"date":"2018-12-04","version":"71"},{"date":"2019-01-29","version":"72"},{"date":"2019-03-12","version":"73"},{"date":"2019-04-23","version":"74"},{"date":"2019-06-04","version":"75"},{"date":"2019-07-30","version":"76"},{"date":"2019-09-10","version":"77"},{"date":"2019-10-22","version":"78"},{"date":"2019-12-10","version":"79"},{"date":"2020-02-04","version":"80"},{"date":"2020-04-07","version":"81"},{"date":"2020-05-19","version":"83"},{"date":"2020-07-27","version":"84"},{"date":"2020-08-25","version":"85"},{"date":"2020-10-20","version":"86"},{"date":"2020-11-17","version":"87"},{"date":"2021-01-19","version":"88"},{"date":"2021-03-02","version":"89"},{"date":"2021-04-13","version":"90"},{"date":"2021-05-25","version":"91"},{"date":"2021-07-20","version":"92"},{"date":"2021-08-31","version":"93"},{"date":"2021-09-21","version":"94"},{"date":"2021-10-19","version":"95"},{"date":"2021-11-15","version":"96"},{"date":"2022-01-04","version":"97"},{"date":"2022-02-01","version":"98"},{"date":"2022-03-01","version":"99"},{"date":"2022-03-29","version":"100"},{"date":"2022-04-26","version":"101"},{"date":"2022-05-24","version":"102"},{"date":"2022-06-21","version":"103"},{"date":"2022-08-02","version":"104"},{"date":"2022-09-02","version":"105"},{"date":"2022-09-27","version":"106"},{"date":"2022-10-25","version":"107"},{"date":"2022-11-29","version":"108"},{"date":"2023-01-10","version":"109"},{"date":"2023-02-07","version":"110"},{"date":"2023-03-07","version":"111"},{"date":"2023-04-04","version":"112"},{"date":"2023-05-02","version":"113"},{"date":"2023-05-30","version":"114"},{"date":"2023-07-18","version":"115"},{"date":"2023-08-15","version":"116"},{"date":"2023-09-12","version":"117"},{"date":"2023-10-10","version":"118"},{"date":"2023-10-31","version":"119"},{"date":"2023-12-05","version":"120"},{"date":"2024-01-23","version":"121"},{"date":"2024-02-20","version":"122"},{"date":"2024-03-19","version":"123"},{"date":"2024-04-16","version":"124"},{"date":"2024-05-14","version":"125"},{"date":"2024-06-11","version":"126"},{"date":"2024-07-23","version":"127"},{"date":"2024-08-20","version":"128"}]},"chrome_android":{"name":"Chrome Android","releases":[{"date":"2012-06-27","version":"18"},{"date":"2013-02-27","version":"25"},{"date":"2013-04-03","version":"26"},{"date":"2013-05-22","version":"27"},{"date":"2013-07-10","version":"28"},{"date":"2013-08-21","version":"29"},{"date":"2013-10-02","version":"30"},{"date":"2013-11-14","version":"31"},{"date":"2014-01-15","version":"32"},{"date":"2014-02-26","version":"33"},{"date":"2014-04-02","version":"34"},{"date":"2014-05-20","version":"35"},{"date":"2014-07-16","version":"36"},{"date":"2014-09-03","version":"37"},{"date":"2014-10-08","version":"38"},{"date":"2014-11-12","version":"39"},{"date":"2015-01-21","version":"40"},{"date":"2015-03-11","version":"41"},{"date":"2015-04-15","version":"42"},{"date":"2015-05-27","version":"43"},{"date":"2015-07-29","version":"44"},{"date":"2015-09-01","version":"45"},{"date":"2015-10-14","version":"46"},{"date":"2015-12-02","version":"47"},{"date":"2016-01-26","version":"48"},{"date":"2016-03-09","version":"49"},{"date":"2016-04-13","version":"50"},{"date":"2016-06-08","version":"51"},{"date":"2016-07-27","version":"52"},{"date":"2016-09-07","version":"53"},{"date":"2016-10-19","version":"54"},{"date":"2016-12-06","version":"55"},{"date":"2017-02-01","version":"56"},{"date":"2017-03-16","version":"57"},{"date":"2017-04-25","version":"58"},{"date":"2017-06-06","version":"59"},{"date":"2017-08-01","version":"60"},{"date":"2017-09-05","version":"61"},{"date":"2017-10-24","version":"62"},{"date":"2017-12-05","version":"63"},{"date":"2018-01-23","version":"64"},{"date":"2018-03-06","version":"65"},{"date":"2018-04-17","version":"66"},{"date":"2018-05-31","version":"67"},{"date":"2018-07-24","version":"68"},{"date":"2018-09-04","version":"69"},{"date":"2018-10-17","version":"70"},{"date":"2018-12-04","version":"71"},{"date":"2019-01-29","version":"72"},{"date":"2019-03-12","version":"73"},{"date":"2019-04-24","version":"74"},{"date":"2019-06-04","version":"75"},{"date":"2019-07-30","version":"76"},{"date":"2019-09-10","version":"77"},{"date":"2019-10-22","version":"78"},{"date":"2019-12-17","version":"79"},{"date":"2020-02-04","version":"80"},{"date":"2020-04-07","version":"81"},{"date":"2020-05-19","version":"83"},{"date":"2020-07-27","version":"84"},{"date":"2020-08-25","version":"85"},{"date":"2020-10-20","version":"86"},{"date":"2020-11-17","version":"87"},{"date":"2021-01-19","version":"88"},{"date":"2021-03-02","version":"89"},{"date":"2021-04-13","version":"90"},{"date":"2021-05-25","version":"91"},{"date":"2021-07-20","version":"92"},{"date":"2021-08-31","version":"93"},{"date":"2021-09-21","version":"94"},{"date":"2021-10-19","version":"95"},{"date":"2021-11-15","version":"96"},{"date":"2022-01-04","version":"97"},{"date":"2022-02-01","version":"98"},{"date":"2022-03-01","version":"99"},{"date":"2022-03-29","version":"100"},{"date":"2022-04-26","version":"101"},{"date":"2022-05-24","version":"102"},{"date":"2022-06-21","version":"103"},{"date":"2022-08-02","version":"104"},{"date":"2022-09-02","version":"105"},{"date":"2022-09-27","version":"106"},{"date":"2022-10-25","version":"107"},{"date":"2022-11-29","version":"108"},{"date":"2023-01-10","version":"109"},{"date":"2023-02-07","version":"110"},{"date":"2023-03-07","version":"111"},{"date":"2023-04-04","version":"112"},{"date":"2023-05-02","version":"113"},{"date":"2023-05-30","version":"114"},{"date":"2023-07-21","version":"115"},{"date":"2023-08-15","version":"116"},{"date":"2023-09-12","version":"117"},{"date":"2023-10-10","version":"118"},{"date":"2023-10-31","version":"119"},{"date":"2023-12-05","version":"120"},{"date":"2024-01-23","version":"121"},{"date":"2024-02-20","version":"122"},{"date":"2024-03-19","version":"123"},{"date":"2024-04-16","version":"124"},{"date":"2024-05-14","version":"125"},{"date":"2024-06-11","version":"126"},{"date":"2024-07-23","version":"127"},{"date":"2024-08-20","version":"128"}]},"edge":{"name":"Edge","releases":[{"date":"2015-07-29","version":"12"},{"date":"2015-11-12","version":"13"},{"date":"2016-08-02","version":"14"},{"date":"2017-04-05","version":"15"},{"date":"2017-10-17","version":"16"},{"date":"2018-04-30","version":"17"},{"date":"2018-10-02","version":"18"},{"date":"2020-01-15","version":"79"},{"date":"2020-02-07","version":"80"},{"date":"2020-04-13","version":"81"},{"date":"2020-05-21","version":"83"},{"date":"2020-07-16","version":"84"},{"date":"2020-08-27","version":"85"},{"date":"2020-10-09","version":"86"},{"date":"2020-11-19","version":"87"},{"date":"2021-01-21","version":"88"},{"date":"2021-03-04","version":"89"},{"date":"2021-04-15","version":"90"},{"date":"2021-05-27","version":"91"},{"date":"2021-07-22","version":"92"},{"date":"2021-09-02","version":"93"},{"date":"2021-09-24","version":"94"},{"date":"2021-10-21","version":"95"},{"date":"2021-11-19","version":"96"},{"date":"2022-01-06","version":"97"},{"date":"2022-02-03","version":"98"},{"date":"2022-03-03","version":"99"},{"date":"2022-04-01","version":"100"},{"date":"2022-04-28","version":"101"},{"date":"2022-05-31","version":"102"},{"date":"2022-06-23","version":"103"},{"date":"2022-08-05","version":"104"},{"date":"2022-09-01","version":"105"},{"date":"2022-10-03","version":"106"},{"date":"2022-10-27","version":"107"},{"date":"2022-12-05","version":"108"},{"date":"2023-01-12","version":"109"},{"date":"2023-02-09","version":"110"},{"date":"2023-03-13","version":"111"},{"date":"2023-04-06","version":"112"},{"date":"2023-05-05","version":"113"},{"date":"2023-06-02","version":"114"},{"date":"2023-07-21","version":"115"},{"date":"2023-08-21","version":"116"},{"date":"2023-09-15","version":"117"},{"date":"2023-10-13","version":"118"},{"date":"2023-11-02","version":"119"},{"date":"2023-12-07","version":"120"},{"date":"2024-01-25","version":"121"},{"date":"2024-02-23","version":"122"},{"date":"2024-03-22","version":"123"},{"date":"2024-04-18","version":"124"},{"date":"2024-05-17","version":"125"},{"date":"2024-06-13","version":"126"},{"date":"2024-07-25","version":"127"},{"date":"2024-08-22","version":"128"}]},"firefox":{"name":"Firefox","releases":[{"date":"2004-11-09","version":"1"},{"date":"2005-11-29","version":"1.5"},{"date":"2006-10-24","version":"2"},{"date":"2008-06-17","version":"3"},{"date":"2009-06-30","version":"3.5"},{"date":"2010-01-21","version":"3.6"},{"date":"2011-03-22","version":"4"},{"date":"2011-06-21","version":"5"},{"date":"2011-08-16","version":"6"},{"date":"2011-09-27","version":"7"},{"date":"2011-11-08","version":"8"},{"date":"2011-12-20","version":"9"},{"date":"2012-01-31","version":"10"},{"date":"2012-03-13","version":"11"},{"date":"2012-04-24","version":"12"},{"date":"2012-06-05","version":"13"},{"date":"2012-07-17","version":"14"},{"date":"2012-08-28","version":"15"},{"date":"2012-10-09","version":"16"},{"date":"2012-11-20","version":"17"},{"date":"2013-01-08","version":"18"},{"date":"2013-02-19","version":"19"},{"date":"2013-04-02","version":"20"},{"date":"2013-05-14","version":"21"},{"date":"2013-06-25","version":"22"},{"date":"2013-08-06","version":"23"},{"date":"2013-09-17","version":"24"},{"date":"2013-10-29","version":"25"},{"date":"2013-12-10","version":"26"},{"date":"2014-02-04","version":"27"},{"date":"2014-03-18","version":"28"},{"date":"2014-04-29","version":"29"},{"date":"2014-06-10","version":"30"},{"date":"2014-07-22","version":"31"},{"date":"2014-09-02","version":"32"},{"date":"2014-10-14","version":"33"},{"date":"2014-12-01","version":"34"},{"date":"2015-01-13","version":"35"},{"date":"2015-02-24","version":"36"},{"date":"2015-03-31","version":"37"},{"date":"2015-05-12","version":"38"},{"date":"2015-07-02","version":"39"},{"date":"2015-08-11","version":"40"},{"date":"2015-09-22","version":"41"},{"date":"2015-11-03","version":"42"},{"date":"2015-12-15","version":"43"},{"date":"2016-01-26","version":"44"},{"date":"2016-03-08","version":"45"},{"date":"2016-04-26","version":"46"},{"date":"2016-06-07","version":"47"},{"date":"2016-08-02","version":"48"},{"date":"2016-09-20","version":"49"},{"date":"2016-11-15","version":"50"},{"date":"2017-01-24","version":"51"},{"date":"2017-03-07","version":"52"},{"date":"2017-04-19","version":"53"},{"date":"2017-06-13","version":"54"},{"date":"2017-08-08","version":"55"},{"date":"2017-09-28","version":"56"},{"date":"2017-11-14","version":"57"},{"date":"2018-01-23","version":"58"},{"date":"2018-03-13","version":"59"},{"date":"2018-05-09","version":"60"},{"date":"2018-06-26","version":"61"},{"date":"2018-09-05","version":"62"},{"date":"2018-10-23","version":"63"},{"date":"2018-12-11","version":"64"},{"date":"2019-01-29","version":"65"},{"date":"2019-03-19","version":"66"},{"date":"2019-05-21","version":"67"},{"date":"2019-07-09","version":"68"},{"date":"2019-09-03","version":"69"},{"date":"2019-10-22","version":"70"},{"date":"2019-12-10","version":"71"},{"date":"2020-01-07","version":"72"},{"date":"2020-02-11","version":"73"},{"date":"2020-03-10","version":"74"},{"date":"2020-04-07","version":"75"},{"date":"2020-05-05","version":"76"},{"date":"2020-06-02","version":"77"},{"date":"2020-06-30","version":"78"},{"date":"2020-07-28","version":"79"},{"date":"2020-08-25","version":"80"},{"date":"2020-09-22","version":"81"},{"date":"2020-10-20","version":"82"},{"date":"2020-11-17","version":"83"},{"date":"2020-12-15","version":"84"},{"date":"2021-01-26","version":"85"},{"date":"2021-02-23","version":"86"},{"date":"2021-03-23","version":"87"},{"date":"2021-04-19","version":"88"},{"date":"2021-06-01","version":"89"},{"date":"2021-07-13","version":"90"},{"date":"2021-08-10","version":"91"},{"date":"2021-09-07","version":"92"},{"date":"2021-10-05","version":"93"},{"date":"2021-11-02","version":"94"},{"date":"2021-12-07","version":"95"},{"date":"2022-01-11","version":"96"},{"date":"2022-02-08","version":"97"},{"date":"2022-03-08","version":"98"},{"date":"2022-04-05","version":"99"},{"date":"2022-05-03","version":"100"},{"date":"2022-05-31","version":"101"},{"date":"2022-06-28","version":"102"},{"date":"2022-07-26","version":"103"},{"date":"2022-08-23","version":"104"},{"date":"2022-09-20","version":"105"},{"date":"2022-10-18","version":"106"},{"date":"2022-11-15","version":"107"},{"date":"2022-12-13","version":"108"},{"date":"2023-01-17","version":"109"},{"date":"2023-02-14","version":"110"},{"date":"2023-03-14","version":"111"},{"date":"2023-04-11","version":"112"},{"date":"2023-05-09","version":"113"},{"date":"2023-06-06","version":"114"},{"date":"2023-07-04","version":"115"},{"date":"2023-08-01","version":"116"},{"date":"2023-08-29","version":"117"},{"date":"2023-09-26","version":"118"},{"date":"2023-10-24","version":"119"},{"date":"2023-11-21","version":"120"},{"date":"2023-12-19","version":"121"},{"date":"2024-01-23","version":"122"},{"date":"2024-02-20","version":"123"},{"date":"2024-03-19","version":"124"},{"date":"2024-04-16","version":"125"},{"date":"2024-05-14","version":"126"},{"date":"2024-06-11","version":"127"},{"date":"2024-07-09","version":"128"},{"date":"2024-08-06","version":"129"},{"date":"2024-09-03","version":"130"}]},"firefox_android":{"name":"Firefox for Android","releases":[{"date":"2011-03-29","version":"4"},{"date":"2011-06-21","version":"5"},{"date":"2011-08-16","version":"6"},{"date":"2011-09-27","version":"7"},{"date":"2011-11-08","version":"8"},{"date":"2011-12-21","version":"9"},{"date":"2012-01-31","version":"10"},{"date":"2012-06-26","version":"14"},{"date":"2012-08-28","version":"15"},{"date":"2012-10-09","version":"16"},{"date":"2012-11-20","version":"17"},{"date":"2013-01-08","version":"18"},{"date":"2013-02-19","version":"19"},{"date":"2013-04-02","version":"20"},{"date":"2013-05-14","version":"21"},{"date":"2013-06-25","version":"22"},{"date":"2013-08-06","version":"23"},{"date":"2013-09-17","version":"24"},{"date":"2013-10-29","version":"25"},{"date":"2013-12-10","version":"26"},{"date":"2014-02-04","version":"27"},{"date":"2014-03-18","version":"28"},{"date":"2014-04-29","version":"29"},{"date":"2014-06-10","version":"30"},{"date":"2014-07-22","version":"31"},{"date":"2014-09-02","version":"32"},{"date":"2014-10-14","version":"33"},{"date":"2014-12-01","version":"34"},{"date":"2015-01-13","version":"35"},{"date":"2015-02-27","version":"36"},{"date":"2015-03-31","version":"37"},{"date":"2015-05-12","version":"38"},{"date":"2015-07-02","version":"39"},{"date":"2015-08-11","version":"40"},{"date":"2015-09-22","version":"41"},{"date":"2015-11-03","version":"42"},{"date":"2015-12-15","version":"43"},{"date":"2016-01-26","version":"44"},{"date":"2016-03-08","version":"45"},{"date":"2016-04-26","version":"46"},{"date":"2016-06-07","version":"47"},{"date":"2016-08-02","version":"48"},{"date":"2016-09-20","version":"49"},{"date":"2016-11-15","version":"50"},{"date":"2017-01-24","version":"51"},{"date":"2017-03-07","version":"52"},{"date":"2017-04-19","version":"53"},{"date":"2017-06-13","version":"54"},{"date":"2017-08-08","version":"55"},{"date":"2017-09-28","version":"56"},{"date":"2017-11-28","version":"57"},{"date":"2018-01-22","version":"58"},{"date":"2018-03-13","version":"59"},{"date":"2018-05-09","version":"60"},{"date":"2018-06-26","version":"61"},{"date":"2018-09-05","version":"62"},{"date":"2018-10-23","version":"63"},{"date":"2018-12-11","version":"64"},{"date":"2019-01-29","version":"65"},{"date":"2019-03-19","version":"66"},{"date":"2019-05-21","version":"67"},{"date":"2019-07-09","version":"68"},{"date":"2020-07-28","version":"79"},{"date":"2020-08-31","version":"80"},{"date":"2020-09-22","version":"81"},{"date":"2020-10-20","version":"82"},{"date":"2020-11-17","version":"83"},{"date":"2020-12-15","version":"84"},{"date":"2021-01-26","version":"85"},{"date":"2021-02-23","version":"86"},{"date":"2021-03-23","version":"87"},{"date":"2021-04-19","version":"88"},{"date":"2021-06-01","version":"89"},{"date":"2021-07-13","version":"90"},{"date":"2021-08-10","version":"91"},{"date":"2021-09-07","version":"92"},{"date":"2021-10-05","version":"93"},{"date":"2021-11-02","version":"94"},{"date":"2021-12-07","version":"95"},{"date":"2022-01-11","version":"96"},{"date":"2022-02-08","version":"97"},{"date":"2022-03-08","version":"98"},{"date":"2022-04-05","version":"99"},{"date":"2022-05-03","version":"100"},{"date":"2022-05-31","version":"101"},{"date":"2022-06-28","version":"102"},{"date":"2022-07-26","version":"103"},{"date":"2022-08-23","version":"104"},{"date":"2022-09-20","version":"105"},{"date":"2022-10-18","version":"106"},{"date":"2022-11-15","version":"107"},{"date":"2022-12-13","version":"108"},{"date":"2023-01-17","version":"109"},{"date":"2023-02-14","version":"110"},{"date":"2023-03-14","version":"111"},{"date":"2023-04-11","version":"112"},{"date":"2023-05-09","version":"113"},{"date":"2023-06-06","version":"114"},{"date":"2023-07-04","version":"115"},{"date":"2023-08-01","version":"116"},{"date":"2023-08-29","version":"117"},{"date":"2023-09-26","version":"118"},{"date":"2023-10-24","version":"119"},{"date":"2023-11-21","version":"120"},{"date":"2023-12-19","version":"121"},{"date":"2024-01-23","version":"122"},{"date":"2024-02-20","version":"123"},{"date":"2024-03-19","version":"124"},{"date":"2024-04-16","version":"125"},{"date":"2024-05-14","version":"126"},{"date":"2024-06-11","version":"127"},{"date":"2024-07-09","version":"128"},{"date":"2024-08-06","version":"129"},{"date":"2024-09-03","version":"130"}]},"safari":{"name":"Safari","releases":[{"date":"2003-06-23","version":"1"},{"date":"2003-10-24","version":"1.1"},{"date":"2004-02-02","version":"1.2"},{"date":"2005-04-15","version":"1.3"},{"date":"2005-04-29","version":"2"},{"date":"2007-10-26","version":"3"},{"date":"2008-03-18","version":"3.1"},{"date":"2009-06-08","version":"4"},{"date":"2010-06-07","version":"5"},{"date":"2011-07-20","version":"5.1"},{"date":"2012-07-25","version":"6"},{"date":"2013-10-22","version":"7"},{"date":"2014-10-16","version":"8"},{"date":"2015-09-30","version":"9"},{"date":"2016-03-21","version":"9.1"},{"date":"2016-09-20","version":"10"},{"date":"2017-03-27","version":"10.1"},{"date":"2017-09-19","version":"11"},{"date":"2018-04-12","version":"11.1"},{"date":"2018-09-17","version":"12"},{"date":"2019-03-25","version":"12.1"},{"date":"2019-09-19","version":"13"},{"date":"2020-03-24","version":"13.1"},{"date":"2020-09-16","version":"14"},{"date":"2021-04-26","version":"14.1"},{"date":"2021-09-20","version":"15"},{"date":"2021-10-25","version":"15.1"},{"date":"2021-12-13","version":"15.2"},{"date":"2022-01-26","version":"15.3"},{"date":"2022-03-14","version":"15.4"},{"date":"2022-05-16","version":"15.5"},{"date":"2022-07-20","version":"15.6"},{"date":"2022-09-12","version":"16"},{"date":"2022-10-24","version":"16.1"},{"date":"2022-12-13","version":"16.2"},{"date":"2023-01-23","version":"16.3"},{"date":"2023-03-27","version":"16.4"},{"date":"2023-05-18","version":"16.5"},{"date":"2023-07-24","version":"16.6"},{"date":"2023-09-18","version":"17"},{"date":"2023-10-25","version":"17.1"},{"date":"2023-12-11","version":"17.2"},{"date":"2024-01-22","version":"17.3"},{"date":"2024-03-05","version":"17.4"},{"date":"2024-05-13","version":"17.5"},{"date":"2024-07-22","version":"17.6"}]},"safari_ios":{"name":"Safari on iOS","releases":[{"date":"2007-06-29","version":"1"},{"date":"2008-07-11","version":"2"},{"date":"2009-06-17","version":"3"},{"date":"2010-04-03","version":"3.2"},{"date":"2010-06-21","version":"4"},{"date":"2010-11-22","version":"4.2"},{"date":"2011-10-12","version":"5"},{"date":"2012-09-10","version":"6"},{"date":"2013-09-18","version":"7"},{"date":"2014-09-17","version":"8"},{"date":"2015-09-16","version":"9"},{"date":"2016-03-21","version":"9.3"},{"date":"2016-09-13","version":"10"},{"date":"2017-03-27","version":"10.3"},{"date":"2017-09-19","version":"11"},{"date":"2018-03-29","version":"11.3"},{"date":"2018-09-17","version":"12"},{"date":"2019-03-25","version":"12.2"},{"date":"2019-09-19","version":"13"},{"date":"2020-03-24","version":"13.4"},{"date":"2020-09-16","version":"14"},{"date":"2021-04-26","version":"14.5"},{"date":"2021-09-20","version":"15"},{"date":"2021-10-25","version":"15.1"},{"date":"2021-12-13","version":"15.2"},{"date":"2022-01-26","version":"15.3"},{"date":"2022-03-14","version":"15.4"},{"date":"2022-05-16","version":"15.5"},{"date":"2022-07-20","version":"15.6"},{"date":"2022-09-12","version":"16"},{"date":"2022-10-24","version":"16.1"},{"date":"2022-12-13","version":"16.2"},{"date":"2023-01-23","version":"16.3"},{"date":"2023-03-27","version":"16.4"},{"date":"2023-05-18","version":"16.5"},{"date":"2023-07-24","version":"16.6"},{"date":"2023-09-18","version":"17"},{"date":"2023-10-25","version":"17.1"},{"date":"2023-12-11","version":"17.2"},{"date":"2024-01-22","version":"17.3"},{"date":"2024-03-05","version":"17.4"},{"date":"2024-05-13","version":"17.5"},{"date":"2024-07-22","version":"17.6"}]}},"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><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><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.abort_static","api.AbortSignal.abort_static.reason_parameter","api.AbortSignal.aborted","api.AbortSignal.reason","api.AbortSignal.throwIfAborted","api.AbortSignal.timeout_static"],"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><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"}}},"alt-text-generated-content":{"compat_features":["css.properties.content.alt_text"],"description":"The / notation in content CSS property values adds alternative text to generated content. For example, the content: url('upvote-icon.svg') / 'Upvote' declaration adds accessible 'Upvote' text to the SVG icon. Also known as alternate text.","description_html":"The <code>/</code> notation in <code>content</code> CSS property values adds alternative text to generated content. For example, the <code>content: url('upvote-icon.svg') / 'Upvote'</code> declaration adds accessible 'Upvote' text to the SVG icon. Also known as alternate text.","group":"css","name":"Alt text for generated content","spec":"https://drafts.csswg.org/css-content-3/#alt","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"128","firefox_android":"128","safari":"17.4","safari_ios":"17.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-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-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-area","css.properties.position-area.block-end","css.properties.position-area.block-start","css.properties.position-area.bottom","css.properties.position-area.center","css.properties.position-area.end","css.properties.position-area.inline-end","css.properties.position-area.inline-start","css.properties.position-area.left","css.properties.position-area.none","css.properties.position-area.right","css.properties.position-area.self-end","css.properties.position-area.self-start","css.properties.position-area.span-all","css.properties.position-area.span-block-end","css.properties.position-area.span-block-start","css.properties.position-area.span-bottom","css.properties.position-area.span-end","css.properties.position-area.span-inline-end","css.properties.position-area.span-inline-start","css.properties.position-area.span-start","css.properties.position-area.span-top","css.properties.position-area.span-x-end","css.properties.position-area.span-x-start","css.properties.position-area.span-y-end","css.properties.position-area.span-y-start","css.properties.position-area.start","css.properties.position-area.top","css.properties.position-area.x-end","css.properties.position-area.x-self-end","css.properties.position-area.x-self-start","css.properties.position-area.x-start","css.properties.position-area.y-end","css.properties.position-area.y-self-end","css.properties.position-area.y-self-start","css.properties.position-area.y-start","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.none","css.properties.position-try-fallbacks.position-area","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.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/ecma262/multipage/abstract-operations.html#sec-groupby","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><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><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><img></code> and <code><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.type_image-png","api.Clipboard.type_text-html","api.Clipboard.type_text-plain","api.Clipboard.write","api.Clipboard.writeText","api.ClipboardItem","api.ClipboardItem.ClipboardItem","api.ClipboardItem.getType","api.ClipboardItem.presentationStyle","api.ClipboardItem.type_image_svg_xml","api.ClipboardItem.type_web","api.ClipboardItem.types","api.Navigator.clipboard","api.Permissions.permission_clipboard-write"],"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"}}},"atomics-wait-async":{"compat_features":["javascript.builtins.Atomics.waitAsync"],"description":"The Atomics.waitAsync() static method waits for a value in a shared memory location, providing a promise when the expected value is not yet in memory. The waitAsync() method is a non-blocking alternative to Atomics.wait().","description_html":"The <code>Atomics.waitAsync()</code> static method waits for a value in a shared memory location, providing a promise when the expected value is not yet in memory. The <code>waitAsync()</code> method is a non-blocking alternative to <code>Atomics.wait()</code>.","group":"javascript","name":"Atomics.waitAsync","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-atomics.waitasync","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"89","edge":"87","safari":"16.4","safari_ios":"16.4"}}},"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><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><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><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><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><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"}}},"bdi":{"compat_features":["html.elements.bdi"],"description":"The <bdi> element isolates text that may have a different text direction from its surrounding text. This prevents the browser's bidirectional text algorithm from affecting or being affected by the direction of the surrounding text.","description_html":"The <code><bdi></code> element isolates text that may have a different text direction from its surrounding text. This prevents the browser's bidirectional text algorithm from affecting or being affected by the direction of the surrounding text.","group":"html-elements","name":"<bdi>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-bdi-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"16","chrome_android":"18","edge":"79","firefox":"10","firefox_android":"10","safari":"6","safari_ios":"6"}}},"bdo":{"compat_features":["html.elements.bdo"],"description":"The <bdo> element overrides the directionality of text, so that the text within is rendered in a different direction than the surrounding text.","description_html":"The <code><bdo></code> element overrides the directionality of text, so that the text within is rendered in a different direction than the surrounding text.","group":"html-elements","name":"<bdo>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-bdo-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":"10","firefox_android":"10","safari":"≤4","safari_ios":"≤3.2"}}},"bigint":{"caniuse":"bigint","compat_features":["javascript.builtins.BigInt","javascript.builtins.BigInt.BigInt","javascript.builtins.BigInt.asIntN","javascript.builtins.BigInt.asUintN","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><link></code>, <code><script></code>, and <code><style></code> elements blocks rendering until the external script or stylesheet has been loaded. For <code><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><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><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><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><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><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-2d":{"compat_features":["api.CanvasGradient","api.CanvasGradient.addColorStop","api.CanvasRenderingContext2D","api.CanvasRenderingContext2D.arc","api.CanvasRenderingContext2D.arcTo","api.CanvasRenderingContext2D.beginPath","api.CanvasRenderingContext2D.bezierCurveTo","api.CanvasRenderingContext2D.canvas","api.CanvasRenderingContext2D.clearRect","api.CanvasRenderingContext2D.clip","api.CanvasRenderingContext2D.closePath","api.CanvasRenderingContext2D.createImageData","api.CanvasRenderingContext2D.createLinearGradient","api.CanvasRenderingContext2D.createPattern","api.CanvasRenderingContext2D.createRadialGradient","api.CanvasRenderingContext2D.direction","api.CanvasRenderingContext2D.drawFocusIfNeeded","api.CanvasRenderingContext2D.drawImage","api.CanvasRenderingContext2D.ellipse","api.CanvasRenderingContext2D.fill","api.CanvasRenderingContext2D.fillRect","api.CanvasRenderingContext2D.fillStyle","api.CanvasRenderingContext2D.fillText","api.CanvasRenderingContext2D.filter","api.CanvasRenderingContext2D.font","api.CanvasRenderingContext2D.fontKerning","api.CanvasRenderingContext2D.fontStretch","api.CanvasRenderingContext2D.fontVariantCaps","api.CanvasRenderingContext2D.getContextAttributes","api.CanvasRenderingContext2D.getImageData","api.CanvasRenderingContext2D.getLineDash","api.CanvasRenderingContext2D.getTransform","api.CanvasRenderingContext2D.globalAlpha","api.CanvasRenderingContext2D.globalCompositeOperation","api.CanvasRenderingContext2D.imageSmoothingEnabled","api.CanvasRenderingContext2D.imageSmoothingQuality","api.CanvasRenderingContext2D.isPointInPath","api.CanvasRenderingContext2D.isPointInStroke","api.CanvasRenderingContext2D.letterSpacing","api.CanvasRenderingContext2D.lineCap","api.CanvasRenderingContext2D.lineDashOffset","api.CanvasRenderingContext2D.lineJoin","api.CanvasRenderingContext2D.lineTo","api.CanvasRenderingContext2D.lineWidth","api.CanvasRenderingContext2D.measureText","api.CanvasRenderingContext2D.miterLimit","api.CanvasRenderingContext2D.moveTo","api.CanvasRenderingContext2D.putImageData","api.CanvasRenderingContext2D.quadraticCurveTo","api.CanvasRenderingContext2D.rect","api.CanvasRenderingContext2D.resetTransform","api.CanvasRenderingContext2D.restore","api.CanvasRenderingContext2D.rotate","api.CanvasRenderingContext2D.save","api.CanvasRenderingContext2D.scale","api.CanvasRenderingContext2D.setLineDash","api.CanvasRenderingContext2D.setTransform","api.CanvasRenderingContext2D.shadowBlur","api.CanvasRenderingContext2D.shadowColor","api.CanvasRenderingContext2D.shadowOffsetX","api.CanvasRenderingContext2D.shadowOffsetY","api.CanvasRenderingContext2D.stroke","api.CanvasRenderingContext2D.strokeRect","api.CanvasRenderingContext2D.strokeStyle","api.CanvasRenderingContext2D.strokeText","api.CanvasRenderingContext2D.textAlign","api.CanvasRenderingContext2D.textBaseline","api.CanvasRenderingContext2D.textRendering","api.CanvasRenderingContext2D.transform","api.CanvasRenderingContext2D.translate","api.CanvasRenderingContext2D.wordSpacing","api.TextMetrics","api.TextMetrics.alphabeticBaseline","api.TextMetrics.hangingBaseline","api.TextMetrics.ideographicBaseline","api.TextMetrics.width"],"description":"The CanvasRenderingContext2D API is the \"2d\" rendering context for the <canvas> element. It represents a flat, two-dimensional space for drawing graphics and animations.","description_html":"The <code>CanvasRenderingContext2D</code> API is the \"2d\" rendering context for the <code><canvas></code> element. It represents a flat, two-dimensional space for drawing graphics and animations.","group":"canvas","name":"2D canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#2dcontext","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-2d-alpha":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_alpha_parameter"],"description":"The optional alpha parameter of a 2D canvas's getContext() method sets whether the canvas has an alpha transparency channel. If set to false, then this permits the browser to optimize compositing for an opaque canvas.","description_html":"The optional <code>alpha</code> parameter of a 2D canvas's <code>getContext()</code> method sets whether the canvas has an alpha transparency channel. If set to <code>false</code>, then this permits the browser to optimize compositing for an opaque canvas.","group":"canvas","name":"2D canvas opacity","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-alpha","status":{"baseline":false,"support":{"chrome":"32","chrome_android":"32","edge":"≤79","firefox":"30","firefox_android":"30"}}},"canvas-2d-color-managment":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_colorSpace_parameter"],"description":"The optional colorSpace parameter of a 2D canvas's getContext() method chooses the color representation, such as \"srgb\" or \"display-p3\".","description_html":"The optional <code>colorSpace</code> parameter of a 2D canvas's <code>getContext()</code> method chooses the color representation, such as <code>\"srgb\"</code> or <code>\"display-p3\"</code>.","group":"canvas","name":"Color management for 2D canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-color-space","status":{"baseline":false,"support":{"chrome":"92","chrome_android":"92","edge":"92","safari":"15.2","safari_ios":"15.2"}}},"canvas-2d-desynchronized":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_desynchronized_parameter"],"description":"The optional desynchronized parameter of a canvas's getContext() method permits the browser to draw a 2D canvas independently of the event loop. This can reduce drawing latency.","description_html":"The optional <code>desynchronized</code> parameter of a canvas's <code>getContext()</code> method permits the browser to draw a 2D canvas independently of the event loop. This can reduce drawing latency.","group":"canvas","name":"Desynchronized 2D canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-desynchronized","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"75","edge":"79","safari":"15","safari_ios":"15"}}},"canvas-2d-willreadfrequently":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_willReadFrequently_parameter"],"description":"The optional willReadFrequently parameter of a canvas's getContext() method permits the browser to optimize for frequent getImageData() calls by avoiding hardware acceleration. Also known as multiple readback.","description_html":"The optional <code>willReadFrequently</code> parameter of a canvas's <code>getContext()</code> method permits the browser to optimize for frequent <code>getImageData()</code> calls by avoiding hardware acceleration. Also known as multiple readback.","group":"canvas","name":"willReadFrequently","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"28","firefox_android":"28"}}},"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><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"}}},"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"}}},"caret-color":{"caniuse":"css-caret-color","compat_features":["css.properties.caret-color"],"description":"The caret-color CSS property sets the color of the text insertion pointer in a text input.","description_html":"The <code>caret-color</code> CSS property sets the color of the text insertion pointer in a text input.","name":"caret-color","spec":"https://drafts.csswg.org/css-ui-4/#insertion-caret","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"57","chrome_android":"57","edge":"79","firefox":"53","firefox_android":"53","safari":"11.1","safari_ios":"11.3"}}},"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><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-events":{"compat_features":["api.ClipboardEvent","api.ClipboardEvent.ClipboardEvent","api.ClipboardEvent.clipboardData","api.Element.copy_event","api.Element.cut_event","api.Element.paste_event"],"description":"The \"copy\", \"cut\", and \"paste\" events fire on elements when the user starts an action with the clipboard.","description_html":"The <code>\"copy\"</code>, <code>\"cut\"</code>, and <code>\"paste\"</code> events fire on elements when the user starts an action with the clipboard.","group":"clipboard","name":"Clipboard events","spec":"https://w3c.github.io/clipboard-apis/#clipboard-event-interfaces","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"22","firefox_android":"22","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><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 picks a color from 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 picks a color from 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.","group":"color-types","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":"high","baseline_high_date":"2024-08-03","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.repeating-conic-gradient"],"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-block-size.none","css.properties.contain-intrinsic-height","css.properties.contain-intrinsic-height.none","css.properties.contain-intrinsic-inline-size","css.properties.contain-intrinsic-inline-size.none","css.properties.contain-intrinsic-size","css.properties.contain-intrinsic-size.auto_none","css.properties.contain-intrinsic-size.none","css.properties.contain-intrinsic-width","css.properties.contain-intrinsic-width.none"],"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><audio></code> or <code><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 sets 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 sets 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"}}},"credential-management":{"compat_features":["api.Credential","api.Credential.id","api.Credential.type","api.CredentialsContainer","api.CredentialsContainer.create","api.CredentialsContainer.get","api.CredentialsContainer.preventSilentAccess","api.CredentialsContainer.store","api.Navigator.credentials"],"description":"The navigator.credentials API provides generic storage for authentication credentials. Other credential APIs represent specific kinds of credentials, such as password or public key credentials, that the credential management API stores.","description_html":"The <code>navigator.credentials</code> API provides generic storage for authentication credentials. Other credential APIs represent specific kinds of credentials, such as password or public key credentials, that the credential management API stores.","group":"credential-management","name":"Credential management","spec":"https://w3c.github.io/webappsec-credential-management/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"60","firefox_android":"60","safari":"13","safari_ios":"13"}}},"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"}}},"currentcolor":{"caniuse":"currentcolor","compat_features":["css.types.color.currentcolor"],"description":"The currentColor CSS value allows you to reuse an element's computed text color for other properties.","description_html":"The <code>currentColor</code> CSS value allows you to reuse an element's computed text color for other properties.","group":"color-types","name":"currentColor","spec":"https://drafts.csswg.org/css-color-3/#currentcolor","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":"4","safari_ios":"3.2"}}},"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><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 sets recommended values for an <input> element. Browsers may show a dropdown menu of all values or match values as the user types.","description_html":"The <code><datalist></code> element sets recommended values for an <code><input></code> element. Browsers may show a dropdown menu of all values or match values 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"}}},"date":{"compat_features":["javascript.builtins.Date","javascript.builtins.Date.@@toPrimitive","javascript.builtins.Date.Date","javascript.builtins.Date.UTC","javascript.builtins.Date.UTC.optional_monthIndex","javascript.builtins.Date.getDate","javascript.builtins.Date.getDay","javascript.builtins.Date.getFullYear","javascript.builtins.Date.getHours","javascript.builtins.Date.getMilliseconds","javascript.builtins.Date.getMinutes","javascript.builtins.Date.getMonth","javascript.builtins.Date.getSeconds","javascript.builtins.Date.getTime","javascript.builtins.Date.getTimezoneOffset","javascript.builtins.Date.getUTCDate","javascript.builtins.Date.getUTCDay","javascript.builtins.Date.getUTCFullYear","javascript.builtins.Date.getUTCHours","javascript.builtins.Date.getUTCMilliseconds","javascript.builtins.Date.getUTCMinutes","javascript.builtins.Date.getUTCMonth","javascript.builtins.Date.getUTCSeconds","javascript.builtins.Date.now","javascript.builtins.Date.parse","javascript.builtins.Date.parse.iso_8601","javascript.builtins.Date.setDate","javascript.builtins.Date.setFullYear","javascript.builtins.Date.setHours","javascript.builtins.Date.setMilliseconds","javascript.builtins.Date.setMinutes","javascript.builtins.Date.setMonth","javascript.builtins.Date.setSeconds","javascript.builtins.Date.setTime","javascript.builtins.Date.setUTCDate","javascript.builtins.Date.setUTCFullYear","javascript.builtins.Date.setUTCHours","javascript.builtins.Date.setUTCMilliseconds","javascript.builtins.Date.setUTCMinutes","javascript.builtins.Date.setUTCMonth","javascript.builtins.Date.setUTCSeconds","javascript.builtins.Date.toDateString","javascript.builtins.Date.toISOString","javascript.builtins.Date.toJSON","javascript.builtins.Date.toString","javascript.builtins.Date.toTimeString","javascript.builtins.Date.toUTCString","javascript.builtins.Date.valueOf"],"description":"The Date object represents a single moment in time.","description_html":"The <code>Date</code> object represents a single moment in time.","group":"primitive-types","name":"Date","spec":"https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date-objects","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"}}},"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><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><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><details></code> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <code><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><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":"low","baseline_low_date":"2024-09-03","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"130","firefox_android":"130","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><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><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><textarea></code> and <code><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><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":{"chrome":"128","chrome_android":"128","edge":"128","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><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><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><audio></code> or <code><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"}}},"fedcm":{"compat_features":["api.CredentialsContainer.get.identity_option","api.IdentityCredential","api.IdentityCredential.token"],"description":"The IdentityCredential API delegates authentication to a third-party identity provider, instead of using third-party cookies. Also known as FedCM.","description_html":"The <code>IdentityCredential</code> API delegates authentication to a third-party identity provider, instead of using third-party cookies. Also known as FedCM.","group":"credential-management","name":"Federated credential management","spec":"https://w3c-fedid.github.io/FedCM/","status":{"baseline":false,"support":{"chrome":"108","chrome_android":"108","edge":"108"}}},"federated-credentials":{"compat_features":["api.FederatedCredential","api.FederatedCredential.FederatedCredential","api.FederatedCredential.iconURL","api.FederatedCredential.name","api.FederatedCredential.protocol","api.FederatedCredential.provider"],"description":"The FederatedCredential API represents the details required to authenticate a user using a third-party identity provider. Not to be confused with federated credential management (FedCM).","description_html":"The <code>FederatedCredential</code> API represents the details required to authenticate a user using a third-party identity provider. Not to be confused with federated credential management (FedCM).","group":"credential-management","name":"Federated credentials","spec":"https://w3c.github.io/webappsec-credential-management/#federated","status":{"baseline":false,"support":{"chrome":"51","chrome_android":"51","edge":"79"}}},"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><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><fieldset></code> and <code><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><figure></code> and <code><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"}}},"file-system-access":{"caniuse":"native-filesystem-api","compat_features":["api.DataTransferItem.getAsFileSystemHandle","api.FileSystemHandle.queryPermission","api.FileSystemHandle.requestPermission","api.Window.showDirectoryPicker","api.Window.showOpenFilePicker","api.Window.showSaveFilePicker"],"description":"The showOpenFilePicker(), showDirectoryPicker(), and showSaveFilePicker() methods request access to files and directories on the user's device and returns a handle for reading and writing to them.","description_html":"The <code>showOpenFilePicker()</code>, <code>showDirectoryPicker()</code>, and <code>showSaveFilePicker()</code> methods request access to files and directories on the user's device and returns a handle for reading and writing to them.","group":"file-system","name":"File system access","spec":"https://wicg.github.io/file-system-access/","status":{"baseline":false,"support":{"chrome":"86","edge":"86"}}},"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"}}},"float16array":{"compat_features":["javascript.builtins.DataView.getFloat16","javascript.builtins.DataView.setFloat16","javascript.builtins.Float16Array","javascript.builtins.Math.f16round"],"description":"Float16Array is a typed array of 16-bit floating point numbers.","description_html":"Float16Array is a typed array of 16-bit floating point numbers.","group":"typed-arrays","name":"Float16Array","spec":"https://tc39.es/proposal-float16array/","status":{"baseline":false,"support":{"firefox":"129","firefox_android":"129"}}},"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-display":{"caniuse":"css-font-rendering-controls","compat_features":["css.at-rules.font-face.font-display"],"description":"The font-display CSS descriptor sets whether to show a substitute font or nothing while a font face loads. The property manages what's known as a flash of unstyled text or flash of invisible text.","description_html":"The <code>font-display</code> CSS descriptor sets whether to show a substitute font or nothing while a font face loads. The property manages what's known as a flash of unstyled text or flash of invisible text.","group":"fonts","name":"font-display","spec":"https://drafts.csswg.org/css-fonts-4/#font-display-desc","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"58","firefox_android":"58","safari":"11.1","safari_ios":"11.3"}}},"font-face":{"caniuse":["fontface","font-unicode-range"],"compat_features":["api.CSSFontFaceRule","api.CSSFontFaceRule.style","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","css.at-rules.font-face.unicode-range"],"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-feature-settings":{"caniuse":"font-feature","compat_features":["css.at-rules.font-face.font-feature-settings","css.properties.font-feature-settings","css.properties.font-feature-settings.normal"],"description":"The font-feature-settings CSS property sets low-level OpenType feature tags for a font. When possible, use font-variant instead.","description_html":"The <code>font-feature-settings</code> CSS property sets low-level OpenType feature tags for a font. When possible, use <code>font-variant</code> instead.","group":"font-features","name":"font-feature-settings","spec":"https://drafts.csswg.org/css-fonts-4/#font-feature-settings-prop","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"48","chrome_android":"48","edge":"15","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-kerning":{"compat_features":["css.properties.font-kerning"],"description":"The font-kerning CSS property sets whether kerning data from a font is used to adjust the space between letters.","description_html":"The <code>font-kerning</code> CSS property sets whether kerning data from a font is used to adjust the space between letters.","group":"font-features","name":"font-kerning","spec":"https://drafts.csswg.org/css-fonts-4/#font-kerning-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"33","chrome_android":"33","edge":"79","firefox":"32","firefox_android":"32","safari":"9","safari_ios":"9"}}},"font-language-override":{"compat_features":["css.properties.font-language-override"],"description":"The font-language-override CSS property sets which language-specific glyphs are displayed.","description_html":"The <code>font-language-override</code> CSS property sets which language-specific glyphs are displayed.","group":"font-features","name":"font-language-override","spec":"https://drafts.csswg.org/css-fonts-4/#font-language-override-prop","status":{"baseline":false,"support":{"firefox":"34","firefox_android":"34"}}},"font-optical-sizing":{"compat_features":["css.properties.font-optical-sizing","css.properties.font-optical-sizing.auto","css.properties.font-optical-sizing.none"],"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-09-24","baseline_low_date":"2020-03-24","support":{"chrome":"79","chrome_android":"79","edge":"17","firefox":"62","firefox_android":"62","safari":"13.1","safari_ios":"13.4"}}},"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","css.properties.font-palette.dark","css.properties.font-palette.light","css.properties.font-palette.normal"],"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":{"compat_features":["css.at-rules.font-face.font-variant","css.properties.font-variant","css.properties.font-variant.historical-forms","css.properties.font-variant.none","css.properties.font-variant.normal","css.properties.font-variant.sub","css.properties.font-variant.super","css.properties.font-variant.turkic_is","svg.global_attributes.font-variant"],"description":"The font-variant CSS property is a shorthand for font-variant-alternates, font-variant-caps, font-variant-east-asian, font-variant-emoji, font-variant-ligatures, font-variant-numeric, and font-variant-position.","description_html":"The <code>font-variant</code> CSS property is a shorthand for <code>font-variant-alternates</code>, <code>font-variant-caps</code>, <code>font-variant-east-asian</code>, <code>font-variant-emoji</code>, <code>font-variant-ligatures</code>, <code>font-variant-numeric</code>, and <code>font-variant-position</code>.","group":"font-features","name":"font-variant","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-prop","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"}}},"font-variant-alternates":{"caniuse":"font-variant-alternates","compat_features":["api.CSSFontFeatureValuesRule","api.CSSFontFeatureValuesRule.annotation","api.CSSFontFeatureValuesRule.characterVariant","api.CSSFontFeatureValuesRule.fontFamily","api.CSSFontFeatureValuesRule.ornaments","api.CSSFontFeatureValuesRule.styleset","api.CSSFontFeatureValuesRule.stylistic","api.CSSFontFeatureValuesRule.swash","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.historical-forms","css.properties.font-variant-alternates.normal","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":"9.1","safari_ios":"9.3"}}},"font-variant-caps":{"compat_features":["css.properties.font-variant-caps","css.properties.font-variant-caps.all-petite-caps","css.properties.font-variant-caps.all-small-caps","css.properties.font-variant-caps.normal","css.properties.font-variant-caps.petite-caps","css.properties.font-variant-caps.small-caps","css.properties.font-variant-caps.titling-caps","css.properties.font-variant-caps.unicase"],"description":"The font-variant-caps CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles.","description_html":"The <code>font-variant-caps</code> CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles.","group":"font-features","name":"font-variant-caps","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-caps-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-east-asian":{"compat_features":["css.properties.font-variant-east-asian","css.properties.font-variant-east-asian.full-width","css.properties.font-variant-east-asian.jis04","css.properties.font-variant-east-asian.jis78","css.properties.font-variant-east-asian.jis83","css.properties.font-variant-east-asian.jis90","css.properties.font-variant-east-asian.normal","css.properties.font-variant-east-asian.proportional-width","css.properties.font-variant-east-asian.ruby","css.properties.font-variant-east-asian.simplified","css.properties.font-variant-east-asian.traditional"],"description":"The font-variant-east-asian CSS property controls glyph substitution and sizing in East Asian text.","description_html":"The <code>font-variant-east-asian</code> CSS property controls glyph substitution and sizing in East Asian text.","group":"font-features","name":"font-variant-east-asian","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-east-asian-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"63","chrome_android":"63","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-emoji":{"compat_features":["css.properties.font-variant-emoji"],"description":"The font-variant-emoji CSS property sets the default presentation for emoji characters.","description_html":"The <code>font-variant-emoji</code> CSS property sets the default presentation for emoji characters.","group":"font-features","name":"font-variant-emoji","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-emoji-prop","status":{"baseline":false,"support":{}}},"font-variant-ligatures":{"compat_features":["css.properties.font-variant-ligatures","css.properties.font-variant-ligatures.common-ligatures","css.properties.font-variant-ligatures.contextual","css.properties.font-variant-ligatures.discretionary-ligatures","css.properties.font-variant-ligatures.historical-ligatures","css.properties.font-variant-ligatures.no-common-ligatures","css.properties.font-variant-ligatures.no-contextual","css.properties.font-variant-ligatures.no-discretionary-ligatures","css.properties.font-variant-ligatures.no-historical-ligatures","css.properties.font-variant-ligatures.none","css.properties.font-variant-ligatures.normal"],"description":"The font-variant-ligatures CSS property sets how characters can be visually combined for readability or stylistic reasons.","description_html":"The <code>font-variant-ligatures</code> CSS property sets how characters can be visually combined for readability or stylistic reasons.","group":"font-features","name":"font-variant-ligatures","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-ligatures-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"34","chrome_android":"34","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-numeric":{"caniuse":"font-variant-numeric","compat_features":["css.properties.font-variant-numeric","css.properties.font-variant-numeric.diagonal-fractions","css.properties.font-variant-numeric.lining-nums","css.properties.font-variant-numeric.normal","css.properties.font-variant-numeric.oldstyle-nums","css.properties.font-variant-numeric.ordinal","css.properties.font-variant-numeric.proportional-nums","css.properties.font-variant-numeric.slashed-zero","css.properties.font-variant-numeric.stacked-fractions","css.properties.font-variant-numeric.tabular-nums"],"description":"The font-variant-numeric CSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash.","description_html":"The <code>font-variant-numeric</code> CSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash.","group":"font-features","name":"font-variant-numeric","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-numeric-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-position":{"compat_features":["css.properties.font-variant-position","css.properties.font-variant-position.normal","css.properties.font-variant-position.sub","css.properties.font-variant-position.super"],"description":"The font-variant-position CSS property sets whether to use alternate glyphs for subscript and superscript text.","description_html":"The <code>font-variant-position</code> CSS property sets whether to use alternate glyphs for subscript and superscript text.","group":"font-features","name":"font-variant-position","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-position-prop","status":{"baseline":"low","baseline_low_date":"2023-09-15","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"≤72","firefox_android":"79","safari":"≤13.1","safari_ios":"≤13.4"}}},"font-variation-settings":{"caniuse":"variable-fonts","compat_features":["css.at-rules.font-face.font-variation-settings","css.properties.font-variation-settings"],"description":"The font-variation-settings CSS property sets an \"axis of variability\" on a variable font, such as weight, optical size, or a custom axis defined by the typeface designer. When possible, use other CSS font properties, such as font-weight: bold. Also known as variable fonts.","description_html":"The <code>font-variation-settings</code> CSS property sets an \"axis of variability\" on a variable font, such as weight, optical size, or a custom axis defined by the typeface designer. When possible, use other CSS font properties, such as <code>font-weight: bold</code>. Also known as variable fonts.","group":"fonts","name":"font-variation-settings","spec":"https://drafts.csswg.org/css-fonts-4/#font-variation-settings-def","status":{"baseline":"high","baseline_high_date":"2021-03-05","baseline_low_date":"2018-09-05","support":{"chrome":"62","chrome_android":"62","edge":"17","firefox":"62","firefox_android":"62","safari":"11","safari_ios":"11"}}},"forced-colors":{"compat_features":["css.at-rules.media.forced-colors","css.properties.forced-color-adjust","css.properties.forced-color-adjust.auto","css.properties.forced-color-adjust.none","css.properties.forced-color-adjust.preserve-parent-color"],"description":"The forced-colors CSS @media rule detects when a user has chosen to use a forced colors mode, also known as high-contrast mode, and the forced-color-adjust CSS property sets whether forced colors apply to an element.","description_html":"The <code>forced-colors</code> CSS @media rule detects when a user has chosen to use a forced colors mode, also known as high-contrast mode, and the <code>forced-color-adjust</code> CSS property sets whether forced colors apply to an element.","group":"css","name":"Forced colors","spec":["https://drafts.csswg.org/mediaqueries-5/#forced-colors","https://drafts.csswg.org/css-color-adjust-1/#forced-color-adjust-prop"],"status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"89","chrome_android":"89","edge":"79","firefox":"89","firefox_android":"89","safari":"16","safari_ios":"16"}}},"form":{"compat_features":["api.HTMLFormElement","api.HTMLFormElement.acceptCharset","api.HTMLFormElement.action","api.HTMLFormElement.autocomplete","api.HTMLFormElement.elements","api.HTMLFormElement.encoding","api.HTMLFormElement.enctype","api.HTMLFormElement.formdata_event","api.HTMLFormElement.length","api.HTMLFormElement.method","api.HTMLFormElement.name","api.HTMLFormElement.noValidate","api.HTMLFormElement.rel","api.HTMLFormElement.relList","api.HTMLFormElement.requestSubmit","api.HTMLFormElement.reset","api.HTMLFormElement.reset_event","api.HTMLFormElement.submit","api.HTMLFormElement.submit_event","api.HTMLFormElement.target","html.elements.form","html.elements.form.accept-charset","html.elements.form.action","html.elements.form.autocomplete","html.elements.form.enctype","html.elements.form.method","html.elements.form.name","html.elements.form.novalidate","html.elements.form.rel","html.elements.form.target"],"description":"The <form> element contains interactive controls for submitting information.","description_html":"The <code><form></code> element contains interactive controls for submitting information.","group":"forms","name":"<form>","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-form-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"}}},"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"}}},"geolocation":{"caniuse":"geolocation","compat_features":["api.Geolocation","api.Geolocation.clearWatch","api.Geolocation.getCurrentPosition","api.Geolocation.secure_context_required","api.Geolocation.watchPosition","api.GeolocationCoordinates","api.GeolocationCoordinates.accuracy","api.GeolocationCoordinates.altitude","api.GeolocationCoordinates.altitudeAccuracy","api.GeolocationCoordinates.heading","api.GeolocationCoordinates.latitude","api.GeolocationCoordinates.longitude","api.GeolocationCoordinates.secure_context_required","api.GeolocationCoordinates.speed","api.GeolocationCoordinates.toJSON","api.GeolocationPosition","api.GeolocationPosition.coords","api.GeolocationPosition.secure_context_required","api.GeolocationPosition.timestamp","api.GeolocationPosition.toJSON","api.GeolocationPositionError","api.GeolocationPositionError.code","api.GeolocationPositionError.message","api.GeolocationPositionError.secure_context_required","api.Navigator.geolocation","api.Navigator.geolocation.secure_context_required","http.headers.Permissions-Policy.geolocation"],"description":"The navigator.gelocation API requests the user's latitude, longitude, heading, and speed.","description_html":"The <code>navigator.gelocation</code> API requests the user's latitude, longitude, heading, and speed.","name":"Geolocation","spec":"https://w3c.github.io/geolocation/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"5","safari_ios":"≤3"}}},"gradient-interpolation":{"compat_features":["css.types.image.gradient.conic-gradient.hue_interpolation_method","css.types.image.gradient.conic-gradient.interpolation_color_space","css.types.image.gradient.linear-gradient.hue_interpolation_method","css.types.image.gradient.linear-gradient.interpolation_color_space","css.types.image.gradient.radial-gradient.hue_interpolation_method","css.types.image.gradient.radial-gradient.interpolation_color_space","css.types.image.gradient.repeating-conic-gradient.hue_interpolation_method","css.types.image.gradient.repeating-conic-gradient.interpolation_color_space","css.types.image.gradient.repeating-linear-gradient.hue_interpolation_method","css.types.image.gradient.repeating-linear-gradient.interpolation_color_space","css.types.image.gradient.repeating-radial-gradient.hue_interpolation_method","css.types.image.gradient.repeating-radial-gradient.interpolation_color_space"],"description":"Gradient interpolation controls how the colors between gradient stops are calculated in CSS. For example, linear-gradient(to right in oklch longer hue, red, red); calculates in the oklch color space, with the hue going all the way around the hue circle from red back to red.","description_html":"Gradient interpolation controls how the colors between gradient stops are calculated in CSS. For example, <code>linear-gradient(to right in oklch longer hue, red, red);</code> calculates in the <code>oklch</code> color space, with the hue going all the way around the hue circle from red back to red.","group":"gradients","name":"Gradient interpolation","spec":"https://drafts.csswg.org/css-color-4/#interpolation-space","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"127","firefox_android":"127","safari":"16.2","safari_ios":"16.2"}}},"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"}}},"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><head></code> element contains machine-readable information (metadata) about the document, such as the title, <code><script></code> and <code><style></code> elements, and <code><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><header></code> and <code><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><h1></code> through <code><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><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><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"}}},"hsl":{"caniuse":"css3-colors","compat_features":["css.types.color.hsl","css.types.color.hsl.alpha_parameter","css.types.color.hsl.mixed_type_parameters","css.types.color.hsl.space_separated_parameters"],"description":"The hsl() and hsla() CSS functions pick colors using hue, saturation, lightness, and alpha (transparency) channels.","description_html":"The <code>hsl()</code> and <code>hsla()</code> CSS functions pick colors using hue, saturation, lightness, and alpha (transparency) channels.","group":"color-types","name":"HSL","spec":"https://drafts.csswg.org/css-color-4/#the-hsl-notation","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"52","firefox_android":"52","safari":"12.1","safari_ios":"12.2"}}},"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><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><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"}}},"hwb":{"compat_features":["css.types.color.hwb","css.types.color.hwb.mixed_type_parameters"],"description":"The hwb() CSS function picks colors using hue, whiteness, and blackness channels.","description_html":"The <code>hwb()</code> CSS function picks colors using hue, whiteness, and blackness channels.","group":"color-types","name":"HWB","spec":"https://drafts.csswg.org/css-color-4/#the-hwb-notation","status":{"baseline":"low","baseline_low_date":"2022-04-28","support":{"chrome":"101","chrome_android":"101","edge":"101","firefox":"96","firefox_android":"96","safari":"15","safari_ios":"15"}}},"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><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><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><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"}}},"iframe-srcdoc":{"caniuse":"iframe-srcdoc","compat_features":["api.HTMLIFrameElement.srcdoc","html.elements.iframe.srcdoc"],"description":"The srcdoc attribute for the <iframe> HTML element sets a string of HTML to embed in the document. The value of srcdoc overrides loading a document from the src attribute.","description_html":"The <code>srcdoc</code> attribute for the <code><iframe></code> HTML element sets a string of HTML to embed in the document. The value of <code>srcdoc</code> overrides loading a document from the <code>src</code> attribute.","name":"srcdoc","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-srcdoc","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"20","chrome_android":"25","edge":"79","firefox":"25","firefox_android":"25","safari":"6","safari_ios":"6"}}},"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><area></code> and <code><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><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":{"compat_features":["api.CSSImportRule","api.CSSImportRule.href","api.CSSImportRule.media","api.CSSImportRule.styleSheet","css.at-rules.import"],"description":"The @import CSS at-rule loads styles from another stylesheet.","description_html":"The <code>@import</code> CSS at-rule loads styles from another stylesheet.","group":"css","name":"@import","spec":"https://drafts.csswg.org/css-cascade-5/#at-import","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><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"}}},"initial-letter":{"compat_features":["css.properties.initial-letter","css.properties.initial-letter.normal"],"description":"The initial-letter CSS property sets the number of lines the first letter of an element occupies. You can use the property to make a raised capital or drop cap.","description_html":"The <code>initial-letter</code> CSS property sets the number of lines the first letter of an element occupies. You can use the property to make a raised capital or drop cap.","name":"initial-letter","spec":"https://drafts.csswg.org/css-inline-3/#sizing-drop-initials","status":{"baseline":false,"support":{"chrome":"110","chrome_android":"110","edge":"110"}}},"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><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":{"caniuse":"internationalization","compat_features":["javascript.builtins.Array.toLocaleString","javascript.builtins.Array.toLocaleString.locales_parameter","javascript.builtins.Array.toLocaleString.options_parameter","javascript.builtins.BigInt.toLocaleString","javascript.builtins.BigInt.toLocaleString.locales_parameter","javascript.builtins.BigInt.toLocaleString.options_parameter","javascript.builtins.Date.toLocaleDateString","javascript.builtins.Date.toLocaleDateString.iana_time_zone_names","javascript.builtins.Date.toLocaleDateString.locales_parameter","javascript.builtins.Date.toLocaleDateString.options_parameter","javascript.builtins.Date.toLocaleString","javascript.builtins.Date.toLocaleString.iana_time_zone_names","javascript.builtins.Date.toLocaleString.locales_parameter","javascript.builtins.Date.toLocaleString.options_parameter","javascript.builtins.Date.toLocaleTimeString","javascript.builtins.Date.toLocaleTimeString.iana_time_zone_names","javascript.builtins.Date.toLocaleTimeString.locales_parameter","javascript.builtins.Date.toLocaleTimeString.options_parameter","javascript.builtins.Intl","javascript.builtins.Intl.Collator","javascript.builtins.Intl.Collator.Collator","javascript.builtins.Intl.Collator.Collator.options_caseFirst_parameter","javascript.builtins.Intl.Collator.Collator.options_collation_parameter","javascript.builtins.Intl.Collator.Collator.options_ignorePunctuation_parameter","javascript.builtins.Intl.Collator.Collator.options_localeMatcher_parameter","javascript.builtins.Intl.Collator.Collator.options_numeric_parameter","javascript.builtins.Intl.Collator.Collator.options_sensitivity_parameter","javascript.builtins.Intl.Collator.Collator.options_usage_parameter","javascript.builtins.Intl.Collator.compare","javascript.builtins.Intl.Collator.resolvedOptions","javascript.builtins.Intl.Collator.supportedLocalesOf","javascript.builtins.Intl.DateTimeFormat","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.locales_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_calendar_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_dateStyle_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_dayPeriod_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_fractionalSecondDigits_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_hourCycle_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_numberingSystem_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeStyle_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZoneName_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZoneName_parameter.extended_values","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZone_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZone_parameter.iana_time_zones","javascript.builtins.Intl.DateTimeFormat.format","javascript.builtins.Intl.DateTimeFormat.formatRange","javascript.builtins.Intl.DateTimeFormat.formatRangeToParts","javascript.builtins.Intl.DateTimeFormat.formatToParts","javascript.builtins.Intl.DateTimeFormat.resolvedOptions","javascript.builtins.Intl.DateTimeFormat.resolvedOptions.computed_timezone","javascript.builtins.Intl.DateTimeFormat.supportedLocalesOf","javascript.builtins.Intl.NumberFormat","javascript.builtins.Intl.NumberFormat.NumberFormat","javascript.builtins.Intl.NumberFormat.NumberFormat.locales_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_compactDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_currencyDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_currencySign_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_currency_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_localeMatcher_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_maximumFractionDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_maximumSignificantDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_minimumFractionDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_minimumIntegerDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_minimumSignificantDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_notation_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_numberingSystem_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_roundingIncrement_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_roundingMode_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_roundingPriority_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_signDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_signDisplay_parameter.negative","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_style_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_trailingZeroDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unitDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unit_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_useGrouping_parameter","javascript.builtins.Intl.NumberFormat.format","javascript.builtins.Intl.NumberFormat.format.number_parameter-string_decimal","javascript.builtins.Intl.NumberFormat.formatRange","javascript.builtins.Intl.NumberFormat.formatRangeToParts","javascript.builtins.Intl.NumberFormat.formatToParts","javascript.builtins.Intl.NumberFormat.resolvedOptions","javascript.builtins.Intl.NumberFormat.supportedLocalesOf","javascript.builtins.Intl.getCanonicalLocales","javascript.builtins.Intl.supportedValuesOf","javascript.builtins.Number.toLocaleString","javascript.builtins.Number.toLocaleString.locales_parameter","javascript.builtins.Number.toLocaleString.options_parameter","javascript.builtins.Object.toLocaleString","javascript.builtins.String.localeCompare","javascript.builtins.String.localeCompare.locales_parameter","javascript.builtins.String.localeCompare.options_parameter","javascript.builtins.String.toLocaleLowerCase","javascript.builtins.String.toLocaleLowerCase.locales_parameter","javascript.builtins.String.toLocaleUpperCase","javascript.builtins.String.toLocaleUpperCase.locales_parameter","javascript.builtins.TypedArray.toLocaleString"],"description":"The Intl API provides language sensitive string comparison, number formatting, date and time formatting, and more.","description_html":"The <code>Intl</code> API provides language sensitive string comparison, number formatting, date and time formatting, and more.","group":"intl","name":"Intl","spec":"https://tc39.es/ecma402/#introduction","status":{"baseline":"high","baseline_high_date":"2020-03-28","baseline_low_date":"2017-09-28","support":{"chrome":"24","chrome_android":"25","edge":"12","firefox":"29","firefox_android":"56","safari":"10","safari_ios":"10"}}},"intl-display-names":{"compat_features":["javascript.builtins.Intl.DisplayNames","javascript.builtins.Intl.DisplayNames.DisplayNames","javascript.builtins.Intl.DisplayNames.of","javascript.builtins.Intl.DisplayNames.resolvedOptions","javascript.builtins.Intl.DisplayNames.supportedLocalesOf"],"description":"The Intl.DisplayNames API provides localized names of language, region, script, and currency codes.","description_html":"The <code>Intl.DisplayNames</code> API provides localized names of language, region, script, and currency codes.","group":"intl","name":"Intl.DisplayNames","spec":"https://tc39.es/ecma402/#intl-displaynames-objects","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"81","chrome_android":"81","edge":"81","firefox":"86","firefox_android":"86","safari":"14.1","safari_ios":"14.5"}}},"intl-duration-format":{"compat_features":["javascript.builtins.Intl.DurationFormat","javascript.builtins.Intl.DurationFormat.DurationFormat","javascript.builtins.Intl.DurationFormat.format","javascript.builtins.Intl.DurationFormat.formatToParts","javascript.builtins.Intl.DurationFormat.resolvedOptions","javascript.builtins.Intl.DurationFormat.supportedLocalesOf"],"description":"The Intl.DurationFormat API creates a locale-aware formatter that turns an object representing a duration (such as days, hours, and minutes) into a string.","description_html":"The <code>Intl.DurationFormat</code> API creates a locale-aware formatter that turns an object representing a duration (such as days, hours, and minutes) into a string.","group":"intl","name":"Intl.DurationFormat","spec":"https://tc39.es/proposal-intl-duration-format/","status":{"baseline":false,"support":{"safari":"16.4","safari_ios":"16.4"}}},"intl-list-format":{"compat_features":["javascript.builtins.Intl.ListFormat","javascript.builtins.Intl.ListFormat.ListFormat","javascript.builtins.Intl.ListFormat.format","javascript.builtins.Intl.ListFormat.formatToParts","javascript.builtins.Intl.ListFormat.resolvedOptions","javascript.builtins.Intl.ListFormat.supportedLocalesOf"],"description":"The Intl.ListFormat API creates a locale-aware formatter that turns iterable objects into localized strings.","description_html":"The <code>Intl.ListFormat</code> API creates a locale-aware formatter that turns iterable objects into localized strings.","group":"intl","name":"Intl.ListFormat","spec":"https://tc39.es/ecma402/#listformat-objects","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"72","chrome_android":"72","edge":"79","firefox":"78","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"intl-locale":{"compat_features":["javascript.builtins.Intl.Locale","javascript.builtins.Intl.Locale.Locale","javascript.builtins.Intl.Locale.baseName","javascript.builtins.Intl.Locale.calendar","javascript.builtins.Intl.Locale.caseFirst","javascript.builtins.Intl.Locale.collation","javascript.builtins.Intl.Locale.hourCycle","javascript.builtins.Intl.Locale.language","javascript.builtins.Intl.Locale.maximize","javascript.builtins.Intl.Locale.minimize","javascript.builtins.Intl.Locale.numberingSystem","javascript.builtins.Intl.Locale.numeric","javascript.builtins.Intl.Locale.region","javascript.builtins.Intl.Locale.script","javascript.builtins.Intl.Locale.toString"],"description":"The Intl.Locale API parses Unicode locale identifiers, with language, region, and script codes, such as zh-Hans-CN or en-GB.","description_html":"The <code>Intl.Locale</code> API parses Unicode locale identifiers, with language, region, and script codes, such as <code>zh-Hans-CN</code> or <code>en-GB</code>.","group":"intl","name":"Intl.Locale","spec":"https://tc39.es/ecma402/#locale-objects","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"74","chrome_android":"74","edge":"79","firefox":"75","firefox_android":"79","safari":"14","safari_ios":"14"}}},"intl-locale-info":{"compat_features":["javascript.builtins.Intl.Locale.getCalendars","javascript.builtins.Intl.Locale.getCollations","javascript.builtins.Intl.Locale.getHourCycles","javascript.builtins.Intl.Locale.getNumberingSystems","javascript.builtins.Intl.Locale.getTextInfo","javascript.builtins.Intl.Locale.getTimeZones"],"description":"The getter methods of the Intl.Locale API provide supplemental information about a Unicode locale, such as the locale's calendar (for example, the first day in a week or the weekend start day), writing direction, 12- or 24-hour cycles, and numbering system.","description_html":"The getter methods of the <code>Intl.Locale</code> API provide supplemental information about a Unicode locale, such as the locale's calendar (for example, the first day in a week or the weekend start day), writing direction, 12- or 24-hour cycles, and numbering system.","group":"intl","name":"Intl.Locale info","spec":"https://tc39.es/ecma402/#locale-objects","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17"}}},"intl-plural-rules":{"compat_features":["javascript.builtins.Intl.PluralRules","javascript.builtins.Intl.PluralRules.PluralRules","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_roundingIncrement_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_roundingMode_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_roundingPriority_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_trailingZeroDisplay_parameter","javascript.builtins.Intl.PluralRules.resolvedOptions","javascript.builtins.Intl.PluralRules.select","javascript.builtins.Intl.PluralRules.selectRange","javascript.builtins.Intl.PluralRules.supportedLocalesOf"],"description":"The Intl.PluralRules API creates a locale-aware object that tells you which of the language's pluralization rules apply based on a given number.","description_html":"The <code>Intl.PluralRules</code> API creates a locale-aware object that tells you which of the language's pluralization rules apply based on a given number.","group":"intl","name":"Intl.PluralRules","spec":"https://tc39.es/ecma402/#pluralrules-objects","status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"63","chrome_android":"63","edge":"18","firefox":"58","firefox_android":"58","safari":"13","safari_ios":"13"}}},"intl-relative-time-format":{"compat_features":["javascript.builtins.Intl.RelativeTimeFormat","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.locales_parameter","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.options_parameter.options_localeMatcher_parameter","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.options_parameter.options_numberingSystem_parameter","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.options_parameter.options_numeric_parameter","javascript.builtins.Intl.RelativeTimeFormat.format","javascript.builtins.Intl.RelativeTimeFormat.formatToParts","javascript.builtins.Intl.RelativeTimeFormat.resolvedOptions","javascript.builtins.Intl.RelativeTimeFormat.supportedLocalesOf"],"description":"The Intl.RelativeTimeFormat API creates a locale-aware formatter that turns an object representing a relative time (such as '1 day ago') into a localized string.","description_html":"The <code>Intl.RelativeTimeFormat</code> API creates a locale-aware formatter that turns an object representing a relative time (such as '1 day ago') into a localized string.","group":"intl","name":"Intl.RelativeTimeFormat","spec":"https://tc39.es/ecma402/#relativetimeformat-objects","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"71","chrome_android":"71","edge":"79","firefox":"76","firefox_android":"79","safari":"14","safari_ios":"14"}}},"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><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><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.","group":"color-types","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"}}},"label":{"compat_features":["api.HTMLLabelElement","api.HTMLLabelElement.control","api.HTMLLabelElement.form","api.HTMLLabelElement.htmlFor","html.elements.label","html.elements.label.for"],"description":"The <label> HTML element represents a caption for a form field.","description_html":"The <code><label></code> HTML element represents a caption for a form field.","group":["forms","html-elements"],"name":"<label>","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-label-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"}}},"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"}}},"link":{"compat_features":["api.HTMLLinkElement","api.HTMLLinkElement.as","api.HTMLLinkElement.crossOrigin","api.HTMLLinkElement.disabled","api.HTMLLinkElement.href","api.HTMLLinkElement.hreflang","api.HTMLLinkElement.integrity","api.HTMLLinkElement.media","api.HTMLLinkElement.rel","api.HTMLLinkElement.relList","api.HTMLLinkElement.sizes","api.HTMLLinkElement.type","html.elements.link","html.elements.link.as","html.elements.link.crossorigin","html.elements.link.disabled","html.elements.link.href","html.elements.link.hreflang","html.elements.link.integrity","html.elements.link.media","html.elements.link.rel","html.elements.link.sizes","html.elements.link.type"],"description":"The <link> element creates a relationship between the current document and an external resource, such as a stylesheet or favicon.","description_html":"The <code><link></code> element creates a relationship between the current document and an external resource, such as a stylesheet or favicon.","group":"html-elements","name":"<link>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-link-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"}}},"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><ol></code>, <code><ul></code>, and <code><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><img></code> and <code><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><main></code> element represents the dominant content of a document. It is commonly used together with <code><header></code> and <code><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><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"],"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><audio></code> and <code><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><</code>, <code>></code>, <code><=</code>, and <code>>=</code> to define a range of values for a media feature. For example, <code>(400px < width < 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"}}},"menu":{"compat_features":["api.HTMLMenuElement","html.elements.menu"],"description":"The <menu> element represents an unordered list of action items (<li>), such as a toolbar. It is a semantic alternative to the <ul> element.","description_html":"The <code><menu></code> element represents an unordered list of action items (<code><li></code>), such as a toolbar. It is a semantic alternative to the <code><ul></code> element.","group":"html-elements","name":"<menu>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#menus","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"}}},"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><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><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><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"}}},"named-color":{"compat_features":["css.types.color.named-color","css.types.color.named-color.rebeccapurple","css.types.color.named-color.transparent"],"description":"Some CSS color values can be referenced by name, such as red or limegreen. They stand in for specific RGB color values.","description_html":"Some CSS color values can be referenced by name, such as <code>red</code> or <code>limegreen</code>. They stand in for specific RGB color values.","group":"color-types","name":"Named colors","spec":"https://drafts.csswg.org/css-color-4/#named-colors","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><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"}}},"number":{"compat_features":["javascript.builtins.Infinity","javascript.builtins.Math","javascript.builtins.Math.E","javascript.builtins.Math.LN10","javascript.builtins.Math.LN2","javascript.builtins.Math.LOG10E","javascript.builtins.Math.LOG2E","javascript.builtins.Math.PI","javascript.builtins.Math.SQRT1_2","javascript.builtins.Math.SQRT2","javascript.builtins.Math.abs","javascript.builtins.Math.acos","javascript.builtins.Math.acosh","javascript.builtins.Math.asin","javascript.builtins.Math.asinh","javascript.builtins.Math.atan","javascript.builtins.Math.atan2","javascript.builtins.Math.atanh","javascript.builtins.Math.cbrt","javascript.builtins.Math.ceil","javascript.builtins.Math.clz32","javascript.builtins.Math.cos","javascript.builtins.Math.cosh","javascript.builtins.Math.exp","javascript.builtins.Math.expm1","javascript.builtins.Math.floor","javascript.builtins.Math.fround","javascript.builtins.Math.hypot","javascript.builtins.Math.imul","javascript.builtins.Math.log","javascript.builtins.Math.log10","javascript.builtins.Math.log1p","javascript.builtins.Math.log2","javascript.builtins.Math.max","javascript.builtins.Math.min","javascript.builtins.Math.pow","javascript.builtins.Math.random","javascript.builtins.Math.round","javascript.builtins.Math.sign","javascript.builtins.Math.sin","javascript.builtins.Math.sinh","javascript.builtins.Math.sqrt","javascript.builtins.Math.tan","javascript.builtins.Math.tanh","javascript.builtins.Math.trunc","javascript.builtins.NaN","javascript.builtins.Number","javascript.builtins.Number.EPSILON","javascript.builtins.Number.MAX_SAFE_INTEGER","javascript.builtins.Number.MAX_VALUE","javascript.builtins.Number.MIN_SAFE_INTEGER","javascript.builtins.Number.MIN_VALUE","javascript.builtins.Number.NEGATIVE_INFINITY","javascript.builtins.Number.NaN","javascript.builtins.Number.Number","javascript.builtins.Number.POSITIVE_INFINITY","javascript.builtins.Number.isFinite","javascript.builtins.Number.isInteger","javascript.builtins.Number.isNaN","javascript.builtins.Number.isSafeInteger","javascript.builtins.Number.parseFloat","javascript.builtins.Number.parseInt","javascript.builtins.Number.toExponential","javascript.builtins.Number.toFixed","javascript.builtins.Number.toPrecision","javascript.builtins.Number.toString","javascript.builtins.Number.valueOf","javascript.builtins.isNaN","javascript.builtins.parseInt","javascript.grammar.binary_numeric_literals","javascript.grammar.decimal_numeric_literals","javascript.grammar.hexadecimal_numeric_literals","javascript.grammar.octal_numeric_literals"],"description":"The number type (and Number object) represents floating-point numbers, such as 42 or -4.201, while the Math API contains mathematical functions and constants. JavaScript can also represent boundless negative and positive values as Infinity or not-a-number as NaN (as in 0 * Infinity).","description_html":"The number type (and <code>Number</code> object) represents floating-point numbers, such as 42 or -4.201, while the <code>Math</code> API contains mathematical functions and constants. JavaScript can also represent boundless negative and positive values as <code>Infinity</code> or not-a-number as <code>NaN</code> (as in <code>0 * Infinity</code>).","group":"primitive-types","name":"Math and numbers","spec":"https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number-objects","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"}}},"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><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.","group":"color-types","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"}}},"opacity":{"compat_features":["css.properties.opacity","css.properties.opacity.percentages","svg.global_attributes.opacity"],"description":"The opacity CSS property sets the transparency of an element.","description_html":"The <code>opacity</code> CSS property sets the transparency of an element.","group":"css","name":"opacity","spec":"https://drafts.csswg.org/css-color-3/#transparency","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":"2","safari_ios":"1"}}},"opacity-svg":{"compat_features":["css.properties.fill-opacity","css.properties.stroke-opacity","svg.global_attributes.fill-opacity","svg.global_attributes.stroke-opacity"],"description":"The fill-opacity, and stroke-opacity SVG attributes and CSS properties control the transparency of a stroke or fill of an SVG element.","description_html":"The <code>fill-opacity</code>, and <code>stroke-opacity</code> SVG attributes and CSS properties control the transparency of a stroke or fill of an SVG element.","group":"svg","name":"Opacity (SVG)","spec":"https://svgwg.org/svg2-draft/render.html#ObjectAndGroupOpacityProperties","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"≤80","chrome_android":"80","edge":"≤80","firefox":"≤72","firefox_android":"79","safari":"≤13.1","safari_ios":"≤13.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.","group":"file-system","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><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><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><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"}}},"paint-order":{"compat_features":["css.properties.paint-order","svg.global_attributes.paint-order"],"description":"The paint-order CSS property sets the z-order of strokes, fills, and (in SVG content) markers. For example, paint-order: markers stroke fill; draws the markers, then stroke on top of markers, then fill on top of both markers and stroke.","description_html":"The <code>paint-order</code> CSS property sets the z-order of strokes, fills, and (in SVG content) markers. For example, <code>paint-order: markers stroke fill;</code> draws the markers, then stroke on top of markers, then fill on top of both markers and stroke.","group":"css","name":"paint-order","spec":"https://svgwg.org/svg2-draft/painting.html#PaintOrder","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123","firefox":"≤66","firefox_android":"66","safari":"≤12"}}},"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"}}},"password-credentials":{"compat_features":["api.PasswordCredential","api.PasswordCredential.PasswordCredential","api.PasswordCredential.iconURL","api.PasswordCredential.name","api.PasswordCredential.password"],"description":"The PasswordCredential API represents a username and password.","description_html":"The <code>PasswordCredential</code> API represents a username and password.","group":"credential-management","name":"Password credentials","spec":"https://w3c.github.io/webappsec-credential-management/#passwords","status":{"baseline":false,"support":{"chrome":"60","chrome_android":"60","edge":"79"}}},"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><picture></code> element is used for art direction in responsive images, where a different image is displayed based on the <code><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><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><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"}}},"presentation-api":{"compat_features":["api.Navigator.presentation","api.Presentation","api.Presentation.defaultRequest","api.Presentation.receiver","api.PresentationAvailability","api.PresentationAvailability.change_event","api.PresentationAvailability.value","api.PresentationConnection","api.PresentationConnection.binaryType","api.PresentationConnection.close","api.PresentationConnection.id","api.PresentationConnection.send","api.PresentationConnection.state","api.PresentationConnection.terminate","api.PresentationConnection.url","api.PresentationConnectionAvailableEvent","api.PresentationConnectionAvailableEvent.PresentationConnectionAvailableEvent","api.PresentationConnectionAvailableEvent.connection","api.PresentationConnectionCloseEvent","api.PresentationConnectionCloseEvent.PresentationConnectionCloseEvent","api.PresentationConnectionCloseEvent.message","api.PresentationConnectionCloseEvent.reason","api.PresentationConnectionList","api.PresentationConnectionList.connections","api.PresentationReceiver","api.PresentationReceiver.connectionList","api.PresentationRequest","api.PresentationRequest.PresentationRequest","api.PresentationRequest.connectionavailable_event","api.PresentationRequest.getAvailability","api.PresentationRequest.reconnect","api.PresentationRequest.start","html.elements.iframe.sandbox.allow-presentation"],"description":"The Presentation API shows or controls content on another display, such as a network-connected TV or projector.","description_html":"The Presentation API shows or controls content on another display, such as a network-connected TV or projector.","name":"Presentation API","spec":"https://w3c.github.io/presentation-api/","status":{"baseline":false,"support":{"chrome":"47","chrome_android":"47","edge":"79"}}},"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><audio></code> or <code><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"}}},"profiler":{"compat_features":["api.Profiler","api.Profiler.Profiler","api.Profiler.sampleInterval","api.Profiler.stop","api.Profiler.stopped"],"description":"The Profiler API records data about the execution of a page, which you can send to a server for later analysis. Also known as self-profiling.","description_html":"The <code>Profiler</code> API records data about the execution of a page, which you can send to a server for later analysis. Also known as self-profiling.","name":"Profiler","spec":"https://wicg.github.io/js-self-profiling/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"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><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.AggregateError","javascript.builtins.AggregateError.AggregateError","javascript.builtins.AggregateError.errors","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-try":{"compat_features":["javascript.builtins.Promise.try"],"description":"The Promise.try() static method returns a promise that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a Promise.","description_html":"The <code>Promise.try()</code> static method returns a promise that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a <code>Promise</code>.","group":"promises","name":"Promise.try()","spec":"https://tc39.es/proposal-promise-try/","status":{"baseline":false,"support":{"chrome":"128","chrome_android":"128","edge":"128"}}},"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/ecma262/multipage/control-abstraction-objects.html#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"}}},"proxy-reflect":{"caniuse":"proxy","compat_features":["javascript.builtins.Proxy","javascript.builtins.Proxy.Proxy","javascript.builtins.Proxy.handler.apply","javascript.builtins.Proxy.handler.construct","javascript.builtins.Proxy.handler.defineProperty","javascript.builtins.Proxy.handler.deleteProperty","javascript.builtins.Proxy.handler.get","javascript.builtins.Proxy.handler.getOwnPropertyDescriptor","javascript.builtins.Proxy.handler.getPrototypeOf","javascript.builtins.Proxy.handler.has","javascript.builtins.Proxy.handler.isExtensible","javascript.builtins.Proxy.handler.ownKeys","javascript.builtins.Proxy.handler.preventExtensions","javascript.builtins.Proxy.handler.set","javascript.builtins.Proxy.handler.setPrototypeOf","javascript.builtins.Proxy.revocable","javascript.builtins.Reflect","javascript.builtins.Reflect.apply","javascript.builtins.Reflect.construct","javascript.builtins.Reflect.defineProperty","javascript.builtins.Reflect.deleteProperty","javascript.builtins.Reflect.get","javascript.builtins.Reflect.getOwnPropertyDescriptor","javascript.builtins.Reflect.getPrototypeOf","javascript.builtins.Reflect.has","javascript.builtins.Reflect.isExtensible","javascript.builtins.Reflect.ownKeys","javascript.builtins.Reflect.preventExtensions","javascript.builtins.Reflect.set","javascript.builtins.Reflect.setPrototypeOf"],"description":"The Proxy and Reflect JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).","description_html":"The <code>Proxy</code> and <code>Reflect</code> JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).","group":"javascript","name":"Proxy and Reflect","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/reflection.html#sec-reflection","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"49","chrome_android":"49","edge":"12","firefox":"18","firefox_android":"18","safari":"10","safari_ios":"10"}}},"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><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><input></code> and <code><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"}}},"regexp":{"compat_features":["javascript.builtins.RegExp","javascript.builtins.RegExp.@@match","javascript.builtins.RegExp.@@matchAll","javascript.builtins.RegExp.@@replace","javascript.builtins.RegExp.@@search","javascript.builtins.RegExp.@@species","javascript.builtins.RegExp.@@split","javascript.builtins.RegExp.RegExp","javascript.builtins.RegExp.dotAll","javascript.builtins.RegExp.exec","javascript.builtins.RegExp.flags","javascript.builtins.RegExp.global","javascript.builtins.RegExp.global.prototype_accessor","javascript.builtins.RegExp.hasIndices","javascript.builtins.RegExp.ignoreCase","javascript.builtins.RegExp.ignoreCase.prototype_accessor","javascript.builtins.RegExp.lastIndex","javascript.builtins.RegExp.multiline","javascript.builtins.RegExp.multiline.prototype_accessor","javascript.builtins.RegExp.source","javascript.builtins.RegExp.source.empty_regex_string","javascript.builtins.RegExp.source.escaping","javascript.builtins.RegExp.source.prototype_accessor","javascript.builtins.RegExp.sticky","javascript.builtins.RegExp.sticky.anchored_sticky_flag","javascript.builtins.RegExp.sticky.prototype_accessor","javascript.builtins.RegExp.test","javascript.builtins.RegExp.toString","javascript.builtins.RegExp.toString.escaping","javascript.builtins.RegExp.unicode","javascript.builtins.RegExp.unicodeSets","javascript.grammar.regular_expression_literals","javascript.regular_expressions.backreference","javascript.regular_expressions.capturing_group","javascript.regular_expressions.character_class","javascript.regular_expressions.character_class_escape","javascript.regular_expressions.character_escape","javascript.regular_expressions.character_escape.unicode","javascript.regular_expressions.disjunction","javascript.regular_expressions.input_boundary_assertion","javascript.regular_expressions.literal_character","javascript.regular_expressions.lookahead_assertion","javascript.regular_expressions.lookbehind_assertion","javascript.regular_expressions.modifier","javascript.regular_expressions.named_backreference","javascript.regular_expressions.named_capturing_group","javascript.regular_expressions.named_capturing_group.duplicate_named_capturing_groups","javascript.regular_expressions.non_capturing_group","javascript.regular_expressions.quantifier","javascript.regular_expressions.unicode_character_class_escape","javascript.regular_expressions.wildcard","javascript.regular_expressions.word_boundary_assertion"],"description":"The RegExp object represents a regular expression, a notation for matching text patterns.","description_html":"The <code>RegExp</code> object represents a regular expression, a notation for matching text patterns.","name":"Regular expressions","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects","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"}}},"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><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-buffers":{"compat_features":["javascript.builtins.ArrayBuffer.ArrayBuffer.maxByteLength_option","javascript.builtins.ArrayBuffer.maxByteLength","javascript.builtins.ArrayBuffer.resizable","javascript.builtins.ArrayBuffer.resize","javascript.builtins.SharedArrayBuffer.SharedArrayBuffer.maxByteLength_option","javascript.builtins.SharedArrayBuffer.grow","javascript.builtins.SharedArrayBuffer.growable","javascript.builtins.SharedArrayBuffer.maxByteLength"],"description":"The resize() method of an ArrayBuffer and the grow() method of a SharedArrayBuffer, 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> and the <code>grow()</code> method of a <code>SharedArrayBuffer</code>, constructed with the <code>maxByteLength</code> option, changes the size of the buffer in place.","name":"Resizable buffers","spec":["https://tc39.es/ecma262/multipage/structured-data.html#sec-get-arraybuffer.prototype.resizable","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"}}},"resize":{"caniuse":"css-resize","compat_features":["css.properties.resize","css.properties.resize.block","css.properties.resize.block_level_support","css.properties.resize.inline"],"description":"The resize CSS property sets whether an element can be resized by the user, and on which axes.","description_html":"The <code>resize</code> CSS property sets whether an element can be resized by the user, and on which axes.","group":"css","name":"resize (CSS property)","spec":"https://drafts.csswg.org/css-ui-4/#resize","status":{"baseline":false,"support":{"chrome":"4","chrome_android":"18","edge":"79","firefox":"5","firefox_android":"5","safari":"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"}}},"rgb":{"compat_features":["css.types.color.rgb","css.types.color.rgb.alpha_parameter","css.types.color.rgb.float_values","css.types.color.rgb.mixed_type_parameters","css.types.color.rgb.space_separated_parameters","css.types.color.rgb_hexadecimal_notation","css.types.color.rgb_hexadecimal_notation.alpha_hexadecimal_notation"],"description":"The rgb(), rgba(), and hexadecimal (as in #004488ff`) notations pick colors using red, green, blue, and alpha (transparency) channels.","description_html":"The <code>rgb()</code>, rgba()<code>, and hexadecimal (as in </code>#004488ff`) notations pick colors using red, green, blue, and alpha (transparency) channels.","group":"color-types","name":"RGB","spec":"https://drafts.csswg.org/css-color-4/#rgb-functions","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"52","firefox_android":"52","safari":"12.1","safari_ios":"12.2"}}},"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><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"}}},"s":{"compat_features":["html.elements.s"],"description":"The <s> HTML element indicates text that is no longer relevant or accurate, styling text as strikethrough by default.","description_html":"The <code><s></code> HTML element indicates text that is no longer relevant or accurate, styling text as strikethrough by default.","group":"html-elements","name":"<s>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-s-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"}}},"safe-area-inset":{"compat_features":["css.properties.custom-property.env","css.properties.custom-property.env.safe-area-inset-bottom","css.properties.custom-property.env.safe-area-inset-left","css.properties.custom-property.env.safe-area-inset-right","css.properties.custom-property.env.safe-area-inset-top"],"description":"The safe-area-inset- CSS environment variables represent a rectangle that cannot cut off content within a non-rectangular screen. For example, top:\\ env(safe-area-inset-top); positions the top of an element below the notch on an iPhone.","description_html":"The <code>safe-area-inset-</code> CSS environment variables represent a rectangle that cannot cut off content within a non-rectangular screen. For example, <code>top:\\ env(safe-area-inset-top);</code> positions the top of an element below the notch on an iPhone.","group":"environment-variables","name":"Safe area inset environment variables","spec":"https://drafts.csswg.org/css-env-1/#safe-area-insets","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"65","firefox_android":"65","safari":"11.1","safari_ios":"11.3"}}},"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><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"}}},"script":{"compat_features":["api.HTMLScriptElement","api.HTMLScriptElement.async","api.HTMLScriptElement.crossOrigin","api.HTMLScriptElement.defer","api.HTMLScriptElement.integrity","api.HTMLScriptElement.src","api.HTMLScriptElement.supports_static","api.HTMLScriptElement.text","api.HTMLScriptElement.type","html.elements.noscript","html.elements.script","html.elements.script.async","html.elements.script.crossorigin","html.elements.script.defer","html.elements.script.integrity","html.elements.script.src","html.elements.script.type"],"description":"The <script> element contains or loads data or executable code. This is typically used to load JavaScript code. The <noscript> element represents alternative content to show when scripting is not allowed.","description_html":"The <code><script></code> element contains or loads data or executable code. This is typically used to load JavaScript code. The <code><noscript></code> element represents alternative content to show when scripting is not allowed.","group":"html-elements","name":"<script> and <noscript>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#script","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"}}},"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><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><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><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"}}},"select":{"compat_features":["api.HTMLOptGroupElement","api.HTMLOptGroupElement.disabled","api.HTMLOptGroupElement.label","api.HTMLOptionElement","api.HTMLOptionElement.Option","api.HTMLOptionElement.defaultSelected","api.HTMLOptionElement.disabled","api.HTMLOptionElement.form","api.HTMLOptionElement.index","api.HTMLOptionElement.label","api.HTMLOptionElement.selected","api.HTMLOptionElement.text","api.HTMLOptionElement.value","api.HTMLSelectElement","api.HTMLSelectElement.add","api.HTMLSelectElement.add.index_before_parameter","api.HTMLSelectElement.autocomplete","api.HTMLSelectElement.disabled","api.HTMLSelectElement.form","api.HTMLSelectElement.item","api.HTMLSelectElement.labels","api.HTMLSelectElement.length","api.HTMLSelectElement.multiple","api.HTMLSelectElement.name","api.HTMLSelectElement.namedItem","api.HTMLSelectElement.options","api.HTMLSelectElement.remove","api.HTMLSelectElement.required","api.HTMLSelectElement.selectedIndex","api.HTMLSelectElement.selectedOptions","api.HTMLSelectElement.size","api.HTMLSelectElement.type","api.HTMLSelectElement.value","html.elements.optgroup","html.elements.optgroup.disabled","html.elements.optgroup.label","html.elements.option","html.elements.option.disabled","html.elements.option.label","html.elements.option.selected","html.elements.option.value","html.elements.select","html.elements.select.disabled","html.elements.select.form","html.elements.select.hr_in_select","html.elements.select.multiple","html.elements.select.name","html.elements.select.required","html.elements.select.size"],"description":"The <select> element provides a menu of options for a user to pick from, typically rendered as a dropdown list.","description_html":"The <code><select></code> element provides a menu of options for a user to pick from, typically rendered as a dropdown list.","group":["forms","html-elements"],"name":"<select>","spec":["https://html.spec.whatwg.org/multipage/form-elements.html#the-optgroup-element","https://html.spec.whatwg.org/multipage/form-elements.html#the-option-element","https://html.spec.whatwg.org/multipage/form-elements.html#the-select-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"}}},"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"}}},"shared-memory":{"caniuse":"sharedarraybuffer","compat_features":["javascript.builtins.Atomics","javascript.builtins.Atomics.add","javascript.builtins.Atomics.and","javascript.builtins.Atomics.compareExchange","javascript.builtins.Atomics.exchange","javascript.builtins.Atomics.isLockFree","javascript.builtins.Atomics.load","javascript.builtins.Atomics.notify","javascript.builtins.Atomics.or","javascript.builtins.Atomics.store","javascript.builtins.Atomics.sub","javascript.builtins.Atomics.wait","javascript.builtins.Atomics.xor","javascript.builtins.DataView.DataView.sharedarraybuffer_support","javascript.builtins.SharedArrayBuffer","javascript.builtins.SharedArrayBuffer.@@species","javascript.builtins.SharedArrayBuffer.SharedArrayBuffer","javascript.builtins.SharedArrayBuffer.byteLength","javascript.builtins.SharedArrayBuffer.slice"],"description":"The SharedArrayBuffer object represents bytes shared between multiple workers and the main thread. The Atomics object safely accesses SharedArrayBuffer data to make sure predictable values are read and written and that operations are not interrupted.","description_html":"The <code>SharedArrayBuffer</code> object represents bytes shared between multiple workers and the main thread. The <code>Atomics</code> object safely accesses <code>SharedArrayBuffer</code> data to make sure predictable values are read and written and that operations are not interrupted.","group":"javascript","name":"SharedArrayBuffer and Atomics","spec":["https://tc39.es/ecma262/multipage/structured-data.html#sec-sharedarraybuffer-objects","https://tc39.es/ecma262/multipage/structured-data.html#sec-atomics-object"],"status":{"baseline":"high","baseline_high_date":"2024-06-13","baseline_low_date":"2021-12-13","support":{"chrome":"68","chrome_android":"89","edge":"79","firefox":"79","firefox_android":"79","safari":"15.2","safari_ios":"15.2"}}},"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><input></code> elements shows the user interface for picking a value. For example, for <code><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><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><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><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><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><source></code> element sets a media resource for the <code><picture></code>, <code><video></code>, and <code><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><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 sets 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 sets 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"}}},"string-at":{"compat_features":["javascript.builtins.String.at"],"description":"The at() method of strings returns the character (one UTF-16 code unit) at an index, including negative indices for getting the character relative to the end of the string. Also known as the relative indexing method.","description_html":"The <code>at()</code> method of strings returns the character (one UTF-16 code unit) at an index, including negative indices for getting the character relative to the end of the string. Also known as the relative indexing method.","group":"string","name":"String at()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","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"}}},"string-codepoint":{"compat_features":["javascript.builtins.String.codePointAt","javascript.builtins.String.fromCodePoint"],"description":"The codePointAt() method returns the numeric value of the UTF-16 code point at an index of the string. The fromCodePoint() method returns a string created from one or more code points.","description_html":"The <code>codePointAt()</code> method returns the numeric value of the UTF-16 code point at an index of the string. The <code>fromCodePoint()</code> method returns a string created from one or more code points.","group":"string","name":"String codePointAt() and fromCodePoint()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"29","firefox_android":"29","safari":"9","safari_ios":"9"}}},"string-includes":{"caniuse":"es6-string-includes","compat_features":["javascript.builtins.String.includes"],"description":"The includes() method of strings returns whether a search string appears within the string.","description_html":"The <code>includes()</code> method of strings returns whether a search string appears within the string.","group":"string","name":"String includes()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"40","firefox_android":"40","safari":"9","safari_ios":"9"}}},"string-matchall":{"compat_features":["javascript.builtins.String.matchAll"],"description":"The matchAll() method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups.","description_html":"The <code>matchAll()</code> method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups.","group":"string","name":"String matchAll()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"67","firefox_android":"67","safari":"13","safari_ios":"13"}}},"string-normalize":{"compat_features":["javascript.builtins.String.normalize"],"description":"The normalize() method of strings returns a Unicode normal form of a string as a new string. More than one code point sequence can represent the same characters. You can use the normalize() method to find canonically or compatibly equivalent strings.","description_html":"The <code>normalize()</code> method of strings returns a Unicode normal form of a string as a new string. More than one code point sequence can represent the same characters. You can use the <code>normalize()</code> method to find canonically or compatibly equivalent strings.","group":"string","name":"String normalize()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"34","chrome_android":"34","edge":"12","firefox":"31","firefox_android":"31","safari":"10","safari_ios":"10"}}},"string-pad":{"caniuse":"pad-start-end","compat_features":["javascript.builtins.String.padEnd","javascript.builtins.String.padStart"],"description":"The padStart() and padEnd() methods of strings return a string lengthened to a minimum number of characters by adding characters to the start or end of the string.","description_html":"The <code>padStart()</code> and <code>padEnd()</code> methods of strings return a string lengthened to a minimum number of characters by adding characters to the start or end of the string.","group":"string","name":"String padStart() and padEnd()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"57","chrome_android":"57","edge":"15","firefox":"48","firefox_android":"48","safari":"10","safari_ios":"10"}}},"string-raw":{"compat_features":["javascript.builtins.String.raw"],"description":"The String.raw() static method interpolates template literal substitutions, but ignores escape sequences. It is the tag function for template literals.","description_html":"The <code>String.raw()</code> static method interpolates template literal substitutions, but ignores escape sequences. It is the tag function for template literals.","group":"string","name":"String raw()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"34","firefox_android":"34","safari":"9","safari_ios":"9"}}},"string-repeat":{"compat_features":["javascript.builtins.String.repeat"],"description":"The repeat() method of strings returns the original string repeated a number of times.","description_html":"The <code>repeat()</code> method of strings returns the original string repeated a number of times.","group":"string","name":"String repeat()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"36","edge":"12","firefox":"24","firefox_android":"24","safari":"9","safari_ios":"9"}}},"string-replaceall":{"compat_features":["javascript.builtins.String.replaceAll"],"description":"The replaceAll() method of strings returns a new string where all matches of a pattern (a string or regular expression) have been substituted with a replacement string.","description_html":"The <code>replaceAll()</code> method of strings returns a new string where all matches of a pattern (a string or regular expression) have been substituted with a replacement string.","group":"string","name":"String replaceAll()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2023-02-27","baseline_low_date":"2020-08-27","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"77","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"string-startsends-with":{"compat_features":["javascript.builtins.String.endsWith","javascript.builtins.String.startsWith"],"description":"The startsWith() and endsWith() methods of strings returns whether a search string appears at the beginning or end of the provided string.","description_html":"The <code>startsWith()</code> and <code>endsWith()</code> methods of strings returns whether a search string appears at the beginning or end of the provided string.","group":"string","name":"String startsWith() and endsWith()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"36","edge":"12","firefox":"17","firefox_android":"17","safari":"9","safari_ios":"9"}}},"string-trim-startend":{"compat_features":["javascript.builtins.String.trimEnd","javascript.builtins.String.trimStart"],"description":"The trimStart() and trimEnd() methods of strings return a new string with whitespace removed from the beginning or end of the string.","description_html":"The <code>trimStart()</code> and <code>trimEnd()</code> methods of strings return a new string with whitespace removed from the beginning or end of the string.","group":"string","name":"String trimStart() and trimEnd()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"61","firefox_android":"61","safari":"12","safari_ios":"12"}}},"string-wellformed":{"compat_features":["javascript.builtins.String.isWellFormed","javascript.builtins.String.toWellFormed"],"description":"The isWellFormed() method of strings returns a boolean indicating if the string contains any Unicode lone surrogates. The toWellFormed() method returns a new string where all lone surrogates are replaced by the Unicode replacement character.","description_html":"The <code>isWellFormed()</code> method of strings returns a boolean indicating if the string contains any Unicode lone surrogates. The <code>toWellFormed()</code> method returns a new string where all lone surrogates are replaced by the Unicode replacement character.","group":"string","name":"String isWellFormed() and toWellFormed()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"low","baseline_low_date":"2023-10-24","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"119","firefox_android":"119","safari":"16.4","safari_ios":"16.4"}}},"strings":{"compat_features":["javascript.builtins.String","javascript.builtins.String.@@iterator","javascript.builtins.String.String","javascript.builtins.String.charAt","javascript.builtins.String.charCodeAt","javascript.builtins.String.concat","javascript.builtins.String.fromCharCode","javascript.builtins.String.indexOf","javascript.builtins.String.lastIndexOf","javascript.builtins.String.length","javascript.builtins.String.match","javascript.builtins.String.replace","javascript.builtins.String.search","javascript.builtins.String.slice","javascript.builtins.String.split","javascript.builtins.String.substring","javascript.builtins.String.toLowerCase","javascript.builtins.String.toString","javascript.builtins.String.toUpperCase","javascript.builtins.String.trim","javascript.builtins.String.unicode_code_point_escapes","javascript.builtins.String.valueOf","javascript.grammar.string_literals"],"description":"The string type (and String object) represents a sequence of characters.","description_html":"The string type (and <code>String</code> object) represents a sequence of characters.","group":"primitive-types","name":"String (initial support)","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","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"}}},"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><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><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><sub></code> and <code><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"}}},"supports":{"caniuse":"css-featurequeries","compat_features":["api.CSSSupportsRule","css.at-rules.import.supports","css.at-rules.supports","css.at-rules.supports.font-format","css.at-rules.supports.font-tech","css.at-rules.supports.selector"],"description":"The @supports at-rule applies styles based on a browser's support for CSS features, such as a CSS property and value. Also known as feature queries.","description_html":"The <code>@supports</code> at-rule applies styles based on a browser's support for CSS features, such as a CSS property and value. Also known as feature queries.","group":"css","name":"@supports","spec":"https://drafts.csswg.org/css-conditional-3/#at-supports","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"28","chrome_android":"28","edge":"12","firefox":"22","firefox_android":"22","safari":"9","safari_ios":"9"}}},"system-color":{"compat_features":["css.types.color.system-color","css.types.color.system-color.accentcolor_accentcolortext","css.types.color.system-color.mark_marktext_buttonborder"],"description":"The system color CSS keywords, such as ButtonBorder or LinkText, allow you to match default colors from the user agent.","description_html":"The system color CSS keywords, such as <code>ButtonBorder</code> or <code>LinkText</code>, allow you to match default colors from the user agent.","group":"color-types","name":"System colors","spec":"https://drafts.csswg.org/css-color-4/#css-system-colors","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"}}},"tab-size":{"caniuse":"css3-tabsize","compat_features":["css.properties.tab-size","css.properties.tab-size.length"],"description":"The tab-size CSS property sets the width of the tab character.","description_html":"The <code>tab-size</code> CSS property sets the width of the tab character.","group":"white-space","name":"tab-size","spec":"https://drafts.csswg.org/css-text-4/#tab-size-property","status":{"baseline":"high","baseline_high_date":"2024-02-10","baseline_low_date":"2021-08-10","support":{"chrome":"42","chrome_android":"42","edge":"79","firefox":"91","firefox_android":"91","safari":"13.1","safari_ios":"13.4"}}},"tabindex":{"caniuse":"tabindex-attr","compat_features":["api.HTMLElement.tabIndex","html.global_attributes.tabindex"],"description":"The tabindex HTML attribute make an element focusable, and sets the element's relative ordering for sequential focus navigation.","description_html":"The <code>tabindex</code> HTML attribute make an element focusable, and sets 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><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><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.epochMilliseconds","javascript.builtins.Temporal.Instant.epochNanoseconds","javascript.builtins.Temporal.Instant.equals","javascript.builtins.Temporal.Instant.from","javascript.builtins.Temporal.Instant.fromEpochMilliseconds","javascript.builtins.Temporal.Instant.fromEpochNanoseconds","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.toZonedDateTimeISO","javascript.builtins.Temporal.Instant.until","javascript.builtins.Temporal.Instant.valueOf","javascript.builtins.Temporal.Now","javascript.builtins.Temporal.Now.instant","javascript.builtins.Temporal.Now.plainDateISO","javascript.builtins.Temporal.Now.plainDateTimeISO","javascript.builtins.Temporal.Now.plainTimeISO","javascript.builtins.Temporal.Now.timeZoneID","javascript.builtins.Temporal.Now.zonedDateTimeISO","javascript.builtins.Temporal.PlainDate","javascript.builtins.Temporal.PlainDate.PlainDate","javascript.builtins.Temporal.PlainDate.add","javascript.builtins.Temporal.PlainDate.calendarId","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.PlainDate.yearOfWeek","javascript.builtins.Temporal.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.add","javascript.builtins.Temporal.PlainDateTime.calendarId","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.toPlainTime","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.withPlainTime","javascript.builtins.Temporal.PlainDateTime.year","javascript.builtins.Temporal.PlainDateTime.yearOfWeek","javascript.builtins.Temporal.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.calendarId","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.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.toString","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.calendarId","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.getOffsetNanosecondsFor","javascript.builtins.Temporal.TimeZone.getOffsetStringFor","javascript.builtins.Temporal.TimeZone.getPlainDateTimeFor","javascript.builtins.Temporal.TimeZone.getPossibleInstantsFor","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.calendarId","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.epochMilliseconds","javascript.builtins.Temporal.ZonedDateTime.epochNanoseconds","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.getTimeZoneTransition","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.timeZoneId","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.toPlainTime","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.withPlainTime","javascript.builtins.Temporal.ZonedDateTime.withTimeZone","javascript.builtins.Temporal.ZonedDateTime.year","javascript.builtins.Temporal.ZonedDateTime.yearOfWeek"],"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><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-mode":{"compat_features":["css.properties.text-wrap-mode","css.properties.text-wrap-mode.nowrap","css.properties.text-wrap-mode.wrap"],"description":"The text-wrap-mode CSS property sets whether lines may wrap with the values wrap and nowrap. It is a longhand property for both white-space and text-wrap.","description_html":"The <code>text-wrap-mode</code> CSS property sets whether lines may wrap with the values <code>wrap</code> and <code>nowrap</code>. It is a longhand property for both <code>white-space</code> and <code>text-wrap</code>.","group":"white-space","name":"text-wrap-mode","spec":"https://drafts.csswg.org/css-text-4/#text-wrap-mode","status":{"baseline":false,"support":{"firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"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><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><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><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/ecma262/multipage/structured-data.html#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":"low","baseline_low_date":"2024-08-06","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"129","firefox_android":"129","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() (CSS)","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.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><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"}}},"user-select":{"caniuse":"user-select-none","compat_features":["css.properties.user-select","css.properties.user-select.all","css.properties.user-select.auto","css.properties.user-select.contain","css.properties.user-select.none","css.properties.user-select.text"],"description":"The user-select CSS property controls which elements can be selected by the user.","description_html":"The <code>user-select</code> CSS property controls which elements can be selected by the user.","group":"css","name":"user-select","spec":"https://drafts.csswg.org/css-ui-4/#content-selection","status":{"baseline":false,"support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"69","firefox_android":"79"}}},"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><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><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><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"}}},"weak-references":{"compat_features":["javascript.builtins.FinalizationRegistry","javascript.builtins.FinalizationRegistry.FinalizationRegistry","javascript.builtins.FinalizationRegistry.register","javascript.builtins.FinalizationRegistry.unregister","javascript.builtins.WeakRef","javascript.builtins.WeakRef.WeakRef","javascript.builtins.WeakRef.deref"],"description":"The WeakRef and FinalizationRegistry objects hold references to garbage-collectable objects without creating strong references that prevent their garbage collection.","description_html":"The <code>WeakRef</code> and <code>FinalizationRegistry</code> objects hold references to garbage-collectable objects without creating strong references that prevent their garbage collection.","group":"javascript","name":"Weak references","snapshot":"ecmascript-2021","spec":["https://tc39.es/ecma262/multipage/managing-memory.html#sec-managing-memory"],"status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"79","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"weakmap":{"compat_features":["javascript.builtins.WeakMap","javascript.builtins.WeakMap.WeakMap","javascript.builtins.WeakMap.WeakMap.iterable_allowed","javascript.builtins.WeakMap.WeakMap.null_allowed","javascript.builtins.WeakMap.delete","javascript.builtins.WeakMap.get","javascript.builtins.WeakMap.has","javascript.builtins.WeakMap.set","javascript.builtins.WeakMap.symbol_as_keys"],"description":"A WeakMap object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.","description_html":"A <code>WeakMap</code> object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.","group":"collections","name":"WeakMap","spec":"https://tc39.es/ecma262/multipage/keyed-collections.html#sec-weakmap-objects","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"6","firefox_android":"6","safari":"8","safari_ios":"8"}}},"weakset":{"compat_features":["javascript.builtins.WeakSet","javascript.builtins.WeakSet.WeakSet","javascript.builtins.WeakSet.WeakSet.iterable_allowed","javascript.builtins.WeakSet.WeakSet.null_allowed","javascript.builtins.WeakSet.add","javascript.builtins.WeakSet.delete","javascript.builtins.WeakSet.has","javascript.builtins.WeakSet.symbol_as_keys"],"description":"A WeakSet object stores unique values of any type without creating strong references to the values, such that membership in the set does not prevent garbage collection of the value.","description_html":"A <code>WeakSet</code> object stores unique values of any type without creating strong references to the values, such that membership in the set does not prevent garbage collection of the value.","group":"collections","name":"WeakSet","spec":"https://tc39.es/ecma262/multipage/keyed-collections.html#sec-weakset-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"34","firefox_android":"34","safari":"9","safari_ios":"9"}}},"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-cryptography":{"caniuse":"cryptography","compat_features":["api.Crypto","api.Crypto.getRandomValues","api.Crypto.randomUUID","api.Crypto.subtle","api.CryptoKey","api.CryptoKey.algorithm","api.CryptoKey.extractable","api.CryptoKey.type","api.CryptoKey.usages","api.SubtleCrypto","api.SubtleCrypto.decrypt","api.SubtleCrypto.deriveBits","api.SubtleCrypto.deriveBits.x25519","api.SubtleCrypto.deriveKey","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_aes","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_hkdf","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_hmac","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_pbkdf2","api.SubtleCrypto.deriveKey.x25519","api.SubtleCrypto.digest","api.SubtleCrypto.encrypt","api.SubtleCrypto.exportKey","api.SubtleCrypto.exportKey.ed25519","api.SubtleCrypto.exportKey.x25519","api.SubtleCrypto.generateKey","api.SubtleCrypto.generateKey.ed25519","api.SubtleCrypto.generateKey.x25519","api.SubtleCrypto.importKey","api.SubtleCrypto.importKey.ed25519","api.SubtleCrypto.importKey.x25519","api.SubtleCrypto.sign","api.SubtleCrypto.sign.ed25519","api.SubtleCrypto.unwrapKey","api.SubtleCrypto.verify","api.SubtleCrypto.verify.ed25519","api.SubtleCrypto.wrapKey","api.crypto"],"description":"The Web Cryptography API performs low-level cryptographic operations, such as encryption, decryption, and signature verification. Also known as the Web Crypto API.","description_html":"The Web Cryptography API performs low-level cryptographic operations, such as encryption, decryption, and signature verification. Also known as the Web Crypto API.","name":"Web Cryptography","spec":["https://w3c.github.io/webcrypto/","https://wicg.github.io/webcrypto-secure-curves/"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"11","chrome_android":"18","edge":"12","firefox":"21","firefox_android":"21","safari":"5","safari_ios":"5"}}},"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"}}},"web-otp":{"compat_features":["api.CredentialsContainer.get.otp_option","api.OTPCredential","api.OTPCredential.code","http.headers.Permissions-Policy.otp-credentials"],"description":"The OTPCredential API represents a one-time-password (OTP).","description_html":"The <code>OTPCredential</code> API represents a one-time-password (OTP).","group":"credential-management","name":"WebOTP","spec":"https://wicg.github.io/web-otp/","status":{"baseline":false,"support":{"chrome":"93","chrome_android":"84","edge":"93"}}},"webauthn":{"caniuse":"webauthn","compat_features":["api.AuthenticatorAssertionResponse","api.AuthenticatorAssertionResponse.authenticatorData","api.AuthenticatorAssertionResponse.signature","api.AuthenticatorAssertionResponse.userHandle","api.AuthenticatorAttestationResponse","api.AuthenticatorAttestationResponse.attestationObject","api.AuthenticatorAttestationResponse.getTransports","api.AuthenticatorResponse","api.AuthenticatorResponse.clientDataJSON","api.CredentialsContainer.create.publicKey_option","api.CredentialsContainer.create.publicKey_option.extensions","api.CredentialsContainer.create.publicKey_option.extensions.appidExclude","api.CredentialsContainer.get.publicKey_option","api.CredentialsContainer.get.publicKey_option.extensions","api.CredentialsContainer.get.publicKey_option.extensions.appid","api.PublicKeyCredential","api.PublicKeyCredential.getClientExtensionResults","api.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable_static","api.PublicKeyCredential.rawId","api.PublicKeyCredential.response"],"description":"The web authentication API allows you to create public key-based credentials and use them for authentication, such as when signing in. Also known as WebAuthn.","description_html":"The web authentication API allows you to create public key-based credentials and use them for authentication, such as when signing in. Also known as WebAuthn.","name":"Web authentication","spec":"https://w3c.github.io/webauthn/","status":{"baseline":"high","baseline_high_date":"2024-03-07","baseline_low_date":"2021-09-07","support":{"chrome":"67","chrome_android":"70","edge":"18","firefox":"60","firefox_android":"92","safari":"13","safari_ios":"13"}}},"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":{"compat_features":["api.Navigator.webdriver","webdriver.commands.AcceptAlert","webdriver.commands.AddCookie","webdriver.commands.Back","webdriver.commands.CloseWindow","webdriver.commands.DeleteAllCookies","webdriver.commands.DeleteCookie","webdriver.commands.DeleteSession","webdriver.commands.DismissAlert","webdriver.commands.ElementClear","webdriver.commands.ElementClick","webdriver.commands.ElementSendKeys","webdriver.commands.ExecuteAsyncScript","webdriver.commands.ExecuteScript","webdriver.commands.FindElement","webdriver.commands.FindElementFromElement","webdriver.commands.FindElements","webdriver.commands.FindElementsFromElement","webdriver.commands.Forward","webdriver.commands.FullscreenWindow","webdriver.commands.GetActiveElement","webdriver.commands.GetAlertText","webdriver.commands.GetAllCookies","webdriver.commands.GetCurrentURL","webdriver.commands.GetElementAttribute","webdriver.commands.GetElementCSSValue","webdriver.commands.GetElementProperty","webdriver.commands.GetElementRect","webdriver.commands.GetElementTagName","webdriver.commands.GetElementText","webdriver.commands.GetNamedCookie","webdriver.commands.GetPageSource","webdriver.commands.GetTimeouts","webdriver.commands.GetTitle","webdriver.commands.GetWindowHandle","webdriver.commands.GetWindowHandles","webdriver.commands.GetWindowRect","webdriver.commands.IsElementEnabled","webdriver.commands.IsElementSelected","webdriver.commands.MaximizeWindow","webdriver.commands.MinimizeWindow","webdriver.commands.NavigateTo","webdriver.commands.NewSession","webdriver.commands.NewWindow","webdriver.commands.PerformActions","webdriver.commands.Refresh","webdriver.commands.ReleaseActions","webdriver.commands.SendAlertText","webdriver.commands.SetTimeouts","webdriver.commands.SetWindowRect","webdriver.commands.Status","webdriver.commands.SwitchToFrame","webdriver.commands.SwitchToParentFrame","webdriver.commands.SwitchToWindow","webdriver.commands.TakeElementScreenshot","webdriver.commands.TakeScreenshot"],"description":"The WebDriver interface allows out-of-process programs to inspect and control browsers to, for example, run tests of web applications. Also known as WebDriver classic.","description_html":"The WebDriver interface allows out-of-process programs to inspect and control browsers to, for example, run tests of web applications. Also known as WebDriver classic.","group":"webdriver","name":"WebDriver","spec":"https://w3c.github.io/webdriver/","status":{"baseline":false,"support":{"firefox":"66"}}},"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.","group":"webdriver","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":{"caniuse":"webgl","compat_features":["api.HTMLCanvasElement.getContext.webgl_context.options_alpha_parameter","api.HTMLCanvasElement.getContext.webgl_context.options_failIfMajorPerformanceCaveat_parameter","api.HTMLCanvasElement.getContext.webgl_context.options_powerPreference_parameter","api.HTMLCanvasElement.webglcontextcreationerror_event","api.HTMLCanvasElement.webglcontextlost_event","api.HTMLCanvasElement.webglcontextrestored_event","api.WEBGL_color_buffer_float","api.WEBGL_compressed_texture_astc","api.WEBGL_compressed_texture_astc.getSupportedProfiles","api.WEBGL_compressed_texture_etc","api.WEBGL_compressed_texture_etc1","api.WEBGL_compressed_texture_s3tc","api.WEBGL_compressed_texture_s3tc_srgb","api.WEBGL_debug_renderer_info","api.WEBGL_debug_shaders","api.WEBGL_debug_shaders.getTranslatedShaderSource","api.WEBGL_depth_texture","api.WEBGL_draw_buffers","api.WEBGL_draw_buffers.drawBuffersWEBGL","api.WEBGL_lose_context","api.WEBGL_lose_context.loseContext","api.WEBGL_lose_context.restoreContext","api.WEBGL_multi_draw","api.WEBGL_multi_draw.multiDrawArraysInstancedWEBGL","api.WEBGL_multi_draw.multiDrawArraysWEBGL","api.WEBGL_multi_draw.multiDrawElementsInstancedWEBGL","api.WEBGL_multi_draw.multiDrawElementsWEBGL","api.WebGLActiveInfo","api.WebGLActiveInfo.name","api.WebGLActiveInfo.size","api.WebGLActiveInfo.type","api.WebGLBuffer","api.WebGLContextEvent","api.WebGLContextEvent.WebGLContextEvent","api.WebGLContextEvent.statusMessage","api.WebGLFramebuffer","api.WebGLObject","api.WebGLProgram","api.WebGLRenderbuffer","api.WebGLRenderingContext","api.WebGLRenderingContext.activeTexture","api.WebGLRenderingContext.attachShader","api.WebGLRenderingContext.bindAttribLocation","api.WebGLRenderingContext.bindBuffer","api.WebGLRenderingContext.bindFramebuffer","api.WebGLRenderingContext.bindRenderbuffer","api.WebGLRenderingContext.bindTexture","api.WebGLRenderingContext.blendColor","api.WebGLRenderingContext.blendEquation","api.WebGLRenderingContext.blendEquationSeparate","api.WebGLRenderingContext.blendFunc","api.WebGLRenderingContext.blendFuncSeparate","api.WebGLRenderingContext.bufferData","api.WebGLRenderingContext.bufferSubData","api.WebGLRenderingContext.canvas","api.WebGLRenderingContext.checkFramebufferStatus","api.WebGLRenderingContext.clear","api.WebGLRenderingContext.clearColor","api.WebGLRenderingContext.clearDepth","api.WebGLRenderingContext.clearStencil","api.WebGLRenderingContext.colorMask","api.WebGLRenderingContext.compileShader","api.WebGLRenderingContext.compressedTexImage2D","api.WebGLRenderingContext.compressedTexSubImage2D","api.WebGLRenderingContext.copyTexImage2D","api.WebGLRenderingContext.copyTexSubImage2D","api.WebGLRenderingContext.createBuffer","api.WebGLRenderingContext.createFramebuffer","api.WebGLRenderingContext.createProgram","api.WebGLRenderingContext.createRenderbuffer","api.WebGLRenderingContext.createShader","api.WebGLRenderingContext.createTexture","api.WebGLRenderingContext.cullFace","api.WebGLRenderingContext.deleteBuffer","api.WebGLRenderingContext.deleteFramebuffer","api.WebGLRenderingContext.deleteProgram","api.WebGLRenderingContext.deleteRenderbuffer","api.WebGLRenderingContext.deleteShader","api.WebGLRenderingContext.deleteTexture","api.WebGLRenderingContext.depthFunc","api.WebGLRenderingContext.depthMask","api.WebGLRenderingContext.depthRange","api.WebGLRenderingContext.detachShader","api.WebGLRenderingContext.disable","api.WebGLRenderingContext.disableVertexAttribArray","api.WebGLRenderingContext.drawArrays","api.WebGLRenderingContext.drawElements","api.WebGLRenderingContext.drawingBufferFormat","api.WebGLRenderingContext.drawingBufferHeight","api.WebGLRenderingContext.drawingBufferStorage","api.WebGLRenderingContext.drawingBufferWidth","api.WebGLRenderingContext.enable","api.WebGLRenderingContext.enableVertexAttribArray","api.WebGLRenderingContext.finish","api.WebGLRenderingContext.flush","api.WebGLRenderingContext.framebufferRenderbuffer","api.WebGLRenderingContext.framebufferTexture2D","api.WebGLRenderingContext.frontFace","api.WebGLRenderingContext.generateMipmap","api.WebGLRenderingContext.getActiveAttrib","api.WebGLRenderingContext.getActiveUniform","api.WebGLRenderingContext.getAttachedShaders","api.WebGLRenderingContext.getAttribLocation","api.WebGLRenderingContext.getBufferParameter","api.WebGLRenderingContext.getContextAttributes","api.WebGLRenderingContext.getError","api.WebGLRenderingContext.getExtension","api.WebGLRenderingContext.getFramebufferAttachmentParameter","api.WebGLRenderingContext.getParameter","api.WebGLRenderingContext.getProgramInfoLog","api.WebGLRenderingContext.getProgramParameter","api.WebGLRenderingContext.getRenderbufferParameter","api.WebGLRenderingContext.getShaderInfoLog","api.WebGLRenderingContext.getShaderParameter","api.WebGLRenderingContext.getShaderPrecisionFormat","api.WebGLRenderingContext.getShaderSource","api.WebGLRenderingContext.getSupportedExtensions","api.WebGLRenderingContext.getTexParameter","api.WebGLRenderingContext.getUniform","api.WebGLRenderingContext.getUniformLocation","api.WebGLRenderingContext.getVertexAttrib","api.WebGLRenderingContext.getVertexAttribOffset","api.WebGLRenderingContext.hint","api.WebGLRenderingContext.isBuffer","api.WebGLRenderingContext.isContextLost","api.WebGLRenderingContext.isEnabled","api.WebGLRenderingContext.isFramebuffer","api.WebGLRenderingContext.isProgram","api.WebGLRenderingContext.isRenderbuffer","api.WebGLRenderingContext.isShader","api.WebGLRenderingContext.isTexture","api.WebGLRenderingContext.lineWidth","api.WebGLRenderingContext.linkProgram","api.WebGLRenderingContext.pixelStorei","api.WebGLRenderingContext.polygonOffset","api.WebGLRenderingContext.readPixels","api.WebGLRenderingContext.renderbufferStorage","api.WebGLRenderingContext.sampleCoverage","api.WebGLRenderingContext.scissor","api.WebGLRenderingContext.shaderSource","api.WebGLRenderingContext.stencilFunc","api.WebGLRenderingContext.stencilFuncSeparate","api.WebGLRenderingContext.stencilMask","api.WebGLRenderingContext.stencilMaskSeparate","api.WebGLRenderingContext.stencilOp","api.WebGLRenderingContext.stencilOpSeparate","api.WebGLRenderingContext.texImage2D","api.WebGLRenderingContext.texParameterf","api.WebGLRenderingContext.texParameteri","api.WebGLRenderingContext.texSubImage2D","api.WebGLRenderingContext.uniform1f","api.WebGLRenderingContext.uniform1fv","api.WebGLRenderingContext.uniform1i","api.WebGLRenderingContext.uniform1iv","api.WebGLRenderingContext.uniform2f","api.WebGLRenderingContext.uniform2fv","api.WebGLRenderingContext.uniform2i","api.WebGLRenderingContext.uniform2iv","api.WebGLRenderingContext.uniform3f","api.WebGLRenderingContext.uniform3fv","api.WebGLRenderingContext.uniform3i","api.WebGLRenderingContext.uniform3iv","api.WebGLRenderingContext.uniform4f","api.WebGLRenderingContext.uniform4fv","api.WebGLRenderingContext.uniform4i","api.WebGLRenderingContext.uniform4iv","api.WebGLRenderingContext.uniformMatrix2fv","api.WebGLRenderingContext.uniformMatrix3fv","api.WebGLRenderingContext.uniformMatrix4fv","api.WebGLRenderingContext.useProgram","api.WebGLRenderingContext.validateProgram","api.WebGLRenderingContext.vertexAttrib1f","api.WebGLRenderingContext.vertexAttrib1fv","api.WebGLRenderingContext.vertexAttrib2f","api.WebGLRenderingContext.vertexAttrib2fv","api.WebGLRenderingContext.vertexAttrib3f","api.WebGLRenderingContext.vertexAttrib3fv","api.WebGLRenderingContext.vertexAttrib4f","api.WebGLRenderingContext.vertexAttrib4fv","api.WebGLRenderingContext.vertexAttribPointer","api.WebGLRenderingContext.viewport","api.WebGLShader","api.WebGLShaderPrecisionFormat","api.WebGLShaderPrecisionFormat.precision","api.WebGLShaderPrecisionFormat.rangeMax","api.WebGLShaderPrecisionFormat.rangeMin","api.WebGLTexture","api.WebGLUniformLocation"],"description":"The WebGLRenderingContext API is the \"webgl\" rendering context for the <canvas> element. It represents a space for drawing two- and three-dimensional graphics and animations.","description_html":"The <code>WebGLRenderingContext</code> API is the <code>\"webgl\"</code> rendering context for the <code><canvas></code> element. It represents a space for drawing two- and three-dimensional graphics and animations.","group":"webgl","name":"WebGL","spec":"https://registry.khronos.org/webgl/specs/latest/1.0/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"9","chrome_android":"25","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"8"}}},"webgl-color-management":{"compat_features":["api.WebGLRenderingContext.drawingBufferColorSpace","api.WebGLRenderingContext.unpackColorSpace"],"description":"The drawingBufferColorSpace and unpackColorSpace properties of WebGLRenderingContext sets the color representation for the buffer and imported textures, such as \"srgb\" or \"display-p3\".","description_html":"The <code>drawingBufferColorSpace</code> and <code>unpackColorSpace</code> properties of <code>WebGLRenderingContext</code> sets the color representation for the buffer and imported textures, such as <code>\"srgb\"</code> or <code>\"display-p3\"</code>.","group":"webgl","name":"Color management for WebGL","spec":["https://registry.khronos.org/webgl/specs/latest/1.0/#DOM-WebGLRenderingContext-drawingBufferColorSpace","https://registry.khronos.org/webgl/specs/latest/1.0/#DOM-WebGLRenderingContext-unpackColorSpace"],"status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104","safari":"16.4","safari_ios":"16.4"}}},"webgl-desynchronized":{"compat_features":["api.HTMLCanvasElement.getContext.webgl_context.options_desynchronized_parameter"],"description":"The optional desynchronized parameter of a canvas's getContext() method permits the browser to draw a WebGL canvas independently of the event loop. This can reduce drawing latency.","description_html":"The optional <code>desynchronized</code> parameter of a canvas's <code>getContext()</code> method permits the browser to draw a WebGL canvas independently of the event loop. This can reduce drawing latency.","group":"webgl","name":"Desynchronized WebGL canvas","spec":"https://registry.khronos.org/webgl/specs/latest/1.0/#5.2.1","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"75","edge":"79"}}},"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"}}},"webgl2":{"caniuse":"webgl2","compat_features":["api.HTMLCanvasElement.getContext.webgl2_context.options_alpha_parameter","api.HTMLCanvasElement.getContext.webgl2_context.options_failIfMajorPerformanceCaveat_parameter","api.HTMLCanvasElement.getContext.webgl2_context.options_powerPreference_parameter","api.WebGL2RenderingContext","api.WebGL2RenderingContext.activeTexture","api.WebGL2RenderingContext.attachShader","api.WebGL2RenderingContext.beginQuery","api.WebGL2RenderingContext.beginTransformFeedback","api.WebGL2RenderingContext.bindAttribLocation","api.WebGL2RenderingContext.bindBuffer","api.WebGL2RenderingContext.bindBufferBase","api.WebGL2RenderingContext.bindBufferRange","api.WebGL2RenderingContext.bindFramebuffer","api.WebGL2RenderingContext.bindRenderbuffer","api.WebGL2RenderingContext.bindSampler","api.WebGL2RenderingContext.bindTexture","api.WebGL2RenderingContext.bindTransformFeedback","api.WebGL2RenderingContext.bindVertexArray","api.WebGL2RenderingContext.blendColor","api.WebGL2RenderingContext.blendEquation","api.WebGL2RenderingContext.blendEquationSeparate","api.WebGL2RenderingContext.blendFunc","api.WebGL2RenderingContext.blendFuncSeparate","api.WebGL2RenderingContext.blitFramebuffer","api.WebGL2RenderingContext.bufferData","api.WebGL2RenderingContext.bufferSubData","api.WebGL2RenderingContext.canvas","api.WebGL2RenderingContext.checkFramebufferStatus","api.WebGL2RenderingContext.clear","api.WebGL2RenderingContext.clearBufferfi","api.WebGL2RenderingContext.clearBufferfv","api.WebGL2RenderingContext.clearBufferiv","api.WebGL2RenderingContext.clearBufferuiv","api.WebGL2RenderingContext.clearColor","api.WebGL2RenderingContext.clearDepth","api.WebGL2RenderingContext.clearStencil","api.WebGL2RenderingContext.clientWaitSync","api.WebGL2RenderingContext.colorMask","api.WebGL2RenderingContext.compileShader","api.WebGL2RenderingContext.compressedTexImage2D","api.WebGL2RenderingContext.compressedTexImage3D","api.WebGL2RenderingContext.compressedTexSubImage2D","api.WebGL2RenderingContext.compressedTexSubImage3D","api.WebGL2RenderingContext.copyBufferSubData","api.WebGL2RenderingContext.copyTexImage2D","api.WebGL2RenderingContext.copyTexSubImage2D","api.WebGL2RenderingContext.copyTexSubImage3D","api.WebGL2RenderingContext.createBuffer","api.WebGL2RenderingContext.createFramebuffer","api.WebGL2RenderingContext.createProgram","api.WebGL2RenderingContext.createQuery","api.WebGL2RenderingContext.createRenderbuffer","api.WebGL2RenderingContext.createSampler","api.WebGL2RenderingContext.createShader","api.WebGL2RenderingContext.createTexture","api.WebGL2RenderingContext.createTransformFeedback","api.WebGL2RenderingContext.createVertexArray","api.WebGL2RenderingContext.cullFace","api.WebGL2RenderingContext.deleteBuffer","api.WebGL2RenderingContext.deleteFramebuffer","api.WebGL2RenderingContext.deleteProgram","api.WebGL2RenderingContext.deleteQuery","api.WebGL2RenderingContext.deleteRenderbuffer","api.WebGL2RenderingContext.deleteSampler","api.WebGL2RenderingContext.deleteShader","api.WebGL2RenderingContext.deleteSync","api.WebGL2RenderingContext.deleteTexture","api.WebGL2RenderingContext.deleteTransformFeedback","api.WebGL2RenderingContext.deleteVertexArray","api.WebGL2RenderingContext.depthFunc","api.WebGL2RenderingContext.depthMask","api.WebGL2RenderingContext.depthRange","api.WebGL2RenderingContext.detachShader","api.WebGL2RenderingContext.disable","api.WebGL2RenderingContext.disableVertexAttribArray","api.WebGL2RenderingContext.drawArrays","api.WebGL2RenderingContext.drawArraysInstanced","api.WebGL2RenderingContext.drawBuffers","api.WebGL2RenderingContext.drawElements","api.WebGL2RenderingContext.drawElementsInstanced","api.WebGL2RenderingContext.drawRangeElements","api.WebGL2RenderingContext.drawingBufferFormat","api.WebGL2RenderingContext.drawingBufferHeight","api.WebGL2RenderingContext.drawingBufferStorage","api.WebGL2RenderingContext.drawingBufferWidth","api.WebGL2RenderingContext.enable","api.WebGL2RenderingContext.enableVertexAttribArray","api.WebGL2RenderingContext.endQuery","api.WebGL2RenderingContext.endTransformFeedback","api.WebGL2RenderingContext.fenceSync","api.WebGL2RenderingContext.finish","api.WebGL2RenderingContext.flush","api.WebGL2RenderingContext.framebufferRenderbuffer","api.WebGL2RenderingContext.framebufferTexture2D","api.WebGL2RenderingContext.framebufferTextureLayer","api.WebGL2RenderingContext.frontFace","api.WebGL2RenderingContext.generateMipmap","api.WebGL2RenderingContext.getActiveAttrib","api.WebGL2RenderingContext.getActiveUniform","api.WebGL2RenderingContext.getActiveUniformBlockName","api.WebGL2RenderingContext.getActiveUniformBlockParameter","api.WebGL2RenderingContext.getActiveUniforms","api.WebGL2RenderingContext.getAttachedShaders","api.WebGL2RenderingContext.getAttribLocation","api.WebGL2RenderingContext.getBufferParameter","api.WebGL2RenderingContext.getBufferSubData","api.WebGL2RenderingContext.getContextAttributes","api.WebGL2RenderingContext.getError","api.WebGL2RenderingContext.getExtension","api.WebGL2RenderingContext.getFragDataLocation","api.WebGL2RenderingContext.getFramebufferAttachmentParameter","api.WebGL2RenderingContext.getIndexedParameter","api.WebGL2RenderingContext.getInternalformatParameter","api.WebGL2RenderingContext.getParameter","api.WebGL2RenderingContext.getProgramInfoLog","api.WebGL2RenderingContext.getProgramParameter","api.WebGL2RenderingContext.getQuery","api.WebGL2RenderingContext.getQueryParameter","api.WebGL2RenderingContext.getRenderbufferParameter","api.WebGL2RenderingContext.getSamplerParameter","api.WebGL2RenderingContext.getShaderInfoLog","api.WebGL2RenderingContext.getShaderParameter","api.WebGL2RenderingContext.getShaderPrecisionFormat","api.WebGL2RenderingContext.getShaderSource","api.WebGL2RenderingContext.getSupportedExtensions","api.WebGL2RenderingContext.getSyncParameter","api.WebGL2RenderingContext.getTexParameter","api.WebGL2RenderingContext.getTransformFeedbackVarying","api.WebGL2RenderingContext.getUniform","api.WebGL2RenderingContext.getUniformBlockIndex","api.WebGL2RenderingContext.getUniformIndices","api.WebGL2RenderingContext.getUniformLocation","api.WebGL2RenderingContext.getVertexAttrib","api.WebGL2RenderingContext.getVertexAttribOffset","api.WebGL2RenderingContext.hint","api.WebGL2RenderingContext.invalidateFramebuffer","api.WebGL2RenderingContext.invalidateSubFramebuffer","api.WebGL2RenderingContext.isBuffer","api.WebGL2RenderingContext.isContextLost","api.WebGL2RenderingContext.isEnabled","api.WebGL2RenderingContext.isFramebuffer","api.WebGL2RenderingContext.isProgram","api.WebGL2RenderingContext.isQuery","api.WebGL2RenderingContext.isRenderbuffer","api.WebGL2RenderingContext.isSampler","api.WebGL2RenderingContext.isShader","api.WebGL2RenderingContext.isSync","api.WebGL2RenderingContext.isTexture","api.WebGL2RenderingContext.isTransformFeedback","api.WebGL2RenderingContext.isVertexArray","api.WebGL2RenderingContext.lineWidth","api.WebGL2RenderingContext.linkProgram","api.WebGL2RenderingContext.pauseTransformFeedback","api.WebGL2RenderingContext.pixelStorei","api.WebGL2RenderingContext.polygonOffset","api.WebGL2RenderingContext.readBuffer","api.WebGL2RenderingContext.readPixels","api.WebGL2RenderingContext.renderbufferStorage","api.WebGL2RenderingContext.renderbufferStorageMultisample","api.WebGL2RenderingContext.resumeTransformFeedback","api.WebGL2RenderingContext.sampleCoverage","api.WebGL2RenderingContext.samplerParameterf","api.WebGL2RenderingContext.samplerParameteri","api.WebGL2RenderingContext.scissor","api.WebGL2RenderingContext.shaderSource","api.WebGL2RenderingContext.stencilFunc","api.WebGL2RenderingContext.stencilFuncSeparate","api.WebGL2RenderingContext.stencilMask","api.WebGL2RenderingContext.stencilMaskSeparate","api.WebGL2RenderingContext.stencilOp","api.WebGL2RenderingContext.stencilOpSeparate","api.WebGL2RenderingContext.texImage2D","api.WebGL2RenderingContext.texImage3D","api.WebGL2RenderingContext.texParameterf","api.WebGL2RenderingContext.texParameteri","api.WebGL2RenderingContext.texStorage2D","api.WebGL2RenderingContext.texStorage3D","api.WebGL2RenderingContext.texSubImage2D","api.WebGL2RenderingContext.texSubImage3D","api.WebGL2RenderingContext.transformFeedbackVaryings","api.WebGL2RenderingContext.uniform1f","api.WebGL2RenderingContext.uniform1fv","api.WebGL2RenderingContext.uniform1i","api.WebGL2RenderingContext.uniform1iv","api.WebGL2RenderingContext.uniform1ui","api.WebGL2RenderingContext.uniform1uiv","api.WebGL2RenderingContext.uniform2f","api.WebGL2RenderingContext.uniform2fv","api.WebGL2RenderingContext.uniform2i","api.WebGL2RenderingContext.uniform2iv","api.WebGL2RenderingContext.uniform2ui","api.WebGL2RenderingContext.uniform2uiv","api.WebGL2RenderingContext.uniform3f","api.WebGL2RenderingContext.uniform3fv","api.WebGL2RenderingContext.uniform3i","api.WebGL2RenderingContext.uniform3iv","api.WebGL2RenderingContext.uniform3ui","api.WebGL2RenderingContext.uniform3uiv","api.WebGL2RenderingContext.uniform4f","api.WebGL2RenderingContext.uniform4fv","api.WebGL2RenderingContext.uniform4i","api.WebGL2RenderingContext.uniform4iv","api.WebGL2RenderingContext.uniform4ui","api.WebGL2RenderingContext.uniform4uiv","api.WebGL2RenderingContext.uniformBlockBinding","api.WebGL2RenderingContext.uniformMatrix2fv","api.WebGL2RenderingContext.uniformMatrix2x3fv","api.WebGL2RenderingContext.uniformMatrix2x4fv","api.WebGL2RenderingContext.uniformMatrix3fv","api.WebGL2RenderingContext.uniformMatrix3x2fv","api.WebGL2RenderingContext.uniformMatrix3x4fv","api.WebGL2RenderingContext.uniformMatrix4fv","api.WebGL2RenderingContext.uniformMatrix4x2fv","api.WebGL2RenderingContext.uniformMatrix4x3fv","api.WebGL2RenderingContext.useProgram","api.WebGL2RenderingContext.validateProgram","api.WebGL2RenderingContext.vertexAttrib1f","api.WebGL2RenderingContext.vertexAttrib1fv","api.WebGL2RenderingContext.vertexAttrib2f","api.WebGL2RenderingContext.vertexAttrib2fv","api.WebGL2RenderingContext.vertexAttrib3f","api.WebGL2RenderingContext.vertexAttrib3fv","api.WebGL2RenderingContext.vertexAttrib4f","api.WebGL2RenderingContext.vertexAttrib4fv","api.WebGL2RenderingContext.vertexAttribDivisor","api.WebGL2RenderingContext.vertexAttribI4i","api.WebGL2RenderingContext.vertexAttribI4iv","api.WebGL2RenderingContext.vertexAttribI4ui","api.WebGL2RenderingContext.vertexAttribI4uiv","api.WebGL2RenderingContext.vertexAttribIPointer","api.WebGL2RenderingContext.vertexAttribPointer","api.WebGL2RenderingContext.viewport","api.WebGL2RenderingContext.waitSync","api.WebGLQuery","api.WebGLSampler","api.WebGLSync","api.WebGLTransformFeedback","api.WebGLVertexArrayObject"],"description":"The WebGL2RenderingContext API is the \"webgl2\" rendering context for the <canvas> element. It represents a space for drawing two- and three-dimensional graphics and animations. It corresponds to OpenGL ES 3.0.","description_html":"The <code>WebGL2RenderingContext</code> API is the <code>\"webgl2\"</code> rendering context for the <code><canvas></code> element. It represents a space for drawing two- and three-dimensional graphics and animations. It corresponds to OpenGL ES 3.0.","name":"WebGL2","spec":"https://registry.khronos.org/webgl/specs/latest/2.0/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"56","chrome_android":"58","edge":"79","firefox":"51","firefox_android":"51","safari":"15","safari_ios":"15"}}},"webgl2-color-management":{"compat_features":["api.WebGL2RenderingContext.drawingBufferColorSpace","api.WebGL2RenderingContext.unpackColorSpace"],"description":"The drawingBufferColorSpace and unpackColorSpace properties of WebGL2RenderingContext sets the color representation for the buffer and imported textures, such as \"srgb\" or \"display-p3\".","description_html":"The <code>drawingBufferColorSpace</code> and <code>unpackColorSpace</code> properties of <code>WebGL2RenderingContext</code> sets the color representation for the buffer and imported textures, such as <code>\"srgb\"</code> or <code>\"display-p3\"</code>.","name":"Color management for WebGL2","spec":"https://registry.khronos.org/webgl/specs/latest/2.0/","status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104","safari":"16.4","safari_ios":"16.4"}}},"webgl2-desynchronized":{"compat_features":["api.HTMLCanvasElement.getContext.webgl2_context.options_desynchronized_parameter"],"description":"The optional desynchronized parameter of a canvas's getContext() method permits the browser to draw a WebGL2 canvas independently of the event loop. This can reduce drawing latency.","description_html":"The optional <code>desynchronized</code> parameter of a canvas's <code>getContext()</code> method permits the browser to draw a WebGL2 canvas independently of the event loop. This can reduce drawing latency.","name":"Desynchronized WebGL2 canvas","spec":"https://registry.khronos.org/webgl/specs/latest/2.0/","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"75","edge":"79"}}},"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><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"}}},"white-space":{"compat_features":["css.properties.white-space","css.properties.white-space.break-spaces","css.properties.white-space.normal","css.properties.white-space.nowrap","css.properties.white-space.pre","css.properties.white-space.pre-line","css.properties.white-space.pre-wrap","css.properties.white-space.shorthand_values","css.properties.white-space.svg_elements","css.properties.white-space.textarea_support","svg.global_attributes.white-space"],"description":"The white-space CSS property sets how white space is collapsed and how lines wrap. It is a shorthand for white-space-collapse and text-wrap-mode.","description_html":"The <code>white-space</code> CSS property sets how white space is collapsed and how lines wrap. It is a shorthand for <code>white-space-collapse</code> and <code>text-wrap-mode</code>.","group":"white-space","name":"white-space","spec":"https://drafts.csswg.org/css-text-4/#white-space-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"}}},"white-space-collapse":{"compat_features":["css.properties.white-space-collapse","css.properties.white-space-collapse.break-spaces","css.properties.white-space-collapse.collapse","css.properties.white-space-collapse.preserve","css.properties.white-space-collapse.preserve-breaks"],"description":"The white-space-collapse CSS property sets whether new line characters are shown as line breaks, and whether multiple consecutive spaces are all displayed or combined.","description_html":"The <code>white-space-collapse</code> CSS property sets whether new line characters are shown as line breaks, and whether multiple consecutive spaces are all displayed or combined.","group":"white-space","name":"white-space-collapse","spec":"https://drafts.csswg.org/css-text-4/#white-space-collapsing","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"}}},"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"}}},"writingsuggestions":{"compat_features":["api.HTMLElement.writingSuggestions","html.global_attributes.writingsuggestions"],"description":"The writingsuggestions HTML attribute turns on or off a browser's writing suggestions. Writing suggestions vary by browser. For example, if turned on then a browser might show inline text completions accepted by pressing Tab.","description_html":"The <code>writingsuggestions</code> HTML attribute turns on or off a browser's writing suggestions. Writing suggestions vary by browser. For example, if turned on then a browser might show inline text completions accepted by pressing Tab.","group":"forms","name":"writingsuggestions","spec":"https://html.spec.whatwg.org/multipage/interaction.html#writing-suggestions","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124"}}},"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"}}},"z-index":{"compat_features":["css.properties.z-index","css.properties.z-index.auto","css.properties.z-index.negative_values"],"description":"The z-index CSS property orders overlapping elements, with higher values appearing in front of or on top of lower values.","description_html":"The <code>z-index</code> CSS property orders overlapping elements, with higher values appearing in front of or on top of lower values.","group":"css","name":"z-index","spec":"https://drafts.csswg.org/css2/#z-index","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"3","firefox_android":"4","safari":"1","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"},"color-types":{"name":"Color types","parent":"css"},"containment":{"name":"Containment","parent":"css"},"credential-management":{"name":"Credential management"},"css":{"name":"CSS"},"custom-elements":{"name":"Custom elements","parent":"html"},"environment-variables":{"name":"CSS environment variables","parent":"css"},"file-system":{"name":"File system access"},"flexbox":{"name":"Flexbox","parent":"layout"},"font-features":{"name":"Typographic font features","parent":"fonts"},"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":"Internationalization","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"},"primitive-types":{"name":"Primitive types","parent":"javascript"},"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"},"string":{"name":"Strings","parent":"primitive-types"},"svg":{"name":"SVG"},"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"},"webdriver":{"name":"WebDriver"},"webgl":{"name":"WebGL"},"webrtc":{"name":"WebRTC"},"white-space":{"name":"White space","parent":"css"}},"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
|
+
{"browsers":{"chrome":{"name":"Chrome","releases":[{"date":"2008-12-11","version":"1"},{"date":"2009-05-21","version":"2"},{"date":"2009-09-15","version":"3"},{"date":"2010-01-25","version":"4"},{"date":"2010-05-25","version":"5"},{"date":"2010-09-02","version":"6"},{"date":"2010-10-19","version":"7"},{"date":"2010-12-02","version":"8"},{"date":"2011-02-03","version":"9"},{"date":"2011-03-08","version":"10"},{"date":"2011-04-27","version":"11"},{"date":"2011-06-07","version":"12"},{"date":"2011-08-02","version":"13"},{"date":"2011-09-16","version":"14"},{"date":"2011-10-25","version":"15"},{"date":"2011-12-13","version":"16"},{"date":"2012-02-08","version":"17"},{"date":"2012-03-28","version":"18"},{"date":"2012-05-15","version":"19"},{"date":"2012-06-26","version":"20"},{"date":"2012-07-31","version":"21"},{"date":"2012-09-25","version":"22"},{"date":"2012-11-06","version":"23"},{"date":"2013-01-10","version":"24"},{"date":"2013-02-21","version":"25"},{"date":"2013-03-26","version":"26"},{"date":"2013-05-21","version":"27"},{"date":"2013-07-09","version":"28"},{"date":"2013-08-20","version":"29"},{"date":"2013-10-01","version":"30"},{"date":"2013-11-12","version":"31"},{"date":"2014-01-14","version":"32"},{"date":"2014-02-20","version":"33"},{"date":"2014-04-08","version":"34"},{"date":"2014-05-20","version":"35"},{"date":"2014-07-16","version":"36"},{"date":"2014-08-26","version":"37"},{"date":"2014-10-07","version":"38"},{"date":"2014-11-18","version":"39"},{"date":"2015-01-21","version":"40"},{"date":"2015-03-03","version":"41"},{"date":"2015-04-14","version":"42"},{"date":"2015-05-19","version":"43"},{"date":"2015-07-21","version":"44"},{"date":"2015-09-01","version":"45"},{"date":"2015-10-13","version":"46"},{"date":"2015-12-01","version":"47"},{"date":"2016-01-20","version":"48"},{"date":"2016-03-02","version":"49"},{"date":"2016-04-13","version":"50"},{"date":"2016-05-25","version":"51"},{"date":"2016-07-20","version":"52"},{"date":"2016-08-31","version":"53"},{"date":"2016-10-12","version":"54"},{"date":"2016-12-01","version":"55"},{"date":"2017-01-25","version":"56"},{"date":"2017-03-09","version":"57"},{"date":"2017-04-19","version":"58"},{"date":"2017-06-05","version":"59"},{"date":"2017-07-25","version":"60"},{"date":"2017-09-05","version":"61"},{"date":"2017-10-17","version":"62"},{"date":"2017-12-06","version":"63"},{"date":"2018-01-23","version":"64"},{"date":"2018-03-06","version":"65"},{"date":"2018-04-17","version":"66"},{"date":"2018-05-29","version":"67"},{"date":"2018-07-24","version":"68"},{"date":"2018-09-04","version":"69"},{"date":"2018-10-16","version":"70"},{"date":"2018-12-04","version":"71"},{"date":"2019-01-29","version":"72"},{"date":"2019-03-12","version":"73"},{"date":"2019-04-23","version":"74"},{"date":"2019-06-04","version":"75"},{"date":"2019-07-30","version":"76"},{"date":"2019-09-10","version":"77"},{"date":"2019-10-22","version":"78"},{"date":"2019-12-10","version":"79"},{"date":"2020-02-04","version":"80"},{"date":"2020-04-07","version":"81"},{"date":"2020-05-19","version":"83"},{"date":"2020-07-27","version":"84"},{"date":"2020-08-25","version":"85"},{"date":"2020-10-20","version":"86"},{"date":"2020-11-17","version":"87"},{"date":"2021-01-19","version":"88"},{"date":"2021-03-02","version":"89"},{"date":"2021-04-13","version":"90"},{"date":"2021-05-25","version":"91"},{"date":"2021-07-20","version":"92"},{"date":"2021-08-31","version":"93"},{"date":"2021-09-21","version":"94"},{"date":"2021-10-19","version":"95"},{"date":"2021-11-15","version":"96"},{"date":"2022-01-04","version":"97"},{"date":"2022-02-01","version":"98"},{"date":"2022-03-01","version":"99"},{"date":"2022-03-29","version":"100"},{"date":"2022-04-26","version":"101"},{"date":"2022-05-24","version":"102"},{"date":"2022-06-21","version":"103"},{"date":"2022-08-02","version":"104"},{"date":"2022-09-02","version":"105"},{"date":"2022-09-27","version":"106"},{"date":"2022-10-25","version":"107"},{"date":"2022-11-29","version":"108"},{"date":"2023-01-10","version":"109"},{"date":"2023-02-07","version":"110"},{"date":"2023-03-07","version":"111"},{"date":"2023-04-04","version":"112"},{"date":"2023-05-02","version":"113"},{"date":"2023-05-30","version":"114"},{"date":"2023-07-18","version":"115"},{"date":"2023-08-15","version":"116"},{"date":"2023-09-12","version":"117"},{"date":"2023-10-10","version":"118"},{"date":"2023-10-31","version":"119"},{"date":"2023-12-05","version":"120"},{"date":"2024-01-23","version":"121"},{"date":"2024-02-20","version":"122"},{"date":"2024-03-19","version":"123"},{"date":"2024-04-16","version":"124"},{"date":"2024-05-14","version":"125"},{"date":"2024-06-11","version":"126"},{"date":"2024-07-23","version":"127"},{"date":"2024-08-20","version":"128"},{"date":"2024-09-17","version":"129"}]},"chrome_android":{"name":"Chrome Android","releases":[{"date":"2012-06-27","version":"18"},{"date":"2013-02-27","version":"25"},{"date":"2013-04-03","version":"26"},{"date":"2013-05-22","version":"27"},{"date":"2013-07-10","version":"28"},{"date":"2013-08-21","version":"29"},{"date":"2013-10-02","version":"30"},{"date":"2013-11-14","version":"31"},{"date":"2014-01-15","version":"32"},{"date":"2014-02-26","version":"33"},{"date":"2014-04-02","version":"34"},{"date":"2014-05-20","version":"35"},{"date":"2014-07-16","version":"36"},{"date":"2014-09-03","version":"37"},{"date":"2014-10-08","version":"38"},{"date":"2014-11-12","version":"39"},{"date":"2015-01-21","version":"40"},{"date":"2015-03-11","version":"41"},{"date":"2015-04-15","version":"42"},{"date":"2015-05-27","version":"43"},{"date":"2015-07-29","version":"44"},{"date":"2015-09-01","version":"45"},{"date":"2015-10-14","version":"46"},{"date":"2015-12-02","version":"47"},{"date":"2016-01-26","version":"48"},{"date":"2016-03-09","version":"49"},{"date":"2016-04-13","version":"50"},{"date":"2016-06-08","version":"51"},{"date":"2016-07-27","version":"52"},{"date":"2016-09-07","version":"53"},{"date":"2016-10-19","version":"54"},{"date":"2016-12-06","version":"55"},{"date":"2017-02-01","version":"56"},{"date":"2017-03-16","version":"57"},{"date":"2017-04-25","version":"58"},{"date":"2017-06-06","version":"59"},{"date":"2017-08-01","version":"60"},{"date":"2017-09-05","version":"61"},{"date":"2017-10-24","version":"62"},{"date":"2017-12-05","version":"63"},{"date":"2018-01-23","version":"64"},{"date":"2018-03-06","version":"65"},{"date":"2018-04-17","version":"66"},{"date":"2018-05-31","version":"67"},{"date":"2018-07-24","version":"68"},{"date":"2018-09-04","version":"69"},{"date":"2018-10-17","version":"70"},{"date":"2018-12-04","version":"71"},{"date":"2019-01-29","version":"72"},{"date":"2019-03-12","version":"73"},{"date":"2019-04-24","version":"74"},{"date":"2019-06-04","version":"75"},{"date":"2019-07-30","version":"76"},{"date":"2019-09-10","version":"77"},{"date":"2019-10-22","version":"78"},{"date":"2019-12-17","version":"79"},{"date":"2020-02-04","version":"80"},{"date":"2020-04-07","version":"81"},{"date":"2020-05-19","version":"83"},{"date":"2020-07-27","version":"84"},{"date":"2020-08-25","version":"85"},{"date":"2020-10-20","version":"86"},{"date":"2020-11-17","version":"87"},{"date":"2021-01-19","version":"88"},{"date":"2021-03-02","version":"89"},{"date":"2021-04-13","version":"90"},{"date":"2021-05-25","version":"91"},{"date":"2021-07-20","version":"92"},{"date":"2021-08-31","version":"93"},{"date":"2021-09-21","version":"94"},{"date":"2021-10-19","version":"95"},{"date":"2021-11-15","version":"96"},{"date":"2022-01-04","version":"97"},{"date":"2022-02-01","version":"98"},{"date":"2022-03-01","version":"99"},{"date":"2022-03-29","version":"100"},{"date":"2022-04-26","version":"101"},{"date":"2022-05-24","version":"102"},{"date":"2022-06-21","version":"103"},{"date":"2022-08-02","version":"104"},{"date":"2022-09-02","version":"105"},{"date":"2022-09-27","version":"106"},{"date":"2022-10-25","version":"107"},{"date":"2022-11-29","version":"108"},{"date":"2023-01-10","version":"109"},{"date":"2023-02-07","version":"110"},{"date":"2023-03-07","version":"111"},{"date":"2023-04-04","version":"112"},{"date":"2023-05-02","version":"113"},{"date":"2023-05-30","version":"114"},{"date":"2023-07-21","version":"115"},{"date":"2023-08-15","version":"116"},{"date":"2023-09-12","version":"117"},{"date":"2023-10-10","version":"118"},{"date":"2023-10-31","version":"119"},{"date":"2023-12-05","version":"120"},{"date":"2024-01-23","version":"121"},{"date":"2024-02-20","version":"122"},{"date":"2024-03-19","version":"123"},{"date":"2024-04-16","version":"124"},{"date":"2024-05-14","version":"125"},{"date":"2024-06-11","version":"126"},{"date":"2024-07-23","version":"127"},{"date":"2024-08-20","version":"128"},{"date":"2024-09-17","version":"129"}]},"edge":{"name":"Edge","releases":[{"date":"2015-07-29","version":"12"},{"date":"2015-11-12","version":"13"},{"date":"2016-08-02","version":"14"},{"date":"2017-04-05","version":"15"},{"date":"2017-10-17","version":"16"},{"date":"2018-04-30","version":"17"},{"date":"2018-10-02","version":"18"},{"date":"2020-01-15","version":"79"},{"date":"2020-02-07","version":"80"},{"date":"2020-04-13","version":"81"},{"date":"2020-05-21","version":"83"},{"date":"2020-07-16","version":"84"},{"date":"2020-08-27","version":"85"},{"date":"2020-10-09","version":"86"},{"date":"2020-11-19","version":"87"},{"date":"2021-01-21","version":"88"},{"date":"2021-03-04","version":"89"},{"date":"2021-04-15","version":"90"},{"date":"2021-05-27","version":"91"},{"date":"2021-07-22","version":"92"},{"date":"2021-09-02","version":"93"},{"date":"2021-09-24","version":"94"},{"date":"2021-10-21","version":"95"},{"date":"2021-11-19","version":"96"},{"date":"2022-01-06","version":"97"},{"date":"2022-02-03","version":"98"},{"date":"2022-03-03","version":"99"},{"date":"2022-04-01","version":"100"},{"date":"2022-04-28","version":"101"},{"date":"2022-05-31","version":"102"},{"date":"2022-06-23","version":"103"},{"date":"2022-08-05","version":"104"},{"date":"2022-09-01","version":"105"},{"date":"2022-10-03","version":"106"},{"date":"2022-10-27","version":"107"},{"date":"2022-12-05","version":"108"},{"date":"2023-01-12","version":"109"},{"date":"2023-02-09","version":"110"},{"date":"2023-03-13","version":"111"},{"date":"2023-04-06","version":"112"},{"date":"2023-05-05","version":"113"},{"date":"2023-06-02","version":"114"},{"date":"2023-07-21","version":"115"},{"date":"2023-08-21","version":"116"},{"date":"2023-09-15","version":"117"},{"date":"2023-10-13","version":"118"},{"date":"2023-11-02","version":"119"},{"date":"2023-12-07","version":"120"},{"date":"2024-01-25","version":"121"},{"date":"2024-02-23","version":"122"},{"date":"2024-03-22","version":"123"},{"date":"2024-04-18","version":"124"},{"date":"2024-05-17","version":"125"},{"date":"2024-06-13","version":"126"},{"date":"2024-07-25","version":"127"},{"date":"2024-08-22","version":"128"},{"date":"2024-09-19","version":"129"}]},"firefox":{"name":"Firefox","releases":[{"date":"2004-11-09","version":"1"},{"date":"2005-11-29","version":"1.5"},{"date":"2006-10-24","version":"2"},{"date":"2008-06-17","version":"3"},{"date":"2009-06-30","version":"3.5"},{"date":"2010-01-21","version":"3.6"},{"date":"2011-03-22","version":"4"},{"date":"2011-06-21","version":"5"},{"date":"2011-08-16","version":"6"},{"date":"2011-09-27","version":"7"},{"date":"2011-11-08","version":"8"},{"date":"2011-12-20","version":"9"},{"date":"2012-01-31","version":"10"},{"date":"2012-03-13","version":"11"},{"date":"2012-04-24","version":"12"},{"date":"2012-06-05","version":"13"},{"date":"2012-07-17","version":"14"},{"date":"2012-08-28","version":"15"},{"date":"2012-10-09","version":"16"},{"date":"2012-11-20","version":"17"},{"date":"2013-01-08","version":"18"},{"date":"2013-02-19","version":"19"},{"date":"2013-04-02","version":"20"},{"date":"2013-05-14","version":"21"},{"date":"2013-06-25","version":"22"},{"date":"2013-08-06","version":"23"},{"date":"2013-09-17","version":"24"},{"date":"2013-10-29","version":"25"},{"date":"2013-12-10","version":"26"},{"date":"2014-02-04","version":"27"},{"date":"2014-03-18","version":"28"},{"date":"2014-04-29","version":"29"},{"date":"2014-06-10","version":"30"},{"date":"2014-07-22","version":"31"},{"date":"2014-09-02","version":"32"},{"date":"2014-10-14","version":"33"},{"date":"2014-12-01","version":"34"},{"date":"2015-01-13","version":"35"},{"date":"2015-02-24","version":"36"},{"date":"2015-03-31","version":"37"},{"date":"2015-05-12","version":"38"},{"date":"2015-07-02","version":"39"},{"date":"2015-08-11","version":"40"},{"date":"2015-09-22","version":"41"},{"date":"2015-11-03","version":"42"},{"date":"2015-12-15","version":"43"},{"date":"2016-01-26","version":"44"},{"date":"2016-03-08","version":"45"},{"date":"2016-04-26","version":"46"},{"date":"2016-06-07","version":"47"},{"date":"2016-08-02","version":"48"},{"date":"2016-09-20","version":"49"},{"date":"2016-11-15","version":"50"},{"date":"2017-01-24","version":"51"},{"date":"2017-03-07","version":"52"},{"date":"2017-04-19","version":"53"},{"date":"2017-06-13","version":"54"},{"date":"2017-08-08","version":"55"},{"date":"2017-09-28","version":"56"},{"date":"2017-11-14","version":"57"},{"date":"2018-01-23","version":"58"},{"date":"2018-03-13","version":"59"},{"date":"2018-05-09","version":"60"},{"date":"2018-06-26","version":"61"},{"date":"2018-09-05","version":"62"},{"date":"2018-10-23","version":"63"},{"date":"2018-12-11","version":"64"},{"date":"2019-01-29","version":"65"},{"date":"2019-03-19","version":"66"},{"date":"2019-05-21","version":"67"},{"date":"2019-07-09","version":"68"},{"date":"2019-09-03","version":"69"},{"date":"2019-10-22","version":"70"},{"date":"2019-12-10","version":"71"},{"date":"2020-01-07","version":"72"},{"date":"2020-02-11","version":"73"},{"date":"2020-03-10","version":"74"},{"date":"2020-04-07","version":"75"},{"date":"2020-05-05","version":"76"},{"date":"2020-06-02","version":"77"},{"date":"2020-06-30","version":"78"},{"date":"2020-07-28","version":"79"},{"date":"2020-08-25","version":"80"},{"date":"2020-09-22","version":"81"},{"date":"2020-10-20","version":"82"},{"date":"2020-11-17","version":"83"},{"date":"2020-12-15","version":"84"},{"date":"2021-01-26","version":"85"},{"date":"2021-02-23","version":"86"},{"date":"2021-03-23","version":"87"},{"date":"2021-04-19","version":"88"},{"date":"2021-06-01","version":"89"},{"date":"2021-07-13","version":"90"},{"date":"2021-08-10","version":"91"},{"date":"2021-09-07","version":"92"},{"date":"2021-10-05","version":"93"},{"date":"2021-11-02","version":"94"},{"date":"2021-12-07","version":"95"},{"date":"2022-01-11","version":"96"},{"date":"2022-02-08","version":"97"},{"date":"2022-03-08","version":"98"},{"date":"2022-04-05","version":"99"},{"date":"2022-05-03","version":"100"},{"date":"2022-05-31","version":"101"},{"date":"2022-06-28","version":"102"},{"date":"2022-07-26","version":"103"},{"date":"2022-08-23","version":"104"},{"date":"2022-09-20","version":"105"},{"date":"2022-10-18","version":"106"},{"date":"2022-11-15","version":"107"},{"date":"2022-12-13","version":"108"},{"date":"2023-01-17","version":"109"},{"date":"2023-02-14","version":"110"},{"date":"2023-03-14","version":"111"},{"date":"2023-04-11","version":"112"},{"date":"2023-05-09","version":"113"},{"date":"2023-06-06","version":"114"},{"date":"2023-07-04","version":"115"},{"date":"2023-08-01","version":"116"},{"date":"2023-08-29","version":"117"},{"date":"2023-09-26","version":"118"},{"date":"2023-10-24","version":"119"},{"date":"2023-11-21","version":"120"},{"date":"2023-12-19","version":"121"},{"date":"2024-01-23","version":"122"},{"date":"2024-02-20","version":"123"},{"date":"2024-03-19","version":"124"},{"date":"2024-04-16","version":"125"},{"date":"2024-05-14","version":"126"},{"date":"2024-06-11","version":"127"},{"date":"2024-07-09","version":"128"},{"date":"2024-08-06","version":"129"},{"date":"2024-09-03","version":"130"}]},"firefox_android":{"name":"Firefox for Android","releases":[{"date":"2011-03-29","version":"4"},{"date":"2011-06-21","version":"5"},{"date":"2011-08-16","version":"6"},{"date":"2011-09-27","version":"7"},{"date":"2011-11-08","version":"8"},{"date":"2011-12-21","version":"9"},{"date":"2012-01-31","version":"10"},{"date":"2012-06-26","version":"14"},{"date":"2012-08-28","version":"15"},{"date":"2012-10-09","version":"16"},{"date":"2012-11-20","version":"17"},{"date":"2013-01-08","version":"18"},{"date":"2013-02-19","version":"19"},{"date":"2013-04-02","version":"20"},{"date":"2013-05-14","version":"21"},{"date":"2013-06-25","version":"22"},{"date":"2013-08-06","version":"23"},{"date":"2013-09-17","version":"24"},{"date":"2013-10-29","version":"25"},{"date":"2013-12-10","version":"26"},{"date":"2014-02-04","version":"27"},{"date":"2014-03-18","version":"28"},{"date":"2014-04-29","version":"29"},{"date":"2014-06-10","version":"30"},{"date":"2014-07-22","version":"31"},{"date":"2014-09-02","version":"32"},{"date":"2014-10-14","version":"33"},{"date":"2014-12-01","version":"34"},{"date":"2015-01-13","version":"35"},{"date":"2015-02-27","version":"36"},{"date":"2015-03-31","version":"37"},{"date":"2015-05-12","version":"38"},{"date":"2015-07-02","version":"39"},{"date":"2015-08-11","version":"40"},{"date":"2015-09-22","version":"41"},{"date":"2015-11-03","version":"42"},{"date":"2015-12-15","version":"43"},{"date":"2016-01-26","version":"44"},{"date":"2016-03-08","version":"45"},{"date":"2016-04-26","version":"46"},{"date":"2016-06-07","version":"47"},{"date":"2016-08-02","version":"48"},{"date":"2016-09-20","version":"49"},{"date":"2016-11-15","version":"50"},{"date":"2017-01-24","version":"51"},{"date":"2017-03-07","version":"52"},{"date":"2017-04-19","version":"53"},{"date":"2017-06-13","version":"54"},{"date":"2017-08-08","version":"55"},{"date":"2017-09-28","version":"56"},{"date":"2017-11-28","version":"57"},{"date":"2018-01-22","version":"58"},{"date":"2018-03-13","version":"59"},{"date":"2018-05-09","version":"60"},{"date":"2018-06-26","version":"61"},{"date":"2018-09-05","version":"62"},{"date":"2018-10-23","version":"63"},{"date":"2018-12-11","version":"64"},{"date":"2019-01-29","version":"65"},{"date":"2019-03-19","version":"66"},{"date":"2019-05-21","version":"67"},{"date":"2019-07-09","version":"68"},{"date":"2020-07-28","version":"79"},{"date":"2020-08-31","version":"80"},{"date":"2020-09-22","version":"81"},{"date":"2020-10-20","version":"82"},{"date":"2020-11-17","version":"83"},{"date":"2020-12-15","version":"84"},{"date":"2021-01-26","version":"85"},{"date":"2021-02-23","version":"86"},{"date":"2021-03-23","version":"87"},{"date":"2021-04-19","version":"88"},{"date":"2021-06-01","version":"89"},{"date":"2021-07-13","version":"90"},{"date":"2021-08-10","version":"91"},{"date":"2021-09-07","version":"92"},{"date":"2021-10-05","version":"93"},{"date":"2021-11-02","version":"94"},{"date":"2021-12-07","version":"95"},{"date":"2022-01-11","version":"96"},{"date":"2022-02-08","version":"97"},{"date":"2022-03-08","version":"98"},{"date":"2022-04-05","version":"99"},{"date":"2022-05-03","version":"100"},{"date":"2022-05-31","version":"101"},{"date":"2022-06-28","version":"102"},{"date":"2022-07-26","version":"103"},{"date":"2022-08-23","version":"104"},{"date":"2022-09-20","version":"105"},{"date":"2022-10-18","version":"106"},{"date":"2022-11-15","version":"107"},{"date":"2022-12-13","version":"108"},{"date":"2023-01-17","version":"109"},{"date":"2023-02-14","version":"110"},{"date":"2023-03-14","version":"111"},{"date":"2023-04-11","version":"112"},{"date":"2023-05-09","version":"113"},{"date":"2023-06-06","version":"114"},{"date":"2023-07-04","version":"115"},{"date":"2023-08-01","version":"116"},{"date":"2023-08-29","version":"117"},{"date":"2023-09-26","version":"118"},{"date":"2023-10-24","version":"119"},{"date":"2023-11-21","version":"120"},{"date":"2023-12-19","version":"121"},{"date":"2024-01-23","version":"122"},{"date":"2024-02-20","version":"123"},{"date":"2024-03-19","version":"124"},{"date":"2024-04-16","version":"125"},{"date":"2024-05-14","version":"126"},{"date":"2024-06-11","version":"127"},{"date":"2024-07-09","version":"128"},{"date":"2024-08-06","version":"129"},{"date":"2024-09-03","version":"130"}]},"safari":{"name":"Safari","releases":[{"date":"2003-06-23","version":"1"},{"date":"2003-10-24","version":"1.1"},{"date":"2004-02-02","version":"1.2"},{"date":"2005-04-15","version":"1.3"},{"date":"2005-04-29","version":"2"},{"date":"2007-10-26","version":"3"},{"date":"2008-03-18","version":"3.1"},{"date":"2009-06-08","version":"4"},{"date":"2010-06-07","version":"5"},{"date":"2011-07-20","version":"5.1"},{"date":"2012-07-25","version":"6"},{"date":"2013-10-22","version":"7"},{"date":"2014-10-16","version":"8"},{"date":"2015-09-30","version":"9"},{"date":"2016-03-21","version":"9.1"},{"date":"2016-09-20","version":"10"},{"date":"2017-03-27","version":"10.1"},{"date":"2017-09-19","version":"11"},{"date":"2018-04-12","version":"11.1"},{"date":"2018-09-17","version":"12"},{"date":"2019-03-25","version":"12.1"},{"date":"2019-09-19","version":"13"},{"date":"2020-03-24","version":"13.1"},{"date":"2020-09-16","version":"14"},{"date":"2021-04-26","version":"14.1"},{"date":"2021-09-20","version":"15"},{"date":"2021-10-25","version":"15.1"},{"date":"2021-12-13","version":"15.2"},{"date":"2022-01-26","version":"15.3"},{"date":"2022-03-14","version":"15.4"},{"date":"2022-05-16","version":"15.5"},{"date":"2022-07-20","version":"15.6"},{"date":"2022-09-12","version":"16"},{"date":"2022-10-24","version":"16.1"},{"date":"2022-12-13","version":"16.2"},{"date":"2023-01-23","version":"16.3"},{"date":"2023-03-27","version":"16.4"},{"date":"2023-05-18","version":"16.5"},{"date":"2023-07-24","version":"16.6"},{"date":"2023-09-18","version":"17"},{"date":"2023-10-25","version":"17.1"},{"date":"2023-12-11","version":"17.2"},{"date":"2024-01-22","version":"17.3"},{"date":"2024-03-05","version":"17.4"},{"date":"2024-05-13","version":"17.5"},{"date":"2024-07-29","version":"17.6"},{"date":"2024-09-16","version":"18"}]},"safari_ios":{"name":"Safari on iOS","releases":[{"date":"2007-06-29","version":"1"},{"date":"2008-07-11","version":"2"},{"date":"2009-06-17","version":"3"},{"date":"2010-04-03","version":"3.2"},{"date":"2010-06-21","version":"4"},{"date":"2010-11-22","version":"4.2"},{"date":"2011-10-12","version":"5"},{"date":"2012-09-10","version":"6"},{"date":"2013-09-18","version":"7"},{"date":"2014-09-17","version":"8"},{"date":"2015-09-16","version":"9"},{"date":"2016-03-21","version":"9.3"},{"date":"2016-09-13","version":"10"},{"date":"2017-03-27","version":"10.3"},{"date":"2017-09-19","version":"11"},{"date":"2018-03-29","version":"11.3"},{"date":"2018-09-17","version":"12"},{"date":"2019-03-25","version":"12.2"},{"date":"2019-09-19","version":"13"},{"date":"2020-03-24","version":"13.4"},{"date":"2020-09-16","version":"14"},{"date":"2021-04-26","version":"14.5"},{"date":"2021-09-20","version":"15"},{"date":"2021-10-25","version":"15.1"},{"date":"2021-12-13","version":"15.2"},{"date":"2022-01-26","version":"15.3"},{"date":"2022-03-14","version":"15.4"},{"date":"2022-05-16","version":"15.5"},{"date":"2022-07-20","version":"15.6"},{"date":"2022-09-12","version":"16"},{"date":"2022-10-24","version":"16.1"},{"date":"2022-12-13","version":"16.2"},{"date":"2023-01-23","version":"16.3"},{"date":"2023-03-27","version":"16.4"},{"date":"2023-05-18","version":"16.5"},{"date":"2023-07-24","version":"16.6"},{"date":"2023-09-18","version":"17"},{"date":"2023-10-25","version":"17.1"},{"date":"2023-12-11","version":"17.2"},{"date":"2024-01-22","version":"17.3"},{"date":"2024-03-05","version":"17.4"},{"date":"2024-05-13","version":"17.5"},{"date":"2024-07-29","version":"17.6"},{"date":"2024-09-16","version":"18"}]}},"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><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><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.abort_static","api.AbortSignal.abort_static.reason_parameter","api.AbortSignal.aborted","api.AbortSignal.reason","api.AbortSignal.throwIfAborted","api.AbortSignal.timeout_static"],"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.","group":"css","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.","group":"css","name":"accent-color","spec":"https://drafts.csswg.org/css-ui-4/#widget-accent","status":{"baseline":false,"support":{"chrome":"93","chrome_android":"93","edge":"93","firefox":"92","firefox_android":"92"}}},"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><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"}}},"alt-text-generated-content":{"compat_features":["css.properties.content.alt_text"],"description":"The / notation in content CSS property values adds alternative text to generated content. For example, the content: url('upvote-icon.svg') / 'Upvote' declaration adds accessible 'Upvote' text to the SVG icon. Also known as alternate text.","description_html":"The <code>/</code> notation in <code>content</code> CSS property values adds alternative text to generated content. For example, the <code>content: url('upvote-icon.svg') / 'Upvote'</code> declaration adds accessible 'Upvote' text to the SVG icon. Also known as alternate text.","group":"css","name":"Alt text for generated content","spec":"https://drafts.csswg.org/css-content-3/#alt","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"128","firefox_android":"128","safari":"17.4","safari_ios":"17.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-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-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-area","css.properties.position-area.block-end","css.properties.position-area.block-start","css.properties.position-area.bottom","css.properties.position-area.center","css.properties.position-area.end","css.properties.position-area.inline-end","css.properties.position-area.inline-start","css.properties.position-area.left","css.properties.position-area.none","css.properties.position-area.right","css.properties.position-area.self-end","css.properties.position-area.self-start","css.properties.position-area.span-all","css.properties.position-area.span-block-end","css.properties.position-area.span-block-start","css.properties.position-area.span-bottom","css.properties.position-area.span-end","css.properties.position-area.span-inline-end","css.properties.position-area.span-inline-start","css.properties.position-area.span-start","css.properties.position-area.span-top","css.properties.position-area.span-x-end","css.properties.position-area.span-x-start","css.properties.position-area.span-y-end","css.properties.position-area.span-y-start","css.properties.position-area.start","css.properties.position-area.top","css.properties.position-area.x-end","css.properties.position-area.x-self-end","css.properties.position-area.x-self-start","css.properties.position-area.x-start","css.properties.position-area.y-end","css.properties.position-area.y-self-end","css.properties.position-area.y-self-start","css.properties.position-area.y-start","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.none","css.properties.position-try-fallbacks.position-area","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.","group":"css","name":"appearance","spec":"https://drafts.csswg.org/css-ui-4/#appearance-switching","status":{"baseline":"high","baseline_high_date":"2024-09-14","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.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":"high","baseline_high_date":"2024-09-14","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/ecma262/multipage/abstract-operations.html#sec-groupby","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><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><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><img></code> and <code><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.","group":"css","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.type_image-png","api.Clipboard.type_text-html","api.Clipboard.type_text-plain","api.Clipboard.write","api.Clipboard.writeText","api.ClipboardItem","api.ClipboardItem.ClipboardItem","api.ClipboardItem.getType","api.ClipboardItem.presentationStyle","api.ClipboardItem.type_image_svg_xml","api.ClipboardItem.type_web","api.ClipboardItem.types","api.Navigator.clipboard","api.Permissions.permission_clipboard-write"],"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-generators":{"compat_features":["javascript.builtins.AsyncGenerator","javascript.builtins.AsyncGenerator.next","javascript.builtins.AsyncGenerator.return","javascript.builtins.AsyncGenerator.throw","javascript.builtins.AsyncGeneratorFunction","javascript.builtins.AsyncGeneratorFunction.AsyncGeneratorFunction","javascript.functions.method_definitions.async_generator_methods","javascript.operators.async_generator_function","javascript.statements.async_generator_function"],"description":"Async generator functions (async function*) create iterators that return multiple promises, one after another, on-demand.","description_html":"Async generator functions (<code>async function*</code>) create iterators that return multiple promises, one after another, on-demand.","group":"javascript","name":"Async generators","snapshot":"ecmascript-2017","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-asyncgeneratorfunction-objects","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-asyncgenerator-objects"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"63","chrome_android":"63","edge":"79","firefox":"55","firefox_android":"55","safari":"12","safari_ios":"12"}}},"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"}}},"atomics-wait-async":{"compat_features":["javascript.builtins.Atomics.waitAsync"],"description":"The Atomics.waitAsync() static method waits for a value in a shared memory location, providing a promise when the expected value is not yet in memory. The waitAsync() method is a non-blocking alternative to Atomics.wait().","description_html":"The <code>Atomics.waitAsync()</code> static method waits for a value in a shared memory location, providing a promise when the expected value is not yet in memory. The <code>waitAsync()</code> method is a non-blocking alternative to <code>Atomics.wait()</code>.","group":"javascript","name":"Atomics.waitAsync","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-atomics.waitasync","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"89","edge":"87","safari":"16.4","safari_ios":"16.4"}}},"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><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><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><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><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.","group":"css","name":"backdrop-filter","spec":"https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty","status":{"baseline":"low","baseline_low_date":"2024-09-16","support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"103","firefox_android":"103","safari":"18","safari_ios":"18"}}},"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.","group":"css","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.","group":"css","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><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"}}},"bdi":{"compat_features":["html.elements.bdi"],"description":"The <bdi> element isolates text that may have a different text direction from its surrounding text. This prevents the browser's bidirectional text algorithm from affecting or being affected by the direction of the surrounding text.","description_html":"The <code><bdi></code> element isolates text that may have a different text direction from its surrounding text. This prevents the browser's bidirectional text algorithm from affecting or being affected by the direction of the surrounding text.","group":"html-elements","name":"<bdi>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-bdi-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"16","chrome_android":"18","edge":"79","firefox":"10","firefox_android":"10","safari":"6","safari_ios":"6"}}},"bdo":{"compat_features":["html.elements.bdo"],"description":"The <bdo> element overrides the directionality of text, so that the text within is rendered in a different direction than the surrounding text.","description_html":"The <code><bdo></code> element overrides the directionality of text, so that the text within is rendered in a different direction than the surrounding text.","group":"html-elements","name":"<bdo>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-bdo-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":"10","firefox_android":"10","safari":"≤4","safari_ios":"≤3.2"}}},"bigint":{"caniuse":"bigint","compat_features":["javascript.builtins.BigInt","javascript.builtins.BigInt.BigInt","javascript.builtins.BigInt.asIntN","javascript.builtins.BigInt.asUintN","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><link></code>, <code><script></code>, and <code><style></code> elements blocks rendering until the external script or stylesheet has been loaded. For <code><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><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><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.","group":"css","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><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":"high","baseline_high_date":"2024-09-14","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><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>.","group":"css","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>.","group":"css","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><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-2d":{"compat_features":["api.CanvasGradient","api.CanvasGradient.addColorStop","api.CanvasRenderingContext2D","api.CanvasRenderingContext2D.arc","api.CanvasRenderingContext2D.arcTo","api.CanvasRenderingContext2D.beginPath","api.CanvasRenderingContext2D.bezierCurveTo","api.CanvasRenderingContext2D.canvas","api.CanvasRenderingContext2D.clearRect","api.CanvasRenderingContext2D.clip","api.CanvasRenderingContext2D.closePath","api.CanvasRenderingContext2D.createImageData","api.CanvasRenderingContext2D.createLinearGradient","api.CanvasRenderingContext2D.createPattern","api.CanvasRenderingContext2D.createRadialGradient","api.CanvasRenderingContext2D.direction","api.CanvasRenderingContext2D.drawFocusIfNeeded","api.CanvasRenderingContext2D.drawImage","api.CanvasRenderingContext2D.ellipse","api.CanvasRenderingContext2D.fill","api.CanvasRenderingContext2D.fillRect","api.CanvasRenderingContext2D.fillStyle","api.CanvasRenderingContext2D.fillText","api.CanvasRenderingContext2D.filter","api.CanvasRenderingContext2D.font","api.CanvasRenderingContext2D.fontKerning","api.CanvasRenderingContext2D.fontStretch","api.CanvasRenderingContext2D.fontVariantCaps","api.CanvasRenderingContext2D.getContextAttributes","api.CanvasRenderingContext2D.getImageData","api.CanvasRenderingContext2D.getLineDash","api.CanvasRenderingContext2D.getTransform","api.CanvasRenderingContext2D.globalAlpha","api.CanvasRenderingContext2D.globalCompositeOperation","api.CanvasRenderingContext2D.imageSmoothingEnabled","api.CanvasRenderingContext2D.imageSmoothingQuality","api.CanvasRenderingContext2D.isPointInPath","api.CanvasRenderingContext2D.isPointInStroke","api.CanvasRenderingContext2D.letterSpacing","api.CanvasRenderingContext2D.lineCap","api.CanvasRenderingContext2D.lineDashOffset","api.CanvasRenderingContext2D.lineJoin","api.CanvasRenderingContext2D.lineTo","api.CanvasRenderingContext2D.lineWidth","api.CanvasRenderingContext2D.measureText","api.CanvasRenderingContext2D.miterLimit","api.CanvasRenderingContext2D.moveTo","api.CanvasRenderingContext2D.putImageData","api.CanvasRenderingContext2D.quadraticCurveTo","api.CanvasRenderingContext2D.rect","api.CanvasRenderingContext2D.resetTransform","api.CanvasRenderingContext2D.restore","api.CanvasRenderingContext2D.rotate","api.CanvasRenderingContext2D.save","api.CanvasRenderingContext2D.scale","api.CanvasRenderingContext2D.setLineDash","api.CanvasRenderingContext2D.setTransform","api.CanvasRenderingContext2D.shadowBlur","api.CanvasRenderingContext2D.shadowColor","api.CanvasRenderingContext2D.shadowOffsetX","api.CanvasRenderingContext2D.shadowOffsetY","api.CanvasRenderingContext2D.stroke","api.CanvasRenderingContext2D.strokeRect","api.CanvasRenderingContext2D.strokeStyle","api.CanvasRenderingContext2D.strokeText","api.CanvasRenderingContext2D.textAlign","api.CanvasRenderingContext2D.textBaseline","api.CanvasRenderingContext2D.textRendering","api.CanvasRenderingContext2D.transform","api.CanvasRenderingContext2D.translate","api.CanvasRenderingContext2D.wordSpacing","api.TextMetrics","api.TextMetrics.alphabeticBaseline","api.TextMetrics.hangingBaseline","api.TextMetrics.ideographicBaseline","api.TextMetrics.width"],"description":"The CanvasRenderingContext2D API is the \"2d\" rendering context for the <canvas> element. It represents a flat, two-dimensional space for drawing graphics and animations.","description_html":"The <code>CanvasRenderingContext2D</code> API is the \"2d\" rendering context for the <code><canvas></code> element. It represents a flat, two-dimensional space for drawing graphics and animations.","group":"canvas","name":"2D canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#2dcontext","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-2d-alpha":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_alpha_parameter"],"description":"The optional alpha parameter of a 2D canvas's getContext() method sets whether the canvas has an alpha transparency channel. If set to false, then this permits the browser to optimize compositing for an opaque canvas.","description_html":"The optional <code>alpha</code> parameter of a 2D canvas's <code>getContext()</code> method sets whether the canvas has an alpha transparency channel. If set to <code>false</code>, then this permits the browser to optimize compositing for an opaque canvas.","group":"canvas","name":"2D canvas opacity","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-alpha","status":{"baseline":false,"support":{"chrome":"32","chrome_android":"32","edge":"≤79","firefox":"30","firefox_android":"30"}}},"canvas-2d-color-managment":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_colorSpace_parameter"],"description":"The optional colorSpace parameter of a 2D canvas's getContext() method chooses the color representation, such as \"srgb\" or \"display-p3\".","description_html":"The optional <code>colorSpace</code> parameter of a 2D canvas's <code>getContext()</code> method chooses the color representation, such as <code>\"srgb\"</code> or <code>\"display-p3\"</code>.","group":"canvas","name":"Color management for 2D canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-color-space","status":{"baseline":false,"support":{"chrome":"92","chrome_android":"92","edge":"92","safari":"15.2","safari_ios":"15.2"}}},"canvas-2d-desynchronized":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_desynchronized_parameter"],"description":"The optional desynchronized parameter of a canvas's getContext() method permits the browser to draw a 2D canvas independently of the event loop. This can reduce drawing latency.","description_html":"The optional <code>desynchronized</code> parameter of a canvas's <code>getContext()</code> method permits the browser to draw a 2D canvas independently of the event loop. This can reduce drawing latency.","group":"canvas","name":"Desynchronized 2D canvas","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-desynchronized","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"75","edge":"79","safari":"15","safari_ios":"15"}}},"canvas-2d-willreadfrequently":{"compat_features":["api.HTMLCanvasElement.getContext.2d_context.options_willReadFrequently_parameter"],"description":"The optional willReadFrequently parameter of a canvas's getContext() method permits the browser to optimize for frequent getImageData() calls by avoiding hardware acceleration. Also known as multiple readback.","description_html":"The optional <code>willReadFrequently</code> parameter of a canvas's <code>getContext()</code> method permits the browser to optimize for frequent <code>getImageData()</code> calls by avoiding hardware acceleration. Also known as multiple readback.","group":"canvas","name":"willReadFrequently","spec":"https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently","status":{"baseline":"low","baseline_low_date":"2024-09-16","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"28","firefox_android":"28","safari":"18","safari_ios":"18"}}},"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><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"}}},"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.","group":"units","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"}}},"caret-color":{"caniuse":"css-caret-color","compat_features":["css.properties.caret-color"],"description":"The caret-color CSS property sets the color of the text insertion pointer in a text input.","description_html":"The <code>caret-color</code> CSS property sets the color of the text insertion pointer in a text input.","group":"css","name":"caret-color","spec":"https://drafts.csswg.org/css-ui-4/#insertion-caret","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"57","chrome_android":"57","edge":"79","firefox":"53","firefox_android":"53","safari":"11.1","safari_ios":"11.3"}}},"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.","group":"css","name":"Cascade layers","spec":"https://drafts.csswg.org/css-cascade-5/#layering","status":{"baseline":"high","baseline_high_date":"2024-09-14","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","api.Element.checkVisibility.options_checkOpacity_parameter","api.Element.checkVisibility.options_checkVisibilityCSS_parameter","api.Element.checkVisibility.options_contentVisibilityAuto_parameter","api.Element.checkVisibility.options_opacityProperty_parameter","api.Element.checkVisibility.options_visibilityProperty_parameter"],"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><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"}}},"clip-path":{"compat_features":["api.SVGClipPathElement","api.SVGClipPathElement.clipPathUnits","api.SVGClipPathElement.transform","css.properties.clip-path","css.properties.clip-path.basic_shape","css.properties.clip-path.html_elements","css.properties.clip-path.path","css.properties.clip-path.svg_elements","svg.elements.clipPath","svg.elements.clipPath.clipPathUnits","svg.elements.clipPath.systemLanguage","svg.global_attributes.clip-path"],"description":"The clip-path CSS property and SVG attribute set the visible area of an element. Everything outside the area will be hidden.","description_html":"The <code>clip-path</code> CSS property and SVG attribute set the visible area of an element. Everything outside the area will be hidden.","group":"clipping-shapes-masking","name":"clip-path","spec":"https://drafts.fxtf.org/css-masking-1/#the-clip-path","status":{"baseline":"high","baseline_high_date":"2023-07-21","baseline_low_date":"2021-01-21","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"71","firefox_android":"79","safari":"13.1","safari_ios":"13"}}},"clip-path-animatable":{"compat_features":["css.properties.clip-path.is_animatable"],"description":"The clip-path property can be animated using CSS transitions and animations.","description_html":"The <code>clip-path</code> property can be animated using CSS transitions and animations.","group":"clipping-shapes-masking","name":"Animatable clipping paths","spec":"https://drafts.fxtf.org/css-masking-1/#the-clip-path","status":{"baseline":false,"support":{"chrome":"55","chrome_android":"55","edge":"79","firefox":"49","firefox_android":"49"}}},"clip-path-boxes":{"compat_features":["css.properties.clip-path.fill-box","css.properties.clip-path.stroke-box","css.properties.clip-path.view-box"],"description":"The fill-box, stroke-box, and view-box values for clip-path set an edge of the element's box to use as the clipping shape.","description_html":"The <code>fill-box</code>, <code>stroke-box</code>, and <code>view-box</code> values for <code>clip-path</code> set an edge of the element's box to use as the clipping shape.","group":"clipping-shapes-masking","name":"Clip path boxes","spec":"https://drafts.fxtf.org/css-masking-1/#the-clip-path","status":{"baseline":"low","baseline_low_date":"2023-11-02","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"≤72","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"clipboard-events":{"compat_features":["api.ClipboardEvent","api.ClipboardEvent.ClipboardEvent","api.ClipboardEvent.clipboardData","api.Element.copy_event","api.Element.cut_event","api.Element.paste_event"],"description":"The \"copy\", \"cut\", and \"paste\" events fire on elements when the user starts an action with the clipboard.","description_html":"The <code>\"copy\"</code>, <code>\"cut\"</code>, and <code>\"paste\"</code> events fire on elements when the user starts an action with the clipboard.","group":"clipboard","name":"Clipboard events","spec":"https://w3c.github.io/clipboard-apis/#clipboard-event-interfaces","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"22","firefox_android":"22","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><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 picks a color from 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 picks a color from 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.","group":"color-types","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-gamut":{"compat_features":["css.at-rules.media.color-gamut"],"description":"The color-gamut media query sets styles based on the colors a device can display.","description_html":"The <code>color-gamut</code> media query sets styles based on the colors a device can display.","group":"media-queries","name":"color-gamut media query","spec":"https://drafts.csswg.org/mediaqueries-5/#color-gamut","status":{"baseline":"low","baseline_low_date":"2023-02-14","support":{"chrome":"58","chrome_android":"58","edge":"79","firefox":"110","firefox_android":"110","safari":"10","safari_ios":"10"}}},"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.","group":"css","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.","group":"css","name":"color-scheme","spec":"https://drafts.csswg.org/css-color-adjust-1/#color-scheme-prop","status":{"baseline":"high","baseline_high_date":"2024-08-03","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.repeating-conic-gradient"],"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-block-size.none","css.properties.contain-intrinsic-height","css.properties.contain-intrinsic-height.none","css.properties.contain-intrinsic-inline-size","css.properties.contain-intrinsic-inline-size.none","css.properties.contain-intrinsic-size","css.properties.contain-intrinsic-size.auto_none","css.properties.contain-intrinsic-size.none","css.properties.contain-intrinsic-width","css.properties.contain-intrinsic-width.none"],"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":"high","baseline_high_date":"2024-09-14","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":"high","baseline_high_date":"2024-09-14","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":"high","baseline_high_date":"2024-09-14","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.","group":"containment","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.","group":"containment","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","safari":"18","safari_ios":"18"}}},"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.","group":"css","name":"content-visibility","spec":"https://drafts.csswg.org/css-contain-2/#content-visibility","status":{"baseline":"low","baseline_low_date":"2024-09-16","support":{"chrome":"108","chrome_android":"108","edge":"108","firefox":"125","firefox_android":"125","safari":"18","safari_ios":"18"}}},"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><audio></code> or <code><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.","group":"css","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 sets 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 sets custom counter styles for list items. For example, you can use a sequence of specific symbols instead of numbers for an ordered list.","group":"css","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"}}},"credential-management":{"compat_features":["api.Credential","api.Credential.id","api.Credential.type","api.CredentialsContainer","api.CredentialsContainer.create","api.CredentialsContainer.get","api.CredentialsContainer.preventSilentAccess","api.CredentialsContainer.store","api.Navigator.credentials"],"description":"The navigator.credentials API provides generic storage for authentication credentials. Other credential APIs represent specific kinds of credentials, such as password or public key credentials, that the credential management API stores.","description_html":"The <code>navigator.credentials</code> API provides generic storage for authentication credentials. Other credential APIs represent specific kinds of credentials, such as password or public key credentials, that the credential management API stores.","group":"credential-management","name":"Credential management","spec":"https://w3c.github.io/webappsec-credential-management/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"60","firefox_android":"60","safari":"13","safari_ios":"13"}}},"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"}}},"currentcolor":{"caniuse":"currentcolor","compat_features":["css.types.color.currentcolor"],"description":"The currentColor CSS value allows you to reuse an element's computed text color for other properties.","description_html":"The <code>currentColor</code> CSS value allows you to reuse an element's computed text color for other properties.","group":"color-types","name":"currentColor","spec":"https://drafts.csswg.org/css-color-3/#currentcolor","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":"4","safari_ios":"3.2"}}},"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.","group":"css","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><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 sets recommended values for an <input> element. Browsers may show a dropdown menu of all values or match values as the user types.","description_html":"The <code><datalist></code> element sets recommended values for an <code><input></code> element. Browsers may show a dropdown menu of all values or match values 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"}}},"date":{"compat_features":["javascript.builtins.Date","javascript.builtins.Date.@@toPrimitive","javascript.builtins.Date.Date","javascript.builtins.Date.UTC","javascript.builtins.Date.UTC.optional_monthIndex","javascript.builtins.Date.getDate","javascript.builtins.Date.getDay","javascript.builtins.Date.getFullYear","javascript.builtins.Date.getHours","javascript.builtins.Date.getMilliseconds","javascript.builtins.Date.getMinutes","javascript.builtins.Date.getMonth","javascript.builtins.Date.getSeconds","javascript.builtins.Date.getTime","javascript.builtins.Date.getTimezoneOffset","javascript.builtins.Date.getUTCDate","javascript.builtins.Date.getUTCDay","javascript.builtins.Date.getUTCFullYear","javascript.builtins.Date.getUTCHours","javascript.builtins.Date.getUTCMilliseconds","javascript.builtins.Date.getUTCMinutes","javascript.builtins.Date.getUTCMonth","javascript.builtins.Date.getUTCSeconds","javascript.builtins.Date.now","javascript.builtins.Date.parse","javascript.builtins.Date.parse.iso_8601","javascript.builtins.Date.setDate","javascript.builtins.Date.setFullYear","javascript.builtins.Date.setHours","javascript.builtins.Date.setMilliseconds","javascript.builtins.Date.setMinutes","javascript.builtins.Date.setMonth","javascript.builtins.Date.setSeconds","javascript.builtins.Date.setTime","javascript.builtins.Date.setUTCDate","javascript.builtins.Date.setUTCFullYear","javascript.builtins.Date.setUTCHours","javascript.builtins.Date.setUTCMilliseconds","javascript.builtins.Date.setUTCMinutes","javascript.builtins.Date.setUTCMonth","javascript.builtins.Date.setUTCSeconds","javascript.builtins.Date.toDateString","javascript.builtins.Date.toISOString","javascript.builtins.Date.toJSON","javascript.builtins.Date.toString","javascript.builtins.Date.toTimeString","javascript.builtins.Date.toUTCString","javascript.builtins.Date.valueOf"],"description":"The Date object represents a single moment in time.","description_html":"The <code>Date</code> object represents a single moment in time.","group":"primitive-types","name":"Date","spec":"https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date-objects","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"}}},"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><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.","group":"selectors","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><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><details></code> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <code><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><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":"low","baseline_low_date":"2024-09-03","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"130","firefox_android":"130","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><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><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":"high","baseline_high_date":"2024-09-14","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":"selectors","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><textarea></code> and <code><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.","group":"css","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","safari":"18","safari_ios":"18"}}},"display-mode":{"compat_features":["css.at-rules.media.display-mode","css.at-rules.media.display-mode.picture-in-picture"],"description":"The display-mode CSS media query sets styles based on whether the web page is in fullscreen, standalone, minimal-ui, browser, or picture-in-picture mode.","description_html":"The <code>display-mode</code> CSS media query sets styles based on whether the web page is in <code>fullscreen</code>, <code>standalone</code>, <code>minimal-ui,</code> <code>browser</code>, or <code>picture-in-picture</code> mode.","group":"media-queries","name":"display-mode media query","spec":"https://drafts.csswg.org/mediaqueries-5/#display-modes","status":{"baseline":false,"support":{"chrome":"123","edge":"123"}}},"div":{"compat_features":["api.HTMLDivElement","html.elements.div"],"description":"The <div> HTML element is the generic container for content.","description_html":"The <code><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":{"chrome":"128","chrome_android":"128","edge":"128","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"}}},"dynamic-range":{"compat_features":["css.at-rules.media.dynamic-range"],"description":"The dynamic-range CSS media query sets styles based on whether a device can display at least standard range colors or at least high range colors. Non-visual devices will match neither.","description_html":"The <code>dynamic-range</code> CSS media query sets styles based on whether a device can display at least <code>standard</code> range colors or at least <code>high</code> range colors. Non-visual devices will match neither.","group":"media-queries","name":"dynamic-range media query","spec":"https://drafts.csswg.org/mediaqueries-5/#dynamic-range","status":{"baseline":"low","baseline_low_date":"2022-05-03","support":{"chrome":"98","chrome_android":"98","edge":"98","firefox":"100","firefox_android":"100","safari":"13.1","safari_ios":"13.4"}}},"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><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><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.","group":"css","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><audio></code> or <code><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"}}},"fedcm":{"compat_features":["api.CredentialsContainer.get.identity_option","api.IdentityCredential","api.IdentityCredential.token"],"description":"The IdentityCredential API delegates authentication to a third-party identity provider, instead of using third-party cookies. Also known as FedCM.","description_html":"The <code>IdentityCredential</code> API delegates authentication to a third-party identity provider, instead of using third-party cookies. Also known as FedCM.","group":"credential-management","name":"Federated credential management","spec":"https://w3c-fedid.github.io/FedCM/","status":{"baseline":false,"support":{"chrome":"108","chrome_android":"108","edge":"108"}}},"federated-credentials":{"compat_features":["api.FederatedCredential","api.FederatedCredential.FederatedCredential","api.FederatedCredential.iconURL","api.FederatedCredential.name","api.FederatedCredential.protocol","api.FederatedCredential.provider"],"description":"The FederatedCredential API represents the details required to authenticate a user using a third-party identity provider. Not to be confused with federated credential management (FedCM).","description_html":"The <code>FederatedCredential</code> API represents the details required to authenticate a user using a third-party identity provider. Not to be confused with federated credential management (FedCM).","group":"credential-management","name":"Federated credentials","spec":"https://w3c.github.io/webappsec-credential-management/#federated","status":{"baseline":false,"support":{"chrome":"51","chrome_android":"51","edge":"79"}}},"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>, <code>Sec-Fetch-Site</code>, and <code>Sec-Fetch-User</code> 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><textarea></code> to be sized based on their content.","group":"css","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><fieldset></code> and <code><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><figure></code> and <code><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"}}},"file-system-access":{"caniuse":"native-filesystem-api","compat_features":["api.DataTransferItem.getAsFileSystemHandle","api.FileSystemHandle.queryPermission","api.FileSystemHandle.requestPermission","api.Window.showDirectoryPicker","api.Window.showOpenFilePicker","api.Window.showSaveFilePicker"],"description":"The showOpenFilePicker(), showDirectoryPicker(), and showSaveFilePicker() methods request access to files and directories on the user's device and returns a handle for reading and writing to them.","description_html":"The <code>showOpenFilePicker()</code>, <code>showDirectoryPicker()</code>, and <code>showSaveFilePicker()</code> methods request access to files and directories on the user's device and returns a handle for reading and writing to them.","group":"file-system","name":"File system access","spec":"https://wicg.github.io/file-system-access/","status":{"baseline":false,"support":{"chrome":"86","edge":"86"}}},"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"}}},"float16array":{"compat_features":["javascript.builtins.DataView.getFloat16","javascript.builtins.DataView.setFloat16","javascript.builtins.Float16Array","javascript.builtins.Math.f16round"],"description":"Float16Array is a typed array of 16-bit floating point numbers.","description_html":"Float16Array is a typed array of 16-bit floating point numbers.","group":"typed-arrays","name":"Float16Array","spec":"https://tc39.es/proposal-float16array/","status":{"baseline":false,"support":{"firefox":"129","firefox_android":"129"}}},"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.","group":"selectors","name":":focus-visible","spec":"https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo","status":{"baseline":"high","baseline_high_date":"2024-09-14","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-display":{"caniuse":"css-font-rendering-controls","compat_features":["css.at-rules.font-face.font-display"],"description":"The font-display CSS descriptor sets whether to show a substitute font or nothing while a font face loads. The property manages what's known as a flash of unstyled text or flash of invisible text.","description_html":"The <code>font-display</code> CSS descriptor sets whether to show a substitute font or nothing while a font face loads. The property manages what's known as a flash of unstyled text or flash of invisible text.","group":"fonts","name":"font-display","spec":"https://drafts.csswg.org/css-fonts-4/#font-display-desc","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"58","firefox_android":"58","safari":"11.1","safari_ios":"11.3"}}},"font-face":{"caniuse":["fontface","font-unicode-range"],"compat_features":["api.CSSFontFaceRule","api.CSSFontFaceRule.style","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","css.at-rules.font-face.unicode-range"],"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-family":{"compat_features":["css.properties.font-family","svg.global_attributes.font-family"],"description":"The font-family CSS property sets the desired font face for text, along with optional fallback font faces.","description_html":"The <code>font-family</code> CSS property sets the desired font face for text, along with optional fallback font faces.","group":"fonts","name":"font-family","spec":"https://drafts.csswg.org/css-fonts-4/#font-family-prop","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"}}},"font-family-math":{"compat_features":["css.properties.font-family.math"],"description":"The font-family: math CSS declaration uses the browser default font face for displaying mathematical expressions.","description_html":"The <code>font-family: math</code> CSS declaration uses the browser default font face for displaying mathematical expressions.","name":"Math font family","spec":"https://drafts.csswg.org/css-fonts-4/#math-def","status":{"baseline":false,"support":{"chrome":"109","chrome_android":"109","edge":"109"}}},"font-family-system":{"caniuse":"font-family-system-ui","compat_features":["css.properties.font-family.system-ui"],"description":"The font-family: system-ui CSS declaration uses the operating system default font for text.","description_html":"The <code>font-family: system-ui</code> CSS declaration uses the operating system default font for text.","name":"System font","spec":"https://drafts.csswg.org/css-fonts-4/#system-ui-def","status":{"baseline":"high","baseline_high_date":"2024-03-07","baseline_low_date":"2021-09-07","support":{"chrome":"56","chrome_android":"56","edge":"79","firefox":"92","firefox_android":"92","safari":"11","safari_ios":"11"}}},"font-feature-settings":{"caniuse":"font-feature","compat_features":["css.at-rules.font-face.font-feature-settings","css.properties.font-feature-settings","css.properties.font-feature-settings.normal"],"description":"The font-feature-settings CSS property sets low-level OpenType feature tags for a font. When possible, use font-variant instead.","description_html":"The <code>font-feature-settings</code> CSS property sets low-level OpenType feature tags for a font. When possible, use <code>font-variant</code> instead.","group":"font-features","name":"font-feature-settings","spec":"https://drafts.csswg.org/css-fonts-4/#font-feature-settings-prop","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"48","chrome_android":"48","edge":"15","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-kerning":{"compat_features":["css.properties.font-kerning"],"description":"The font-kerning CSS property sets whether kerning data from a font is used to adjust the space between letters.","description_html":"The <code>font-kerning</code> CSS property sets whether kerning data from a font is used to adjust the space between letters.","group":"font-features","name":"font-kerning","spec":"https://drafts.csswg.org/css-fonts-4/#font-kerning-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"33","chrome_android":"33","edge":"79","firefox":"32","firefox_android":"32","safari":"9","safari_ios":"9"}}},"font-language-override":{"compat_features":["css.properties.font-language-override"],"description":"The font-language-override CSS property sets which language-specific glyphs are displayed.","description_html":"The <code>font-language-override</code> CSS property sets which language-specific glyphs are displayed.","group":"font-features","name":"font-language-override","spec":"https://drafts.csswg.org/css-fonts-4/#font-language-override-prop","status":{"baseline":false,"support":{"firefox":"34","firefox_android":"34"}}},"font-metric-overrides":{"compat_features":["api.FontFace.ascentOverride","api.FontFace.descentOverride","api.FontFace.lineGapOverride","css.at-rules.font-face.ascent-override","css.at-rules.font-face.descent-override","css.at-rules.font-face.line-gap-override"],"description":"The ascent-override, descent-override, and line-gap-override descriptors adjust the display of a font declared in an @font-face statement. This can help make fallback fonts look the same size.","description_html":"The <code>ascent-override</code>, <code>descent-override</code>, and <code>line-gap-override</code> descriptors adjust the display of a font declared in an <code>@font-face</code> statement. This can help make fallback fonts look the same size.","group":"fonts","name":"Font metric overrides","spec":"https://drafts.csswg.org/css-fonts-4/#font-metrics-override-desc","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"89","firefox_android":"89"}}},"font-optical-sizing":{"compat_features":["css.properties.font-optical-sizing","css.properties.font-optical-sizing.auto","css.properties.font-optical-sizing.none"],"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-09-24","baseline_low_date":"2020-03-24","support":{"chrome":"79","chrome_android":"79","edge":"17","firefox":"62","firefox_android":"62","safari":"13.1","safari_ios":"13.4"}}},"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","css.properties.font-palette.dark","css.properties.font-palette.light","css.properties.font-palette.normal"],"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-shorthand":{"compat_features":["css.properties.font"],"description":"The font CSS property shorthand sets multiple font properties, including style, weight, size, and font family.","description_html":"The <code>font</code> CSS property shorthand sets multiple font properties, including style, weight, size, and font family.","group":"fonts","name":"Font shorthand","spec":"https://drafts.csswg.org/css-fonts-4/#font-prop","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"}}},"font-size":{"compat_features":["css.properties.font-size","css.properties.font-size.rem_values","css.properties.font-size.xxx-large","svg.global_attributes.font-size"],"description":"The font-size CSS property sets the text height.","description_html":"The <code>font-size</code> CSS property sets the text height.","group":"fonts","name":"font-size","spec":"https://drafts.csswg.org/css-fonts-4/#font-size-prop","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"}}},"font-size-adjust":{"caniuse":"font-size-adjust","compat_features":["css.at-rules.font-face.size-adjust","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-stretch":{"caniuse":"css-font-stretch","compat_features":["css.at-rules.font-face.font-stretch","css.properties.font-stretch","css.properties.font-stretch.percentage","svg.global_attributes.font-stretch"],"description":"The font-stretch CSS property selects a font face from a font family based on width, either by a keyword such as condensed or a percentage.","description_html":"The <code>font-stretch</code> CSS property selects a font face from a font family based on width, either by a keyword such as <code>condensed</code> or a percentage.","group":"fonts","name":"font-stretch","spec":"https://drafts.csswg.org/css-fonts-4/#font-stretch-prop","status":{"baseline":"high","baseline_high_date":"2020-03-19","baseline_low_date":"2017-09-19","support":{"chrome":"60","chrome_android":"60","edge":"12","firefox":"9","firefox_android":"9","safari":"11","safari_ios":"11"}}},"font-style":{"compat_features":["css.at-rules.font-face.font-style","css.properties.font-style","css.properties.font-style.italic","css.properties.font-style.normal","css.properties.font-style.oblique-angle","svg.global_attributes.font-style"],"description":"The font-style CSS property sets the text style, with normal, italic, and oblique options.","description_html":"The <code>font-style</code> CSS property sets the text style, with <code>normal</code>, <code>italic</code>, and <code>oblique</code> options.","group":"fonts","name":"font-style","spec":"https://drafts.csswg.org/css-fonts-4/#font-style-prop","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"}}},"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":{"compat_features":["css.at-rules.font-face.font-variant","css.properties.font-variant","css.properties.font-variant.historical-forms","css.properties.font-variant.none","css.properties.font-variant.normal","css.properties.font-variant.sub","css.properties.font-variant.super","css.properties.font-variant.turkic_is","svg.global_attributes.font-variant"],"description":"The font-variant CSS property is a shorthand for font-variant-alternates, font-variant-caps, font-variant-east-asian, font-variant-emoji, font-variant-ligatures, font-variant-numeric, and font-variant-position.","description_html":"The <code>font-variant</code> CSS property is a shorthand for <code>font-variant-alternates</code>, <code>font-variant-caps</code>, <code>font-variant-east-asian</code>, <code>font-variant-emoji</code>, <code>font-variant-ligatures</code>, <code>font-variant-numeric</code>, and <code>font-variant-position</code>.","group":"font-features","name":"font-variant","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-prop","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"}}},"font-variant-alternates":{"caniuse":"font-variant-alternates","compat_features":["api.CSSFontFeatureValuesMap","api.CSSFontFeatureValuesMap.@@iterator","api.CSSFontFeatureValuesMap.clear","api.CSSFontFeatureValuesMap.delete","api.CSSFontFeatureValuesMap.entries","api.CSSFontFeatureValuesMap.forEach","api.CSSFontFeatureValuesMap.get","api.CSSFontFeatureValuesMap.has","api.CSSFontFeatureValuesMap.keys","api.CSSFontFeatureValuesMap.set","api.CSSFontFeatureValuesMap.size","api.CSSFontFeatureValuesMap.values","api.CSSFontFeatureValuesRule","api.CSSFontFeatureValuesRule.annotation","api.CSSFontFeatureValuesRule.characterVariant","api.CSSFontFeatureValuesRule.fontFamily","api.CSSFontFeatureValuesRule.ornaments","api.CSSFontFeatureValuesRule.styleset","api.CSSFontFeatureValuesRule.stylistic","api.CSSFontFeatureValuesRule.swash","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.historical-forms","css.properties.font-variant-alternates.normal","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":"9.1","safari_ios":"9.3"}}},"font-variant-caps":{"compat_features":["css.properties.font-variant-caps","css.properties.font-variant-caps.all-petite-caps","css.properties.font-variant-caps.all-small-caps","css.properties.font-variant-caps.normal","css.properties.font-variant-caps.petite-caps","css.properties.font-variant-caps.small-caps","css.properties.font-variant-caps.titling-caps","css.properties.font-variant-caps.unicase"],"description":"The font-variant-caps CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles.","description_html":"The <code>font-variant-caps</code> CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles.","group":"font-features","name":"font-variant-caps","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-caps-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-east-asian":{"compat_features":["css.properties.font-variant-east-asian","css.properties.font-variant-east-asian.full-width","css.properties.font-variant-east-asian.jis04","css.properties.font-variant-east-asian.jis78","css.properties.font-variant-east-asian.jis83","css.properties.font-variant-east-asian.jis90","css.properties.font-variant-east-asian.normal","css.properties.font-variant-east-asian.proportional-width","css.properties.font-variant-east-asian.ruby","css.properties.font-variant-east-asian.simplified","css.properties.font-variant-east-asian.traditional"],"description":"The font-variant-east-asian CSS property controls glyph substitution and sizing in East Asian text.","description_html":"The <code>font-variant-east-asian</code> CSS property controls glyph substitution and sizing in East Asian text.","group":"font-features","name":"font-variant-east-asian","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-east-asian-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"63","chrome_android":"63","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-emoji":{"compat_features":["css.properties.font-variant-emoji"],"description":"The font-variant-emoji CSS property sets the default presentation for emoji characters.","description_html":"The <code>font-variant-emoji</code> CSS property sets the default presentation for emoji characters.","group":"font-features","name":"font-variant-emoji","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-emoji-prop","status":{"baseline":false,"support":{}}},"font-variant-ligatures":{"compat_features":["css.properties.font-variant-ligatures","css.properties.font-variant-ligatures.common-ligatures","css.properties.font-variant-ligatures.contextual","css.properties.font-variant-ligatures.discretionary-ligatures","css.properties.font-variant-ligatures.historical-ligatures","css.properties.font-variant-ligatures.no-common-ligatures","css.properties.font-variant-ligatures.no-contextual","css.properties.font-variant-ligatures.no-discretionary-ligatures","css.properties.font-variant-ligatures.no-historical-ligatures","css.properties.font-variant-ligatures.none","css.properties.font-variant-ligatures.normal"],"description":"The font-variant-ligatures CSS property sets how characters can be visually combined for readability or stylistic reasons.","description_html":"The <code>font-variant-ligatures</code> CSS property sets how characters can be visually combined for readability or stylistic reasons.","group":"font-features","name":"font-variant-ligatures","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-ligatures-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"34","chrome_android":"34","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-numeric":{"caniuse":"font-variant-numeric","compat_features":["css.properties.font-variant-numeric","css.properties.font-variant-numeric.diagonal-fractions","css.properties.font-variant-numeric.lining-nums","css.properties.font-variant-numeric.normal","css.properties.font-variant-numeric.oldstyle-nums","css.properties.font-variant-numeric.ordinal","css.properties.font-variant-numeric.proportional-nums","css.properties.font-variant-numeric.slashed-zero","css.properties.font-variant-numeric.stacked-fractions","css.properties.font-variant-numeric.tabular-nums"],"description":"The font-variant-numeric CSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash.","description_html":"The <code>font-variant-numeric</code> CSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash.","group":"font-features","name":"font-variant-numeric","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-numeric-prop","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"52","chrome_android":"52","edge":"79","firefox":"34","firefox_android":"34","safari":"9.1","safari_ios":"9.3"}}},"font-variant-position":{"compat_features":["css.properties.font-variant-position","css.properties.font-variant-position.normal","css.properties.font-variant-position.sub","css.properties.font-variant-position.super"],"description":"The font-variant-position CSS property sets whether to use alternate glyphs for subscript and superscript text.","description_html":"The <code>font-variant-position</code> CSS property sets whether to use alternate glyphs for subscript and superscript text.","group":"font-features","name":"font-variant-position","spec":"https://drafts.csswg.org/css-fonts-4/#font-variant-position-prop","status":{"baseline":"low","baseline_low_date":"2023-09-15","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"≤72","firefox_android":"79","safari":"≤13.1","safari_ios":"≤13.4"}}},"font-variation-settings":{"caniuse":"variable-fonts","compat_features":["css.at-rules.font-face.font-variation-settings","css.properties.font-variation-settings"],"description":"The font-variation-settings CSS property sets an \"axis of variability\" on a variable font, such as weight, optical size, or a custom axis defined by the typeface designer. When possible, use other CSS font properties, such as font-weight: bold. Also known as variable fonts.","description_html":"The <code>font-variation-settings</code> CSS property sets an \"axis of variability\" on a variable font, such as weight, optical size, or a custom axis defined by the typeface designer. When possible, use other CSS font properties, such as <code>font-weight: bold</code>. Also known as variable fonts.","group":"fonts","name":"font-variation-settings","spec":"https://drafts.csswg.org/css-fonts-4/#font-variation-settings-def","status":{"baseline":"high","baseline_high_date":"2021-03-05","baseline_low_date":"2018-09-05","support":{"chrome":"62","chrome_android":"62","edge":"17","firefox":"62","firefox_android":"62","safari":"11","safari_ios":"11"}}},"font-weight":{"compat_features":["css.at-rules.font-face.font-weight","css.properties.font-weight","css.properties.font-weight.bold","css.properties.font-weight.bolder","css.properties.font-weight.lighter","css.properties.font-weight.normal","css.properties.font-weight.number","svg.global_attributes.font-weight"],"description":"The font-weight CSS property controls the thickness of a font. It is set explicitly with the keyword bold or a number, or relative to the inherited thickness with the keywords bolder or lighter.","description_html":"The <code>font-weight</code> CSS property controls the thickness of a font. It is set explicitly with the keyword <code>bold</code> or a number, or relative to the inherited thickness with the keywords <code>bolder</code> or <code>lighter</code>.","group":"fonts","name":"font-weight","spec":"https://drafts.csswg.org/css-fonts-4/#font-weight-prop","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":"1","safari_ios":"1"}}},"forced-colors":{"compat_features":["css.at-rules.media.forced-colors","css.properties.forced-color-adjust","css.properties.forced-color-adjust.auto","css.properties.forced-color-adjust.none","css.properties.forced-color-adjust.preserve-parent-color"],"description":"The forced-colors CSS @media rule detects when a user has chosen to use a forced colors mode, also known as high-contrast mode, and the forced-color-adjust CSS property sets whether forced colors apply to an element.","description_html":"The <code>forced-colors</code> CSS @media rule detects when a user has chosen to use a forced colors mode, also known as high-contrast mode, and the <code>forced-color-adjust</code> CSS property sets whether forced colors apply to an element.","group":"css","name":"Forced colors","spec":["https://drafts.csswg.org/mediaqueries-5/#forced-colors","https://drafts.csswg.org/css-color-adjust-1/#forced-color-adjust-prop"],"status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"89","chrome_android":"89","edge":"79","firefox":"89","firefox_android":"89","safari":"16","safari_ios":"16"}}},"form":{"compat_features":["api.HTMLFormElement","api.HTMLFormElement.acceptCharset","api.HTMLFormElement.action","api.HTMLFormElement.autocomplete","api.HTMLFormElement.elements","api.HTMLFormElement.encoding","api.HTMLFormElement.enctype","api.HTMLFormElement.formdata_event","api.HTMLFormElement.length","api.HTMLFormElement.method","api.HTMLFormElement.name","api.HTMLFormElement.noValidate","api.HTMLFormElement.rel","api.HTMLFormElement.relList","api.HTMLFormElement.requestSubmit","api.HTMLFormElement.reset","api.HTMLFormElement.reset_event","api.HTMLFormElement.submit","api.HTMLFormElement.submit_event","api.HTMLFormElement.target","html.elements.form","html.elements.form.accept-charset","html.elements.form.action","html.elements.form.autocomplete","html.elements.form.enctype","html.elements.form.method","html.elements.form.name","html.elements.form.novalidate","html.elements.form.rel","html.elements.form.target"],"description":"The <form> element contains interactive controls for submitting information.","description_html":"The <code><form></code> element contains interactive controls for submitting information.","group":"forms","name":"<form>","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-form-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"}}},"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"}}},"functions":{"compat_features":["javascript.builtins.Function","javascript.builtins.Function.@@hasInstance","javascript.builtins.Function.Function","javascript.builtins.Function.apply","javascript.builtins.Function.apply.generic_arrays_as_arguments","javascript.builtins.Function.bind","javascript.builtins.Function.call","javascript.builtins.Function.length","javascript.builtins.Function.length.configurable_true","javascript.builtins.Function.name","javascript.builtins.Function.name.configurable_true","javascript.builtins.Function.name.inferred_names","javascript.builtins.Function.toString","javascript.functions","javascript.functions.arguments","javascript.functions.arguments.@@iterator","javascript.functions.arguments.length","javascript.functions.arrow_functions","javascript.functions.arrow_functions.trailing_comma","javascript.functions.block_level_functions","javascript.functions.default_parameters","javascript.functions.default_parameters.destructured_parameter_with_default_value_assignment","javascript.functions.default_parameters.parameters_without_defaults_after_default_parameters","javascript.functions.get","javascript.functions.get.computed_property_names","javascript.functions.method_definitions","javascript.functions.method_definitions.async_methods","javascript.functions.method_definitions.generator_methods_not_constructable","javascript.functions.rest_parameters","javascript.functions.rest_parameters.destructuring","javascript.functions.set","javascript.functions.set.computed_property_names","javascript.operators.function","javascript.operators.function.trailing_comma","javascript.statements.function","javascript.statements.function.trailing_comma_in_parameters"],"description":"Functions are series of statements that can be called and return a value. The function keyword (as in function () { }) and arrow (=>) expression create functions. The JavaScript functions protocol includes default and rest parameters and binding to this.","description_html":"Functions are series of statements that can be called and return a value. The <code>function</code> keyword (as in <code>function () { }</code>) and arrow (<code>=></code>) expression create functions. The JavaScript functions protocol includes default and rest parameters and binding to <code>this</code>.","group":"javascript","name":"Functions","spec":["https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-ecmascript-language-functions-and-classes","https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-function-objects"],"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"}}},"generators":{"caniuse":"es6-generators","compat_features":["javascript.builtins.Generator","javascript.builtins.Generator.next","javascript.builtins.Generator.return","javascript.builtins.Generator.throw","javascript.builtins.GeneratorFunction","javascript.builtins.GeneratorFunction.GeneratorFunction","javascript.operators.generator_function","javascript.operators.generator_function.trailing_comma","javascript.operators.yield","javascript.operators.yield_star","javascript.statements.generator_function","javascript.statements.generator_function.IteratorResult_object","javascript.statements.generator_function.not_constructable_with_new","javascript.statements.generator_function.trailing_comma_in_parameters"],"description":"Generator functions (function*) create iterators that return multiple values, one after another, on-demand.","description_html":"Generator functions (<code>function*</code>) create iterators that return multiple values, one after another, on-demand.","group":"javascript","name":"Generators","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-generator-objects","https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-generatorfunction-objects"],"status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"39","chrome_android":"39","edge":"13","firefox":"26","firefox_android":"26","safari":"10","safari_ios":"10"}}},"geolocation":{"caniuse":"geolocation","compat_features":["api.Geolocation","api.Geolocation.clearWatch","api.Geolocation.getCurrentPosition","api.Geolocation.secure_context_required","api.Geolocation.watchPosition","api.GeolocationCoordinates","api.GeolocationCoordinates.accuracy","api.GeolocationCoordinates.altitude","api.GeolocationCoordinates.altitudeAccuracy","api.GeolocationCoordinates.heading","api.GeolocationCoordinates.latitude","api.GeolocationCoordinates.longitude","api.GeolocationCoordinates.secure_context_required","api.GeolocationCoordinates.speed","api.GeolocationCoordinates.toJSON","api.GeolocationPosition","api.GeolocationPosition.coords","api.GeolocationPosition.secure_context_required","api.GeolocationPosition.timestamp","api.GeolocationPosition.toJSON","api.GeolocationPositionError","api.GeolocationPositionError.code","api.GeolocationPositionError.message","api.GeolocationPositionError.secure_context_required","api.Navigator.geolocation","api.Navigator.geolocation.secure_context_required","http.headers.Permissions-Policy.geolocation"],"description":"The navigator.gelocation API requests the user's latitude, longitude, heading, and speed.","description_html":"The <code>navigator.gelocation</code> API requests the user's latitude, longitude, heading, and speed.","name":"Geolocation","spec":"https://w3c.github.io/geolocation/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"5","safari_ios":"≤3"}}},"gradient-interpolation":{"compat_features":["css.types.image.gradient.conic-gradient.hue_interpolation_method","css.types.image.gradient.conic-gradient.interpolation_color_space","css.types.image.gradient.linear-gradient.hue_interpolation_method","css.types.image.gradient.linear-gradient.interpolation_color_space","css.types.image.gradient.radial-gradient.hue_interpolation_method","css.types.image.gradient.radial-gradient.interpolation_color_space","css.types.image.gradient.repeating-conic-gradient.hue_interpolation_method","css.types.image.gradient.repeating-conic-gradient.interpolation_color_space","css.types.image.gradient.repeating-linear-gradient.hue_interpolation_method","css.types.image.gradient.repeating-linear-gradient.interpolation_color_space","css.types.image.gradient.repeating-radial-gradient.hue_interpolation_method","css.types.image.gradient.repeating-radial-gradient.interpolation_color_space"],"description":"Gradient interpolation controls how the colors between gradient stops are calculated in CSS. For example, linear-gradient(to right in oklch longer hue, red, red); calculates in the oklch color space, with the hue going all the way around the hue circle from red back to red.","description_html":"Gradient interpolation controls how the colors between gradient stops are calculated in CSS. For example, <code>linear-gradient(to right in oklch longer hue, red, red);</code> calculates in the <code>oklch</code> color space, with the hue going all the way around the hue circle from red back to red.","group":"gradients","name":"Gradient interpolation","spec":"https://drafts.csswg.org/css-color-4/#interpolation-space","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"127","firefox_android":"127","safari":"16.2","safari_ios":"16.2"}}},"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"}}},"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.","group":"selectors","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><head></code> element contains machine-readable information (metadata) about the document, such as the title, <code><script></code> and <code><style></code> elements, and <code><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><header></code> and <code><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><h1></code> through <code><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><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><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"}}},"hsl":{"caniuse":"css3-colors","compat_features":["css.types.color.hsl","css.types.color.hsl.alpha_parameter","css.types.color.hsl.mixed_type_parameters","css.types.color.hsl.space_separated_parameters"],"description":"The hsl() and hsla() CSS functions pick colors using hue, saturation, lightness, and alpha (transparency) channels.","description_html":"The <code>hsl()</code> and <code>hsla()</code> CSS functions pick colors using hue, saturation, lightness, and alpha (transparency) channels.","group":"color-types","name":"HSL","spec":"https://drafts.csswg.org/css-color-4/#the-hsl-notation","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"52","firefox_android":"52","safari":"12.1","safari_ios":"12.2"}}},"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><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><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"}}},"hwb":{"compat_features":["css.types.color.hwb","css.types.color.hwb.mixed_type_parameters"],"description":"The hwb() CSS function picks colors using hue, whiteness, and blackness channels.","description_html":"The <code>hwb()</code> CSS function picks colors using hue, whiteness, and blackness channels.","group":"color-types","name":"HWB","spec":"https://drafts.csswg.org/css-color-4/#the-hwb-notation","status":{"baseline":"low","baseline_low_date":"2022-04-28","support":{"chrome":"101","chrome_android":"101","edge":"101","firefox":"96","firefox_android":"96","safari":"15","safari_ios":"15"}}},"hyphens":{"caniuse":"css-hyphens","compat_features":["css.properties.hyphens","css.properties.hyphens.auto","css.properties.hyphens.language_afrikaans","css.properties.hyphens.language_albanian","css.properties.hyphens.language_amharic","css.properties.hyphens.language_armenian","css.properties.hyphens.language_assamese","css.properties.hyphens.language_basque","css.properties.hyphens.language_belarusian","css.properties.hyphens.language_bengali","css.properties.hyphens.language_bosnian","css.properties.hyphens.language_bulgarian","css.properties.hyphens.language_catalan","css.properties.hyphens.language_croatian","css.properties.hyphens.language_cyrillic_mongolian","css.properties.hyphens.language_czech","css.properties.hyphens.language_danish","css.properties.hyphens.language_dutch","css.properties.hyphens.language_english","css.properties.hyphens.language_esperanto","css.properties.hyphens.language_estonian","css.properties.hyphens.language_ethiopic_script_mul","css.properties.hyphens.language_ethiopic_script_und","css.properties.hyphens.language_finnish","css.properties.hyphens.language_french","css.properties.hyphens.language_galician","css.properties.hyphens.language_georgian","css.properties.hyphens.language_german_reformed_orthography","css.properties.hyphens.language_german_swiss_orthography","css.properties.hyphens.language_german_traditional_orthography","css.properties.hyphens.language_gujarati","css.properties.hyphens.language_hindi","css.properties.hyphens.language_hungarian","css.properties.hyphens.language_icelandic","css.properties.hyphens.language_interlingua","css.properties.hyphens.language_irish","css.properties.hyphens.language_italian","css.properties.hyphens.language_kannada","css.properties.hyphens.language_kurmanji","css.properties.hyphens.language_latin","css.properties.hyphens.language_latvian","css.properties.hyphens.language_lithuanian","css.properties.hyphens.language_malayalam","css.properties.hyphens.language_marathi","css.properties.hyphens.language_modern_greek","css.properties.hyphens.language_mongolian","css.properties.hyphens.language_norwegian_nn","css.properties.hyphens.language_norwegian_no","css.properties.hyphens.language_old_slavonic","css.properties.hyphens.language_oriya","css.properties.hyphens.language_polish","css.properties.hyphens.language_portuguese","css.properties.hyphens.language_punjabi","css.properties.hyphens.language_russian","css.properties.hyphens.language_slovak","css.properties.hyphens.language_slovenian","css.properties.hyphens.language_spanish","css.properties.hyphens.language_swedish","css.properties.hyphens.language_tamil","css.properties.hyphens.language_telugu","css.properties.hyphens.language_turkish","css.properties.hyphens.language_turkmen","css.properties.hyphens.language_ukrainian","css.properties.hyphens.language_upper_sorbian","css.properties.hyphens.language_welsh"],"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. Support for non-English languages varies signficantly.","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. Support for non-English languages varies signficantly.","group":"css","name":"Hyphenation","spec":"https://drafts.csswg.org/css-text-3/#hyphens-property","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"88","chrome_android":"55","edge":"88","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><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.","group":"units","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><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><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"}}},"iframe-srcdoc":{"caniuse":"iframe-srcdoc","compat_features":["api.HTMLIFrameElement.srcdoc","html.elements.iframe.srcdoc"],"description":"The srcdoc attribute for the <iframe> HTML element sets a string of HTML to embed in the document. The value of srcdoc overrides loading a document from the src attribute.","description_html":"The <code>srcdoc</code> attribute for the <code><iframe></code> HTML element sets a string of HTML to embed in the document. The value of <code>srcdoc</code> overrides loading a document from the <code>src</code> attribute.","name":"srcdoc","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-srcdoc","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"20","chrome_android":"25","edge":"79","firefox":"25","firefox_android":"25","safari":"6","safari_ios":"6"}}},"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><area></code> and <code><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.","group":"css","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><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":{"compat_features":["api.CSSImportRule","api.CSSImportRule.href","api.CSSImportRule.media","api.CSSImportRule.styleSheet","css.at-rules.import"],"description":"The @import CSS at-rule loads styles from another stylesheet.","description_html":"The <code>@import</code> CSS at-rule loads styles from another stylesheet.","group":"css","name":"@import","spec":"https://drafts.csswg.org/css-cascade-5/#at-import","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><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"}}},"initial-letter":{"compat_features":["css.properties.initial-letter","css.properties.initial-letter.normal"],"description":"The initial-letter CSS property sets the number of lines the first letter of an element occupies. You can use the property to make a raised capital or drop cap.","description_html":"The <code>initial-letter</code> CSS property sets the number of lines the first letter of an element occupies. You can use the property to make a raised capital or drop cap.","group":"css","name":"initial-letter","spec":"https://drafts.csswg.org/css-inline-3/#sizing-drop-initials","status":{"baseline":false,"support":{"chrome":"110","chrome_android":"110","edge":"110"}}},"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><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"}}},"interaction":{"caniuse":"css-media-interaction","compat_features":["css.at-rules.media.any-hover","css.at-rules.media.any-pointer","css.at-rules.media.hover","css.at-rules.media.pointer"],"description":"The pointer, any-pointer, hover, and any-hover CSS media queries set styles based on the presence of pointing devices and their ability to hover over elements. For example, most smartphones match the (hover: none) and (pointer: coarse) media query.","description_html":"The <code>pointer</code>, <code>any-pointer</code>, <code>hover</code>, and <code>any-hover</code> CSS media queries set styles based on the presence of pointing devices and their ability to hover over elements. For example, most smartphones match the <code>(hover: none) and (pointer: coarse)</code> media query.","group":"media-queries","name":"Interaction media queries","spec":"https://drafts.csswg.org/mediaqueries-5/#mf-interaction","status":{"baseline":"high","baseline_high_date":"2021-06-11","baseline_low_date":"2018-12-11","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"64","firefox_android":"64","safari":"9","safari_ios":"9"}}},"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":{"caniuse":"internationalization","compat_features":["javascript.builtins.Array.toLocaleString","javascript.builtins.Array.toLocaleString.locales_parameter","javascript.builtins.Array.toLocaleString.options_parameter","javascript.builtins.BigInt.toLocaleString","javascript.builtins.BigInt.toLocaleString.locales_parameter","javascript.builtins.BigInt.toLocaleString.options_parameter","javascript.builtins.Date.toLocaleDateString","javascript.builtins.Date.toLocaleDateString.iana_time_zone_names","javascript.builtins.Date.toLocaleDateString.locales_parameter","javascript.builtins.Date.toLocaleDateString.options_parameter","javascript.builtins.Date.toLocaleString","javascript.builtins.Date.toLocaleString.iana_time_zone_names","javascript.builtins.Date.toLocaleString.locales_parameter","javascript.builtins.Date.toLocaleString.options_parameter","javascript.builtins.Date.toLocaleTimeString","javascript.builtins.Date.toLocaleTimeString.iana_time_zone_names","javascript.builtins.Date.toLocaleTimeString.locales_parameter","javascript.builtins.Date.toLocaleTimeString.options_parameter","javascript.builtins.Intl","javascript.builtins.Intl.Collator","javascript.builtins.Intl.Collator.Collator","javascript.builtins.Intl.Collator.Collator.options_caseFirst_parameter","javascript.builtins.Intl.Collator.Collator.options_collation_parameter","javascript.builtins.Intl.Collator.Collator.options_ignorePunctuation_parameter","javascript.builtins.Intl.Collator.Collator.options_localeMatcher_parameter","javascript.builtins.Intl.Collator.Collator.options_numeric_parameter","javascript.builtins.Intl.Collator.Collator.options_sensitivity_parameter","javascript.builtins.Intl.Collator.Collator.options_usage_parameter","javascript.builtins.Intl.Collator.compare","javascript.builtins.Intl.Collator.resolvedOptions","javascript.builtins.Intl.Collator.supportedLocalesOf","javascript.builtins.Intl.DateTimeFormat","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.locales_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_calendar_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_dateStyle_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_dayPeriod_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_fractionalSecondDigits_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_hourCycle_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_numberingSystem_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeStyle_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZoneName_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZoneName_parameter.extended_values","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZone_parameter","javascript.builtins.Intl.DateTimeFormat.DateTimeFormat.options_parameter.options_timeZone_parameter.iana_time_zones","javascript.builtins.Intl.DateTimeFormat.format","javascript.builtins.Intl.DateTimeFormat.formatRange","javascript.builtins.Intl.DateTimeFormat.formatRangeToParts","javascript.builtins.Intl.DateTimeFormat.formatToParts","javascript.builtins.Intl.DateTimeFormat.resolvedOptions","javascript.builtins.Intl.DateTimeFormat.resolvedOptions.computed_timezone","javascript.builtins.Intl.DateTimeFormat.supportedLocalesOf","javascript.builtins.Intl.NumberFormat","javascript.builtins.Intl.NumberFormat.NumberFormat","javascript.builtins.Intl.NumberFormat.NumberFormat.locales_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_compactDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_currencyDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_currencySign_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_currency_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_localeMatcher_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_maximumFractionDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_maximumSignificantDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_minimumFractionDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_minimumIntegerDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_minimumSignificantDigits_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_notation_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_numberingSystem_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_roundingIncrement_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_roundingMode_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_roundingPriority_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_signDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_signDisplay_parameter.negative","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_style_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_trailingZeroDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unitDisplay_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_unit_parameter","javascript.builtins.Intl.NumberFormat.NumberFormat.options_parameter.options_useGrouping_parameter","javascript.builtins.Intl.NumberFormat.format","javascript.builtins.Intl.NumberFormat.format.number_parameter-string_decimal","javascript.builtins.Intl.NumberFormat.formatRange","javascript.builtins.Intl.NumberFormat.formatRangeToParts","javascript.builtins.Intl.NumberFormat.formatToParts","javascript.builtins.Intl.NumberFormat.resolvedOptions","javascript.builtins.Intl.NumberFormat.supportedLocalesOf","javascript.builtins.Intl.getCanonicalLocales","javascript.builtins.Intl.supportedValuesOf","javascript.builtins.Number.toLocaleString","javascript.builtins.Number.toLocaleString.locales_parameter","javascript.builtins.Number.toLocaleString.options_parameter","javascript.builtins.Object.toLocaleString","javascript.builtins.String.localeCompare","javascript.builtins.String.localeCompare.locales_parameter","javascript.builtins.String.localeCompare.options_parameter","javascript.builtins.String.toLocaleLowerCase","javascript.builtins.String.toLocaleLowerCase.locales_parameter","javascript.builtins.String.toLocaleUpperCase","javascript.builtins.String.toLocaleUpperCase.locales_parameter","javascript.builtins.TypedArray.toLocaleString"],"description":"The Intl API provides language sensitive string comparison, number formatting, date and time formatting, and more.","description_html":"The <code>Intl</code> API provides language sensitive string comparison, number formatting, date and time formatting, and more.","group":"intl","name":"Intl","spec":"https://tc39.es/ecma402/#introduction","status":{"baseline":"high","baseline_high_date":"2020-03-28","baseline_low_date":"2017-09-28","support":{"chrome":"24","chrome_android":"25","edge":"12","firefox":"29","firefox_android":"56","safari":"10","safari_ios":"10"}}},"intl-display-names":{"compat_features":["javascript.builtins.Intl.DisplayNames","javascript.builtins.Intl.DisplayNames.DisplayNames","javascript.builtins.Intl.DisplayNames.of","javascript.builtins.Intl.DisplayNames.resolvedOptions","javascript.builtins.Intl.DisplayNames.supportedLocalesOf"],"description":"The Intl.DisplayNames API provides localized names of language, region, script, and currency codes.","description_html":"The <code>Intl.DisplayNames</code> API provides localized names of language, region, script, and currency codes.","group":"intl","name":"Intl.DisplayNames","spec":"https://tc39.es/ecma402/#intl-displaynames-objects","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"81","chrome_android":"81","edge":"81","firefox":"86","firefox_android":"86","safari":"14.1","safari_ios":"14.5"}}},"intl-duration-format":{"compat_features":["javascript.builtins.Intl.DurationFormat","javascript.builtins.Intl.DurationFormat.DurationFormat","javascript.builtins.Intl.DurationFormat.format","javascript.builtins.Intl.DurationFormat.formatToParts","javascript.builtins.Intl.DurationFormat.resolvedOptions","javascript.builtins.Intl.DurationFormat.supportedLocalesOf"],"description":"The Intl.DurationFormat API creates a locale-aware formatter that turns an object representing a duration (such as days, hours, and minutes) into a string.","description_html":"The <code>Intl.DurationFormat</code> API creates a locale-aware formatter that turns an object representing a duration (such as days, hours, and minutes) into a string.","group":"intl","name":"Intl.DurationFormat","spec":"https://tc39.es/proposal-intl-duration-format/","status":{"baseline":false,"support":{"chrome":"129","chrome_android":"129","edge":"129","safari":"16.4","safari_ios":"16.4"}}},"intl-list-format":{"compat_features":["javascript.builtins.Intl.ListFormat","javascript.builtins.Intl.ListFormat.ListFormat","javascript.builtins.Intl.ListFormat.format","javascript.builtins.Intl.ListFormat.formatToParts","javascript.builtins.Intl.ListFormat.resolvedOptions","javascript.builtins.Intl.ListFormat.supportedLocalesOf"],"description":"The Intl.ListFormat API creates a locale-aware formatter that turns iterable objects into localized strings.","description_html":"The <code>Intl.ListFormat</code> API creates a locale-aware formatter that turns iterable objects into localized strings.","group":"intl","name":"Intl.ListFormat","spec":"https://tc39.es/ecma402/#listformat-objects","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"72","chrome_android":"72","edge":"79","firefox":"78","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"intl-locale":{"compat_features":["javascript.builtins.Intl.Locale","javascript.builtins.Intl.Locale.Locale","javascript.builtins.Intl.Locale.baseName","javascript.builtins.Intl.Locale.calendar","javascript.builtins.Intl.Locale.caseFirst","javascript.builtins.Intl.Locale.collation","javascript.builtins.Intl.Locale.hourCycle","javascript.builtins.Intl.Locale.language","javascript.builtins.Intl.Locale.maximize","javascript.builtins.Intl.Locale.minimize","javascript.builtins.Intl.Locale.numberingSystem","javascript.builtins.Intl.Locale.numeric","javascript.builtins.Intl.Locale.region","javascript.builtins.Intl.Locale.script","javascript.builtins.Intl.Locale.toString"],"description":"The Intl.Locale API parses Unicode locale identifiers, with language, region, and script codes, such as zh-Hans-CN or en-GB.","description_html":"The <code>Intl.Locale</code> API parses Unicode locale identifiers, with language, region, and script codes, such as <code>zh-Hans-CN</code> or <code>en-GB</code>.","group":"intl","name":"Intl.Locale","spec":"https://tc39.es/ecma402/#locale-objects","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"74","chrome_android":"74","edge":"79","firefox":"75","firefox_android":"79","safari":"14","safari_ios":"14"}}},"intl-locale-info":{"compat_features":["javascript.builtins.Intl.Locale.getCalendars","javascript.builtins.Intl.Locale.getCollations","javascript.builtins.Intl.Locale.getHourCycles","javascript.builtins.Intl.Locale.getNumberingSystems","javascript.builtins.Intl.Locale.getTextInfo","javascript.builtins.Intl.Locale.getTimeZones"],"description":"The getter methods of the Intl.Locale API provide supplemental information about a Unicode locale, such as the locale's calendar (for example, the first day in a week or the weekend start day), writing direction, 12- or 24-hour cycles, and numbering system.","description_html":"The getter methods of the <code>Intl.Locale</code> API provide supplemental information about a Unicode locale, such as the locale's calendar (for example, the first day in a week or the weekend start day), writing direction, 12- or 24-hour cycles, and numbering system.","group":"intl","name":"Intl.Locale info","spec":"https://tc39.es/ecma402/#locale-objects","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17"}}},"intl-plural-rules":{"compat_features":["javascript.builtins.Intl.PluralRules","javascript.builtins.Intl.PluralRules.PluralRules","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_roundingIncrement_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_roundingMode_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_roundingPriority_parameter","javascript.builtins.Intl.PluralRules.PluralRules.options_parameter.options_trailingZeroDisplay_parameter","javascript.builtins.Intl.PluralRules.resolvedOptions","javascript.builtins.Intl.PluralRules.select","javascript.builtins.Intl.PluralRules.selectRange","javascript.builtins.Intl.PluralRules.supportedLocalesOf"],"description":"The Intl.PluralRules API creates a locale-aware object that tells you which of the language's pluralization rules apply based on a given number.","description_html":"The <code>Intl.PluralRules</code> API creates a locale-aware object that tells you which of the language's pluralization rules apply based on a given number.","group":"intl","name":"Intl.PluralRules","spec":"https://tc39.es/ecma402/#pluralrules-objects","status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"63","chrome_android":"63","edge":"18","firefox":"58","firefox_android":"58","safari":"13","safari_ios":"13"}}},"intl-relative-time-format":{"compat_features":["javascript.builtins.Intl.RelativeTimeFormat","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.locales_parameter","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.options_parameter.options_localeMatcher_parameter","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.options_parameter.options_numberingSystem_parameter","javascript.builtins.Intl.RelativeTimeFormat.RelativeTimeFormat.options_parameter.options_numeric_parameter","javascript.builtins.Intl.RelativeTimeFormat.format","javascript.builtins.Intl.RelativeTimeFormat.formatToParts","javascript.builtins.Intl.RelativeTimeFormat.resolvedOptions","javascript.builtins.Intl.RelativeTimeFormat.supportedLocalesOf"],"description":"The Intl.RelativeTimeFormat API creates a locale-aware formatter that turns an object representing a relative time (such as '1 day ago') into a localized string.","description_html":"The <code>Intl.RelativeTimeFormat</code> API creates a locale-aware formatter that turns an object representing a relative time (such as '1 day ago') into a localized string.","group":"intl","name":"Intl.RelativeTimeFormat","spec":"https://tc39.es/ecma402/#relativetimeformat-objects","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"71","chrome_android":"71","edge":"79","firefox":"76","firefox_android":"79","safari":"14","safari_ios":"14"}}},"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"}}},"inverted-colors":{"compat_features":["css.at-rules.media.inverted-colors"],"description":"The inverted-colors CSS media query sets styles based on whether the user has inverted all colors, such as with mobile accessibility settings.","description_html":"The <code>inverted-colors</code> CSS media query sets styles based on whether the user has inverted all colors, such as with mobile accessibility settings.","group":"media-queries","name":"inverted-colors media query","spec":"https://drafts.csswg.org/mediaqueries-5/#inverted","status":{"baseline":false,"support":{"safari":"9.1","safari_ios":"10"}}},"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.","group":"selectors","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"}}},"iterator-methods":{"compat_features":["javascript.builtins.Iterator.Iterator","javascript.builtins.Iterator.drop","javascript.builtins.Iterator.every","javascript.builtins.Iterator.filter","javascript.builtins.Iterator.find","javascript.builtins.Iterator.flatMap","javascript.builtins.Iterator.forEach","javascript.builtins.Iterator.from","javascript.builtins.Iterator.map","javascript.builtins.Iterator.reduce","javascript.builtins.Iterator.some","javascript.builtins.Iterator.take","javascript.builtins.Iterator.toArray"],"description":"The Iterator object is an abstract base for objects that implement the iterator protocol. It provides methods common to built-in iterators, such as filter(), find(), map(), and reduce(). You can also use the static method Iterator.from() to convert an existing iterable into an Iterator.","description_html":"The <code>Iterator</code> object is an abstract base for objects that implement the iterator protocol. It provides methods common to built-in iterators, such as <code>filter()</code>, <code>find()</code>, <code>map()</code>, and <code>reduce()</code>. You can also use the static method <code>Iterator.from()</code> to convert an existing iterable into an <code>Iterator</code>.","group":"iterators","name":"Iterator methods","spec":"https://tc39.es/proposal-iterator-helpers/","status":{"baseline":false,"support":{"chrome":"122","chrome_android":"122","edge":"122"}}},"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><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":{"compat_features":["javascript.builtins.JSON","javascript.builtins.JSON.json_superset","javascript.builtins.JSON.parse","javascript.builtins.JSON.stringify","javascript.builtins.JSON.stringify.well_formed_stringify"],"description":"The JSON API provides static methods for parsing values from and converting values to JavaScript Object Notation (JSON), a serialization format for objects, arrays, numbers, strings, Boolean values, and null.","description_html":"The <code>JSON</code> API provides static methods for parsing values from and converting values to JavaScript Object Notation (JSON), a serialization format for objects, arrays, numbers, strings, Boolean values, and null.","group":"json","name":"JSON","spec":"https://tc39.es/ecma262/multipage/structured-data.html#sec-json-object","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":"4","safari_ios":"4"}}},"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.","group":"json","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"}}},"json-raw":{"compat_features":["javascript.builtins.JSON.isRawJSON","javascript.builtins.JSON.parse.reviver_parameter_context_argument","javascript.builtins.JSON.rawJSON"],"description":"To serialize and parse JSON in a lossless way, JSON.stringify() handles rawJSON values and JSON.parse()'s reviver callback takes a source context parameter.","description_html":"To serialize and parse JSON in a lossless way, <code>JSON.stringify()</code> handles <code>rawJSON</code> values and <code>JSON.parse()</code>'s reviver callback takes a source context parameter.","group":"json","name":"JSON source text access","spec":"https://tc39.es/proposal-json-parse-with-source/#sec-json-object","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114"}}},"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><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.","group":"color-types","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"}}},"label":{"compat_features":["api.HTMLLabelElement","api.HTMLLabelElement.control","api.HTMLLabelElement.form","api.HTMLLabelElement.htmlFor","html.elements.label","html.elements.label.for"],"description":"The <label> HTML element represents a caption for a form field.","description_html":"The <code><label></code> HTML element represents a caption for a form field.","group":["forms","html-elements"],"name":"<label>","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-label-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"}}},"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.","group":"units","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.","group":"css","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>.","group":"css","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.","group":"css","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"}}},"link":{"compat_features":["api.HTMLLinkElement","api.HTMLLinkElement.as","api.HTMLLinkElement.crossOrigin","api.HTMLLinkElement.disabled","api.HTMLLinkElement.href","api.HTMLLinkElement.hreflang","api.HTMLLinkElement.integrity","api.HTMLLinkElement.media","api.HTMLLinkElement.rel","api.HTMLLinkElement.relList","api.HTMLLinkElement.sizes","api.HTMLLinkElement.type","html.elements.link","html.elements.link.as","html.elements.link.crossorigin","html.elements.link.disabled","html.elements.link.href","html.elements.link.hreflang","html.elements.link.integrity","html.elements.link.media","html.elements.link.rel","html.elements.link.sizes","html.elements.link.type"],"description":"The <link> element creates a relationship between the current document and an external resource, such as a stylesheet or favicon.","description_html":"The <code><link></code> element creates a relationship between the current document and an external resource, such as a stylesheet or favicon.","group":"html-elements","name":"<link>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-link-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"}}},"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><ol></code>, <code><ul></code>, and <code><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><img></code> and <code><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"}}},"logical-properties":{"caniuse":"css-logical-props","compat_features":["css.properties.block-size","css.properties.block-size.fit-content","css.properties.block-size.max-content","css.properties.block-size.min-content","css.properties.border-block","css.properties.border-block-color","css.properties.border-block-end","css.properties.border-block-end-color","css.properties.border-block-end-style","css.properties.border-block-end-width","css.properties.border-block-start","css.properties.border-block-start-color","css.properties.border-block-start-style","css.properties.border-block-start-width","css.properties.border-block-style","css.properties.border-block-width","css.properties.border-end-end-radius","css.properties.border-end-start-radius","css.properties.border-inline","css.properties.border-inline-color","css.properties.border-inline-end","css.properties.border-inline-end-color","css.properties.border-inline-end-style","css.properties.border-inline-end-width","css.properties.border-inline-start","css.properties.border-inline-start-color","css.properties.border-inline-start-style","css.properties.border-inline-start-width","css.properties.border-inline-style","css.properties.border-inline-width","css.properties.border-start-end-radius","css.properties.border-start-start-radius","css.properties.clear.inline-end","css.properties.clear.inline-start","css.properties.float.inline-end","css.properties.float.inline-start","css.properties.inline-size","css.properties.inline-size.fit-content","css.properties.inline-size.max-content","css.properties.inline-size.min-content","css.properties.inset","css.properties.inset-block","css.properties.inset-block-end","css.properties.inset-block-end.auto","css.properties.inset-block-start","css.properties.inset-block-start.auto","css.properties.inset-block.auto","css.properties.inset-inline","css.properties.inset-inline-end","css.properties.inset-inline-end.auto","css.properties.inset-inline-start","css.properties.inset-inline-start.auto","css.properties.inset-inline.auto","css.properties.inset.auto","css.properties.margin-block","css.properties.margin-block-end","css.properties.margin-block-start","css.properties.margin-inline","css.properties.margin-inline-end","css.properties.margin-inline-start","css.properties.max-block-size","css.properties.max-block-size.fit-content","css.properties.max-block-size.max-content","css.properties.max-block-size.min-content","css.properties.max-inline-size","css.properties.max-inline-size.fit-content","css.properties.max-inline-size.max-content","css.properties.max-inline-size.min-content","css.properties.min-block-size","css.properties.min-block-size.fit-content","css.properties.min-block-size.max-content","css.properties.min-block-size.min-content","css.properties.min-inline-size","css.properties.min-inline-size.fit-content","css.properties.min-inline-size.max-content","css.properties.min-inline-size.min-content","css.properties.padding-block","css.properties.padding-block-end","css.properties.padding-block-start","css.properties.padding-inline","css.properties.padding-inline-end","css.properties.padding-inline-start"],"description":"CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, block-end refers to the bottom. Also known as flow relative.","description_html":"CSS logical properties control borders, size, margin, and padding with directions and dimensions relative to the writing mode. For example, in a left to right, top to bottom writing mode, <code>block-end</code> refers to the bottom. Also known as flow relative.","group":"css","name":"Logical properties","spec":"https://drafts.csswg.org/css-logical-1/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"66","firefox_android":"66","safari":"15","safari_ios":"15"}}},"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><main></code> element represents the dominant content of a document. It is commonly used together with <code><header></code> and <code><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.","group":"css","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><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"}}},"mask-border":{"compat_features":["css.properties.mask-border","css.properties.mask-border-outset","css.properties.mask-border-repeat","css.properties.mask-border-slice","css.properties.mask-border-source","css.properties.mask-border-width"],"description":"The mask-border CSS property sets how the edges of an element are masked. It is a shorthand for mask-border-outset, mask-border-repeat, mask-border-slice, mask-border-source, and mask-border-width.","description_html":"The <code>mask-border</code> CSS property sets how the edges of an element are masked. It is a shorthand for <code>mask-border-outset</code>, <code>mask-border-repeat</code>, <code>mask-border-slice</code>, <code>mask-border-source</code>, and <code>mask-border-width</code>.","group":"clipping-shapes-masking","name":"mask-border","spec":"https://drafts.fxtf.org/css-masking-1/#mask-borders","status":{"baseline":false,"support":{"safari":"17.2"}}},"mask-type":{"compat_features":["css.properties.mask-type","css.properties.mask-type.alpha","css.properties.mask-type.luminance"],"description":"The mask-type CSS property on an SVG <mask> element sets whether the mask is a luminance or alpha mask.","description_html":"The <code>mask-type</code> CSS property on an SVG <code><mask></code> element sets whether the mask is a <code>luminance</code> or <code>alpha</code> mask.","group":"clipping-shapes-masking","name":"mask-type","spec":"https://drafts.fxtf.org/css-masking-1/#the-mask-type","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"24","chrome_android":"25","edge":"79","firefox":"35","firefox_android":"35","safari":"7","safari_ios":"7"}}},"masks":{"caniuse":"css-masks","compat_features":["css.properties.mask","css.properties.mask-clip","css.properties.mask-composite","css.properties.mask-composite.add","css.properties.mask-composite.exclude","css.properties.mask-composite.intersect","css.properties.mask-composite.subtract","css.properties.mask-image","css.properties.mask-image.multiple_mask_images","css.properties.mask-image.svg_masks","css.properties.mask-mode","css.properties.mask-mode.alpha","css.properties.mask-mode.luminance","css.properties.mask-mode.match-source","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.","group":"clipping-shapes-masking","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"],"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><audio></code> and <code><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-queries":{"caniuse":"css-mediaqueries","compat_features":["css.at-rules.media","css.at-rules.media.aspect-ratio","css.at-rules.media.calc","css.at-rules.media.color","css.at-rules.media.color-index","css.at-rules.media.grid","css.at-rules.media.height","css.at-rules.media.media_features","css.at-rules.media.media_query_values","css.at-rules.media.monochrome","css.at-rules.media.nested-queries","css.at-rules.media.or_syntax","css.at-rules.media.orientation","css.at-rules.media.width","css.types.ratio"],"description":"The @media CSS rule conditionally applies styles based on the output device type, its capabilities, and the user's preferences. Media queries are composed of an optional media type such as screen or print, and one or more mandatory media features, such as prefers-reduced-animations.","description_html":"The <code>@media</code> CSS rule conditionally applies styles based on the output device type, its capabilities, and the user's preferences. Media queries are composed of an optional media type such as <code>screen</code> or <code>print</code>, and one or more mandatory media features, such as <code>prefers-reduced-animations</code>.","group":"media-queries","name":"Media queries","spec":"https://drafts.csswg.org/mediaqueries-5/","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"}}},"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 query. 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><</code>, <code>></code>, <code><=</code>, and <code>>=</code> to define a range of values for a media query. For example, <code>(400px < width < 1000px)</code> returns true if the viewport width is between 400px and 1000px.","group":"media-queries","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"}}},"menu":{"compat_features":["api.HTMLMenuElement","html.elements.menu"],"description":"The <menu> element represents an unordered list of action items (<li>), such as a toolbar. It is a semantic alternative to the <ul> element.","description_html":"The <code><menu></code> element represents an unordered list of action items (<code><li></code>), such as a toolbar. It is a semantic alternative to the <code><ul></code> element.","group":"html-elements","name":"<menu>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#menus","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"}}},"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><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.","group":"css","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><dialog></code> element used with <code>showModal()</code>.","group":"selectors","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><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-anchor.auto","css.properties.offset-distance","css.properties.offset-path","css.properties.offset-path.basic_shape","css.properties.offset-path.coord_box","css.properties.offset-path.path","css.properties.offset-path.ray","css.properties.offset-path.url","css.properties.offset-rotate","css.properties.offset-rotate.auto","css.properties.offset-rotate.reverse","css.types.ray","css.types.ray.position","css.types.ray.size"],"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.","group":"css","name":"Motion path","spec":"https://drafts.fxtf.org/motion-1/","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"55","chrome_android":"55","edge":"79","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"}}},"named-color":{"compat_features":["css.types.color.named-color","css.types.color.named-color.rebeccapurple","css.types.color.named-color.transparent"],"description":"Some CSS color values can be referenced by name, such as red or limegreen. They stand in for specific RGB color values.","description_html":"Some CSS color values can be referenced by name, such as <code>red</code> or <code>limegreen</code>. They stand in for specific RGB color values.","group":"color-types","name":"Named colors","spec":"https://drafts.csswg.org/css-color-4/#named-colors","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><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":"selectors","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":"selectors","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"}}},"number":{"compat_features":["javascript.builtins.Infinity","javascript.builtins.Math","javascript.builtins.Math.E","javascript.builtins.Math.LN10","javascript.builtins.Math.LN2","javascript.builtins.Math.LOG10E","javascript.builtins.Math.LOG2E","javascript.builtins.Math.PI","javascript.builtins.Math.SQRT1_2","javascript.builtins.Math.SQRT2","javascript.builtins.Math.abs","javascript.builtins.Math.acos","javascript.builtins.Math.acosh","javascript.builtins.Math.asin","javascript.builtins.Math.asinh","javascript.builtins.Math.atan","javascript.builtins.Math.atan2","javascript.builtins.Math.atanh","javascript.builtins.Math.cbrt","javascript.builtins.Math.ceil","javascript.builtins.Math.clz32","javascript.builtins.Math.cos","javascript.builtins.Math.cosh","javascript.builtins.Math.exp","javascript.builtins.Math.expm1","javascript.builtins.Math.floor","javascript.builtins.Math.fround","javascript.builtins.Math.hypot","javascript.builtins.Math.imul","javascript.builtins.Math.log","javascript.builtins.Math.log10","javascript.builtins.Math.log1p","javascript.builtins.Math.log2","javascript.builtins.Math.max","javascript.builtins.Math.min","javascript.builtins.Math.pow","javascript.builtins.Math.random","javascript.builtins.Math.round","javascript.builtins.Math.sign","javascript.builtins.Math.sin","javascript.builtins.Math.sinh","javascript.builtins.Math.sqrt","javascript.builtins.Math.tan","javascript.builtins.Math.tanh","javascript.builtins.Math.trunc","javascript.builtins.NaN","javascript.builtins.Number","javascript.builtins.Number.EPSILON","javascript.builtins.Number.MAX_SAFE_INTEGER","javascript.builtins.Number.MAX_VALUE","javascript.builtins.Number.MIN_SAFE_INTEGER","javascript.builtins.Number.MIN_VALUE","javascript.builtins.Number.NEGATIVE_INFINITY","javascript.builtins.Number.NaN","javascript.builtins.Number.Number","javascript.builtins.Number.POSITIVE_INFINITY","javascript.builtins.Number.isFinite","javascript.builtins.Number.isInteger","javascript.builtins.Number.isNaN","javascript.builtins.Number.isSafeInteger","javascript.builtins.Number.parseFloat","javascript.builtins.Number.parseInt","javascript.builtins.Number.toExponential","javascript.builtins.Number.toFixed","javascript.builtins.Number.toPrecision","javascript.builtins.Number.toString","javascript.builtins.Number.valueOf","javascript.builtins.isNaN","javascript.builtins.parseInt","javascript.grammar.binary_numeric_literals","javascript.grammar.decimal_numeric_literals","javascript.grammar.hexadecimal_numeric_literals","javascript.grammar.octal_numeric_literals"],"description":"The number type (and Number object) represents floating-point numbers, such as 42 or -4.201, while the Math API contains mathematical functions and constants. JavaScript can also represent boundless negative and positive values as Infinity or not-a-number as NaN (as in 0 * Infinity).","description_html":"The number type (and <code>Number</code> object) represents floating-point numbers, such as 42 or -4.201, while the <code>Math</code> API contains mathematical functions and constants. JavaScript can also represent boundless negative and positive values as <code>Infinity</code> or not-a-number as <code>NaN</code> (as in <code>0 * Infinity</code>).","group":"primitive-types","name":"Math and numbers","spec":"https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-number-objects","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"}}},"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><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.","group":"css","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.","group":"color-types","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"}}},"opacity":{"compat_features":["css.properties.opacity","css.properties.opacity.percentages","svg.global_attributes.opacity"],"description":"The opacity CSS property sets the transparency of an element.","description_html":"The <code>opacity</code> CSS property sets the transparency of an element.","group":"css","name":"opacity","spec":"https://drafts.csswg.org/css-color-3/#transparency","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":"2","safari_ios":"1"}}},"opacity-svg":{"compat_features":["css.properties.fill-opacity","css.properties.stroke-opacity","svg.global_attributes.fill-opacity","svg.global_attributes.stroke-opacity"],"description":"The fill-opacity, and stroke-opacity SVG attributes and CSS properties control the transparency of a stroke or fill of an SVG element.","description_html":"The <code>fill-opacity</code>, and <code>stroke-opacity</code> SVG attributes and CSS properties control the transparency of a stroke or fill of an SVG element.","group":"svg","name":"Opacity (SVG)","spec":"https://svgwg.org/svg2-draft/render.html#ObjectAndGroupOpacityProperties","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"≤80","chrome_android":"80","edge":"≤80","firefox":"≤72","firefox_android":"79","safari":"≤13.1","safari_ios":"≤13.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.","group":"file-system","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><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":{"compat_features":["css.at-rules.media.overflow-block","css.at-rules.media.overflow-inline"],"description":"The overflow-block and overflow-inline CSS media queries set styles based on the way a device displays content that's larger than the viewport or page area. For example, a laptop lets users scroll to reveal content, while a printer displays overflowing content on additional pages.","description_html":"The <code>overflow-block</code> and <code>overflow-inline</code> CSS media queries set styles based on the way a device displays content that's larger than the viewport or page area. For example, a laptop lets users scroll to reveal content, while a printer displays overflowing content on additional pages.","group":"media-queries","name":"Overflow media queries","spec":["https://drafts.csswg.org/mediaqueries-5/#mf-overflow-block","https://drafts.csswg.org/mediaqueries-5/#mf-overflow-inline"],"status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"113","chrome_android":"113","edge":"113","firefox":"66","firefox_android":"66","safari":"17","safari_ios":"17"}}},"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.","group":"css","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","css.properties.overlay.auto","css.properties.overlay.none"],"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><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.","group":"css","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><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"}}},"paint-order":{"compat_features":["css.properties.paint-order","svg.global_attributes.paint-order"],"description":"The paint-order CSS property sets the z-order of strokes, fills, and (in SVG content) markers. For example, paint-order: markers stroke fill; draws the markers, then stroke on top of markers, then fill on top of both markers and stroke.","description_html":"The <code>paint-order</code> CSS property sets the z-order of strokes, fills, and (in SVG content) markers. For example, <code>paint-order: markers stroke fill;</code> draws the markers, then stroke on top of markers, then fill on top of both markers and stroke.","group":"css","name":"paint-order","spec":"https://svgwg.org/svg2-draft/painting.html#PaintOrder","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123","firefox":"≤66","firefox_android":"66","safari":"≤12"}}},"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"}}},"password-credentials":{"compat_features":["api.PasswordCredential","api.PasswordCredential.PasswordCredential","api.PasswordCredential.iconURL","api.PasswordCredential.name","api.PasswordCredential.password"],"description":"The PasswordCredential API represents a username and password.","description_html":"The <code>PasswordCredential</code> API represents a username and password.","group":"credential-management","name":"Password credentials","spec":"https://w3c.github.io/webappsec-credential-management/#passwords","status":{"baseline":false,"support":{"chrome":"60","chrome_android":"60","edge":"79"}}},"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><picture></code> element is used for art direction in responsive images, where a different image is displayed based on the <code><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":false,"support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"125","firefox_android":"125","safari":"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><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","css.at-rules.media.prefers-color-scheme.no-preference","css.at-rules.media.prefers-color-scheme.respects-inherited-scheme","http.headers.Sec-CH-Prefers-Color-Scheme"],"description":"The prefers-color-scheme CSS media query sets styles based on the requested color scheme, light or dark.","description_html":"The <code>prefers-color-scheme</code> CSS media query sets styles based on the requested color scheme, light or dark.","group":"media-queries","name":"prefers-color-scheme media query","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"}}},"prefers-contrast":{"compat_features":["css.at-rules.media.prefers-contrast"],"description":"The prefers-contrast CSS media query sets styles based on whether the user prefers more or less contrast, the difference between foreground and background colors.","description_html":"The <code>prefers-contrast</code> CSS media query sets styles based on whether the user prefers more or less contrast, the difference between foreground and background colors.","group":"media-queries","name":"prefers-contrast media query","spec":"https://drafts.csswg.org/mediaqueries-5/#prefers-contrast","status":{"baseline":"low","baseline_low_date":"2022-05-31","support":{"chrome":"96","chrome_android":"96","edge":"96","firefox":"101","firefox_android":"101","safari":"14.1","safari_ios":"14.5"}}},"prefers-reduced-data":{"compat_features":["css.at-rules.media.prefers-reduced-data"],"description":"The prefers-reduced-data CSS media query detects whether the user has a preference for using less network traffic. For example, you can use this media query to avoid loading large font files and use a system font instead.","description_html":"The <code>prefers-reduced-data</code> CSS media query detects whether the user has a preference for using less network traffic. For example, you can use this media query to avoid loading large font files and use a system font instead.","group":"media-queries","name":"prefers-reduced-data media query","spec":"https://drafts.csswg.org/mediaqueries-5/#prefers-reduced-data","status":{"baseline":false,"support":{}}},"prefers-reduced-motion":{"caniuse":"prefers-reduced-motion","compat_features":["css.at-rules.media.prefers-reduced-motion","http.headers.Sec-CH-Prefers-Reduced-Motion"],"description":"The prefers-reduced-motion CSS media query sets styles based on whether the user prefers to minimize the amount of non-essential animations on the device, such as scrolling, panning, zooming, and strobing.","description_html":"The <code>prefers-reduced-motion</code> CSS media query sets styles based on whether the user prefers to minimize the amount of non-essential animations on the device, such as scrolling, panning, zooming, and strobing.","group":"media-queries","name":"prefers-reduced-motion media query","spec":"https://drafts.csswg.org/mediaqueries-5/#prefers-reduced-motion","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"74","chrome_android":"74","edge":"79","firefox":"63","firefox_android":"64","safari":"10.1","safari_ios":"10.3"}}},"prefers-reduced-transparency":{"compat_features":["css.at-rules.media.prefers-reduced-transparency","http.headers.Sec-CH-Prefers-Reduced-Transparency"],"description":"The prefers-reduced-transparency CSS media query sets styles based on whether the user prefers to reduce the amount of transparent effects on their device, for example to improve contrast and legibility.","description_html":"The <code>prefers-reduced-transparency</code> CSS media query sets styles based on whether the user prefers to reduce the amount of transparent effects on their device, for example to improve contrast and legibility.","group":"media-queries","name":"prefers-reduced-transparency media query","spec":"https://drafts.csswg.org/mediaqueries-5/#prefers-reduced-transparency","status":{"baseline":false,"support":{"chrome":"119","chrome_android":"119","edge":"119"}}},"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><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"}}},"presentation-api":{"compat_features":["api.Navigator.presentation","api.Presentation","api.Presentation.defaultRequest","api.Presentation.receiver","api.PresentationAvailability","api.PresentationAvailability.change_event","api.PresentationAvailability.value","api.PresentationConnection","api.PresentationConnection.binaryType","api.PresentationConnection.close","api.PresentationConnection.id","api.PresentationConnection.send","api.PresentationConnection.state","api.PresentationConnection.terminate","api.PresentationConnection.url","api.PresentationConnectionAvailableEvent","api.PresentationConnectionAvailableEvent.PresentationConnectionAvailableEvent","api.PresentationConnectionAvailableEvent.connection","api.PresentationConnectionCloseEvent","api.PresentationConnectionCloseEvent.PresentationConnectionCloseEvent","api.PresentationConnectionCloseEvent.message","api.PresentationConnectionCloseEvent.reason","api.PresentationConnectionList","api.PresentationConnectionList.connections","api.PresentationReceiver","api.PresentationReceiver.connectionList","api.PresentationRequest","api.PresentationRequest.PresentationRequest","api.PresentationRequest.connectionavailable_event","api.PresentationRequest.getAvailability","api.PresentationRequest.reconnect","api.PresentationRequest.start","html.elements.iframe.sandbox.allow-presentation"],"description":"The Presentation API shows or controls content on another display, such as a network-connected TV or projector.","description_html":"The Presentation API shows or controls content on another display, such as a network-connected TV or projector.","name":"Presentation API","spec":"https://w3c.github.io/presentation-api/","status":{"baseline":false,"support":{"chrome":"47","chrome_android":"47","edge":"79"}}},"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><audio></code> or <code><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"}}},"profiler":{"compat_features":["api.Profiler","api.Profiler.Profiler","api.Profiler.sampleInterval","api.Profiler.stop","api.Profiler.stopped"],"description":"The Profiler API records data about the execution of a page, which you can send to a server for later analysis. Also known as self-profiling.","description_html":"The <code>Profiler</code> API records data about the execution of a page, which you can send to a server for later analysis. Also known as self-profiling.","name":"Profiler","spec":"https://wicg.github.io/js-self-profiling/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"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><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.AggregateError","javascript.builtins.AggregateError.AggregateError","javascript.builtins.AggregateError.errors","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-try":{"compat_features":["javascript.builtins.Promise.try"],"description":"The Promise.try() static method returns a promise that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a Promise.","description_html":"The <code>Promise.try()</code> static method returns a promise that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a <code>Promise</code>.","group":"promises","name":"Promise.try()","spec":"https://tc39.es/proposal-promise-try/","status":{"baseline":false,"support":{"chrome":"128","chrome_android":"128","edge":"128"}}},"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/ecma262/multipage/control-abstraction-objects.html#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"}}},"proxy-reflect":{"caniuse":"proxy","compat_features":["javascript.builtins.Proxy","javascript.builtins.Proxy.Proxy","javascript.builtins.Proxy.handler.apply","javascript.builtins.Proxy.handler.construct","javascript.builtins.Proxy.handler.defineProperty","javascript.builtins.Proxy.handler.deleteProperty","javascript.builtins.Proxy.handler.get","javascript.builtins.Proxy.handler.getOwnPropertyDescriptor","javascript.builtins.Proxy.handler.getPrototypeOf","javascript.builtins.Proxy.handler.has","javascript.builtins.Proxy.handler.isExtensible","javascript.builtins.Proxy.handler.ownKeys","javascript.builtins.Proxy.handler.preventExtensions","javascript.builtins.Proxy.handler.set","javascript.builtins.Proxy.handler.setPrototypeOf","javascript.builtins.Proxy.revocable","javascript.builtins.Reflect","javascript.builtins.Reflect.apply","javascript.builtins.Reflect.construct","javascript.builtins.Reflect.defineProperty","javascript.builtins.Reflect.deleteProperty","javascript.builtins.Reflect.get","javascript.builtins.Reflect.getOwnPropertyDescriptor","javascript.builtins.Reflect.getPrototypeOf","javascript.builtins.Reflect.has","javascript.builtins.Reflect.isExtensible","javascript.builtins.Reflect.ownKeys","javascript.builtins.Reflect.preventExtensions","javascript.builtins.Reflect.set","javascript.builtins.Reflect.setPrototypeOf"],"description":"The Proxy and Reflect JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).","description_html":"The <code>Proxy</code> and <code>Reflect</code> JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).","group":"javascript","name":"Proxy and Reflect","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/reflection.html#sec-reflection","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"49","chrome_android":"49","edge":"12","firefox":"18","firefox_android":"18","safari":"10","safari_ios":"10"}}},"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><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><input></code> and <code><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"}}},"regexp":{"compat_features":["javascript.builtins.RegExp","javascript.builtins.RegExp.@@match","javascript.builtins.RegExp.@@matchAll","javascript.builtins.RegExp.@@replace","javascript.builtins.RegExp.@@search","javascript.builtins.RegExp.@@species","javascript.builtins.RegExp.@@split","javascript.builtins.RegExp.RegExp","javascript.builtins.RegExp.dotAll","javascript.builtins.RegExp.exec","javascript.builtins.RegExp.flags","javascript.builtins.RegExp.global","javascript.builtins.RegExp.global.prototype_accessor","javascript.builtins.RegExp.hasIndices","javascript.builtins.RegExp.ignoreCase","javascript.builtins.RegExp.ignoreCase.prototype_accessor","javascript.builtins.RegExp.lastIndex","javascript.builtins.RegExp.multiline","javascript.builtins.RegExp.multiline.prototype_accessor","javascript.builtins.RegExp.source","javascript.builtins.RegExp.source.empty_regex_string","javascript.builtins.RegExp.source.escaping","javascript.builtins.RegExp.source.prototype_accessor","javascript.builtins.RegExp.sticky","javascript.builtins.RegExp.sticky.anchored_sticky_flag","javascript.builtins.RegExp.sticky.prototype_accessor","javascript.builtins.RegExp.test","javascript.builtins.RegExp.toString","javascript.builtins.RegExp.toString.escaping","javascript.builtins.RegExp.unicode","javascript.builtins.RegExp.unicodeSets","javascript.grammar.regular_expression_literals","javascript.regular_expressions.backreference","javascript.regular_expressions.capturing_group","javascript.regular_expressions.character_class","javascript.regular_expressions.character_class_escape","javascript.regular_expressions.character_escape","javascript.regular_expressions.character_escape.unicode","javascript.regular_expressions.disjunction","javascript.regular_expressions.input_boundary_assertion","javascript.regular_expressions.literal_character","javascript.regular_expressions.lookahead_assertion","javascript.regular_expressions.lookbehind_assertion","javascript.regular_expressions.modifier","javascript.regular_expressions.named_backreference","javascript.regular_expressions.named_capturing_group","javascript.regular_expressions.named_capturing_group.duplicate_named_capturing_groups","javascript.regular_expressions.non_capturing_group","javascript.regular_expressions.quantifier","javascript.regular_expressions.unicode_character_class_escape","javascript.regular_expressions.wildcard","javascript.regular_expressions.word_boundary_assertion"],"description":"The RegExp object represents a regular expression, a notation for matching text patterns.","description_html":"The <code>RegExp</code> object represents a regular expression, a notation for matching text patterns.","name":"Regular expressions","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects","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"}}},"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).","group":"css","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><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-buffers":{"compat_features":["javascript.builtins.ArrayBuffer.ArrayBuffer.maxByteLength_option","javascript.builtins.ArrayBuffer.maxByteLength","javascript.builtins.ArrayBuffer.resizable","javascript.builtins.ArrayBuffer.resize","javascript.builtins.SharedArrayBuffer.SharedArrayBuffer.maxByteLength_option","javascript.builtins.SharedArrayBuffer.grow","javascript.builtins.SharedArrayBuffer.growable","javascript.builtins.SharedArrayBuffer.maxByteLength"],"description":"The resize() method of an ArrayBuffer and the grow() method of a SharedArrayBuffer, 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> and the <code>grow()</code> method of a <code>SharedArrayBuffer</code>, constructed with the <code>maxByteLength</code> option, changes the size of the buffer in place.","name":"Resizable buffers","spec":["https://tc39.es/ecma262/multipage/structured-data.html#sec-get-arraybuffer.prototype.resizable","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"}}},"resize":{"caniuse":"css-resize","compat_features":["css.properties.resize","css.properties.resize.block","css.properties.resize.block_level_support","css.properties.resize.inline"],"description":"The resize CSS property sets whether an element can be resized by the user, and on which axes.","description_html":"The <code>resize</code> CSS property sets whether an element can be resized by the user, and on which axes.","group":"css","name":"resize (CSS property)","spec":"https://drafts.csswg.org/css-ui-4/#resize","status":{"baseline":false,"support":{"chrome":"4","chrome_android":"18","edge":"79","firefox":"5","firefox_android":"5","safari":"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"}}},"rgb":{"compat_features":["css.types.color.rgb","css.types.color.rgb.alpha_parameter","css.types.color.rgb.float_values","css.types.color.rgb.mixed_type_parameters","css.types.color.rgb.space_separated_parameters","css.types.color.rgb_hexadecimal_notation","css.types.color.rgb_hexadecimal_notation.alpha_hexadecimal_notation"],"description":"The rgb(), rgba(), and hexadecimal (as in #004488ff`) notations pick colors using red, green, blue, and alpha (transparency) channels.","description_html":"The <code>rgb()</code>, rgba()<code>, and hexadecimal (as in </code>#004488ff`) notations pick colors using red, green, blue, and alpha (transparency) channels.","group":"color-types","name":"RGB","spec":"https://drafts.csswg.org/css-color-4/#rgb-functions","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"52","firefox_android":"52","safari":"12.1","safari_ios":"12.2"}}},"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.","group":"css","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><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"}}},"s":{"compat_features":["html.elements.s"],"description":"The <s> HTML element indicates text that is no longer relevant or accurate, styling text as strikethrough by default.","description_html":"The <code><s></code> HTML element indicates text that is no longer relevant or accurate, styling text as strikethrough by default.","group":"html-elements","name":"<s>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-s-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"}}},"safe-area-inset":{"compat_features":["css.properties.custom-property.env","css.properties.custom-property.env.safe-area-inset-bottom","css.properties.custom-property.env.safe-area-inset-left","css.properties.custom-property.env.safe-area-inset-right","css.properties.custom-property.env.safe-area-inset-top"],"description":"The safe-area-inset- CSS environment variables represent a rectangle that cannot cut off content within a non-rectangular screen. For example, top:\\ env(safe-area-inset-top); positions the top of an element below the notch on an iPhone.","description_html":"The <code>safe-area-inset-</code> CSS environment variables represent a rectangle that cannot cut off content within a non-rectangular screen. For example, <code>top:\\ env(safe-area-inset-top);</code> positions the top of an element below the notch on an iPhone.","group":"environment-variables","name":"Safe area inset environment variables","spec":"https://drafts.csswg.org/css-env-1/#safe-area-insets","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"65","firefox_android":"65","safari":"11.1","safari_ios":"11.3"}}},"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><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.Scheduler.yield","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":"129","chrome_android":"129","edge":"129"}}},"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.","group":"css","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"}}},"script":{"compat_features":["api.HTMLScriptElement","api.HTMLScriptElement.async","api.HTMLScriptElement.crossOrigin","api.HTMLScriptElement.defer","api.HTMLScriptElement.integrity","api.HTMLScriptElement.src","api.HTMLScriptElement.supports_static","api.HTMLScriptElement.text","api.HTMLScriptElement.type","html.elements.noscript","html.elements.script","html.elements.script.async","html.elements.script.crossorigin","html.elements.script.defer","html.elements.script.integrity","html.elements.script.src","html.elements.script.type"],"description":"The <script> element contains or loads data or executable code. This is typically used to load JavaScript code. The <noscript> element represents alternative content to show when scripting is not allowed.","description_html":"The <code><script></code> element contains or loads data or executable code. This is typically used to load JavaScript code. The <code><noscript></code> element represents alternative content to show when scripting is not allowed.","group":"html-elements","name":"<script> and <noscript>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#script","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"}}},"scripting":{"compat_features":["css.at-rules.media.scripting"],"description":"The scripting CSS media query sets styles based on whether scripting such as JavaScript is available. Values are enabled if scripting is available, initial-only if scripting is only available on page load (for example, printed content), or none.","description_html":"The <code>scripting</code> CSS media query sets styles based on whether scripting such as JavaScript is available. Values are <code>enabled</code> if scripting is available, <code>initial-only</code> if scripting is only available on page load (for example, printed content), or <code>none</code>.","group":"media-queries","name":"scripting media query","spec":"https://drafts.csswg.org/mediaqueries-5/#scripting","status":{"baseline":"low","baseline_low_date":"2023-12-07","support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"113","firefox_android":"113","safari":"17","safari_ios":"17"}}},"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><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><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><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"}}},"select":{"compat_features":["api.HTMLOptGroupElement","api.HTMLOptGroupElement.disabled","api.HTMLOptGroupElement.label","api.HTMLOptionElement","api.HTMLOptionElement.Option","api.HTMLOptionElement.defaultSelected","api.HTMLOptionElement.disabled","api.HTMLOptionElement.form","api.HTMLOptionElement.index","api.HTMLOptionElement.label","api.HTMLOptionElement.selected","api.HTMLOptionElement.text","api.HTMLOptionElement.value","api.HTMLSelectElement","api.HTMLSelectElement.add","api.HTMLSelectElement.add.index_before_parameter","api.HTMLSelectElement.autocomplete","api.HTMLSelectElement.disabled","api.HTMLSelectElement.form","api.HTMLSelectElement.item","api.HTMLSelectElement.labels","api.HTMLSelectElement.length","api.HTMLSelectElement.multiple","api.HTMLSelectElement.name","api.HTMLSelectElement.namedItem","api.HTMLSelectElement.options","api.HTMLSelectElement.remove","api.HTMLSelectElement.required","api.HTMLSelectElement.selectedIndex","api.HTMLSelectElement.selectedOptions","api.HTMLSelectElement.size","api.HTMLSelectElement.type","api.HTMLSelectElement.value","html.elements.optgroup","html.elements.optgroup.disabled","html.elements.optgroup.label","html.elements.option","html.elements.option.disabled","html.elements.option.label","html.elements.option.selected","html.elements.option.value","html.elements.select","html.elements.select.disabled","html.elements.select.form","html.elements.select.hr_in_select","html.elements.select.multiple","html.elements.select.name","html.elements.select.required","html.elements.select.size"],"description":"The <select> element provides a menu of options for a user to pick from, typically rendered as a dropdown list.","description_html":"The <code><select></code> element provides a menu of options for a user to pick from, typically rendered as a dropdown list.","group":["forms","html-elements"],"name":"<select>","spec":["https://html.spec.whatwg.org/multipage/form-elements.html#the-optgroup-element","https://html.spec.whatwg.org/multipage/form-elements.html#the-option-element","https://html.spec.whatwg.org/multipage/form-elements.html#the-select-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"}}},"serializable-errors":{"compat_features":["api.DOMException.serializable_object","javascript.builtins.Error.serializable_object","javascript.builtins.EvalError.serializable_object","javascript.builtins.RangeError.serializable_object","javascript.builtins.ReferenceError.serializable_object","javascript.builtins.SyntaxError.serializable_object","javascript.builtins.TypeError.serializable_object","javascript.builtins.URIError.serializable_object"],"description":"The DOMException, Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, and URIError objects are serializable. You can call structuredClone() on an error object or pass it to a worker using postMessage().","description_html":"The <code>DOMException</code>, <code>Error</code>, <code>EvalError</code>, <code>RangeError</code>, <code>ReferenceError</code>, <code>SyntaxError</code>, <code>TypeError</code>, and <code>URIError</code> objects are serializable. You can call <code>structuredClone()</code> on an error object or pass it to a worker using <code>postMessage()</code>.","name":"Serializable errors","spec":"https://webidl.spec.whatwg.org/#idl-DOMException","status":{"baseline":false,"support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"103","firefox_android":"103"}}},"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"}}},"shape-outside":{"compat_features":["css.properties.shape-image-threshold","css.properties.shape-margin","css.properties.shape-outside","css.properties.shape-outside.circle","css.properties.shape-outside.gradient","css.properties.shape-outside.image","css.properties.shape-outside.inset","css.properties.shape-outside.none","css.properties.shape-outside.path","css.properties.shape-outside.polygon"],"description":"The shape-outside CSS property, along with shape-margin and shape-image-threshold, sets the shape around which adjacent content will wrap.","description_html":"The <code>shape-outside</code> CSS property, along with <code>shape-margin</code> and <code>shape-image-threshold</code>, sets the shape around which adjacent content will wrap.","group":"clipping-shapes-masking","name":"shape-outside","spec":"https://drafts.csswg.org/css-shapes-1/#declaring-shapes","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"37","chrome_android":"37","edge":"79","firefox":"62","firefox_android":"62","safari":"10.1","safari_ios":"10.3"}}},"shapes":{"caniuse":"css-shapes","compat_features":["css.types.basic-shape","css.types.basic-shape.animation","css.types.basic-shape.circle","css.types.basic-shape.ellipse","css.types.basic-shape.inset","css.types.basic-shape.polygon","css.types.basic-shape.rect","css.types.basic-shape.xywh"],"description":"The circle(), ellipse(), inset(), polygon(), rect(), and xywh() CSS shape functions create shapes for use with clip-path and shape-outside.","description_html":"The <code>circle()</code>, <code>ellipse()</code>, <code>inset()</code>, <code>polygon()</code>, <code>rect()</code>, and <code>xywh()</code> CSS shape functions create shapes for use with <code>clip-path</code> and <code>shape-outside</code>.","group":"clipping-shapes-masking","name":"shapes","spec":"https://drafts.csswg.org/css-shapes-1/#basic-shape-functions","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"37","chrome_android":"37","edge":"79","firefox":"54","firefox_android":"54","safari":"10.1","safari_ios":"10.3"}}},"shared-memory":{"caniuse":"sharedarraybuffer","compat_features":["javascript.builtins.Atomics","javascript.builtins.Atomics.add","javascript.builtins.Atomics.and","javascript.builtins.Atomics.compareExchange","javascript.builtins.Atomics.exchange","javascript.builtins.Atomics.isLockFree","javascript.builtins.Atomics.load","javascript.builtins.Atomics.notify","javascript.builtins.Atomics.or","javascript.builtins.Atomics.store","javascript.builtins.Atomics.sub","javascript.builtins.Atomics.wait","javascript.builtins.Atomics.xor","javascript.builtins.DataView.DataView.sharedarraybuffer_support","javascript.builtins.SharedArrayBuffer","javascript.builtins.SharedArrayBuffer.@@species","javascript.builtins.SharedArrayBuffer.SharedArrayBuffer","javascript.builtins.SharedArrayBuffer.byteLength","javascript.builtins.SharedArrayBuffer.slice"],"description":"The SharedArrayBuffer object represents bytes shared between multiple workers and the main thread. The Atomics object safely accesses SharedArrayBuffer data to make sure predictable values are read and written and that operations are not interrupted.","description_html":"The <code>SharedArrayBuffer</code> object represents bytes shared between multiple workers and the main thread. The <code>Atomics</code> object safely accesses <code>SharedArrayBuffer</code> data to make sure predictable values are read and written and that operations are not interrupted.","group":"javascript","name":"SharedArrayBuffer and Atomics","spec":["https://tc39.es/ecma262/multipage/structured-data.html#sec-sharedarraybuffer-objects","https://tc39.es/ecma262/multipage/structured-data.html#sec-atomics-object"],"status":{"baseline":"high","baseline_high_date":"2024-06-13","baseline_low_date":"2021-12-13","support":{"chrome":"68","chrome_android":"89","edge":"79","firefox":"79","firefox_android":"79","safari":"15.2","safari_ios":"15.2"}}},"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><input></code> elements shows the user interface for picking a value. For example, for <code><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><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><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><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><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><source></code> element sets a media resource for the <code><picture></code>, <code><video></code>, and <code><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><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-recognition":{"caniuse":"speech-recognition","compat_features":["api.SpeechGrammar","api.SpeechGrammar.src","api.SpeechGrammar.weight","api.SpeechGrammarList","api.SpeechGrammarList.SpeechGrammarList","api.SpeechGrammarList.addFromString","api.SpeechGrammarList.addFromURI","api.SpeechGrammarList.item","api.SpeechGrammarList.length","api.SpeechRecognition","api.SpeechRecognition.SpeechRecognition","api.SpeechRecognition.abort","api.SpeechRecognition.audioend_event","api.SpeechRecognition.audiostart_event","api.SpeechRecognition.continuous","api.SpeechRecognition.end_event","api.SpeechRecognition.error_event","api.SpeechRecognition.grammars","api.SpeechRecognition.interimResults","api.SpeechRecognition.lang","api.SpeechRecognition.maxAlternatives","api.SpeechRecognition.nomatch_event","api.SpeechRecognition.result_event","api.SpeechRecognition.soundend_event","api.SpeechRecognition.soundstart_event","api.SpeechRecognition.speechend_event","api.SpeechRecognition.speechstart_event","api.SpeechRecognition.start","api.SpeechRecognition.start_event","api.SpeechRecognition.stop","api.SpeechRecognitionAlternative","api.SpeechRecognitionAlternative.confidence","api.SpeechRecognitionAlternative.transcript","api.SpeechRecognitionErrorEvent","api.SpeechRecognitionErrorEvent.SpeechRecognitionErrorEvent","api.SpeechRecognitionErrorEvent.error","api.SpeechRecognitionErrorEvent.message","api.SpeechRecognitionEvent","api.SpeechRecognitionEvent.SpeechRecognitionEvent","api.SpeechRecognitionEvent.resultIndex","api.SpeechRecognitionEvent.results","api.SpeechRecognitionResult","api.SpeechRecognitionResult.isFinal","api.SpeechRecognitionResult.item","api.SpeechRecognitionResult.length","api.SpeechRecognitionResultList","api.SpeechRecognitionResultList.item","api.SpeechRecognitionResultList.length"],"description":"The SpeechRecognition API converts audio into text using the device's speech recognition service.","description_html":"The <code>SpeechRecognition</code> API converts audio into text using the device's speech recognition service.","group":"speech","name":"Speech recognition","spec":"https://wicg.github.io/speech-api/","status":{"baseline":false,"support":{}}},"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.SpeechSynthesis.voiceschanged_event","api.SpeechSynthesisErrorEvent","api.SpeechSynthesisErrorEvent.SpeechSynthesisErrorEvent","api.SpeechSynthesisErrorEvent.error","api.SpeechSynthesisEvent","api.SpeechSynthesisEvent.SpeechSynthesisEvent","api.SpeechSynthesisEvent.charIndex","api.SpeechSynthesisEvent.charLength","api.SpeechSynthesisEvent.elapsedTime","api.SpeechSynthesisEvent.name","api.SpeechSynthesisEvent.utterance","api.SpeechSynthesisUtterance","api.SpeechSynthesisUtterance.SpeechSynthesisUtterance","api.SpeechSynthesisUtterance.boundary_event","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 to speech with artificial voices.","description_html":"The <code>SpeechSynthesis</code> API converts text to speech with artificial voices.","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.","group":"selectors","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 sets 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 sets the starting values for properties that are transitioning when the target element's style is first updated.","group":"css","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.","group":"layout","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"}}},"string-at":{"compat_features":["javascript.builtins.String.at"],"description":"The at() method of strings returns the character (one UTF-16 code unit) at an index, including negative indices for getting the character relative to the end of the string. Also known as the relative indexing method.","description_html":"The <code>at()</code> method of strings returns the character (one UTF-16 code unit) at an index, including negative indices for getting the character relative to the end of the string. Also known as the relative indexing method.","group":"string","name":"String at()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2024-09-14","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"}}},"string-codepoint":{"compat_features":["javascript.builtins.String.codePointAt","javascript.builtins.String.fromCodePoint"],"description":"The codePointAt() method returns the numeric value of the UTF-16 code point at an index of the string. The fromCodePoint() method returns a string created from one or more code points.","description_html":"The <code>codePointAt()</code> method returns the numeric value of the UTF-16 code point at an index of the string. The <code>fromCodePoint()</code> method returns a string created from one or more code points.","group":"string","name":"String codePointAt() and fromCodePoint()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"29","firefox_android":"29","safari":"9","safari_ios":"9"}}},"string-includes":{"caniuse":"es6-string-includes","compat_features":["javascript.builtins.String.includes"],"description":"The includes() method of strings returns whether a search string appears within the string.","description_html":"The <code>includes()</code> method of strings returns whether a search string appears within the string.","group":"string","name":"String includes()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"40","firefox_android":"40","safari":"9","safari_ios":"9"}}},"string-matchall":{"compat_features":["javascript.builtins.String.matchAll"],"description":"The matchAll() method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups.","description_html":"The <code>matchAll()</code> method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups.","group":"string","name":"String matchAll()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"67","firefox_android":"67","safari":"13","safari_ios":"13"}}},"string-normalize":{"compat_features":["javascript.builtins.String.normalize"],"description":"The normalize() method of strings returns a Unicode normal form of a string as a new string. More than one code point sequence can represent the same characters. You can use the normalize() method to find canonically or compatibly equivalent strings.","description_html":"The <code>normalize()</code> method of strings returns a Unicode normal form of a string as a new string. More than one code point sequence can represent the same characters. You can use the <code>normalize()</code> method to find canonically or compatibly equivalent strings.","group":"string","name":"String normalize()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"34","chrome_android":"34","edge":"12","firefox":"31","firefox_android":"31","safari":"10","safari_ios":"10"}}},"string-pad":{"caniuse":"pad-start-end","compat_features":["javascript.builtins.String.padEnd","javascript.builtins.String.padStart"],"description":"The padStart() and padEnd() methods of strings return a string lengthened to a minimum number of characters by adding characters to the start or end of the string.","description_html":"The <code>padStart()</code> and <code>padEnd()</code> methods of strings return a string lengthened to a minimum number of characters by adding characters to the start or end of the string.","group":"string","name":"String padStart() and padEnd()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"57","chrome_android":"57","edge":"15","firefox":"48","firefox_android":"48","safari":"10","safari_ios":"10"}}},"string-raw":{"compat_features":["javascript.builtins.String.raw"],"description":"The String.raw() static method interpolates template literal substitutions, but ignores escape sequences. It is the tag function for template literals.","description_html":"The <code>String.raw()</code> static method interpolates template literal substitutions, but ignores escape sequences. It is the tag function for template literals.","group":"string","name":"String raw()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"41","edge":"12","firefox":"34","firefox_android":"34","safari":"9","safari_ios":"9"}}},"string-repeat":{"compat_features":["javascript.builtins.String.repeat"],"description":"The repeat() method of strings returns the original string repeated a number of times.","description_html":"The <code>repeat()</code> method of strings returns the original string repeated a number of times.","group":"string","name":"String repeat()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"36","edge":"12","firefox":"24","firefox_android":"24","safari":"9","safari_ios":"9"}}},"string-replaceall":{"compat_features":["javascript.builtins.String.replaceAll"],"description":"The replaceAll() method of strings returns a new string where all matches of a pattern (a string or regular expression) have been substituted with a replacement string.","description_html":"The <code>replaceAll()</code> method of strings returns a new string where all matches of a pattern (a string or regular expression) have been substituted with a replacement string.","group":"string","name":"String replaceAll()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2023-02-27","baseline_low_date":"2020-08-27","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"77","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"string-startsends-with":{"compat_features":["javascript.builtins.String.endsWith","javascript.builtins.String.startsWith"],"description":"The startsWith() and endsWith() methods of strings returns whether a search string appears at the beginning or end of the provided string.","description_html":"The <code>startsWith()</code> and <code>endsWith()</code> methods of strings returns whether a search string appears at the beginning or end of the provided string.","group":"string","name":"String startsWith() and endsWith()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"41","chrome_android":"36","edge":"12","firefox":"17","firefox_android":"17","safari":"9","safari_ios":"9"}}},"string-trim-startend":{"compat_features":["javascript.builtins.String.trimEnd","javascript.builtins.String.trimStart"],"description":"The trimStart() and trimEnd() methods of strings return a new string with whitespace removed from the beginning or end of the string.","description_html":"The <code>trimStart()</code> and <code>trimEnd()</code> methods of strings return a new string with whitespace removed from the beginning or end of the string.","group":"string","name":"String trimStart() and trimEnd()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"61","firefox_android":"61","safari":"12","safari_ios":"12"}}},"string-wellformed":{"compat_features":["javascript.builtins.String.isWellFormed","javascript.builtins.String.toWellFormed"],"description":"The isWellFormed() method of strings returns a boolean indicating if the string contains any Unicode lone surrogates. The toWellFormed() method returns a new string where all lone surrogates are replaced by the Unicode replacement character.","description_html":"The <code>isWellFormed()</code> method of strings returns a boolean indicating if the string contains any Unicode lone surrogates. The <code>toWellFormed()</code> method returns a new string where all lone surrogates are replaced by the Unicode replacement character.","group":"string","name":"String isWellFormed() and toWellFormed()","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","status":{"baseline":"low","baseline_low_date":"2023-10-24","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"119","firefox_android":"119","safari":"16.4","safari_ios":"16.4"}}},"strings":{"compat_features":["javascript.builtins.String","javascript.builtins.String.@@iterator","javascript.builtins.String.String","javascript.builtins.String.charAt","javascript.builtins.String.charCodeAt","javascript.builtins.String.concat","javascript.builtins.String.fromCharCode","javascript.builtins.String.indexOf","javascript.builtins.String.lastIndexOf","javascript.builtins.String.length","javascript.builtins.String.match","javascript.builtins.String.replace","javascript.builtins.String.search","javascript.builtins.String.slice","javascript.builtins.String.split","javascript.builtins.String.substring","javascript.builtins.String.toLowerCase","javascript.builtins.String.toString","javascript.builtins.String.toUpperCase","javascript.builtins.String.trim","javascript.builtins.String.unicode_code_point_escapes","javascript.builtins.String.valueOf","javascript.grammar.string_literals"],"description":"The string type (and String object) represents a sequence of characters.","description_html":"The string type (and <code>String</code> object) represents a sequence of characters.","group":"primitive-types","name":"String (initial support)","spec":"https://tc39.es/ecma262/multipage/text-processing.html#sec-string-objects","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"}}},"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><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":"high","baseline_high_date":"2024-09-14","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><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><sub></code> and <code><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"}}},"supports":{"caniuse":"css-featurequeries","compat_features":["api.CSSSupportsRule","css.at-rules.import.supports","css.at-rules.supports","css.at-rules.supports.font-format","css.at-rules.supports.font-tech","css.at-rules.supports.selector"],"description":"The @supports at-rule applies styles based on a browser's support for CSS features, such as a CSS property and value. Also known as feature queries.","description_html":"The <code>@supports</code> at-rule applies styles based on a browser's support for CSS features, such as a CSS property and value. Also known as feature queries.","group":"css","name":"@supports","spec":"https://drafts.csswg.org/css-conditional-3/#at-supports","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"28","chrome_android":"28","edge":"12","firefox":"22","firefox_android":"22","safari":"9","safari_ios":"9"}}},"system-color":{"compat_features":["css.types.color.system-color","css.types.color.system-color.accentcolor_accentcolortext","css.types.color.system-color.mark_marktext_buttonborder"],"description":"The system color CSS keywords, such as ButtonBorder or LinkText, allow you to match default colors from the user agent.","description_html":"The system color CSS keywords, such as <code>ButtonBorder</code> or <code>LinkText</code>, allow you to match default colors from the user agent.","group":"color-types","name":"System colors","spec":"https://drafts.csswg.org/css-color-4/#css-system-colors","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"}}},"tab-size":{"caniuse":"css3-tabsize","compat_features":["css.properties.tab-size","css.properties.tab-size.length"],"description":"The tab-size CSS property sets the width of the tab character.","description_html":"The <code>tab-size</code> CSS property sets the width of the tab character.","group":"white-space","name":"tab-size","spec":"https://drafts.csswg.org/css-text-4/#tab-size-property","status":{"baseline":"high","baseline_high_date":"2024-02-10","baseline_low_date":"2021-08-10","support":{"chrome":"42","chrome_android":"42","edge":"79","firefox":"91","firefox_android":"91","safari":"13.1","safari_ios":"13.4"}}},"tabindex":{"caniuse":"tabindex-attr","compat_features":["api.HTMLElement.tabIndex","html.global_attributes.tabindex"],"description":"The tabindex HTML attribute make an element focusable, and sets the element's relative ordering for sequential focus navigation.","description_html":"The <code>tabindex</code> HTML attribute make an element focusable, and sets 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":"3.1","safari_ios":"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><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><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.epochMilliseconds","javascript.builtins.Temporal.Instant.epochNanoseconds","javascript.builtins.Temporal.Instant.equals","javascript.builtins.Temporal.Instant.from","javascript.builtins.Temporal.Instant.fromEpochMilliseconds","javascript.builtins.Temporal.Instant.fromEpochNanoseconds","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.toZonedDateTimeISO","javascript.builtins.Temporal.Instant.until","javascript.builtins.Temporal.Instant.valueOf","javascript.builtins.Temporal.Now","javascript.builtins.Temporal.Now.instant","javascript.builtins.Temporal.Now.plainDateISO","javascript.builtins.Temporal.Now.plainDateTimeISO","javascript.builtins.Temporal.Now.plainTimeISO","javascript.builtins.Temporal.Now.timeZoneID","javascript.builtins.Temporal.Now.zonedDateTimeISO","javascript.builtins.Temporal.PlainDate","javascript.builtins.Temporal.PlainDate.PlainDate","javascript.builtins.Temporal.PlainDate.add","javascript.builtins.Temporal.PlainDate.calendarId","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.PlainDate.yearOfWeek","javascript.builtins.Temporal.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.PlainDateTime","javascript.builtins.Temporal.PlainDateTime.add","javascript.builtins.Temporal.PlainDateTime.calendarId","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.toPlainTime","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.withPlainTime","javascript.builtins.Temporal.PlainDateTime.year","javascript.builtins.Temporal.PlainDateTime.yearOfWeek","javascript.builtins.Temporal.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.PlainMonthDay","javascript.builtins.Temporal.PlainMonthDay.calendarId","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.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.toString","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.calendarId","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.getOffsetNanosecondsFor","javascript.builtins.Temporal.TimeZone.getOffsetStringFor","javascript.builtins.Temporal.TimeZone.getPlainDateTimeFor","javascript.builtins.Temporal.TimeZone.getPossibleInstantsFor","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.calendarId","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.epochMilliseconds","javascript.builtins.Temporal.ZonedDateTime.epochNanoseconds","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.getTimeZoneTransition","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.timeZoneId","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.toPlainTime","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.withPlainTime","javascript.builtins.Temporal.ZonedDateTime.withTimeZone","javascript.builtins.Temporal.ZonedDateTime.year","javascript.builtins.Temporal.ZonedDateTime.yearOfWeek"],"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.","group":"css","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.","group":"css","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><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.","group":"css","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-mode":{"compat_features":["css.properties.text-wrap-mode","css.properties.text-wrap-mode.nowrap","css.properties.text-wrap-mode.wrap"],"description":"The text-wrap-mode CSS property sets whether lines may wrap with the values wrap and nowrap. It is a longhand property for both white-space and text-wrap.","description_html":"The <code>text-wrap-mode</code> CSS property sets whether lines may wrap with the values <code>wrap</code> and <code>nowrap</code>. It is a longhand property for both <code>white-space</code> and <code>text-wrap</code>.","group":"white-space","name":"text-wrap-mode","spec":"https://drafts.csswg.org/css-text-4/#text-wrap-mode","status":{"baseline":false,"support":{"firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"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.","group":"css","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.","group":"css","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><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><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><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/ecma262/multipage/structured-data.html#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":"high","baseline_high_date":"2024-09-14","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%.","group":"css","name":"transition-behavior","spec":"https://drafts.csswg.org/css-transitions-2/#transition-behavior-property","status":{"baseline":"low","baseline_low_date":"2024-08-06","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"129","firefox_android":"129","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.","group":"css","name":"sin(), cos(), tan(), asin(), acos(), atan(), and atan2() (CSS)","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.","group":"css","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.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><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"}}},"update":{"compat_features":["css.at-rules.media.update"],"description":"The update CSS media query sets styles based on whether and how fast the user's device can modify display after it has been rendered. For example, you can avoid animations on devices that aren't fast enough to display them smoothly.","description_html":"The <code>update</code> CSS media query sets styles based on whether and how fast the user's device can modify display after it has been rendered. For example, you can avoid animations on devices that aren't fast enough to display them smoothly.","group":"media-queries","name":"Update frequency media query","spec":"https://drafts.csswg.org/mediaqueries-5/#update","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"113","chrome_android":"113","edge":"113","firefox":"102","firefox_android":"102","safari":"17","safari_ios":"17"}}},"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.","group":"selectors","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"}}},"user-select":{"caniuse":"user-select-none","compat_features":["css.properties.user-select","css.properties.user-select.all","css.properties.user-select.auto","css.properties.user-select.none","css.properties.user-select.text"],"description":"The user-select CSS property controls which elements can be selected by the user.","description_html":"The <code>user-select</code> CSS property controls which elements can be selected by the user.","group":"css","name":"user-select","spec":"https://drafts.csswg.org/css-ui-4/#content-selection","status":{"baseline":false,"support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"69","firefox_android":"79"}}},"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><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><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"}}},"video-dynamic-range":{"compat_features":["css.at-rules.media.video-dynamic-range"],"description":"The video-dynamic-range CSS media query sets styles based on whether a device can display video with at least standard range colors or at least high range colors. Non-visual devices will match neither.","description_html":"The <code>video-dynamic-range</code> CSS media query sets styles based on whether a device can display video with at least <code>standard</code> range colors or at least <code>high</code> range colors. Non-visual devices will match neither.","group":"media-queries","name":"video-dynamic-range media query","spec":"https://drafts.csswg.org/mediaqueries-5/#dynamic-range","status":{"baseline":false,"support":{"firefox":"100","firefox_android":"100"}}},"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.","group":"css","name":"View transitions","spec":"https://drafts.csswg.org/css-view-transitions-1/","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","safari":"18","safari_ios":"18"}}},"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.","group":"units","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><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"}}},"weak-references":{"compat_features":["javascript.builtins.FinalizationRegistry","javascript.builtins.FinalizationRegistry.FinalizationRegistry","javascript.builtins.FinalizationRegistry.register","javascript.builtins.FinalizationRegistry.unregister","javascript.builtins.WeakRef","javascript.builtins.WeakRef.WeakRef","javascript.builtins.WeakRef.deref"],"description":"The WeakRef and FinalizationRegistry objects hold references to garbage-collectable objects without creating strong references that prevent their garbage collection.","description_html":"The <code>WeakRef</code> and <code>FinalizationRegistry</code> objects hold references to garbage-collectable objects without creating strong references that prevent their garbage collection.","group":"javascript","name":"Weak references","snapshot":"ecmascript-2021","spec":["https://tc39.es/ecma262/multipage/managing-memory.html#sec-managing-memory"],"status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"79","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"weakmap":{"compat_features":["javascript.builtins.WeakMap","javascript.builtins.WeakMap.WeakMap","javascript.builtins.WeakMap.WeakMap.iterable_allowed","javascript.builtins.WeakMap.WeakMap.null_allowed","javascript.builtins.WeakMap.delete","javascript.builtins.WeakMap.get","javascript.builtins.WeakMap.has","javascript.builtins.WeakMap.set","javascript.builtins.WeakMap.symbol_as_keys"],"description":"A WeakMap object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.","description_html":"A <code>WeakMap</code> object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.","group":"collections","name":"WeakMap","spec":"https://tc39.es/ecma262/multipage/keyed-collections.html#sec-weakmap-objects","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"6","firefox_android":"6","safari":"8","safari_ios":"8"}}},"weakset":{"compat_features":["javascript.builtins.WeakSet","javascript.builtins.WeakSet.WeakSet","javascript.builtins.WeakSet.WeakSet.iterable_allowed","javascript.builtins.WeakSet.WeakSet.null_allowed","javascript.builtins.WeakSet.add","javascript.builtins.WeakSet.delete","javascript.builtins.WeakSet.has","javascript.builtins.WeakSet.symbol_as_keys"],"description":"A WeakSet object stores unique values of any type without creating strong references to the values, such that membership in the set does not prevent garbage collection of the value.","description_html":"A <code>WeakSet</code> object stores unique values of any type without creating strong references to the values, such that membership in the set does not prevent garbage collection of the value.","group":"collections","name":"WeakSet","spec":"https://tc39.es/ecma262/multipage/keyed-collections.html#sec-weakset-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"34","firefox_android":"34","safari":"9","safari_ios":"9"}}},"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-cryptography":{"caniuse":"cryptography","compat_features":["api.Crypto","api.Crypto.getRandomValues","api.Crypto.randomUUID","api.Crypto.subtle","api.CryptoKey","api.CryptoKey.algorithm","api.CryptoKey.extractable","api.CryptoKey.type","api.CryptoKey.usages","api.SubtleCrypto","api.SubtleCrypto.decrypt","api.SubtleCrypto.deriveBits","api.SubtleCrypto.deriveBits.x25519","api.SubtleCrypto.deriveKey","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_aes","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_hkdf","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_hmac","api.SubtleCrypto.deriveKey.derivedKeyAlgorithm_option_pbkdf2","api.SubtleCrypto.deriveKey.x25519","api.SubtleCrypto.digest","api.SubtleCrypto.encrypt","api.SubtleCrypto.exportKey","api.SubtleCrypto.exportKey.ed25519","api.SubtleCrypto.exportKey.x25519","api.SubtleCrypto.generateKey","api.SubtleCrypto.generateKey.ed25519","api.SubtleCrypto.generateKey.x25519","api.SubtleCrypto.importKey","api.SubtleCrypto.importKey.ed25519","api.SubtleCrypto.importKey.x25519","api.SubtleCrypto.sign","api.SubtleCrypto.sign.ed25519","api.SubtleCrypto.unwrapKey","api.SubtleCrypto.verify","api.SubtleCrypto.verify.ed25519","api.SubtleCrypto.wrapKey","api.crypto"],"description":"The Web Cryptography API performs low-level cryptographic operations, such as encryption, decryption, and signature verification. Also known as the Web Crypto API.","description_html":"The Web Cryptography API performs low-level cryptographic operations, such as encryption, decryption, and signature verification. Also known as the Web Crypto API.","name":"Web Cryptography","spec":["https://w3c.github.io/webcrypto/","https://wicg.github.io/webcrypto-secure-curves/"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"11","chrome_android":"18","edge":"12","firefox":"21","firefox_android":"21","safari":"5","safari_ios":"5"}}},"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":"high","baseline_high_date":"2024-09-14","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"}}},"web-otp":{"compat_features":["api.CredentialsContainer.get.otp_option","api.OTPCredential","api.OTPCredential.code","http.headers.Permissions-Policy.otp-credentials"],"description":"The OTPCredential API represents a one-time-password (OTP).","description_html":"The <code>OTPCredential</code> API represents a one-time-password (OTP).","group":"credential-management","name":"WebOTP","spec":"https://wicg.github.io/web-otp/","status":{"baseline":false,"support":{"chrome":"93","chrome_android":"84","edge":"93"}}},"webauthn":{"caniuse":"webauthn","compat_features":["api.AuthenticatorAssertionResponse","api.AuthenticatorAssertionResponse.authenticatorData","api.AuthenticatorAssertionResponse.signature","api.AuthenticatorAssertionResponse.userHandle","api.AuthenticatorAttestationResponse","api.AuthenticatorAttestationResponse.attestationObject","api.AuthenticatorAttestationResponse.getTransports","api.AuthenticatorResponse","api.AuthenticatorResponse.clientDataJSON","api.CredentialsContainer.create.publicKey_option","api.CredentialsContainer.create.publicKey_option.extensions","api.CredentialsContainer.create.publicKey_option.extensions.appidExclude","api.CredentialsContainer.get.publicKey_option","api.CredentialsContainer.get.publicKey_option.extensions","api.CredentialsContainer.get.publicKey_option.extensions.appid","api.PublicKeyCredential","api.PublicKeyCredential.getClientExtensionResults","api.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable_static","api.PublicKeyCredential.rawId","api.PublicKeyCredential.response"],"description":"The web authentication API allows you to create public key-based credentials and use them for authentication, such as when signing in. Also known as WebAuthn.","description_html":"The web authentication API allows you to create public key-based credentials and use them for authentication, such as when signing in. Also known as WebAuthn.","name":"Web authentication","spec":"https://w3c.github.io/webauthn/","status":{"baseline":"high","baseline_high_date":"2024-03-07","baseline_low_date":"2021-09-07","support":{"chrome":"67","chrome_android":"70","edge":"18","firefox":"60","firefox_android":"92","safari":"13","safari_ios":"13"}}},"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","firefox":"130"}}},"webdriver":{"compat_features":["api.Navigator.webdriver","webdriver.commands.AcceptAlert","webdriver.commands.AddCookie","webdriver.commands.Back","webdriver.commands.CloseWindow","webdriver.commands.DeleteAllCookies","webdriver.commands.DeleteCookie","webdriver.commands.DeleteSession","webdriver.commands.DismissAlert","webdriver.commands.ElementClear","webdriver.commands.ElementClick","webdriver.commands.ElementSendKeys","webdriver.commands.ExecuteAsyncScript","webdriver.commands.ExecuteScript","webdriver.commands.FindElement","webdriver.commands.FindElementFromElement","webdriver.commands.FindElements","webdriver.commands.FindElementsFromElement","webdriver.commands.Forward","webdriver.commands.FullscreenWindow","webdriver.commands.GetActiveElement","webdriver.commands.GetAlertText","webdriver.commands.GetAllCookies","webdriver.commands.GetCurrentURL","webdriver.commands.GetElementAttribute","webdriver.commands.GetElementCSSValue","webdriver.commands.GetElementProperty","webdriver.commands.GetElementRect","webdriver.commands.GetElementTagName","webdriver.commands.GetElementText","webdriver.commands.GetNamedCookie","webdriver.commands.GetPageSource","webdriver.commands.GetTimeouts","webdriver.commands.GetTitle","webdriver.commands.GetWindowHandle","webdriver.commands.GetWindowHandles","webdriver.commands.GetWindowRect","webdriver.commands.IsElementEnabled","webdriver.commands.IsElementSelected","webdriver.commands.MaximizeWindow","webdriver.commands.MinimizeWindow","webdriver.commands.NavigateTo","webdriver.commands.NewSession","webdriver.commands.NewWindow","webdriver.commands.PerformActions","webdriver.commands.Refresh","webdriver.commands.ReleaseActions","webdriver.commands.SendAlertText","webdriver.commands.SetTimeouts","webdriver.commands.SetWindowRect","webdriver.commands.Status","webdriver.commands.SwitchToFrame","webdriver.commands.SwitchToParentFrame","webdriver.commands.SwitchToWindow","webdriver.commands.TakeElementScreenshot","webdriver.commands.TakeScreenshot"],"description":"The WebDriver interface allows out-of-process programs to inspect and control browsers to, for example, run tests of web applications. Also known as WebDriver classic.","description_html":"The WebDriver interface allows out-of-process programs to inspect and control browsers to, for example, run tests of web applications. Also known as WebDriver classic.","group":"webdriver","name":"WebDriver","spec":"https://w3c.github.io/webdriver/","status":{"baseline":false,"support":{"firefox":"66"}}},"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.","group":"webdriver","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":{"caniuse":"webgl","compat_features":["api.HTMLCanvasElement.getContext.webgl_context.options_alpha_parameter","api.HTMLCanvasElement.getContext.webgl_context.options_failIfMajorPerformanceCaveat_parameter","api.HTMLCanvasElement.getContext.webgl_context.options_powerPreference_parameter","api.HTMLCanvasElement.webglcontextcreationerror_event","api.HTMLCanvasElement.webglcontextlost_event","api.HTMLCanvasElement.webglcontextrestored_event","api.WEBGL_color_buffer_float","api.WEBGL_compressed_texture_astc","api.WEBGL_compressed_texture_astc.getSupportedProfiles","api.WEBGL_compressed_texture_etc","api.WEBGL_compressed_texture_etc1","api.WEBGL_compressed_texture_s3tc","api.WEBGL_compressed_texture_s3tc_srgb","api.WEBGL_debug_renderer_info","api.WEBGL_debug_shaders","api.WEBGL_debug_shaders.getTranslatedShaderSource","api.WEBGL_depth_texture","api.WEBGL_draw_buffers","api.WEBGL_draw_buffers.drawBuffersWEBGL","api.WEBGL_lose_context","api.WEBGL_lose_context.loseContext","api.WEBGL_lose_context.restoreContext","api.WEBGL_multi_draw","api.WEBGL_multi_draw.multiDrawArraysInstancedWEBGL","api.WEBGL_multi_draw.multiDrawArraysWEBGL","api.WEBGL_multi_draw.multiDrawElementsInstancedWEBGL","api.WEBGL_multi_draw.multiDrawElementsWEBGL","api.WebGLActiveInfo","api.WebGLActiveInfo.name","api.WebGLActiveInfo.size","api.WebGLActiveInfo.type","api.WebGLBuffer","api.WebGLContextEvent","api.WebGLContextEvent.WebGLContextEvent","api.WebGLContextEvent.statusMessage","api.WebGLFramebuffer","api.WebGLObject","api.WebGLProgram","api.WebGLRenderbuffer","api.WebGLRenderingContext","api.WebGLRenderingContext.activeTexture","api.WebGLRenderingContext.attachShader","api.WebGLRenderingContext.bindAttribLocation","api.WebGLRenderingContext.bindBuffer","api.WebGLRenderingContext.bindFramebuffer","api.WebGLRenderingContext.bindRenderbuffer","api.WebGLRenderingContext.bindTexture","api.WebGLRenderingContext.blendColor","api.WebGLRenderingContext.blendEquation","api.WebGLRenderingContext.blendEquationSeparate","api.WebGLRenderingContext.blendFunc","api.WebGLRenderingContext.blendFuncSeparate","api.WebGLRenderingContext.bufferData","api.WebGLRenderingContext.bufferSubData","api.WebGLRenderingContext.canvas","api.WebGLRenderingContext.checkFramebufferStatus","api.WebGLRenderingContext.clear","api.WebGLRenderingContext.clearColor","api.WebGLRenderingContext.clearDepth","api.WebGLRenderingContext.clearStencil","api.WebGLRenderingContext.colorMask","api.WebGLRenderingContext.compileShader","api.WebGLRenderingContext.compressedTexImage2D","api.WebGLRenderingContext.compressedTexSubImage2D","api.WebGLRenderingContext.copyTexImage2D","api.WebGLRenderingContext.copyTexSubImage2D","api.WebGLRenderingContext.createBuffer","api.WebGLRenderingContext.createFramebuffer","api.WebGLRenderingContext.createProgram","api.WebGLRenderingContext.createRenderbuffer","api.WebGLRenderingContext.createShader","api.WebGLRenderingContext.createTexture","api.WebGLRenderingContext.cullFace","api.WebGLRenderingContext.deleteBuffer","api.WebGLRenderingContext.deleteFramebuffer","api.WebGLRenderingContext.deleteProgram","api.WebGLRenderingContext.deleteRenderbuffer","api.WebGLRenderingContext.deleteShader","api.WebGLRenderingContext.deleteTexture","api.WebGLRenderingContext.depthFunc","api.WebGLRenderingContext.depthMask","api.WebGLRenderingContext.depthRange","api.WebGLRenderingContext.detachShader","api.WebGLRenderingContext.disable","api.WebGLRenderingContext.disableVertexAttribArray","api.WebGLRenderingContext.drawArrays","api.WebGLRenderingContext.drawElements","api.WebGLRenderingContext.drawingBufferFormat","api.WebGLRenderingContext.drawingBufferHeight","api.WebGLRenderingContext.drawingBufferStorage","api.WebGLRenderingContext.drawingBufferWidth","api.WebGLRenderingContext.enable","api.WebGLRenderingContext.enableVertexAttribArray","api.WebGLRenderingContext.finish","api.WebGLRenderingContext.flush","api.WebGLRenderingContext.framebufferRenderbuffer","api.WebGLRenderingContext.framebufferTexture2D","api.WebGLRenderingContext.frontFace","api.WebGLRenderingContext.generateMipmap","api.WebGLRenderingContext.getActiveAttrib","api.WebGLRenderingContext.getActiveUniform","api.WebGLRenderingContext.getAttachedShaders","api.WebGLRenderingContext.getAttribLocation","api.WebGLRenderingContext.getBufferParameter","api.WebGLRenderingContext.getContextAttributes","api.WebGLRenderingContext.getError","api.WebGLRenderingContext.getExtension","api.WebGLRenderingContext.getFramebufferAttachmentParameter","api.WebGLRenderingContext.getParameter","api.WebGLRenderingContext.getProgramInfoLog","api.WebGLRenderingContext.getProgramParameter","api.WebGLRenderingContext.getRenderbufferParameter","api.WebGLRenderingContext.getShaderInfoLog","api.WebGLRenderingContext.getShaderParameter","api.WebGLRenderingContext.getShaderPrecisionFormat","api.WebGLRenderingContext.getShaderSource","api.WebGLRenderingContext.getSupportedExtensions","api.WebGLRenderingContext.getTexParameter","api.WebGLRenderingContext.getUniform","api.WebGLRenderingContext.getUniformLocation","api.WebGLRenderingContext.getVertexAttrib","api.WebGLRenderingContext.getVertexAttribOffset","api.WebGLRenderingContext.hint","api.WebGLRenderingContext.isBuffer","api.WebGLRenderingContext.isContextLost","api.WebGLRenderingContext.isEnabled","api.WebGLRenderingContext.isFramebuffer","api.WebGLRenderingContext.isProgram","api.WebGLRenderingContext.isRenderbuffer","api.WebGLRenderingContext.isShader","api.WebGLRenderingContext.isTexture","api.WebGLRenderingContext.lineWidth","api.WebGLRenderingContext.linkProgram","api.WebGLRenderingContext.pixelStorei","api.WebGLRenderingContext.polygonOffset","api.WebGLRenderingContext.readPixels","api.WebGLRenderingContext.renderbufferStorage","api.WebGLRenderingContext.sampleCoverage","api.WebGLRenderingContext.scissor","api.WebGLRenderingContext.shaderSource","api.WebGLRenderingContext.stencilFunc","api.WebGLRenderingContext.stencilFuncSeparate","api.WebGLRenderingContext.stencilMask","api.WebGLRenderingContext.stencilMaskSeparate","api.WebGLRenderingContext.stencilOp","api.WebGLRenderingContext.stencilOpSeparate","api.WebGLRenderingContext.texImage2D","api.WebGLRenderingContext.texParameterf","api.WebGLRenderingContext.texParameteri","api.WebGLRenderingContext.texSubImage2D","api.WebGLRenderingContext.uniform1f","api.WebGLRenderingContext.uniform1fv","api.WebGLRenderingContext.uniform1i","api.WebGLRenderingContext.uniform1iv","api.WebGLRenderingContext.uniform2f","api.WebGLRenderingContext.uniform2fv","api.WebGLRenderingContext.uniform2i","api.WebGLRenderingContext.uniform2iv","api.WebGLRenderingContext.uniform3f","api.WebGLRenderingContext.uniform3fv","api.WebGLRenderingContext.uniform3i","api.WebGLRenderingContext.uniform3iv","api.WebGLRenderingContext.uniform4f","api.WebGLRenderingContext.uniform4fv","api.WebGLRenderingContext.uniform4i","api.WebGLRenderingContext.uniform4iv","api.WebGLRenderingContext.uniformMatrix2fv","api.WebGLRenderingContext.uniformMatrix3fv","api.WebGLRenderingContext.uniformMatrix4fv","api.WebGLRenderingContext.useProgram","api.WebGLRenderingContext.validateProgram","api.WebGLRenderingContext.vertexAttrib1f","api.WebGLRenderingContext.vertexAttrib1fv","api.WebGLRenderingContext.vertexAttrib2f","api.WebGLRenderingContext.vertexAttrib2fv","api.WebGLRenderingContext.vertexAttrib3f","api.WebGLRenderingContext.vertexAttrib3fv","api.WebGLRenderingContext.vertexAttrib4f","api.WebGLRenderingContext.vertexAttrib4fv","api.WebGLRenderingContext.vertexAttribPointer","api.WebGLRenderingContext.viewport","api.WebGLShader","api.WebGLShaderPrecisionFormat","api.WebGLShaderPrecisionFormat.precision","api.WebGLShaderPrecisionFormat.rangeMax","api.WebGLShaderPrecisionFormat.rangeMin","api.WebGLTexture","api.WebGLUniformLocation"],"description":"The WebGLRenderingContext API is the \"webgl\" rendering context for the <canvas> element. It represents a space for drawing two- and three-dimensional graphics and animations.","description_html":"The <code>WebGLRenderingContext</code> API is the <code>\"webgl\"</code> rendering context for the <code><canvas></code> element. It represents a space for drawing two- and three-dimensional graphics and animations.","group":"webgl","name":"WebGL","spec":"https://registry.khronos.org/webgl/specs/latest/1.0/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"9","chrome_android":"25","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"8"}}},"webgl-color-management":{"compat_features":["api.WebGLRenderingContext.drawingBufferColorSpace","api.WebGLRenderingContext.unpackColorSpace"],"description":"The drawingBufferColorSpace and unpackColorSpace properties of WebGLRenderingContext sets the color representation for the buffer and imported textures, such as \"srgb\" or \"display-p3\".","description_html":"The <code>drawingBufferColorSpace</code> and <code>unpackColorSpace</code> properties of <code>WebGLRenderingContext</code> sets the color representation for the buffer and imported textures, such as <code>\"srgb\"</code> or <code>\"display-p3\"</code>.","group":"webgl","name":"Color management for WebGL","spec":["https://registry.khronos.org/webgl/specs/latest/1.0/#DOM-WebGLRenderingContext-drawingBufferColorSpace","https://registry.khronos.org/webgl/specs/latest/1.0/#DOM-WebGLRenderingContext-unpackColorSpace"],"status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104","safari":"16.4","safari_ios":"16.4"}}},"webgl-desynchronized":{"compat_features":["api.HTMLCanvasElement.getContext.webgl_context.options_desynchronized_parameter"],"description":"The optional desynchronized parameter of a canvas's getContext() method permits the browser to draw a WebGL canvas independently of the event loop. This can reduce drawing latency.","description_html":"The optional <code>desynchronized</code> parameter of a canvas's <code>getContext()</code> method permits the browser to draw a WebGL canvas independently of the event loop. This can reduce drawing latency.","group":"webgl","name":"Desynchronized WebGL canvas","spec":"https://registry.khronos.org/webgl/specs/latest/1.0/#5.2.1","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"75","edge":"79"}}},"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"}}},"webgl2":{"caniuse":"webgl2","compat_features":["api.HTMLCanvasElement.getContext.webgl2_context.options_alpha_parameter","api.HTMLCanvasElement.getContext.webgl2_context.options_failIfMajorPerformanceCaveat_parameter","api.HTMLCanvasElement.getContext.webgl2_context.options_powerPreference_parameter","api.WebGL2RenderingContext","api.WebGL2RenderingContext.activeTexture","api.WebGL2RenderingContext.attachShader","api.WebGL2RenderingContext.beginQuery","api.WebGL2RenderingContext.beginTransformFeedback","api.WebGL2RenderingContext.bindAttribLocation","api.WebGL2RenderingContext.bindBuffer","api.WebGL2RenderingContext.bindBufferBase","api.WebGL2RenderingContext.bindBufferRange","api.WebGL2RenderingContext.bindFramebuffer","api.WebGL2RenderingContext.bindRenderbuffer","api.WebGL2RenderingContext.bindSampler","api.WebGL2RenderingContext.bindTexture","api.WebGL2RenderingContext.bindTransformFeedback","api.WebGL2RenderingContext.bindVertexArray","api.WebGL2RenderingContext.blendColor","api.WebGL2RenderingContext.blendEquation","api.WebGL2RenderingContext.blendEquationSeparate","api.WebGL2RenderingContext.blendFunc","api.WebGL2RenderingContext.blendFuncSeparate","api.WebGL2RenderingContext.blitFramebuffer","api.WebGL2RenderingContext.bufferData","api.WebGL2RenderingContext.bufferSubData","api.WebGL2RenderingContext.canvas","api.WebGL2RenderingContext.checkFramebufferStatus","api.WebGL2RenderingContext.clear","api.WebGL2RenderingContext.clearBufferfi","api.WebGL2RenderingContext.clearBufferfv","api.WebGL2RenderingContext.clearBufferiv","api.WebGL2RenderingContext.clearBufferuiv","api.WebGL2RenderingContext.clearColor","api.WebGL2RenderingContext.clearDepth","api.WebGL2RenderingContext.clearStencil","api.WebGL2RenderingContext.clientWaitSync","api.WebGL2RenderingContext.colorMask","api.WebGL2RenderingContext.compileShader","api.WebGL2RenderingContext.compressedTexImage2D","api.WebGL2RenderingContext.compressedTexImage3D","api.WebGL2RenderingContext.compressedTexSubImage2D","api.WebGL2RenderingContext.compressedTexSubImage3D","api.WebGL2RenderingContext.copyBufferSubData","api.WebGL2RenderingContext.copyTexImage2D","api.WebGL2RenderingContext.copyTexSubImage2D","api.WebGL2RenderingContext.copyTexSubImage3D","api.WebGL2RenderingContext.createBuffer","api.WebGL2RenderingContext.createFramebuffer","api.WebGL2RenderingContext.createProgram","api.WebGL2RenderingContext.createQuery","api.WebGL2RenderingContext.createRenderbuffer","api.WebGL2RenderingContext.createSampler","api.WebGL2RenderingContext.createShader","api.WebGL2RenderingContext.createTexture","api.WebGL2RenderingContext.createTransformFeedback","api.WebGL2RenderingContext.createVertexArray","api.WebGL2RenderingContext.cullFace","api.WebGL2RenderingContext.deleteBuffer","api.WebGL2RenderingContext.deleteFramebuffer","api.WebGL2RenderingContext.deleteProgram","api.WebGL2RenderingContext.deleteQuery","api.WebGL2RenderingContext.deleteRenderbuffer","api.WebGL2RenderingContext.deleteSampler","api.WebGL2RenderingContext.deleteShader","api.WebGL2RenderingContext.deleteSync","api.WebGL2RenderingContext.deleteTexture","api.WebGL2RenderingContext.deleteTransformFeedback","api.WebGL2RenderingContext.deleteVertexArray","api.WebGL2RenderingContext.depthFunc","api.WebGL2RenderingContext.depthMask","api.WebGL2RenderingContext.depthRange","api.WebGL2RenderingContext.detachShader","api.WebGL2RenderingContext.disable","api.WebGL2RenderingContext.disableVertexAttribArray","api.WebGL2RenderingContext.drawArrays","api.WebGL2RenderingContext.drawArraysInstanced","api.WebGL2RenderingContext.drawBuffers","api.WebGL2RenderingContext.drawElements","api.WebGL2RenderingContext.drawElementsInstanced","api.WebGL2RenderingContext.drawRangeElements","api.WebGL2RenderingContext.drawingBufferFormat","api.WebGL2RenderingContext.drawingBufferHeight","api.WebGL2RenderingContext.drawingBufferStorage","api.WebGL2RenderingContext.drawingBufferWidth","api.WebGL2RenderingContext.enable","api.WebGL2RenderingContext.enableVertexAttribArray","api.WebGL2RenderingContext.endQuery","api.WebGL2RenderingContext.endTransformFeedback","api.WebGL2RenderingContext.fenceSync","api.WebGL2RenderingContext.finish","api.WebGL2RenderingContext.flush","api.WebGL2RenderingContext.framebufferRenderbuffer","api.WebGL2RenderingContext.framebufferTexture2D","api.WebGL2RenderingContext.framebufferTextureLayer","api.WebGL2RenderingContext.frontFace","api.WebGL2RenderingContext.generateMipmap","api.WebGL2RenderingContext.getActiveAttrib","api.WebGL2RenderingContext.getActiveUniform","api.WebGL2RenderingContext.getActiveUniformBlockName","api.WebGL2RenderingContext.getActiveUniformBlockParameter","api.WebGL2RenderingContext.getActiveUniforms","api.WebGL2RenderingContext.getAttachedShaders","api.WebGL2RenderingContext.getAttribLocation","api.WebGL2RenderingContext.getBufferParameter","api.WebGL2RenderingContext.getBufferSubData","api.WebGL2RenderingContext.getContextAttributes","api.WebGL2RenderingContext.getError","api.WebGL2RenderingContext.getExtension","api.WebGL2RenderingContext.getFragDataLocation","api.WebGL2RenderingContext.getFramebufferAttachmentParameter","api.WebGL2RenderingContext.getIndexedParameter","api.WebGL2RenderingContext.getInternalformatParameter","api.WebGL2RenderingContext.getParameter","api.WebGL2RenderingContext.getProgramInfoLog","api.WebGL2RenderingContext.getProgramParameter","api.WebGL2RenderingContext.getQuery","api.WebGL2RenderingContext.getQueryParameter","api.WebGL2RenderingContext.getRenderbufferParameter","api.WebGL2RenderingContext.getSamplerParameter","api.WebGL2RenderingContext.getShaderInfoLog","api.WebGL2RenderingContext.getShaderParameter","api.WebGL2RenderingContext.getShaderPrecisionFormat","api.WebGL2RenderingContext.getShaderSource","api.WebGL2RenderingContext.getSupportedExtensions","api.WebGL2RenderingContext.getSyncParameter","api.WebGL2RenderingContext.getTexParameter","api.WebGL2RenderingContext.getTransformFeedbackVarying","api.WebGL2RenderingContext.getUniform","api.WebGL2RenderingContext.getUniformBlockIndex","api.WebGL2RenderingContext.getUniformIndices","api.WebGL2RenderingContext.getUniformLocation","api.WebGL2RenderingContext.getVertexAttrib","api.WebGL2RenderingContext.getVertexAttribOffset","api.WebGL2RenderingContext.hint","api.WebGL2RenderingContext.invalidateFramebuffer","api.WebGL2RenderingContext.invalidateSubFramebuffer","api.WebGL2RenderingContext.isBuffer","api.WebGL2RenderingContext.isContextLost","api.WebGL2RenderingContext.isEnabled","api.WebGL2RenderingContext.isFramebuffer","api.WebGL2RenderingContext.isProgram","api.WebGL2RenderingContext.isQuery","api.WebGL2RenderingContext.isRenderbuffer","api.WebGL2RenderingContext.isSampler","api.WebGL2RenderingContext.isShader","api.WebGL2RenderingContext.isSync","api.WebGL2RenderingContext.isTexture","api.WebGL2RenderingContext.isTransformFeedback","api.WebGL2RenderingContext.isVertexArray","api.WebGL2RenderingContext.lineWidth","api.WebGL2RenderingContext.linkProgram","api.WebGL2RenderingContext.pauseTransformFeedback","api.WebGL2RenderingContext.pixelStorei","api.WebGL2RenderingContext.polygonOffset","api.WebGL2RenderingContext.readBuffer","api.WebGL2RenderingContext.readPixels","api.WebGL2RenderingContext.renderbufferStorage","api.WebGL2RenderingContext.renderbufferStorageMultisample","api.WebGL2RenderingContext.resumeTransformFeedback","api.WebGL2RenderingContext.sampleCoverage","api.WebGL2RenderingContext.samplerParameterf","api.WebGL2RenderingContext.samplerParameteri","api.WebGL2RenderingContext.scissor","api.WebGL2RenderingContext.shaderSource","api.WebGL2RenderingContext.stencilFunc","api.WebGL2RenderingContext.stencilFuncSeparate","api.WebGL2RenderingContext.stencilMask","api.WebGL2RenderingContext.stencilMaskSeparate","api.WebGL2RenderingContext.stencilOp","api.WebGL2RenderingContext.stencilOpSeparate","api.WebGL2RenderingContext.texImage2D","api.WebGL2RenderingContext.texImage3D","api.WebGL2RenderingContext.texParameterf","api.WebGL2RenderingContext.texParameteri","api.WebGL2RenderingContext.texStorage2D","api.WebGL2RenderingContext.texStorage3D","api.WebGL2RenderingContext.texSubImage2D","api.WebGL2RenderingContext.texSubImage3D","api.WebGL2RenderingContext.transformFeedbackVaryings","api.WebGL2RenderingContext.uniform1f","api.WebGL2RenderingContext.uniform1fv","api.WebGL2RenderingContext.uniform1i","api.WebGL2RenderingContext.uniform1iv","api.WebGL2RenderingContext.uniform1ui","api.WebGL2RenderingContext.uniform1uiv","api.WebGL2RenderingContext.uniform2f","api.WebGL2RenderingContext.uniform2fv","api.WebGL2RenderingContext.uniform2i","api.WebGL2RenderingContext.uniform2iv","api.WebGL2RenderingContext.uniform2ui","api.WebGL2RenderingContext.uniform2uiv","api.WebGL2RenderingContext.uniform3f","api.WebGL2RenderingContext.uniform3fv","api.WebGL2RenderingContext.uniform3i","api.WebGL2RenderingContext.uniform3iv","api.WebGL2RenderingContext.uniform3ui","api.WebGL2RenderingContext.uniform3uiv","api.WebGL2RenderingContext.uniform4f","api.WebGL2RenderingContext.uniform4fv","api.WebGL2RenderingContext.uniform4i","api.WebGL2RenderingContext.uniform4iv","api.WebGL2RenderingContext.uniform4ui","api.WebGL2RenderingContext.uniform4uiv","api.WebGL2RenderingContext.uniformBlockBinding","api.WebGL2RenderingContext.uniformMatrix2fv","api.WebGL2RenderingContext.uniformMatrix2x3fv","api.WebGL2RenderingContext.uniformMatrix2x4fv","api.WebGL2RenderingContext.uniformMatrix3fv","api.WebGL2RenderingContext.uniformMatrix3x2fv","api.WebGL2RenderingContext.uniformMatrix3x4fv","api.WebGL2RenderingContext.uniformMatrix4fv","api.WebGL2RenderingContext.uniformMatrix4x2fv","api.WebGL2RenderingContext.uniformMatrix4x3fv","api.WebGL2RenderingContext.useProgram","api.WebGL2RenderingContext.validateProgram","api.WebGL2RenderingContext.vertexAttrib1f","api.WebGL2RenderingContext.vertexAttrib1fv","api.WebGL2RenderingContext.vertexAttrib2f","api.WebGL2RenderingContext.vertexAttrib2fv","api.WebGL2RenderingContext.vertexAttrib3f","api.WebGL2RenderingContext.vertexAttrib3fv","api.WebGL2RenderingContext.vertexAttrib4f","api.WebGL2RenderingContext.vertexAttrib4fv","api.WebGL2RenderingContext.vertexAttribDivisor","api.WebGL2RenderingContext.vertexAttribI4i","api.WebGL2RenderingContext.vertexAttribI4iv","api.WebGL2RenderingContext.vertexAttribI4ui","api.WebGL2RenderingContext.vertexAttribI4uiv","api.WebGL2RenderingContext.vertexAttribIPointer","api.WebGL2RenderingContext.vertexAttribPointer","api.WebGL2RenderingContext.viewport","api.WebGL2RenderingContext.waitSync","api.WebGLQuery","api.WebGLSampler","api.WebGLSync","api.WebGLTransformFeedback","api.WebGLVertexArrayObject"],"description":"The WebGL2RenderingContext API is the \"webgl2\" rendering context for the <canvas> element. It represents a space for drawing two- and three-dimensional graphics and animations. It corresponds to OpenGL ES 3.0.","description_html":"The <code>WebGL2RenderingContext</code> API is the <code>\"webgl2\"</code> rendering context for the <code><canvas></code> element. It represents a space for drawing two- and three-dimensional graphics and animations. It corresponds to OpenGL ES 3.0.","name":"WebGL2","spec":"https://registry.khronos.org/webgl/specs/latest/2.0/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"56","chrome_android":"58","edge":"79","firefox":"51","firefox_android":"51","safari":"15","safari_ios":"15"}}},"webgl2-color-management":{"compat_features":["api.WebGL2RenderingContext.drawingBufferColorSpace","api.WebGL2RenderingContext.unpackColorSpace"],"description":"The drawingBufferColorSpace and unpackColorSpace properties of WebGL2RenderingContext sets the color representation for the buffer and imported textures, such as \"srgb\" or \"display-p3\".","description_html":"The <code>drawingBufferColorSpace</code> and <code>unpackColorSpace</code> properties of <code>WebGL2RenderingContext</code> sets the color representation for the buffer and imported textures, such as <code>\"srgb\"</code> or <code>\"display-p3\"</code>.","name":"Color management for WebGL2","spec":"https://registry.khronos.org/webgl/specs/latest/2.0/","status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104","safari":"16.4","safari_ios":"16.4"}}},"webgl2-desynchronized":{"compat_features":["api.HTMLCanvasElement.getContext.webgl2_context.options_desynchronized_parameter"],"description":"The optional desynchronized parameter of a canvas's getContext() method permits the browser to draw a WebGL2 canvas independently of the event loop. This can reduce drawing latency.","description_html":"The optional <code>desynchronized</code> parameter of a canvas's <code>getContext()</code> method permits the browser to draw a WebGL2 canvas independently of the event loop. This can reduce drawing latency.","name":"Desynchronized WebGL2 canvas","spec":"https://registry.khronos.org/webgl/specs/latest/2.0/","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"75","edge":"79"}}},"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><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.","group":"selectors","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"}}},"white-space":{"compat_features":["css.properties.white-space","css.properties.white-space.break-spaces","css.properties.white-space.normal","css.properties.white-space.nowrap","css.properties.white-space.pre","css.properties.white-space.pre-line","css.properties.white-space.pre-wrap","css.properties.white-space.shorthand_values","css.properties.white-space.svg_elements","css.properties.white-space.textarea_support","svg.global_attributes.white-space"],"description":"The white-space CSS property sets how white space is collapsed and how lines wrap. It is a shorthand for white-space-collapse and text-wrap-mode.","description_html":"The <code>white-space</code> CSS property sets how white space is collapsed and how lines wrap. It is a shorthand for <code>white-space-collapse</code> and <code>text-wrap-mode</code>.","group":"white-space","name":"white-space","spec":"https://drafts.csswg.org/css-text-4/#white-space-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"}}},"white-space-collapse":{"compat_features":["css.properties.white-space-collapse","css.properties.white-space-collapse.break-spaces","css.properties.white-space-collapse.collapse","css.properties.white-space-collapse.preserve","css.properties.white-space-collapse.preserve-breaks"],"description":"The white-space-collapse CSS property sets whether new line characters are shown as line breaks, and whether multiple consecutive spaces are all displayed or combined.","description_html":"The <code>white-space-collapse</code> CSS property sets whether new line characters are shown as line breaks, and whether multiple consecutive spaces are all displayed or combined.","group":"white-space","name":"white-space-collapse","spec":"https://drafts.csswg.org/css-text-4/#white-space-collapsing","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"}}},"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"}}},"window-controls-overlay":{"compat_features":["api.Navigator.windowControlsOverlay","api.WindowControlsOverlay","api.WindowControlsOverlay.geometrychange_event","api.WindowControlsOverlay.getTitlebarAreaRect","api.WindowControlsOverlay.visible","api.WindowControlsOverlayGeometryChangeEvent","api.WindowControlsOverlayGeometryChangeEvent.WindowControlsOverlayGeometryChangeEvent","api.WindowControlsOverlayGeometryChangeEvent.titlebarAreaRect","api.WindowControlsOverlayGeometryChangeEvent.visible","css.properties.custom-property.env.titlebar-area-height","css.properties.custom-property.env.titlebar-area-width","css.properties.custom-property.env.titlebar-area-x","css.properties.custom-property.env.titlebar-area-y","html.manifest.display_override.window-controls-overlay"],"description":"The display_override:\\ [\"window-controls-overlay\"] web application manifest member shows content in the title bar area of a progressive web app that is installed on a desktop device.","description_html":"The <code>display_override:\\ [\"window-controls-overlay\"]</code> web application manifest member shows content in the title bar area of a progressive web app that is installed on a desktop device.","group":"progressive-web-app","name":"Window Controls Overlay","spec":"https://wicg.github.io/window-controls-overlay/","status":{"baseline":false,"support":{"chrome":"105","edge":"105"}}},"writingsuggestions":{"compat_features":["api.HTMLElement.writingSuggestions","html.global_attributes.writingsuggestions"],"description":"The writingsuggestions HTML attribute turns on or off a browser's writing suggestions. Writing suggestions vary by browser. For example, if turned on then a browser might show inline text completions accepted by pressing Tab.","description_html":"The <code>writingsuggestions</code> HTML attribute turns on or off a browser's writing suggestions. Writing suggestions vary by browser. For example, if turned on then a browser might show inline text completions accepted by pressing Tab.","group":"forms","name":"writingsuggestions","spec":"https://html.spec.whatwg.org/multipage/interaction.html#writing-suggestions","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124","safari":"18","safari_ios":"18"}}},"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"}}},"z-index":{"compat_features":["css.properties.z-index","css.properties.z-index.auto","css.properties.z-index.negative_values"],"description":"The z-index CSS property orders overlapping elements, with higher values appearing in front of or on top of lower values.","description_html":"The <code>z-index</code> CSS property orders overlapping elements, with higher values appearing in front of or on top of lower values.","group":"css","name":"z-index","spec":"https://drafts.csswg.org/css2/#z-index","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"3","firefox_android":"4","safari":"1","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"},"clipping-shapes-masking":{"name":"Clipping, shapes and masking"},"collections":{"name":"Collections","parent":"javascript"},"color-types":{"name":"Color types","parent":"css"},"containment":{"name":"Containment","parent":"css"},"credential-management":{"name":"Credential management"},"css":{"name":"CSS"},"custom-elements":{"name":"Custom elements","parent":"html"},"environment-variables":{"name":"CSS environment variables","parent":"css"},"file-system":{"name":"File system access"},"flexbox":{"name":"Flexbox","parent":"layout"},"font-features":{"name":"Typographic font features","parent":"fonts"},"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":"Internationalization","parent":"javascript"},"iterators":{"name":"Iterators","parent":"javascript"},"javascript":{"name":"JavaScript"},"js-modules":{"name":"JavaScript modules"},"json":{"name":"JSON","parent":"javascript"},"layout":{"name":"Layout","parent":"css"},"maps":{"name":"Maps","parent":"collections"},"media-elements":{"name":"Media elements","parent":"html"},"media-queries":{"name":"Media queries","parent":"css"},"primitive-types":{"name":"Primitive types","parent":"javascript"},"print":{"name":"Print media"},"progressive-web-app":{"name":"Progressive web app"},"promises":{"name":"Promises","parent":"javascript"},"resource-timing":{"name":"Resource timing"},"scrolling":{"name":"Scrolling"},"selectors":{"name":"Selectors","parent":"css"},"sensors":{"name":"Sensors"},"sets":{"name":"Sets","parent":"collections"},"speech":{"name":"Web Speech API"},"streams":{"name":"Streams"},"string":{"name":"Strings","parent":"primitive-types"},"svg":{"name":"SVG"},"text-fragments":{"name":"Text fragments"},"transforms":{"name":"Transforms","parent":"css"},"typed-arrays":{"name":"Typed arrays","parent":"collections"},"units":{"name":"Units","parent":"css"},"web-audio":{"name":"Web Audio"},"web-components":{"name":"Web Components"},"webdriver":{"name":"WebDriver"},"webgl":{"name":"WebGL"},"webrtc":{"name":"WebRTC"},"white-space":{"name":"White space","parent":"css"}},"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/"}}}
|