{"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"},{"date":"2024-10-15","version":"130"},{"date":"2024-11-12","version":"131"},{"date":"2025-01-14","version":"132"},{"date":"2025-02-04","version":"133"}]},"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"},{"date":"2024-10-15","version":"130"},{"date":"2024-11-12","version":"131"},{"date":"2025-01-14","version":"132"},{"date":"2025-02-04","version":"133"}]},"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"},{"date":"2024-10-17","version":"130"},{"date":"2024-11-14","version":"131"},{"date":"2025-01-17","version":"132"},{"date":"2025-02-06","version":"133"}]},"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"},{"date":"2024-10-01","version":"131"},{"date":"2024-10-29","version":"132"},{"date":"2024-11-26","version":"133"},{"date":"2025-01-07","version":"134"},{"date":"2025-02-04","version":"135"}]},"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"},{"date":"2024-10-01","version":"131"},{"date":"2024-10-29","version":"132"},{"date":"2024-11-26","version":"133"},{"date":"2025-01-07","version":"134"},{"date":"2025-02-04","version":"135"}]},"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"},{"date":"2024-10-28","version":"18.1"},{"date":"2024-12-11","version":"18.2"},{"date":"2025-01-27","version":"18.3"}]},"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"},{"date":"2024-10-28","version":"18.1"},{"date":"2024-12-11","version":"18.2"},{"date":"2025-01-27","version":"18.3"}]}},"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.href.href_sms","html.elements.a.href.href_top","html.elements.a.hreflang","html.elements.a.implicit_noopener","html.elements.a.rel","html.elements.a.rel.noopener","html.elements.a.rel.noreferrer","html.elements.a.target","html.elements.a.type"],"description":"The <a> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.","description_html":"The <code>&#x3C;a></code> element creates a hyperlink to any resource that's accessible via a URL, such as web pages, files, email addresses, or locations within the same page.","group":"html-elements","name":"<a>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-a-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"abbr":{"compat_features":["html.elements.abbr"],"description":"The <abbr> HTML element represents an abbreviation or acronym.","description_html":"The <code>&#x3C;abbr></code> HTML element represents an abbreviation or acronym.","group":"html-elements","name":"<abbr>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-abbr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"abortable-fetch":{"compat_features":["api.Request.signal","api.fetch.init_signal_parameter"],"description":"If you construct a fetch request with an AbortSignal, you can cancel the request.","description_html":"If you construct a fetch request with an <code>AbortSignal</code>, you can cancel the request.","name":"Abortable fetch","spec":"https://fetch.spec.whatwg.org/#ref-for-dom-request-signal%E2%91%A1","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"66","chrome_android":"66","edge":"16","firefox":"57","firefox_android":"57","safari":"12.1","safari_ios":"12.2"}}},"aborting":{"caniuse":"abortcontroller","compat_features":["api.AbortController","api.AbortController.AbortController","api.AbortController.abort","api.AbortController.abort.reason_parameter","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"}}},"absolute-positioning":{"compat_features":["css.properties.align-self.position_absolute_context","css.properties.justify-self.position_absolute_context","css.properties.place-self.position_absolute_context","css.properties.position.absolute"],"description":"The position: absolute CSS declaration removes an element from the normal flow and positions it relative to its containing block, which is often the root element, or closest positioned ancestor.","description_html":"The <code>position: absolute</code> CSS declaration removes an element from the normal flow and positions it relative to its containing block, which is often the root element, or closest positioned ancestor.","group":"positioning","name":"Absolute positioning","spec":"https://drafts.csswg.org/css-position-3/#abspos-insets","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"}}},"accelerometer":{"compat_features":["api.Accelerometer","api.Accelerometer.Accelerometer","api.Accelerometer.x","api.Accelerometer.y","api.Accelerometer.z","api.GravitySensor","api.GravitySensor.GravitySensor","api.LinearAccelerationSensor","api.LinearAccelerationSensor.LinearAccelerationSensor","api.Permissions.permission_accelerometer","html.elements.iframe.allow.accelerometer","http.headers.Permissions-Policy.accelerometer"],"description":"The Accelerometer, LinearAccelerationSensor and GravitySensor APIs read the acceleration applied to a device in three dimensions, either including the effect of gravity, without its effect, or only its effect, respectively.","description_html":"The <code>Accelerometer</code>, <code>LinearAccelerationSensor</code> and <code>GravitySensor</code> APIs read the acceleration applied to a device in three dimensions, either including the effect of gravity, without its effect, or only its effect, respectively.","group":"sensors","name":"Accelerometer","spec":"https://w3c.github.io/accelerometer/","status":{"baseline":false,"support":{"chrome":"91","chrome_android":"91","edge":"91"}}},"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"}}},"accesskey":{"compat_features":["api.HTMLElement.accessKey","api.HTMLElement.accessKeyLabel","html.global_attributes.accesskey"],"description":"The accessKey global HTML attribute gives a hint for generating a keyboard shortcut for the current element. The attribute value must consist of a single printable character.","description_html":"The <code>accessKey</code> global HTML attribute gives a hint for generating a keyboard shortcut for the current element. The attribute value must consist of a single printable character.","name":"Accesskey","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-accesskey-attribute","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"17","chrome_android":"18","edge":"12","firefox":"5","firefox_android":"5","safari":"6","safari_ios":"6"}}},"active-view-transition":{"compat_features":["api.ViewTransition.types","api.ViewTransitionTypeSet","api.ViewTransitionTypeSet.@@iterator","api.ViewTransitionTypeSet.add","api.ViewTransitionTypeSet.clear","api.ViewTransitionTypeSet.delete","api.ViewTransitionTypeSet.entries","api.ViewTransitionTypeSet.forEach","api.ViewTransitionTypeSet.has","api.ViewTransitionTypeSet.keys","api.ViewTransitionTypeSet.size","api.ViewTransitionTypeSet.values","css.selectors.active-view-transition","css.selectors.active-view-transition-type"],"description":"The :active-view-transition CSS pseudo-class matches the root element when a view transition is active. The :active-view-transition-type() CSS pseudo-class matches only when the active view transition was started with the specified type.","description_html":"The <code>:active-view-transition</code> CSS pseudo-class matches the root element when a view transition is active. The <code>:active-view-transition-type()</code> CSS pseudo-class matches only when the active view transition was started with the specified type.","group":["view-transitions","selectors"],"name":"Active view transition","spec":"https://drafts.csswg.org/css-view-transitions-2/#the-active-view-transition-pseudo","status":{"baseline":false,"support":{"chrome":"125","chrome_android":"125","edge":"125"}}},"address":{"compat_features":["html.elements.address"],"description":"The <address> element represents contact information for a person or people, or for an organization.","description_html":"The <code>&#x3C;address></code> element represents contact information for a person or people, or for an organization.","group":"html-elements","name":"<address>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-address-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"alerts":{"compat_features":["api.Window.alert","api.Window.confirm","api.Window.prompt"],"description":"The window.alert(), window.confirm(), and window.prompt() methods open modal dialogs for notifying the user, asking for confirmation, or entering text.","description_html":"The <code>window.alert()</code>, <code>window.confirm()</code>, and <code>window.prompt()</code> methods open modal dialogs for notifying the user, asking for confirmation, or entering text.","name":"Alerts","spec":"https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#user-prompts","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"}}},"align-content-block":{"compat_features":["css.properties.align-content.block_context"],"description":"The align-content property vertically aligns content in block layouts, like it does in flex or grid layouts.","description_html":"The <code>align-content</code> property vertically aligns content in block layouts, like it does in flex or grid layouts.","group":"layout","name":"align-content in block layouts","spec":"https://drafts.csswg.org/css-align-3/#align-justify-content","status":{"baseline":"low","baseline_low_date":"2024-04-16","support":{"chrome":"123","chrome_android":"123","edge":"123","firefox":"125","firefox_android":"125","safari":"17.4","safari_ios":"17.4"}}},"alignment-baseline":{"compat_features":["css.properties.alignment-baseline","css.properties.alignment-baseline.alphabetic","css.properties.alignment-baseline.baseline","css.properties.alignment-baseline.central","css.properties.alignment-baseline.ideographic","css.properties.alignment-baseline.mathematical","css.properties.alignment-baseline.middle"],"description":"The alignment-baseline CSS property sets which baseline of an element is aligned with the corresponding baseline of its parent.","description_html":"The <code>alignment-baseline</code> CSS property sets which baseline of an element is aligned with the corresponding baseline of its parent.","group":"text","name":"alignment-baseline","spec":"https://drafts.csswg.org/css-inline-3/#alignment-baseline-property","status":{"baseline":false,"support":{"chrome":"≤80","chrome_android":"≤80","edge":"≤80","safari":"≤13.1","safari_ios":"≤13.4"}}},"all":{"caniuse":"css-all","compat_features":["css.properties.all"],"description":"The all CSS property is a shorthand for all CSS properties, except for direction and unicode-bidi. It accepts only the keywords for explicit defaulting (such as initial and inherit), since they are the only values supported on all CSS properties.","description_html":"The <code>all</code> CSS property is a shorthand for all CSS properties, except for <code>direction</code> and <code>unicode-bidi</code>. It accepts only the keywords for explicit defaulting (such as <code>initial</code> and <code>inherit</code>), since they are the only values supported on all CSS properties.","group":"explicit-defaults","name":"all","spec":"https://drafts.csswg.org/css-cascade-6/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"37","chrome_android":"37","edge":"79","firefox":"27","firefox_android":"27","safari":"9.1","safari_ios":"9.3"}}},"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"}}},"alternative-style-sheets":{"compat_features":["html.elements.link.rel.alternate_stylesheet"],"description":"The rel=\"alternate stylesheet\" attribute for the <link> HTML element offers an alternative style option to users.","description_html":"The <code>rel=\"alternate stylesheet\"</code> attribute for the <code>&#x3C;link></code> HTML element offers an alternative style option to users.","group":"css","name":"Alternative style sheets","spec":"https://drafts.csswg.org/cssom-1/#concept-css-style-sheet-alternate-flag","status":{"baseline":false,"support":{"firefox":"3","firefox_android":"4"}}},"ambient-light":{"compat_features":["api.AmbientLightSensor","api.AmbientLightSensor.AmbientLightSensor","api.AmbientLightSensor.illuminance","api.Permissions.permission_ambient-light-sensor","html.elements.iframe.allow.ambient-light-sensor","http.headers.Permissions-Policy.ambient-light-sensor"],"description":"The AmbientLightSensor interface returns the current light level in lux of the ambient light level around the device.","description_html":"The <code>AmbientLightSensor</code> interface returns the current light level in lux of the ambient light level around the device.","group":"sensors","name":"Ambient light sensor","spec":"https://w3c.github.io/ambient-light/","status":{"baseline":false,"support":{}}},"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","api.HTMLButtonElement.popoverTargetElement.implicit_anchor_reference","api.HTMLElement.showPopover.source.implicit_anchor_reference","api.HTMLElement.togglePopover.source.implicit_anchor_reference","api.HTMLInputElement.popoverTargetElement.implicit_anchor_reference","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.anchor-scope","css.properties.anchor-scope.all","css.properties.anchor-scope.none","css.properties.block-size.anchor-size","css.properties.bottom.anchor","css.properties.bottom.anchor-size","css.properties.height.anchor-size","css.properties.inline-size.anchor-size","css.properties.inset-block-end.anchor","css.properties.inset-block-end.anchor-size","css.properties.inset-block-start.anchor","css.properties.inset-block-start.anchor-size","css.properties.inset-block.anchor","css.properties.inset-block.anchor-size","css.properties.inset-inline-end.anchor","css.properties.inset-inline-end.anchor-size","css.properties.inset-inline-start.anchor","css.properties.inset-inline-start.anchor-size","css.properties.inset-inline.anchor","css.properties.inset-inline.anchor-size","css.properties.inset.anchor","css.properties.inset.anchor-size","css.properties.justify-items.anchor-center","css.properties.justify-self.anchor-center","css.properties.left.anchor","css.properties.left.anchor-size","css.properties.margin-block-end.anchor-size","css.properties.margin-block-start.anchor-size","css.properties.margin-block.anchor-size","css.properties.margin-bottom.anchor-size","css.properties.margin-inline-end.anchor-size","css.properties.margin-inline-start.anchor-size","css.properties.margin-inline.anchor-size","css.properties.margin-left.anchor-size","css.properties.margin-right.anchor-size","css.properties.margin-top.anchor-size","css.properties.margin.anchor-size","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.right.anchor-size","css.properties.top.anchor","css.properties.top.anchor-size","css.properties.width.anchor-size","css.types.anchor","css.types.anchor-size","css.types.anchor-size.inset_margin","html.elements.button.popovertarget.implicit_anchor_reference","html.elements.input.popovertarget.implicit_anchor_reference"],"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"}}},"angle-instanced-arrays":{"compat_features":["api.ANGLE_instanced_arrays","api.ANGLE_instanced_arrays.drawArraysInstancedANGLE","api.ANGLE_instanced_arrays.drawElementsInstancedANGLE","api.ANGLE_instanced_arrays.vertexAttribDivisorANGLE"],"description":"The ANGLE_instanced_arrays extension for WebGL 1.0 contexts draws the same object multiple times or groups of similar objects multiple times, if the group shares the same vertex data, primitive count and type.","description_html":"The <code>ANGLE_instanced_arrays</code> extension for WebGL 1.0 contexts draws the same object multiple times or groups of similar objects multiple times, if the group shares the same vertex data, primitive count and type.","group":"webgl-extensions","name":"ANGLE_instanced_arrays WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/ANGLE_instanced_arrays/","status":{"baseline":"high","baseline_high_date":"2018-12-07","baseline_low_date":"2016-06-07","support":{"chrome":"32","chrome_android":"30","edge":"12","firefox":"47","firefox_android":"47","safari":"8","safari_ios":"8"}}},"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.","group":"animation","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"}}},"animations-css":{"caniuse":"css-animation","compat_features":["api.AnimationEvent","api.AnimationEvent.AnimationEvent","api.AnimationEvent.animationName","api.AnimationEvent.elapsedTime","api.AnimationEvent.pseudoElement","api.CSSAnimation","api.CSSAnimation.animationName","api.CSSKeyframeRule","api.CSSKeyframeRule.keyText","api.CSSKeyframeRule.style","api.CSSKeyframesRule","api.CSSKeyframesRule.appendRule","api.CSSKeyframesRule.cssRules","api.CSSKeyframesRule.deleteRule","api.CSSKeyframesRule.findRule","api.CSSKeyframesRule.length","api.CSSKeyframesRule.name","css.at-rules.keyframes","css.at-rules.keyframes.ignore_important_declarations","css.at-rules.keyframes.named_range_keyframes","css.properties.animation","css.properties.animation-delay","css.properties.animation-direction","css.properties.animation-direction.alternate","css.properties.animation-direction.alternate-reverse","css.properties.animation-direction.normal","css.properties.animation-direction.reverse","css.properties.animation-duration","css.properties.animation-duration.auto","css.properties.animation-fill-mode","css.properties.animation-fill-mode.backwards","css.properties.animation-fill-mode.both","css.properties.animation-fill-mode.forwards","css.properties.animation-fill-mode.none","css.properties.animation-iteration-count","css.properties.animation-iteration-count.infinite","css.properties.animation-name","css.properties.animation-name.none","css.properties.animation-play-state","css.properties.animation-play-state.paused","css.properties.animation-play-state.running","css.properties.animation-timing-function","css.properties.animation-timing-function.jump","css.types.time"],"description":"The animation CSS property animates an element's style over time, using keyframes described in @keyframes rules.","description_html":"The <code>animation</code> CSS property animates an element's style over time, using keyframes described in <code>@keyframes</code> rules.","group":["animation","css"],"name":"Animations (CSS)","spec":"https://drafts.csswg.org/css-animations-2/","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"43","chrome_android":"43","edge":"12","firefox":"16","firefox_android":"16","safari":"9","safari_ios":"9"}}},"app-file-handlers":{"compat_features":["api.LaunchParams.files","html.manifest.file_handlers"],"description":"The file_handlers web app manifest member registers an installed web app as a handler for files with specific file extensions or MIME types.","description_html":"The <code>file_handlers</code> web app manifest member registers an installed web app as a handler for files with specific file extensions or MIME types.","group":"progressive-web-app","name":"File handlers","spec":"https://wicg.github.io/manifest-incubations/#file_handlers-member","status":{"baseline":false,"support":{"chrome":"102","edge":"102"}}},"app-protocol-handlers":{"compat_features":["html.manifest.protocol_handlers","html.manifest.protocol_handlers.protocol","html.manifest.protocol_handlers.url"],"description":"The protocol_handlers web app manifest member registers an installed web app as a handler for a specific protocol. When a user follows a link with the specified protocol, the installed app opens the link.","description_html":"The <code>protocol_handlers</code> web app manifest member registers an installed web app as a handler for a specific protocol. When a user follows a link with the specified protocol, the installed app opens the link.","group":"progressive-web-app","name":"Protocol handlers","spec":"https://wicg.github.io/manifest-incubations/#protocol_handlers-member","status":{"baseline":false,"support":{"chrome":"96","chrome_android":"96","edge":"96"}}},"app-share-targets":{"compat_features":["html.manifest.share_target"],"description":"The share_target web app manifest member registers an installed web app as a handler for shared content. When a user shares content by using the device share dialog, the installed app can be listed as an option for handling the shared content.","description_html":"The <code>share_target</code> web app manifest member registers an installed web app as a handler for shared content. When a user shares content by using the device share dialog, the installed app can be listed as an option for handling the shared content.","group":"progressive-web-app","name":"Share targets","spec":"https://w3c.github.io/web-share-target/#share_target-member","status":{"baseline":false,"support":{"chrome":"89","chrome_android":"76","edge":"89"}}},"app-shortcuts":{"compat_features":["html.manifest.shortcuts"],"description":"The shortcuts web app manifest member registers common actions of an installed web app with the device. The device can present these actions to the user in contextually appropriate locations, such as jump lists on Windows or the app launcher on Android.","description_html":"The <code>shortcuts</code> web app manifest member registers common actions of an installed web app with the device. The device can present these actions to the user in contextually appropriate locations, such as jump lists on Windows or the app launcher on Android.","group":"progressive-web-app","name":"Application shortcuts","spec":"https://w3c.github.io/manifest/#shortcuts-member","status":{"baseline":false,"support":{"chrome":"96","chrome_android":"84","edge":"96","safari":"17.4"}}},"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"}}},"arguments-callee":{"compat_features":["javascript.functions.arguments.callee"],"description":"The callee property of the arguments variable in a non-strict function body's local scope is the function that arguments belongs to.","description_html":"The <code>callee</code> property of the <code>arguments</code> variable in a non-strict function body's local scope is the function that <code>arguments</code> belongs to.","discouraged":{"according_to":["https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects"]},"group":"javascript","name":"arguments.callee","spec":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-arguments-exotic-objects","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"aria-attribute-reflection":{"compat_features":["api.Element.ariaActiveDescendantElement","api.Element.ariaAtomic","api.Element.ariaAutoComplete","api.Element.ariaBrailleLabel","api.Element.ariaBrailleRoleDescription","api.Element.ariaBusy","api.Element.ariaChecked","api.Element.ariaColCount","api.Element.ariaColIndex","api.Element.ariaColIndexText","api.Element.ariaColSpan","api.Element.ariaControlsElements","api.Element.ariaCurrent","api.Element.ariaDescribedByElements","api.Element.ariaDescription","api.Element.ariaDetailsElements","api.Element.ariaDisabled","api.Element.ariaErrorMessageElements","api.Element.ariaExpanded","api.Element.ariaFlowToElements","api.Element.ariaHasPopup","api.Element.ariaHidden","api.Element.ariaInvalid","api.Element.ariaKeyShortcuts","api.Element.ariaLabel","api.Element.ariaLabelledByElements","api.Element.ariaLevel","api.Element.ariaLive","api.Element.ariaModal","api.Element.ariaMultiLine","api.Element.ariaMultiSelectable","api.Element.ariaOrientation","api.Element.ariaOwnsElements","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.ariaRowIndexText","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","api.ElementInternals.ariaActiveDescendantElement","api.ElementInternals.ariaAtomic","api.ElementInternals.ariaAutoComplete","api.ElementInternals.ariaBrailleLabel","api.ElementInternals.ariaBrailleRoleDescription","api.ElementInternals.ariaBusy","api.ElementInternals.ariaChecked","api.ElementInternals.ariaColCount","api.ElementInternals.ariaColIndex","api.ElementInternals.ariaColIndexText","api.ElementInternals.ariaColSpan","api.ElementInternals.ariaControlsElements","api.ElementInternals.ariaCurrent","api.ElementInternals.ariaDescribedByElements","api.ElementInternals.ariaDescription","api.ElementInternals.ariaDetailsElements","api.ElementInternals.ariaDisabled","api.ElementInternals.ariaErrorMessageElements","api.ElementInternals.ariaExpanded","api.ElementInternals.ariaFlowToElements","api.ElementInternals.ariaHasPopup","api.ElementInternals.ariaHidden","api.ElementInternals.ariaInvalid","api.ElementInternals.ariaKeyShortcuts","api.ElementInternals.ariaLabel","api.ElementInternals.ariaLabelledByElements","api.ElementInternals.ariaLevel","api.ElementInternals.ariaLive","api.ElementInternals.ariaModal","api.ElementInternals.ariaMultiLine","api.ElementInternals.ariaMultiSelectable","api.ElementInternals.ariaOrientation","api.ElementInternals.ariaOwnsElements","api.ElementInternals.ariaPlaceholder","api.ElementInternals.ariaPosInSet","api.ElementInternals.ariaPressed","api.ElementInternals.ariaReadOnly","api.ElementInternals.ariaRequired","api.ElementInternals.ariaRoleDescription","api.ElementInternals.ariaRowCount","api.ElementInternals.ariaRowIndex","api.ElementInternals.ariaRowIndexText","api.ElementInternals.ariaRowSpan","api.ElementInternals.ariaSelected","api.ElementInternals.ariaSetSize","api.ElementInternals.ariaSort","api.ElementInternals.ariaValueMax","api.ElementInternals.ariaValueMin","api.ElementInternals.ariaValueNow","api.ElementInternals.ariaValueText","api.ElementInternals.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":"16.4","safari_ios":"16.4"}}},"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":"high","baseline_high_date":"2025-02-23","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>&#x3C;article></code> element represents self-contained content, which is intended to be independently distributable or reusable, such as a comment, a blog post, or news article.","group":"html-elements","name":"<article>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-article-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"aside":{"compat_features":["html.elements.aside"],"description":"The <aside> element represents a portion of a document whose content is only indirectly related to the document's main content.","description_html":"The <code>&#x3C;aside></code> element represents a portion of a document whose content is only indirectly related to the document's main content.","group":"html-elements","name":"<aside>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-aside-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"aspect-ratio":{"compat_features":["css.properties.aspect-ratio","css.properties.aspect-ratio.auto","html.elements.img.aspect_ratio_computed_from_attributes","html.elements.video.aspect_ratio_computed_from_attributes"],"description":"The aspect-ratio CSS property controls the width-to-height ratio of elements. For <img> and <video> elements, the width and height attributes used together with height: auto control the aspect ratio while the image/video is loading.","description_html":"The <code>aspect-ratio</code> CSS property controls the width-to-height ratio of elements. For <code>&#x3C;img></code> and <code>&#x3C;video></code> elements, the <code>width</code> and <code>height</code> attributes used together with <code>height: auto</code> control the aspect ratio while the image/video is loading.","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.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":"76","chrome_android":"76","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"}}},"async-iterators":{"compat_features":["javascript.builtins.AsyncIterator","javascript.builtins.AsyncIterator.@@asyncIterator","javascript.builtins.Symbol.asyncIterator","javascript.statements.for_await_of","javascript.statements.for_of.async_iterators"],"description":"Asynchronous iterator objects, such as those returned by promises or generator functions, are iterable with the for await .. of loop.","description_html":"Asynchronous iterator objects, such as those returned by promises or generator functions, are iterable with the <code>for await .. of</code> loop.","group":"iterators","name":"Async iterators and the for await..of loop","snapshot":"ecmascript-2018","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-asynciteratorprototype","https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-for-in-and-for-of-statements"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"63","chrome_android":"63","edge":"79","firefox":"57","firefox_android":"57","safari":"12","safari_ios":"12"}}},"atomics-pause":{"compat_features":["javascript.builtins.Atomics.pause"],"description":"The Atomics.pause() static method gives a hint to the CPU that the code calling the method is in a short-duration wait for shared memory, known as spinning or a spinlock.","description_html":"The <code>Atomics.pause()</code> static method gives a hint to the CPU that the code calling the method is in a short-duration wait for shared memory, known as spinning or a spinlock.","name":"Atomics.pause()","spec":"https://tc39.es/proposal-atomics-microwait/","status":{"baseline":false,"support":{"chrome":"133","chrome_android":"133","edge":"133"}}},"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"}}},"attr":{"caniuse":"css3-attr","compat_features":["css.types.attr.fallback","css.types.attr.type-or-unit","css.types.attr.type-or-unit.angle","css.types.attr.type-or-unit.color","css.types.attr.type-or-unit.frequency","css.types.attr.type-or-unit.integer","css.types.attr.type-or-unit.length","css.types.attr.type-or-unit.number","css.types.attr.type-or-unit.percentage","css.types.attr.type-or-unit.time","css.types.attr.type-or-unit.url"],"description":"The attr() CSS function, in the context of any property, returns the value of an attribute of an HTML element, with the option to return it as a specific type or unit. You can set a default value for missing or invalid attributes.","description_html":"The <code>attr()</code> CSS function, in the context of any property, returns the value of an attribute of an HTML element, with the option to return it as a specific type or unit. You can set a default value for missing or invalid attributes.","group":"css","name":"attr()","spec":"https://drafts.csswg.org/css-values-5/#attr-notation","status":{"baseline":false,"support":{}}},"attr-contents":{"compat_features":["css.types.attr"],"description":"The attr() CSS function, in content property declarations, sets a ::before or ::after pseudo-element's content to the value of the specified HTML attribute.","description_html":"The <code>attr()</code> CSS function, in <code>content</code> property declarations, sets a <code>::before</code> or <code>::after</code> pseudo-element's content to the value of the specified HTML attribute.","group":"css","name":"attr() (content only)","spec":"https://drafts.csswg.org/css-values-5/#attr-notation","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":"3.1","safari_ios":"2"}}},"attribution-reporting":{"compat_features":["api.HTMLAnchorElement.attributionSrc","api.HTMLAreaElement.attributionSrc","api.HTMLImageElement.attributionSrc","api.HTMLScriptElement.attributionSrc","api.Request.Request.init_attributionReporting_parameter","api.Window.open.features_parameter_attributionsrc","api.XMLHttpRequest.setAttributionReporting","api.fetch.init_attributionReporting_parameter","html.elements.a.attributionsrc","html.elements.area.attributionsrc","html.elements.iframe.allow.attribution-reporting","html.elements.img.attributionsrc","html.elements.script.attributionsrc","http.headers.Attribution-Reporting-Eligible","http.headers.Attribution-Reporting-Register-Source","http.headers.Attribution-Reporting-Register-Trigger","http.headers.Attribution-Reporting-Support","http.headers.Permissions-Policy.attribution-reporting"],"description":"The Attribution Reporting API measures when an ad click or view leads to a conversion, such as a purchase on an advertiser site.","description_html":"The Attribution Reporting API measures when an ad click or view leads to a conversion, such as a purchase on an advertiser site.","name":"Attribution reporting","spec":"https://wicg.github.io/attribution-reporting-api/","status":{"baseline":false,"support":{"chrome":"133","chrome_android":"133","edge":"133"}}},"audio":{"caniuse":"audio","compat_features":["api.HTMLAudioElement","api.HTMLAudioElement.Audio","html.elements.audio","html.elements.audio.autoplay","html.elements.audio.controls","html.elements.audio.crossorigin","html.elements.audio.loop","html.elements.audio.muted","html.elements.audio.preload","html.elements.audio.src"],"description":"The <audio> element plays sound such as audio effects or music, optionally with controls provided by the browser.","description_html":"The <code>&#x3C;audio></code> element plays sound such as audio effects or music, optionally with controls provided by the browser.","group":["media-elements","html-elements"],"name":"<audio>","spec":"https://html.spec.whatwg.org/multipage/media.html#audio","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"3"}}},"audio-session":{"compat_features":["api.AudioSession","api.AudioSession.type","api.Navigator.audioSession"],"description":"The navigator.audioSession API controls how audio playback interacts with other applications. For example, playing music can pause audio from other applications, while ambient audio can play at the same time.","description_html":"The <code>navigator.audioSession</code> API controls how audio playback interacts with other applications. For example, playing music can pause audio from other applications, while ambient audio can play at the same time.","name":"Audio session","spec":"https://w3c.github.io/audio-session/","status":{"baseline":false,"support":{"safari":"16.4","safari_ios":"16.4"}}},"audio-video-tracks":{"caniuse":["audiotracks","videotracks"],"compat_features":["api.AudioTrack","api.AudioTrack.enabled","api.AudioTrack.id","api.AudioTrack.kind","api.AudioTrack.label","api.AudioTrack.language","api.AudioTrackList","api.AudioTrackList.addtrack_event","api.AudioTrackList.change_event","api.AudioTrackList.getTrackById","api.AudioTrackList.length","api.AudioTrackList.removetrack_event","api.HTMLMediaElement.audioTracks","api.HTMLMediaElement.videoTracks","api.VideoTrack","api.VideoTrack.id","api.VideoTrack.kind","api.VideoTrack.label","api.VideoTrack.language","api.VideoTrack.selected","api.VideoTrackList","api.VideoTrackList.addtrack_event","api.VideoTrackList.change_event","api.VideoTrackList.getTrackById","api.VideoTrackList.length","api.VideoTrackList.removetrack_event","api.VideoTrackList.selectedIndex"],"description":"The audioTracks and videoTracks APIs for media elements switch audio and video tracks during playback.","description_html":"The <code>audioTracks</code> and <code>videoTracks</code> APIs for media elements switch audio and video tracks during playback.","group":"media-elements","name":"Audio and video tracks","spec":"https://html.spec.whatwg.org/multipage/media.html#media-resources-with-multiple-media-tracks","status":{"baseline":false,"support":{"safari":"8","safari_ios":"8"}}},"audio-worklet":{"compat_features":["api.AudioWorklet","api.AudioWorkletGlobalScope","api.AudioWorkletGlobalScope.currentFrame","api.AudioWorkletGlobalScope.currentTime","api.AudioWorkletGlobalScope.registerProcessor","api.AudioWorkletGlobalScope.sampleRate","api.AudioWorkletNode","api.AudioWorkletNode.AudioWorkletNode","api.AudioWorkletNode.parameters","api.AudioWorkletNode.port","api.AudioWorkletNode.processorerror_event","api.AudioWorkletProcessor","api.AudioWorkletProcessor.AudioWorkletProcessor","api.AudioWorkletProcessor.port","api.BaseAudioContext.audioWorklet"],"description":"The AudioWorklet API runs module code in a separate thread, specifically for non-blocking, low latency audio processing.","description_html":"The <code>AudioWorklet</code> API runs module code in a separate thread, specifically for non-blocking, low latency audio processing.","group":"web-audio","name":"AudioWorklet","spec":"https://webaudio.github.io/web-audio-api/#AudioWorklet","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"76","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"autocapitalize":{"compat_features":["api.HTMLElement.autocapitalize","html.global_attributes.autocapitalize"],"description":"The autocapitalize global HTML attribute sets the virtual keyboard capitalization behavior for user input on an element, such as the first letter of sentences or all words.","description_html":"The <code>autocapitalize</code> global HTML attribute sets the virtual keyboard capitalization behavior for user input on an element, such as the first letter of sentences or all words.","name":"Autocapitalize","spec":"https://html.spec.whatwg.org/multipage/interaction.html#autocapitalization","status":{"baseline":false,"support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"111","firefox_android":"111","safari_ios":"10.3"}}},"autocorrect":{"compat_features":["api.HTMLElement.autocorrect","html.global_attributes.autocorrect"],"description":"The autocorrect global HTML attribute controls whether to automatically correct spelling or punctuation errors for user input.","description_html":"The <code>autocorrect</code> global HTML attribute controls whether to automatically correct spelling or punctuation errors for user input.","name":"Autocorrect","spec":"https://html.spec.whatwg.org/multipage/interaction.html#autocorrection","status":{"baseline":false,"support":{}}},"autofill":{"compat_features":["css.selectors.autofill"],"description":"The :autofill pseudo-class matches <input> elements that have been filled in automatically by the browser.","description_html":"The <code>:autofill</code> pseudo-class matches <code>&#x3C;input></code> elements that have been filled in automatically by the browser.","group":"forms","name":":autofill","spec":"https://html.spec.whatwg.org/multipage/semantics-other.html#selector-autofill","status":{"baseline":"low","baseline_low_date":"2023-02-09","support":{"chrome":"110","chrome_android":"110","edge":"110","firefox":"86","firefox_android":"86","safari":"15","safari_ios":"15"}}},"autofocus":{"caniuse":"autofocus","compat_features":["api.HTMLElement.autofocus","api.MathMLElement.autofocus","api.SVGElement.autofocus","html.global_attributes.autofocus","svg.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.CustomElementRegistry.define.disabledFeatures_static_property","api.CustomElementRegistry.get","api.CustomElementRegistry.getName","api.CustomElementRegistry.upgrade","api.CustomElementRegistry.whenDefined","api.Window.customElements","css.selectors.defined"],"description":"Autonomous custom elements are HTML elements with a hyphenated tag name (like <example-element>) that have behaviors you define.","description_html":"Autonomous custom elements are HTML elements with a hyphenated tag name (like <code>&#x3C;example-element></code>) that have behaviors you define.","group":"custom-elements","name":"Autonomous custom elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#autonomous-custom-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"54","chrome_android":"54","edge":"79","firefox":"63","firefox_android":"63","safari":"10.1","safari_ios":"10.3"}}},"avif":{"caniuse":"avif","description":"AVIF (AV1 Image File Format) is an image format based on the AV1 video format.","description_html":"AVIF (AV1 Image File Format) is an image format based on the AV1 video format.","name":"AVIF","spec":"https://aomediacodec.github.io/av1-avif/","status":{"baseline":"low","baseline_low_date":"2024-01-26","support":{"chrome":"85","chrome_android":"85","edge":"121","firefox":"93","firefox_android":"93","safari":"16","safari_ios":"16"}}},"b":{"compat_features":["html.elements.b"],"description":"The <b> HTML element draws reader's attention to text, styling text as bold by default.","description_html":"The <code>&#x3C;b></code> HTML element draws reader's attention to text, styling text as bold by default.","group":"html-elements","name":"<b>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-b-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"backdrop":{"compat_features":["css.selectors.backdrop","css.selectors.backdrop.dialog","css.selectors.backdrop.inherit_from_originating_element"],"description":"The ::backdrop CSS pseudo-element is a box underneath an element in the top layer, such as a <dialog>. It can be used to create obscuring effects distinguishing a modal element from the elements underneath.","description_html":"The <code>::backdrop</code> CSS pseudo-element is a box underneath an element in the top layer, such as a <code>&#x3C;dialog></code>. It can be used to create obscuring effects distinguishing a modal element from the elements underneath.","group":"selectors","name":"::backdrop","spec":"https://drafts.csswg.org/css-position-4/#backdrop","status":{"baseline":"high","baseline_high_date":"2024-09-14","baseline_low_date":"2022-03-14","support":{"chrome":"37","chrome_android":"37","edge":"79","firefox":"47","firefox_android":"47","safari":"15.4","safari_ios":"15.4"}}},"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":{"compat_features":["css.properties.background","css.properties.background.multiple_backgrounds"],"description":"The background CSS property is a shorthand that sets several background properties at once.","description_html":"The <code>background</code> CSS property is a shorthand that sets several background properties at once.","group":"background","name":"background","spec":"https://drafts.csswg.org/css-backgrounds-3/#background","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.6","firefox_android":"4","safari":"1.3","safari_ios":"1"}}},"background-attachment":{"caniuse":"background-attachment","compat_features":["css.properties.background-attachment","css.properties.background-attachment.fixed","css.properties.background-attachment.local","css.properties.background-attachment.multiple_backgrounds","css.properties.background-attachment.scroll"],"description":"The background-attachment CSS property sets whether an element's background image or gradient moves as the element scrolls.","description_html":"The <code>background-attachment</code> CSS property sets whether an element's background image or gradient moves as the element scrolls.","group":"background","name":"background-attachment","spec":"https://drafts.csswg.org/css-backgrounds-3/#the-background-attachment","status":{"baseline":"high","baseline_high_date":"2024-09-14","baseline_low_date":"2022-03-14","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"25","firefox_android":"25","safari":"15.4","safari_ios":"15.4"}}},"background-blend-mode":{"caniuse":"css-backgroundblendmode","compat_features":["css.properties.background-blend-mode","css.types.blend-mode"],"description":"The background-blend-mode CSS property blends an element's background image and background color using blend modes like multiply, difference, or color.","description_html":"The <code>background-blend-mode</code> CSS property blends an element's background image and background color using blend modes like <code>multiply</code>, <code>difference</code>, or <code>color</code>.","group":"blend-mode","name":"background-blend-mode","spec":"https://drafts.fxtf.org/compositing-2/#background-blend-mode","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"35","chrome_android":"59","edge":"79","firefox":"30","firefox_android":"54","safari":"8","safari_ios":"8"}}},"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","css.properties.background.background-clip"],"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":"background","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":"21","chrome_android":"25","edge":"12","firefox":"22","firefox_android":"22","safari":"5.1","safari_ios":"5"}}},"background-clip-border-area":{"compat_features":["css.properties.background-clip.border-area"],"description":"The background-clip: border-area CSS declaration draws the background underneath only the border of an element.","description_html":"The <code>background-clip: border-area</code> CSS declaration draws the background underneath only the border of an element.","group":"background","name":"background-clip: border-area","spec":"https://drafts.csswg.org/css-backgrounds-4/#background-clip","status":{"baseline":false,"support":{"safari":"18.2","safari_ios":"18.2"}}},"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":"background","name":"background-clip: text","spec":"https://drafts.csswg.org/css-backgrounds-4/#background-clip","status":{"baseline":false,"support":{"chrome":"120","chrome_android":"120","edge":"120","safari":"14","safari_ios":"14"}}},"background-color":{"compat_features":["css.properties.background-color"],"description":"The background-color CSS property sets the fill color of an element, behind any content and background images or gradients.","description_html":"The <code>background-color</code> CSS property sets the fill color of an element, behind any content and background images or gradients.","group":"background","name":"background-color","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-color","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"}}},"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-image":{"compat_features":["css.properties.background-image","css.properties.background-image.multiple_backgrounds","css.properties.background-image.none"],"description":"The background-image CSS property sets the graphics to display behind the content of an element and in front of the background color. Graphics may be any combination of images or gradients.","description_html":"The <code>background-image</code> CSS property sets the graphics to display behind the content of an element and in front of the background color. Graphics may be any combination of images or gradients.","group":"background","name":"background-image","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-image","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.6","firefox_android":"4","safari":"1.3","safari_ios":"1"}}},"background-origin":{"compat_features":["css.properties.background-origin","css.properties.background-origin.border-box","css.properties.background-origin.content-box","css.properties.background-origin.padding-box","css.properties.background.background-origin"],"description":"The background-origin CSS property sets the background starting position relative to the border and padding of an element.","description_html":"The <code>background-origin</code> CSS property sets the background starting position relative to the border and padding of an element.","group":"background","name":"background-origin","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-origin","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"21","chrome_android":"25","edge":"12","firefox":"22","firefox_android":"22","safari":"5.1","safari_ios":"4"}}},"background-position":{"caniuse":["css-background-offsets","background-position-x-y"],"compat_features":["css.properties.background-position","css.properties.background-position-x","css.properties.background-position-x.side-relative_values","css.properties.background-position-y","css.properties.background-position-y.side-relative_values","css.properties.background-position.bottom","css.properties.background-position.center","css.properties.background-position.left","css.properties.background-position.multiple_backgrounds","css.properties.background-position.right","css.properties.background-position.side-relative_values","css.properties.background-position.top"],"description":"The background-position CSS property offsets the initial position of background images relative to the background origin.","description_html":"The <code>background-position</code> CSS property offsets the initial position of background images relative to the background origin.","group":"background","name":"background-position","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-position","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"25","chrome_android":"25","edge":"12","firefox":"13","firefox_android":"14","safari":"7","safari_ios":"7"}}},"background-repeat":{"caniuse":"background-repeat-round-space","compat_features":["css.properties.background-repeat","css.properties.background-repeat.2-value","css.properties.background-repeat.multiple_backgrounds","css.properties.background-repeat.no-repeat","css.properties.background-repeat.repeat","css.properties.background-repeat.repeat-x","css.properties.background-repeat.repeat-y","css.properties.background-repeat.round","css.properties.background-repeat.space"],"description":"The background-repeat CSS property sets how a background image is tiled.","description_html":"The <code>background-repeat</code> CSS property sets how a background image is tiled.","group":"background","name":"background-repeat","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-repeat","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"30","chrome_android":"30","edge":"12","firefox":"49","firefox_android":"49","safari":"8","safari_ios":"8"}}},"background-size":{"compat_features":["css.properties.background-size","css.properties.background-size.auto","css.properties.background-size.contain","css.properties.background-size.cover","css.properties.background.background-size"],"description":"The background-size CSS property scales or stretches a background based on the size of the element (with the contain and cover keywords), a length, or percentage.","description_html":"The <code>background-size</code> CSS property scales or stretches a background based on the size of the element (with the <code>contain</code> and <code>cover</code> keywords), a length, or percentage.","group":"background","name":"background-size","spec":"https://drafts.csswg.org/css-backgrounds-3/#background-size","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"21","chrome_android":"25","edge":"12","firefox":"9","firefox_android":"18","safari":"5.1","safari_ios":"4.2"}}},"background-sync":{"compat_features":["api.Permissions.permission_background-sync","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","api.SyncManager.worker_support"],"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"}}},"badging":{"compat_features":["api.Navigator.clearAppBadge","api.Navigator.setAppBadge"],"description":"The navigator.setAppBadge() method allows installed web applications to display an application badge, typically a dot or number shown alongside the application's icon on the device's home screen or application dock.","description_html":"The <code>navigator.setAppBadge()</code> method allows installed web applications to display an application badge, typically a dot or number shown alongside the application's icon on the device's home screen or application dock.","name":"Badging","spec":"https://w3c.github.io/badging/","status":{"baseline":false,"support":{"chrome":"81","edge":"81","safari":"17","safari_ios":"16.4"}}},"barcode":{"compat_features":["api.BarcodeDetector","api.BarcodeDetector.BarcodeDetector","api.BarcodeDetector.detect","api.BarcodeDetector.getSupportedFormats_static"],"description":"The BarcodeDetector API recognizes various barcode formats in images.","description_html":"The <code>BarcodeDetector</code> API recognizes various barcode formats in images.","name":"Barcode detector","spec":"https://wicg.github.io/shape-detection-api/#barcode-detection-api","status":{"baseline":false,"support":{"chrome_android":"83"}}},"barprop":{"compat_features":["api.BarProp","api.BarProp.visible","api.BarProp.visible.returns_popup","api.Window.locationbar","api.Window.menubar","api.Window.personalbar","api.Window.scrollbars","api.Window.statusbar","api.Window.toolbar"],"description":"The visible property of the window.locationbar, window.menubar, window.personalbar, window.scrollbars, window.statusbar, and window.toolbar APIs historically represented the visibility of a browser user interface. For privacy reasons, it now represents whether the window is a pop-up.","description_html":"The <code>visible</code> property of the <code>window.locationbar</code>, <code>window.menubar</code>, <code>window.personalbar</code>, <code>window.scrollbars</code>, <code>window.statusbar</code>, and <code>window.toolbar</code> APIs historically represented the visibility of a browser user interface. For privacy reasons, it now represents whether the window is a pop-up.","name":"BarProp","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#browser-interface-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"}}},"base":{"compat_features":["api.HTMLBaseElement","api.HTMLBaseElement.href","api.HTMLBaseElement.target","html.elements.base","html.elements.base.href","html.elements.base.href.forbid_data_javascript_urls","html.elements.base.href.relative_url","html.elements.base.target"],"description":"The <base> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.","description_html":"The <code>&#x3C;base></code> element sets the base URL (the URL that relative URLs are relative to) for all relative URLs in the document.","group":"html-elements","name":"<base>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-base-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"base64encodedecode":{"caniuse":"atob-btoa","compat_features":["api.atob","api.btoa"],"description":"The atob() and btoa() global functions encode and decode strings to and from base 64, respectively.","description_html":"The <code>atob()</code> and <code>btoa()</code> global functions encode and decode strings to and from base 64, respectively.","name":"Base64 encoding and decoding","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#atob","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"baseline-shift":{"compat_features":["css.properties.baseline-shift","css.properties.baseline-shift.baseline","css.properties.baseline-shift.sub","css.properties.baseline-shift.super"],"description":"The baseline-shift CSS property sets the position of an element relative to its dominant baseline.","description_html":"The <code>baseline-shift</code> CSS property sets the position of an element relative to its dominant baseline.","group":"text","name":"baseline-shift","spec":"https://drafts.csswg.org/css-inline-3/#baseline-shift-property","status":{"baseline":false,"support":{"chrome":"≤80","chrome_android":"≤80","edge":"≤80","safari":"≤13.1","safari_ios":"≤13.4"}}},"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"}}},"battery":{"caniuse":"battery-status","compat_features":["api.BatteryManager","api.BatteryManager.charging","api.BatteryManager.chargingTime","api.BatteryManager.chargingchange_event","api.BatteryManager.chargingtimechange_event","api.BatteryManager.dischargingTime","api.BatteryManager.dischargingtimechange_event","api.BatteryManager.level","api.BatteryManager.levelchange_event","api.BatteryManager.secure_context_required","api.Navigator.getBattery","api.Navigator.getBattery.secure_context_required"],"description":"The navigator.getBattery() API obtains information about the device's battery, including charge level and status. Also known as the Battery API.","description_html":"The <code>navigator.getBattery()</code> API obtains information about the device's battery, including charge level and status. Also known as the Battery API.","name":"Battery status","spec":"https://w3c.github.io/battery/","status":{"baseline":false,"support":{"chrome":"38","chrome_android":"38","edge":"79"}}},"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>&#x3C;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>&#x3C;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"}}},"beacons":{"compat_features":["api.Navigator.sendBeacon"],"description":"The navigator.sendBeacon() method asynchronously sends an HTTP POST request with a limited amount of data, typically for app state, events, and analytics data. The one-way beacon is guaranteed to be initiated before the browser unloads the page, but the sender does not get to handle the response.","description_html":"The <code>navigator.sendBeacon()</code> method asynchronously sends an HTTP POST request with a limited amount of data, typically for app state, events, and analytics data. The one-way beacon is guaranteed to be initiated before the browser unloads the page, but the sender does not get to handle the response.","name":"Beacons","spec":"https://w3c.github.io/beacon/","status":{"baseline":"high","baseline_high_date":"2020-10-12","baseline_low_date":"2018-04-12","support":{"chrome":"39","chrome_android":"42","edge":"14","firefox":"31","firefox_android":"31","safari":"11.1","safari_ios":"11.3"}}},"before-after":{"caniuse":"css-gencontent","compat_features":["css.selectors.after","css.selectors.after.animation_and_transition_support","css.selectors.before","css.selectors.before.animation_and_transition_support"],"description":"The ::before and ::after CSS pseudo-elements select inline boxes preceding and following an element. They are often used with the content property to generate cosmetic content.","description_html":"The <code>::before</code> and <code>::after</code> CSS pseudo-elements select inline boxes preceding and following an element. They are often used with the <code>content</code> property to generate cosmetic content.","name":"::before and ::after","spec":"https://drafts.csswg.org/css-pseudo-4/#generated-content","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"}}},"beforeinstallprompt":{"compat_features":["api.BeforeInstallPromptEvent","api.BeforeInstallPromptEvent.BeforeInstallPromptEvent","api.BeforeInstallPromptEvent.platforms","api.BeforeInstallPromptEvent.prompt","api.BeforeInstallPromptEvent.userChoice","api.Window.appinstalled_event","api.Window.beforeinstallprompt_event"],"description":"The beforeinstallprompt event fires when a Progressive Web App (PWA) is installable, usually on page load in browsers that support installing PWAs. You can use this event to prevent the install prompt from appearing until after the user interacts with an element on the page.","description_html":"The <code>beforeinstallprompt</code> event fires when a Progressive Web App (PWA) is installable, usually on page load in browsers that support installing PWAs. You can use this event to prevent the install prompt from appearing until after the user interacts with an element on the page.","group":"progressive-web-app","name":"beforeinstallprompt","spec":"https://wicg.github.io/manifest-incubations/","status":{"baseline":false,"support":{"chrome":"76","chrome_android":"76","edge":"79"}}},"beforeunload":{"compat_features":["api.BeforeUnloadEvent","api.BeforeUnloadEvent.user_interaction","api.Window.beforeunload_event","api.Window.beforeunload_event.preventdefault_activation"],"description":"The beforeunload event is fired when the current window is about to be unloaded. Typically this is used to display a dialog to confirm if users really want to leave the page when there is unsaved data that would be lost.","description_html":"The <code>beforeunload</code> event is fired when the current window is about to be unloaded. Typically this is used to display a dialog to confirm if users really want to leave the page when there is unsaved data that would be lost.","name":"Beforeunload","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-beforeunloadevent-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"}}},"bfcache-blocking-reasons":{"compat_features":["api.NotRestoredReasonDetails","api.NotRestoredReasonDetails.reason","api.NotRestoredReasonDetails.toJSON","api.NotRestoredReasons","api.NotRestoredReasons.children","api.NotRestoredReasons.id","api.NotRestoredReasons.name","api.NotRestoredReasons.reasons","api.NotRestoredReasons.src","api.NotRestoredReasons.toJSON","api.NotRestoredReasons.url","api.PerformanceNavigationTiming.notRestoredReasons"],"description":"The notRestoredReasons property of a PerformanceNavigationTiming object explains why the current document was blocked from using the back/forward cache (also known as the bfcache) on navigation.","description_html":"The <code>notRestoredReasons</code> property of a <code>PerformanceNavigationTiming</code> object explains why the current document was blocked from using the back/forward cache (also known as the bfcache) on navigation.","group":"performance","name":"Back/forward cache blocking reasons","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-notrestoredreasons-interface","status":{"baseline":false,"support":{"chrome":"125","chrome_android":"125","edge":"125"}}},"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"}}},"bigint64array":{"compat_features":["javascript.builtins.BigInt64Array","javascript.builtins.BigInt64Array.BigInt64Array","javascript.builtins.BigUint64Array","javascript.builtins.BigUint64Array.BigUint64Array","javascript.builtins.DataView.getBigInt64","javascript.builtins.DataView.getBigUint64","javascript.builtins.DataView.setBigInt64","javascript.builtins.DataView.setBigUint64"],"description":"The BigInt64Array and BigUint64Array typed arrays represent 64-bit integers, signed and unsigned respectively.","description_html":"The <code>BigInt64Array</code> and <code>BigUint64Array</code> typed arrays represent 64-bit integers, signed and unsigned respectively.","group":"javascript","name":"BigInt64Array","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-objects","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"67","chrome_android":"67","edge":"79","firefox":"68","firefox_android":"68","safari":"15","safari_ios":"15"}}},"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","http.headers.Link.blocking"],"description":"The blocking=\"render\" attribute for <link>, <script>, and <style> elements blocks rendering until the external script or stylesheet has been loaded. For <link rel=\"expect\">, rendering is blocked until a specific element is in the DOM.","description_html":"The <code>blocking=\"render\"</code> attribute for <code>&#x3C;link></code>, <code>&#x3C;script></code>, and <code>&#x3C;style></code> elements blocks rendering until the external script or stylesheet has been loaded. For <code>&#x3C;link rel=\"expect\"></code>, rendering is blocked until a specific element is in the DOM.","group":"html","name":"blocking=\"render\"","spec":"https://html.spec.whatwg.org/multipage/urls-and-fetching.html#blocking-attributes","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105"}}},"blockquote":{"compat_features":["html.elements.blockquote","html.elements.blockquote.cite"],"description":"The <blockquote> element represents an extended quotation, styling contents as an indented block by default.","description_html":"The <code>&#x3C;blockquote></code> element represents an extended quotation, styling contents as an indented block by default.","group":"html-elements","name":"<blockquote>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-blockquote-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"body":{"compat_features":["api.HTMLBodyElement","html.elements.body"],"description":"The <body> element represents the content of an HTML document.","description_html":"The <code>&#x3C;body></code> element represents the content of an HTML document.","group":"html-elements","name":"<body>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-body-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"border-image":{"caniuse":"border-image","compat_features":["css.properties.border-image","css.properties.border-image-outset","css.properties.border-image-repeat","css.properties.border-image-repeat.repeat","css.properties.border-image-repeat.round","css.properties.border-image-repeat.space","css.properties.border-image-repeat.stretch","css.properties.border-image-slice","css.properties.border-image-source","css.properties.border-image-width","css.properties.border-image-width.auto","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":"borders-outlines","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"}}},"border-radius":{"caniuse":"border-radius","compat_features":["css.properties.border-bottom-left-radius","css.properties.border-bottom-left-radius.elliptical_corners","css.properties.border-bottom-left-radius.percentages","css.properties.border-bottom-right-radius","css.properties.border-bottom-right-radius.elliptical_corners","css.properties.border-bottom-right-radius.percentages","css.properties.border-radius","css.properties.border-radius.4_values_for_4_corners","css.properties.border-radius.elliptical_borders","css.properties.border-radius.percentages","css.properties.border-top-left-radius","css.properties.border-top-left-radius.elliptical_corners","css.properties.border-top-left-radius.percentages","css.properties.border-top-right-radius","css.properties.border-top-right-radius.elliptical_corners","css.properties.border-top-right-radius.percentages"],"description":"The border-radius CSS property rounds the corners of the border drawn around an element.","description_html":"The <code>border-radius</code> CSS property rounds the corners of the border drawn around an element.","group":"borders-outlines","name":"border-radius","spec":"https://drafts.csswg.org/css-backgrounds-3/#corners","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":"4.2"}}},"borders":{"compat_features":["css.properties.border","css.properties.border-bottom","css.properties.border-bottom-color","css.properties.border-bottom-style","css.properties.border-bottom-width","css.properties.border-color","css.properties.border-left","css.properties.border-left-color","css.properties.border-left-style","css.properties.border-left-width","css.properties.border-right","css.properties.border-right-color","css.properties.border-right-style","css.properties.border-right-width","css.properties.border-style","css.properties.border-style.dashed","css.properties.border-style.dotted","css.properties.border-style.double","css.properties.border-style.groove","css.properties.border-style.hidden","css.properties.border-style.inset","css.properties.border-style.none","css.properties.border-style.outset","css.properties.border-style.ridge","css.properties.border-style.solid","css.properties.border-top","css.properties.border-top-color","css.properties.border-top-style","css.properties.border-top-width","css.properties.border-width","css.types.line-style"],"description":"The border CSS property sets the color, style, and width of the line around an element.","description_html":"The <code>border</code> CSS property sets the color, style, and width of the line around an element.","group":"borders-outlines","name":"Borders","spec":"https://drafts.csswg.org/css-backgrounds-3/#borders","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":"14","safari":"1","safari_ios":"3"}}},"box-decoration-break":{"caniuse":"css-boxdecorationbreak","compat_features":["css.properties.box-decoration-break","css.properties.box-decoration-break.clone","css.properties.box-decoration-break.slice"],"description":"The box-decoration-break CSS property sets whether box decorations, such as borders or backgrounds, of an element divided across a page, column, or region wraps each fragment or splits across the break.","description_html":"The <code>box-decoration-break</code> CSS property sets whether box decorations, such as borders or backgrounds, of an element divided across a page, column, or region wraps each fragment or splits across the break.","name":"box-decoration-break","spec":"https://drafts.csswg.org/css-break-4/#break-decoration","status":{"baseline":false,"support":{"chrome":"130","chrome_android":"130","edge":"130","firefox":"32","firefox_android":"32"}}},"box-shadow":{"caniuse":"css-boxshadow","compat_features":["css.properties.box-shadow","css.properties.box-shadow.inset","css.properties.box-shadow.multiple_shadows","css.properties.box-shadow.spread_radius"],"description":"The box-shadow CSS property applies shadow effects around an element's frame. This can create drop shadow and inner shadow effects.","description_html":"The <code>box-shadow</code> CSS property applies shadow effects around an element's frame. This can create drop shadow and inner shadow effects.","group":"background","name":"box-shadow","spec":"https://drafts.csswg.org/css-backgrounds-3/#box-shadow","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"10","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"box-sizing":{"caniuse":"css3-boxsizing","compat_features":["css.properties.box-sizing","css.properties.box-sizing.border-box","css.properties.box-sizing.content-box"],"description":"The box-sizing CSS property sets whether an element's width and height are calculated based on the content-box, which does not count the size of borders or padding, or border-box, which does count them.","description_html":"The <code>box-sizing</code> CSS property sets whether an element's width and height are calculated based on the <code>content-box</code>, which does not count the size of borders or padding, or <code>border-box</code>, which does count them.","group":"layout","name":"box-sizing","spec":"https://drafts.csswg.org/css-sizing-3/#propdef-box-sizing","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"10","chrome_android":"18","edge":"12","firefox":"29","firefox_android":"29","safari":"5.1","safari_ios":"6"}}},"br":{"compat_features":["api.HTMLBRElement","html.elements.br"],"description":"The <br> element produces line breaks in text.","description_html":"The <code>&#x3C;br></code> element produces line breaks in text.","group":"html-elements","name":"<br>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-br-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"broadcast-channel":{"caniuse":"broadcastchannel","compat_features":["api.BroadcastChannel","api.BroadcastChannel.BroadcastChannel","api.BroadcastChannel.close","api.BroadcastChannel.message_event","api.BroadcastChannel.messageerror_event","api.BroadcastChannel.name","api.BroadcastChannel.postMessage"],"description":"The BroadcastChannel API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","description_html":"The <code>BroadcastChannel</code> API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs.","group":"messaging","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"}}},"brotli":{"caniuse":"brotli","compat_features":["http.headers.Content-Encoding.br"],"description":"Brotli is a lossless data compression algorithm. When used as a content encoding, it often provides better compression than gzip.","description_html":"Brotli is a lossless data compression algorithm. When used as a content encoding, it often provides better compression than gzip.","name":"Brotli compression","spec":"https://www.rfc-editor.org/rfc/rfc7932","status":{"baseline":"high","baseline_high_date":"2020-03-19","baseline_low_date":"2017-09-19","support":{"chrome":"50","chrome_android":"51","edge":"15","firefox":"44","firefox_android":"44","safari":"11","safari_ios":"11"}}},"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> HTML element represents a button that triggers some action, such as submitting a form or opening a dialog, styled as a labeled rectangular box by default.","description_html":"The <code>&#x3C;button></code> HTML element represents a button that triggers some action, such as submitting a form or opening a dialog, styled as a labeled rectangular box by default.","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","css.types.calc.gradient_color_stops","css.types.calc.nested","css.types.calc.number_values"],"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-keyword","css.types.calc-keyword.NaN","css.types.calc-keyword.e","css.types.calc-keyword.infinity","css.types.calc-keyword.pi"],"description":"The e, pi, infinity, and NaN keywords represent well-defined constants accepted in CSS math functions such as calc().","description_html":"The <code>e</code>, <code>pi</code>, <code>infinity</code>, and <code>NaN</code> keywords represent well-defined constants accepted in CSS math functions such as <code>calc()</code>.","group":"css","name":"calc() keywords","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"}}},"calc-size":{"compat_features":["css.types.calc-size"],"description":"The calc-size() CSS function computes mathematical expressions that include height and width keyword values, for example calc-size(fit-content, size / 2). Not to be confused with the calc() CSS function, which cannot use keyword values.","description_html":"The <code>calc-size()</code> CSS function computes mathematical expressions that include <code>height</code> and <code>width</code> keyword values, for example <code>calc-size(fit-content, size / 2)</code>. Not to be confused with the <code>calc()</code> CSS function, which cannot use keyword values.","group":"css","name":"calc-size()","spec":"https://drafts.csswg.org/css-values-5/#calc-size","status":{"baseline":false,"support":{"chrome":"129","chrome_android":"129","edge":"129"}}},"canvas":{"compat_features":["api.HTMLCanvasElement","api.HTMLCanvasElement.getContext","api.HTMLCanvasElement.height","api.HTMLCanvasElement.toBlob","api.HTMLCanvasElement.toDataURL","api.HTMLCanvasElement.width","html.elements.canvas","html.elements.canvas.height","html.elements.canvas.width"],"description":"The <canvas> HTML element is a space to draw graphics in, using the 2D canvas API, WebGL, or WebGPU.","description_html":"The <code>&#x3C;canvas></code> HTML element is a space to draw graphics in, using the 2D canvas API, WebGL, or WebGPU.","group":["canvas","html-elements"],"name":"<canvas>","spec":"https://html.spec.whatwg.org/multipage/canvas.html#canvas","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1.5","firefox_android":"4","safari":"2","safari_ios":"1"}}},"canvas-2d":{"compat_features":["api.CanvasGradient","api.CanvasGradient.addColorStop","api.CanvasPattern","api.CanvasPattern.setTransform","api.CanvasPattern.setTransform.dommatrix","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.clip.path_parameter","api.CanvasRenderingContext2D.closePath","api.CanvasRenderingContext2D.createImageData","api.CanvasRenderingContext2D.createLinearGradient","api.CanvasRenderingContext2D.createPattern","api.CanvasRenderingContext2D.createRadialGradient","api.CanvasRenderingContext2D.direction","api.CanvasRenderingContext2D.drawFocusIfNeeded","api.CanvasRenderingContext2D.drawFocusIfNeeded.path_parameter","api.CanvasRenderingContext2D.drawImage","api.CanvasRenderingContext2D.drawImage.ImageBitmap_source_image","api.CanvasRenderingContext2D.ellipse","api.CanvasRenderingContext2D.fill","api.CanvasRenderingContext2D.fill.path_parameter","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.isPointInPath.path_parameter","api.CanvasRenderingContext2D.isPointInStroke","api.CanvasRenderingContext2D.isPointInStroke.path_parameter","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.setTransform.matrix_parameter","api.CanvasRenderingContext2D.shadowBlur","api.CanvasRenderingContext2D.shadowColor","api.CanvasRenderingContext2D.shadowOffsetX","api.CanvasRenderingContext2D.shadowOffsetY","api.CanvasRenderingContext2D.stroke","api.CanvasRenderingContext2D.stroke.path_parameter","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.ImageData","api.ImageData.ImageData","api.ImageData.colorSpace","api.ImageData.data","api.ImageData.height","api.ImageData.width","api.Path2D","api.Path2D.Path2D","api.Path2D.addPath","api.Path2D.arc","api.Path2D.arcTo","api.Path2D.bezierCurveTo","api.Path2D.closePath","api.Path2D.ellipse","api.Path2D.lineTo","api.Path2D.moveTo","api.Path2D.quadraticCurveTo","api.Path2D.rect","api.Path2D.roundRect","api.TextMetrics","api.TextMetrics.actualBoundingBoxAscent","api.TextMetrics.actualBoundingBoxDescent","api.TextMetrics.actualBoundingBoxLeft","api.TextMetrics.actualBoundingBoxRight","api.TextMetrics.alphabeticBaseline","api.TextMetrics.emHeightAscent","api.TextMetrics.emHeightDescent","api.TextMetrics.fontBoundingBoxAscent","api.TextMetrics.fontBoundingBoxDescent","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>&#x3C;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-management":{"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>&#x3C;canvas></code> fires when the canvas backing storage is lost, while the <code>contextrestored</code> event fires when it is recreated.","group":"canvas","name":"contextlost and contextrestored","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#context-lost-steps","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"125","firefox_android":"125"}}},"canvas-createconicgradient":{"compat_features":["api.CanvasRenderingContext2D.createConicGradient","api.OffscreenCanvasRenderingContext2D.createConicGradient"],"description":"The createConicGradient() methods draw a conic gradient to a 2D canvas.","description_html":"The <code>createConicGradient()</code> methods draw a conic gradient to a 2D canvas.","group":"canvas","name":"Canvas createConicGradient()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-createconicgradient-dev","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"112","firefox_android":"112","safari":"16.4","safari_ios":"16.4"}}},"canvas-reset":{"compat_features":["api.CanvasRenderingContext2D.reset","api.OffscreenCanvasRenderingContext2D.reset"],"description":"The reset() method clears a canvas to its initial state.","description_html":"The <code>reset()</code> method clears a canvas to its initial state.","group":"canvas","name":"Canvas reset()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-reset","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"113","firefox_android":"113","safari":"17.2","safari_ios":"17.2"}}},"canvas-roundrect":{"compat_features":["api.CanvasRenderingContext2D.roundRect","api.OffscreenCanvasRenderingContext2D.roundRect"],"description":"The roundRect() methods draw a rounded rectangle to a 2D canvas.","description_html":"The <code>roundRect()</code> methods draw a rounded rectangle to a 2D canvas.","group":"canvas","name":"Canvas roundRect()","spec":"https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-roundrect","status":{"baseline":"low","baseline_low_date":"2023-04-11","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"112","firefox_android":"112","safari":"16.4","safari_ios":"16.4"}}},"cap":{"compat_features":["css.types.length.cap"],"description":"The cap CSS length unit corresponds to the height of Latin capital letters.","description_html":"The <code>cap</code> CSS length 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"}}},"capture-stream-audio-video":{"compat_features":["api.HTMLMediaElement.captureStream"],"description":"The captureStream() method for <audio> and <video> elements returns a MediaStream for the media element's content. You can use this to record media or send it elsewhere, such as a canvas or WebRTC connection.","description_html":"The <code>captureStream()</code> method for <code>&#x3C;audio></code> and <code>&#x3C;video></code> elements returns a <code>MediaStream</code> for the media element's content. You can use this to record media or send it elsewhere, such as a canvas or WebRTC connection.","group":"media-elements","name":"captureStream() for <audio> and <video>","spec":"https://w3c.github.io/mediacapture-fromelement/#html-media-element-media-capture-extensions","status":{"baseline":false,"support":{"chrome":"62","chrome_android":"62","edge":"79"}}},"capture-stream-canvas":{"compat_features":["api.CanvasCaptureMediaStreamTrack","api.CanvasCaptureMediaStreamTrack.canvas","api.CanvasCaptureMediaStreamTrack.requestFrame","api.HTMLCanvasElement.captureStream"],"description":"The captureStream() method for <canvas> elements returns a MediaStream which includes a CanvasCaptureMediaStreamTrack representing real-time video of the canvas image. You can use this to record the canvas, or send it elsewhere, such as another canvas or WebRTC connection.","description_html":"The <code>captureStream()</code> method for <code>&#x3C;canvas></code> elements returns a <code>MediaStream</code> which includes a <code>CanvasCaptureMediaStreamTrack</code> representing real-time video of the canvas image. You can use this to record the canvas, or send it elsewhere, such as another canvas or WebRTC connection.","group":"canvas","name":"captureStream() for <canvas>","spec":"https://w3c.github.io/mediacapture-fromelement/#html-canvas-element-media-capture-extensions","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"51","chrome_android":"51","edge":"79","firefox":"43","firefox_android":"43","safari":"11","safari_ios":"11"}}},"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","css.types.global_keywords.revert-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/","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"}}},"case-insensitive-attributes":{"caniuse":"css-case-insensitive","compat_features":["css.selectors.attribute.case_insensitive_modifier"],"description":"The i identifier in a CSS attribute selector matches attribute values case-insensitively in document languages like XML where attribute values are case-sensitive.","description_html":"The <code>i</code> identifier in a CSS attribute selector matches attribute values case-insensitively in document languages like XML where attribute values are case-sensitive.","group":"selectors","name":"Case-insensitive attribute selector","spec":"https://drafts.csswg.org/selectors-4/#attribute-case","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"49","chrome_android":"49","edge":"79","firefox":"47","firefox_android":"47","safari":"9","safari_ios":"9"}}},"case-sensitive-attributes":{"compat_features":["css.selectors.attribute.case_sensitive_modifier"],"description":"The s identifier in a CSS attribute selector matches attribute values case-sensitively in document languages like HTML where attribute values are case-insensitive.","description_html":"The <code>s</code> identifier in a CSS attribute selector matches attribute values case-sensitively in document languages like HTML where attribute values are case-insensitive.","group":"selectors","name":"Case-sensitive attribute selector","spec":"https://drafts.csswg.org/selectors-4/#attribute-case","status":{"baseline":false,"support":{"firefox":"66","firefox_android":"66"}}},"ch":{"compat_features":["css.types.length.ch"],"description":"The ch CSS length unit is a font-relative length based on the width of the zero (0) character.","description_html":"The <code>ch</code> CSS length unit is a font-relative length based on the width of the zero (0) character.","group":"units","name":"ch unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"27","chrome_android":"27","edge":"12","firefox":"1","firefox_android":"4","safari":"7","safari_ios":"7"}}},"change-event":{"compat_features":["api.HTMLElement.change_event"],"description":"The change event for <input>, <select>, and <textarea> elements fires when the user modifies the element's value. Unlike the input event, the change event does not necessarily fire on every alteration to an element's value.","description_html":"The <code>change</code> event for <code>&#x3C;input></code>, <code>&#x3C;select></code>, and <code>&#x3C;textarea></code> elements fires when the user modifies the element's value. Unlike the <code>input</code> event, the change event does not necessarily fire on every alteration to an element's value.","name":"Change event","spec":["https://html.spec.whatwg.org/multipage/indices.html#event-change","https://html.spec.whatwg.org/multipage/webappapis.html#handler-onchange"],"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"}}},"channel-messaging":{"caniuse":"channel-messaging","compat_features":["api.MessageChannel","api.MessageChannel.MessageChannel","api.MessageChannel.port1","api.MessageChannel.port2","api.MessageEvent.ports","api.MessagePort","api.MessagePort.close","api.MessagePort.message_event","api.MessagePort.postMessage","api.MessagePort.start","api.MessagePort.worker_support"],"description":"Channel messaging communicates one-to-one between browsing contexts on the same origin, such as between <iframe> elements or two documents using a shared worker.","description_html":"Channel messaging communicates one-to-one between browsing contexts on the same origin, such as between <code>&#x3C;iframe></code> elements or two documents using a shared worker.","group":"messaging","name":"Channel messaging","spec":"https://html.spec.whatwg.org/multipage/web-messaging.html#channel-messaging","status":{"baseline":"high","baseline_high_date":"2018-03-22","baseline_low_date":"2015-09-22","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"41","firefox_android":"41","safari":"5","safari_ios":"4.2"}}},"charset":{"compat_features":["css.at-rules.charset"],"description":"The @charset CSS at-rule specifies the character encoding of an external style sheet.","description_html":"The <code>@charset</code> CSS at-rule specifies the character encoding of an external style sheet.","group":"css","name":"@charset","spec":"https://drafts.csswg.org/css2/#charset","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.5","firefox_android":"4","safari":"4","safari_ios":"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>&#x3C;cite></code> element represents the title of a quoted, referenced, or mentioned creative work, such as a film or book.","group":"html-elements","name":"<cite>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-cite-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"class-syntax":{"caniuse":"es6-class","compat_features":["javascript.classes","javascript.classes.constructor","javascript.classes.extends","javascript.classes.private_class_fields","javascript.classes.private_class_fields_in","javascript.classes.private_class_methods","javascript.classes.public_class_fields","javascript.classes.static","javascript.classes.static_class_fields","javascript.classes.static_initialization_blocks","javascript.operators.class","javascript.operators.new_target","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":"2018-09-08","baseline_low_date":"2016-03-08","support":{"chrome":"42","chrome_android":"42","edge":"13","firefox":"45","firefox_android":"45","safari":"9","safari_ios":"9"}}},"clear-site-data":{"compat_features":["http.headers.Clear-Site-Data","http.headers.Clear-Site-Data.cache","http.headers.Clear-Site-Data.clientHints","http.headers.Clear-Site-Data.cookies","http.headers.Clear-Site-Data.executionContexts","http.headers.Clear-Site-Data.secure_context_required","http.headers.Clear-Site-Data.storage","http.headers.Clear-Site-Data.wildcard"],"description":"The Clear-Site-Data header deletes browsing data (such as cookies, storage, or cache) associated with the requesting website.","description_html":"The <code>Clear-Site-Data</code> header deletes browsing data (such as cookies, storage, or cache) associated with the requesting website.","name":"Clearing site data","spec":"https://w3c.github.io/webappsec-clear-site-data/","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"63","firefox_android":"63","safari":"17","safari_ios":"17"}}},"clip":{"compat_features":["css.properties.clip","css.properties.clip.auto","css.types.shape","css.types.shape.rect"],"description":"The clip CSS property sets the visible area of an absolutely positioned element.","description_html":"The <code>clip</code> CSS property sets the visible area of an absolutely positioned element.","discouraged":{"according_to":["https://drafts.fxtf.org/css-masking-1/#clip-property"],"alternatives":["clip-path"]},"group":"clipping-shapes-masking","name":"clip","spec":"https://drafts.fxtf.org/css-masking-1/#clip-property","status":{"baseline":false,"support":{"chrome":"≤80","chrome_android":"≤80","edge":"≤80","firefox":"≤72","firefox_android":"≤79","safari":"≤13.1","safari_ios":"≤13.4"}}},"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-custom-format":{"compat_features":["api.ClipboardItem.type_web"],"description":"The web  prefix for ClipboardItem data types (also known as MIME types) allows reading and writing ununsanitized custom data from the device clipboard.","description_html":"The <code>web </code> prefix for <code>ClipboardItem</code> data types (also known as MIME types) allows reading and writing ununsanitized custom data from the device clipboard.","group":"clipboard","name":"Custom formats for clipboard items","spec":"https://w3c.github.io/clipboard-apis/#optional-data-types-x","status":{"baseline":false,"support":{"chrome":"104","chrome_android":"104","edge":"104"}}},"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-svg":{"compat_features":["api.ClipboardItem.type_image_svg_xml"],"description":"The image/svg+xml data type (also known as the MIME type) for ClipboardItem objects represents SVG data written to or read from the clipboard.","description_html":"The <code>image/svg+xml</code> data type (also known as the MIME type) for <code>ClipboardItem</code> objects represents SVG data written to or read from the clipboard.","group":"clipboard","name":"SVG clipboard items","spec":"https://w3c.github.io/clipboard-apis/#optional-data-types-x","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124"}}},"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 text/html data from the system clipboard.","description_html":"The optional <code>formats.unsanitized</code> parameter of the <code>navigator.clipboard.read()</code> method reads unsanitized <code>text/html</code> 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"}}},"closewatcher":{"compat_features":["api.CloseWatcher","api.CloseWatcher.CloseWatcher","api.CloseWatcher.cancel_event","api.CloseWatcher.close","api.CloseWatcher.close_event","api.CloseWatcher.destroy","api.CloseWatcher.requestClose"],"description":"The CloseWatcher API listens and responds to close requests on in-page components, such as modals, popovers, and sidebars.","description_html":"The <code>CloseWatcher</code> API listens and responds to close requests on in-page components, such as modals, popovers, and sidebars.","name":"CloseWatcher","spec":"https://html.spec.whatwg.org/multipage/interaction.html#close-requests-and-close-watchers","status":{"baseline":false,"support":{"chrome":"126","chrome_android":"126","edge":"126"}}},"code":{"compat_features":["html.elements.code"],"description":"The <code> element displays its contents as a fragment of computer code.","description_html":"The <code>&#x3C;code></code> element displays its contents as a fragment of computer code.","group":"html-elements","name":"<code>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-code-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"color":{"compat_features":["css.properties.color","css.types.color"],"description":"The color CSS property sets the primary foreground color of an element, which is used for text, the default border color, and text decorations.","description_html":"The <code>color</code> CSS property sets the primary foreground color of an element, which is used for text, the default border color, and text decorations.","group":"css","name":"Color","spec":"https://drafts.csswg.org/css-color-4/#the-color-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"}}},"color-adjust":{"compat_features":["css.properties.color-adjust"],"description":"The color-adjust shorthand CSS property allows multiple performance related color adjustments to be set at once. Setting the print-color-adjust CSS property directly is preferred, as it is the only such adjustment so far defined.","description_html":"The <code>color-adjust</code> shorthand CSS property allows multiple performance related color adjustments to be set at once. Setting the <code>print-color-adjust</code> CSS property directly is preferred, as it is the only such adjustment so far defined.","discouraged":{"according_to":["https://drafts.csswg.org/css-color-adjust-1/#color-adjust"],"alternatives":["print-color-adjust"]},"group":"print","name":"color-adjust","spec":"https://drafts.csswg.org/css-color-adjust-1/#color-adjust","status":{"baseline":false,"support":{"firefox":"≤72","firefox_android":"≤79","safari":"15.4","safari_ios":"15.4"}}},"color-contrast":{"description":"The color-contrast() CSS function picks a color from a list that has the most contrast with another color.","description_html":"The <code>color-contrast()</code> CSS function picks a color from a list that has the most contrast with another color.","discouraged":{"according_to":["https://github.com/w3c/csswg-drafts/issues/7557","https://github.com/w3c/csswg-drafts/commit/36594e9e8496a5ca83f1f1ee2b4a83bcdf28753b"],"alternatives":["contrast-color"]},"group":"color-types","name":"color-contrast()","spec":"https://drafts.csswg.org/css-color-5/#contrast-color","status":{"baseline":false,"support":{}}},"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.dark","css.properties.color-scheme.light","css.properties.color-scheme.normal","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"}}},"colrv0":{"caniuse":"colr","compat_features":["css.at-rules.font-face.OpenType_COLRv0"],"description":"COLRv0 is a font format that supports multi-color glyphs. COLRv0 supports only solid colors.","description_html":"COLRv0 is a font format that supports multi-color glyphs. COLRv0 supports only solid colors.","group":"fonts","name":"COLRv0","spec":"https://www.iso.org/standard/87621.html","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"53","chrome_android":"53","edge":"79","firefox":"31","firefox_android":"31","safari":"11.1","safari_ios":"11.3"}}},"colrv1":{"caniuse":"colr-v1","compat_features":["css.at-rules.font-face.OpenType_COLRv1"],"description":"COLRv1 is a font format that supports multi-color glyphs. COLRv1 extends COLRv0 to support gradients, transforms, and blending modes.","description_html":"COLRv1 is a font format that supports multi-color glyphs. COLRv1 extends COLRv0 to support gradients, transforms, and blending modes.","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.avoid-column","css.properties.break-after.column","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.avoid-column","css.properties.break-before.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.avoid-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"}}},"column-fill":{"compat_features":["css.properties.column-fill","css.properties.column-fill.auto","css.properties.column-fill.balance"],"description":"The column-fill CSS property sets the distribution of content across columns in a multi-column layout.","description_html":"The <code>column-fill</code> CSS property sets the distribution of content across columns in a multi-column layout.","group":"multi-column","name":"column-fill","spec":"https://drafts.csswg.org/css-multicol-1/#filling-columns","status":{"baseline":"high","baseline_high_date":"2019-09-07","baseline_low_date":"2017-03-07","support":{"chrome":"50","chrome_android":"50","edge":"12","firefox":"52","firefox_android":"52","safari":"9","safari_ios":"9"}}},"column-span":{"compat_features":["css.properties.column-span","css.properties.column-span.all","css.properties.column-span.none"],"description":"The column-span CSS property controls whether a child element extends across all columns of a multi-column parent.","description_html":"The <code>column-span</code> CSS property controls whether a child element extends across all columns of a multi-column parent.","group":"multi-column","name":"column-span","spec":"https://drafts.csswg.org/css-multicol-1/#spanning-columns","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"50","chrome_android":"50","edge":"12","firefox":"71","firefox_android":"79","safari":"9","safari_ios":"9"}}},"composed-ranges":{"compat_features":["api.Selection.getComposedRanges"],"description":"The window.getSelection().getComposedRanges() method returns ranges that represent the current user selection, even if the selection spans across shadow tree boundaries.","description_html":"The <code>window.getSelection().getComposedRanges()</code> method returns ranges that represent the current user selection, even if the selection spans across shadow tree boundaries.","group":["selection","web-components"],"name":"Selection composed ranges","spec":"https://w3c.github.io/selection-api/#dom-selection-getcomposedranges","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17"}}},"composition-events":{"compat_features":["api.CompositionEvent","api.CompositionEvent.CompositionEvent","api.CompositionEvent.data","api.Element.compositionend_event","api.Element.compositionstart_event","api.Element.compositionupdate_event"],"description":"The compositionstart, compositionupdate, and compositionend events fire when an input method editor adds characters that might not be commonly available on keyboards. Examples of these characters are emoji, logograms in Asian languages, or input from speech recognition processors.","description_html":"The <code>compositionstart</code>, <code>compositionupdate</code>, and <code>compositionend</code> events fire when an input method editor adds characters that might not be commonly available on keyboards. Examples of these characters are emoji, logograms in Asian languages, or input from speech recognition processors.","name":"Composition events","spec":"https://w3c.github.io/uievents/#events-compositionevents","status":{"baseline":"high","baseline_high_date":"2019-10-19","baseline_low_date":"2017-04-19","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"53","firefox_android":"53","safari":"7","safari_ios":"7"}}},"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","html.elements.iframe.allow.compute-pressure","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.","group":"compute-pressure","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.gradient.conic-gradient","css.types.gradient.conic-gradient.doubleposition","css.types.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"}}},"console":{"compat_features":["api.console","api.console.assert_static","api.console.clear_static","api.console.countReset_static","api.console.count_static","api.console.debug_static","api.console.dir_static","api.console.dirxml_static","api.console.error_static","api.console.groupCollapsed_static","api.console.groupEnd_static","api.console.group_static","api.console.info_static","api.console.log_static","api.console.substitution_strings","api.console.table_static","api.console.timeEnd_static","api.console.timeLog_static","api.console.time_static","api.console.trace_static","api.console.warn_static","api.console.worker_support"],"description":"The console API logs debugging messages to the browser development tools' console.","description_html":"The <code>console</code> API logs debugging messages to the browser development tools' console.","group":"html-elements","name":"Console","spec":"https://console.spec.whatwg.org/#console-namespace","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":"3","safari_ios":"1"}}},"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":{"caniuse":"css-containment","compat_features":["css.properties.contain","css.properties.contain.content","css.properties.contain.none","css.properties.contain.strict"],"description":"The contain CSS property sets limits to the scope of styles, layout, and paint rendering for speed and efficiency. The none keyword value disables containment, strict is equivalent to contain: size layout style paint, and content is equivalent to contain: layout style paint.","description_html":"The <code>contain</code> CSS property sets limits to the scope of styles, layout, and paint rendering for speed and efficiency. The <code>none</code> keyword value disables containment, <code>strict</code> is equivalent to <code>contain: size layout style paint</code>, and <code>content</code> is equivalent to <code>contain: layout style paint</code>.","group":"containment","name":"contain","spec":"https://drafts.csswg.org/css-contain-2/#contain-property","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-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.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":"high","baseline_high_date":"2025-01-26","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":"container-queries","name":"Container queries","spec":"https://drafts.csswg.org/css-conditional-5/#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-scroll-state-queries":{"compat_features":["css.properties.container-type.scroll-state"],"description":"Container scroll-state queries with the @container scroll-state(...) at-rule apply styles to an element based on the sticky positioning, snapped, and scrollable state of the container.","description_html":"Container scroll-state queries with the <code>@container scroll-state(...)</code> at-rule apply styles to an element based on the sticky positioning, snapped, and scrollable state of the container.","group":"container-queries","name":"Container scroll-state queries","spec":"https://drafts.csswg.org/css-conditional-5/#scroll-state-container","status":{"baseline":false,"support":{"chrome":"133","chrome_android":"133","edge":"133"}}},"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":"container-queries","name":"Container style queries","spec":"https://drafts.csswg.org/css-conditional-5/#style-container","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","safari":"18","safari_ios":"18"}}},"content":{"compat_features":["css.properties.content","css.properties.content.element_replacement","css.properties.content.gradient","css.properties.content.none","css.properties.content.none_applies_to_elements","css.properties.content.normal","css.properties.content.url","css.types.string","css.types.string.unicode_escaped_characters"],"description":"The content CSS property sets the content inside of an element or pseudo-element, replacing the current value. It's often used with the ::before and ::after pseudo-elements to generate cosmetic content.","description_html":"The <code>content</code> CSS property sets the content inside of an element or pseudo-element, replacing the current value. It's often used with the <code>::before</code> and <code>::after</code> pseudo-elements to generate cosmetic content.","group":"css","name":"Content","spec":"https://drafts.csswg.org/css-content-3/#content-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"}}},"content-index":{"compat_features":["api.ContentIndex","api.ContentIndex.add","api.ContentIndex.delete","api.ContentIndex.getAll","api.ContentIndexEvent","api.ContentIndexEvent.ContentIndexEvent","api.ContentIndexEvent.id","api.ServiceWorkerGlobalScope.contentdelete_event","api.ServiceWorkerRegistration.index"],"description":"The Content Index API allows developers to register their offline enabled content with the browser.","description_html":"The Content Index API allows developers to register their offline enabled content with the browser.","name":"Content Index","spec":"https://wicg.github.io/content-index/spec/","status":{"baseline":false,"support":{"chrome_android":"84"}}},"content-visibility":{"caniuse":"css-content-visibility","compat_features":["api.ContentVisibilityAutoStateChangeEvent","api.ContentVisibilityAutoStateChangeEvent.ContentVisibilityAutoStateChangeEvent","api.ContentVisibilityAutoStateChangeEvent.skipped","api.Element.contentvisibilityautostatechange_event","css.properties.content-visibility","css.properties.content-visibility.auto","css.properties.content-visibility.hidden","css.properties.content-visibility.visible"],"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":false,"support":{"chrome":"108","chrome_android":"108","edge":"108","firefox":"130","firefox_android":"130"}}},"contenteditable":{"caniuse":"contenteditable","compat_features":["api.HTMLElement.contentEditable","api.HTMLElement.isContentEditable","html.global_attributes.contenteditable"],"description":"The contenteditable global HTML attribute allows the user to edit the content of an element, such as inserting or deleting text.","description_html":"The <code>contenteditable</code> global HTML attribute allows the user to edit the content of an element, such as inserting or deleting text.","name":"Contenteditable","spec":"https://html.spec.whatwg.org/multipage/interaction.html#contenteditable","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":"≤4","safari_ios":"≤3.2"}}},"contenteditable-plaintextonly":{"compat_features":["api.HTMLElement.contentEditable.plaintext-only","html.global_attributes.contenteditable.plaintext-only"],"description":"The contenteditable=\"plaintext-only\" global HTML attribute allows the user to edit the content of an element, but prevents rich-text formatting.","description_html":"The <code>contenteditable=\"plaintext-only\"</code> global HTML attribute allows the user to edit the content of an element, but prevents rich-text formatting.","name":"contenteditable=\"plaintext-only\"","spec":"https://html.spec.whatwg.org/multipage/interaction.html#attr-contenteditable-plaintextonly-state","status":{"baseline":false,"support":{"chrome":"51","chrome_android":"51","edge":"≤79","safari":"≤13.1","safari_ios":"≤13.4"}}},"context-fill-stroke":{"compat_features":["svg.elements.circle.fill.context-fill","svg.elements.ellipse.fill.context-fill","svg.elements.path.fill.context-fill","svg.elements.polygon.fill.context-fill","svg.elements.polyline.fill.context-fill","svg.elements.rect.fill.context-fill","svg.elements.text.fill.context-fill","svg.elements.textPath.fill.context-fill","svg.elements.tspan.fill.context-fill","svg.global_attributes.stroke.context-stroke"],"description":"The context-fill and context-stroke CSS values are used with fill and stroke in SVG <marker> or <use> elements to match a color from where they appear.","description_html":"The <code>context-fill</code> and <code>context-stroke</code> CSS values are used with <code>fill</code> and <code>stroke</code> in SVG <code>&#x3C;marker></code> or <code>&#x3C;use></code> elements to match a color from where they appear.","group":"svg","name":"context-fill and context-stroke","spec":"https://svgwg.org/svg2-draft/painting.html#SpecifyingPaint","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"111","firefox_android":"111"}}},"contrast-color":{"description":"The contrast-color() CSS function picks a color that has guaranteed contrast against a specified foreground or background color.","description_html":"The <code>contrast-color()</code> CSS function picks a color that has guaranteed contrast against a specified foreground or background color.","group":"color-types","name":"contrast-color()","spec":"https://drafts.csswg.org/css-color-6/#funcdef-contrast-color","status":{"baseline":false,"support":{}}},"controls-list":{"compat_features":["api.HTMLMediaElement.controlsList","html.elements.audio.controlslist","html.elements.video.controlslist"],"description":"The controlslist attribute for <audio> or <video> hides parts of the browser's built-in controls. For example, controlslist=\"nofullscreen\" removes the button to play the video in fullscreen.","description_html":"The <code>controlslist</code> attribute for <code>&#x3C;audio></code> or <code>&#x3C;video></code> hides parts of the browser's built-in controls. For example, <code>controlslist=\"nofullscreen\"</code> removes the button to play the video in fullscreen.","group":"media-elements","name":"controlslist","spec":"https://wicg.github.io/controls-list/","status":{"baseline":false,"support":{"chrome":"58","chrome_android":"58","edge":"79"}}},"cookie-enabled":{"compat_features":["api.Navigator.cookieEnabled"],"description":"The navigator.cookieEnabled property returns a Boolean value for whether the browser accepts or ignores attempts to write cookie data.","description_html":"The <code>navigator.cookieEnabled</code> property returns a Boolean value for whether the browser accepts or ignores attempts to write cookie data.","name":"cookieEnabled","spec":"https://html.spec.whatwg.org/multipage/system-state.html#cookies","status":{"baseline":"low","baseline_low_date":"2024-09-16","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"18","safari_ios":"18"}}},"cookie-store":{"caniuse":"cookie-store-api","compat_features":["api.CookieChangeEvent","api.CookieChangeEvent.CookieChangeEvent","api.CookieChangeEvent.changed","api.CookieChangeEvent.deleted","api.CookieStore","api.CookieStore.change_event","api.CookieStore.delete","api.CookieStore.get","api.CookieStore.getAll","api.CookieStore.set","api.CookieStoreManager","api.CookieStoreManager.getSubscriptions","api.CookieStoreManager.subscribe","api.CookieStoreManager.unsubscribe","api.ExtendableCookieChangeEvent","api.ExtendableCookieChangeEvent.ExtendableCookieChangeEvent","api.ExtendableCookieChangeEvent.changed","api.ExtendableCookieChangeEvent.deleted","api.ServiceWorkerGlobalScope.cookieStore","api.ServiceWorkerGlobalScope.cookiechange_event","api.ServiceWorkerRegistration.cookies","api.Window.cookieStore"],"description":"The CookieStore interface is an asynchronous and promise-based API for managing cookies. It does not rely on document and so is available to service workers as well.","description_html":"The <code>CookieStore</code> interface is an asynchronous and promise-based API for managing cookies. It does not rely on document and so is available to service workers as well.","name":"Cookie store","spec":"https://wicg.github.io/cookie-store/","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"87","edge":"87"}}},"cookies":{"compat_features":["api.Document.cookie","http.headers.Cookie","http.headers.Set-Cookie","http.headers.Set-Cookie.HttpOnly","http.headers.Set-Cookie.Max-Age","http.headers.Set-Cookie.SameSite","http.headers.Set-Cookie.SameSite.Lax","http.headers.Set-Cookie.SameSite.Lax_default","http.headers.Set-Cookie.SameSite.None","http.headers.Set-Cookie.SameSite.Strict","http.headers.Set-Cookie.SameSite.none_requires_secure","http.headers.Set-Cookie.SameSite.schemeful","http.headers.Set-Cookie.cookie_prefixes"],"description":"The Set-Cookie HTTP header stores limited amounts of data that persist across request and response, creating shared state between the browser and server.","description_html":"The <code>Set-Cookie</code> HTTP header stores limited amounts of data that persist across request and response, creating shared state between the browser and server.","name":"Cookies","spec":"https://httpwg.org/specs/rfc6265.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"}}},"cors":{"compat_features":["http.headers.Access-Control-Allow-Credentials","http.headers.Access-Control-Allow-Headers","http.headers.Access-Control-Allow-Headers.authorization_not_covered_by_wildcard","http.headers.Access-Control-Allow-Headers.wildcard","http.headers.Access-Control-Allow-Methods","http.headers.Access-Control-Allow-Methods.wildcard","http.headers.Access-Control-Allow-Origin","http.headers.Access-Control-Expose-Headers","http.headers.Access-Control-Expose-Headers.wildcard","http.headers.Access-Control-Max-Age","http.headers.Access-Control-Request-Headers","http.headers.Access-Control-Request-Method"],"description":"Cross-Origin Resource Sharing is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources. Also known as CORS.","description_html":"Cross-Origin Resource Sharing is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources. Also known as CORS.","group":"security","name":"CORS","spec":"https://fetch.spec.whatwg.org/#http-cors-protocol","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":"4","safari_ios":"3.2"}}},"counter-reset-reversed":{"compat_features":["css.properties.counter-reset.reversed"],"description":"The reversed() CSS function for counter-reset creates a counter that counts down.","description_html":"The <code>reversed()</code> CSS function for <code>counter-reset</code> creates a counter that counts down.","group":"counters","name":"Reversed counter-reset","spec":"https://drafts.csswg.org/css-lists-3/#css-counter-reversed","status":{"baseline":false,"support":{"firefox":"96","firefox_android":"96"}}},"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":"counters","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":"counters","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"}}},"counters":{"caniuse":"css-counters","compat_features":["css.properties.counter-increment","css.properties.counter-increment.list-item","css.properties.counter-increment.none","css.properties.counter-reset","css.properties.counter-reset.list-item","css.properties.counter-reset.none","css.properties.counter-reset.reset_does_not_affect_siblings","css.types.counter","css.types.counters"],"description":"The counter-reset and counter-increment CSS properties and the counter() and counters() functions automatically number headings or ordered list items.","description_html":"The <code>counter-reset</code> and <code>counter-increment</code> CSS properties and the <code>counter()</code> and <code>counters()</code> functions automatically number headings or ordered list items.","group":"counters","name":"Counters (CSS)","spec":"https://drafts.csswg.org/css-lists-3/#auto-numbering","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":"25","safari":"3","safari_ios":"1"}}},"createimagebitmap":{"caniuse":"createimagebitmap","compat_features":["api.ImageBitmap","api.ImageBitmap.close","api.ImageBitmap.height","api.ImageBitmap.width","api.ImageBitmapRenderingContext","api.ImageBitmapRenderingContext.canvas","api.ImageBitmapRenderingContext.transferFromImageBitmap","api.createImageBitmap","api.createImageBitmap.options_colorSpaceConversion_parameter","api.createImageBitmap.options_imageOrientation_parameter","api.createImageBitmap.options_premultiplyAlpha_parameter","api.createImageBitmap.options_resizeHeight_parameter","api.createImageBitmap.options_resizeQuality_parameter","api.createImageBitmap.options_resizeWidth_parameter","api.createImageBitmap.svgimageelement_as_source_image"],"description":"The createImageBitmap() global method creates an ImageBitmap object from a source such as an image, SVG, blob, or canvas. An ImageBitmap object represents pixel data that can be drawn to a canvas with lower latency than other types, such as ImageData.","description_html":"The <code>createImageBitmap()</code> global method creates an <code>ImageBitmap</code> object from a source such as an image, SVG, blob, or canvas. An <code>ImageBitmap</code> object represents pixel data that can be drawn to a canvas with lower latency than other types, such as <code>ImageData</code>.","name":"createImageBitmap","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#imagebitmap","status":{"baseline":false,"support":{"chrome":"66","chrome_android":"66","edge":"79","safari":"17.2","safari_ios":"17.2"}}},"credential-management":{"compat_features":["api.Credential","api.Credential.id","api.Credential.isConditionalMediationAvailable_static","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"}}},"crisp-edges":{"compat_features":["css.properties.image-rendering.crisp-edges"],"description":"The image-rendering: crisp-edges CSS declaration scales images to preserve lines without blurring.","description_html":"The <code>image-rendering: crisp-edges</code> CSS declaration scales images to preserve lines without blurring.","group":"image-scaling","name":"crisp-edges","spec":"https://drafts.csswg.org/css-images-3/#the-image-rendering","status":{"baseline":false,"support":{"firefox":"65","firefox_android":"65","safari":"7","safari_ios":"7"}}},"cross-document-view-transitions":{"compat_features":["api.CSSViewTransitionRule","api.CSSViewTransitionRule.navigation","api.CSSViewTransitionRule.types","css.at-rules.view-transition"],"description":"The @view-transition CSS rule sets whether a document opts-in to transitions between documents in a multi-page application. Both the old and new document must opt-in for a transition to be triggered.","description_html":"The <code>@view-transition</code> CSS rule sets whether a document opts-in to transitions between documents in a multi-page application. Both the old and new document must opt-in for a transition to be triggered.","group":"view-transitions","name":"Cross-document view transitions","spec":"https://drafts.csswg.org/css-view-transitions-2/#cross-doc-opt-in","status":{"baseline":false,"support":{"chrome":"126","chrome_android":"126","edge":"126","safari":"18.2","safari_ios":"18.2"}}},"cross-fade":{"caniuse":"css-cross-fade","compat_features":["css.types.image.cross-fade"],"description":"The cross-fade() CSS function generates an image by mixing two images.","description_html":"The <code>cross-fade()</code> CSS function generates an image by mixing two images.","group":"images","name":"cross-fade()","spec":"https://drafts.csswg.org/css-images-4/#cross-fade-function","status":{"baseline":false,"support":{"safari":"10","safari_ios":"9.3"}}},"csp":{"caniuse":["contentsecuritypolicy","contentsecuritypolicy2"],"compat_features":["api.CSPViolationReportBody","api.CSPViolationReportBody.blockedURL","api.CSPViolationReportBody.columnNumber","api.CSPViolationReportBody.disposition","api.CSPViolationReportBody.documentURL","api.CSPViolationReportBody.effectiveDirective","api.CSPViolationReportBody.lineNumber","api.CSPViolationReportBody.originalPolicy","api.CSPViolationReportBody.referrer","api.CSPViolationReportBody.sample","api.CSPViolationReportBody.sourceFile","api.CSPViolationReportBody.statusCode","api.CSPViolationReportBody.toJSON","api.Document.securitypolicyviolation_event","api.Element.securitypolicyviolation_event","api.HTMLElement.nonce","api.HTMLIFrameElement.csp","api.SecurityPolicyViolationEvent","api.SecurityPolicyViolationEvent.SecurityPolicyViolationEvent","api.SecurityPolicyViolationEvent.blockedURI","api.SecurityPolicyViolationEvent.columnNumber","api.SecurityPolicyViolationEvent.disposition","api.SecurityPolicyViolationEvent.documentURI","api.SecurityPolicyViolationEvent.effectiveDirective","api.SecurityPolicyViolationEvent.lineNumber","api.SecurityPolicyViolationEvent.originalPolicy","api.SecurityPolicyViolationEvent.referrer","api.SecurityPolicyViolationEvent.sample","api.SecurityPolicyViolationEvent.sourceFile","api.SecurityPolicyViolationEvent.statusCode","api.SecurityPolicyViolationEvent.violatedDirective","api.SecurityPolicyViolationEvent.worker_support","api.WorkerGlobalScope.securitypolicyviolation_event","html.elements.iframe.csp","html.elements.meta.http-equiv.content-security-policy","html.global_attributes.nonce","html.global_attributes.nonce.nonce_hiding","http.headers.Content-Security-Policy","http.headers.Content-Security-Policy-Report-Only","http.headers.Content-Security-Policy.base-uri","http.headers.Content-Security-Policy.child-src","http.headers.Content-Security-Policy.connect-src","http.headers.Content-Security-Policy.default-src","http.headers.Content-Security-Policy.font-src","http.headers.Content-Security-Policy.form-action","http.headers.Content-Security-Policy.frame-ancestors","http.headers.Content-Security-Policy.frame-src","http.headers.Content-Security-Policy.img-src","http.headers.Content-Security-Policy.manifest-src","http.headers.Content-Security-Policy.media-src","http.headers.Content-Security-Policy.meta-element-support","http.headers.Content-Security-Policy.object-src","http.headers.Content-Security-Policy.report-sample","http.headers.Content-Security-Policy.report-to","http.headers.Content-Security-Policy.sandbox","http.headers.Content-Security-Policy.script-src","http.headers.Content-Security-Policy.script-src-attr","http.headers.Content-Security-Policy.script-src-elem","http.headers.Content-Security-Policy.script-src.external_scripts","http.headers.Content-Security-Policy.script-src.wasm-unsafe-eval","http.headers.Content-Security-Policy.strict-dynamic","http.headers.Content-Security-Policy.style-src","http.headers.Content-Security-Policy.style-src-attr","http.headers.Content-Security-Policy.style-src-elem","http.headers.Content-Security-Policy.unsafe-hashes","http.headers.Content-Security-Policy.worker-src","http.headers.Content-Security-Policy.worker_support"],"description":"Content Security Policy (CSP) helps to mitigate certain security threats, including cross-site scripting (XSS) and clickjacking attacks. It consists of a set of directives from a website to a browser, which instruct the browser to restrict the things that the site is allowed to do.","description_html":"Content Security Policy (CSP) helps to mitigate certain security threats, including cross-site scripting (XSS) and clickjacking attacks. It consists of a set of directives from a website to a browser, which instruct the browser to restrict the things that the site is allowed to do.","group":"security","name":"Content Security Policy (CSP)","spec":"https://w3c.github.io/webappsec-csp/","status":{"baseline":"high","baseline_high_date":"2019-02-02","baseline_low_date":"2016-08-02","support":{"chrome":"25","chrome_android":"25","edge":"14","firefox":"23","firefox_android":"23","safari":"7","safari_ios":"7"}}},"css-escape":{"compat_features":["api.CSS.escape_static"],"description":"The CSS.escape() static method escapes a string so that it can be used in a valid CSS selector.","description_html":"The <code>CSS.escape()</code> static method escapes a string so that it can be used in a valid CSS selector.","group":"cssom","name":"CSS.escape()","spec":"https://drafts.csswg.org/cssom-1/#the-css.escape()-method","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"46","chrome_android":"46","edge":"79","firefox":"31","firefox_android":"31","safari":"10.1","safari_ios":"10.3"}}},"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.","description_html":"Module <code>import … with { type: \"css\" }</code> statements load CSS modules as constructable stylesheets. Also known as CSS module scripts.","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"}}},"css-object-model":{"compat_features":["api.CSS","api.CSSConditionRule","api.CSSConditionRule.conditionText","api.CSSGroupingRule","api.CSSGroupingRule.cssRules","api.CSSGroupingRule.deleteRule","api.CSSGroupingRule.insertRule","api.CSSMarginRule","api.CSSMarginRule.name","api.CSSMarginRule.style","api.CSSMediaRule","api.CSSMediaRule.media","api.CSSPageDescriptors","api.CSSPageDescriptors.margin","api.CSSPageDescriptors.margin-bottom","api.CSSPageDescriptors.margin-left","api.CSSPageDescriptors.margin-right","api.CSSPageDescriptors.margin-top","api.CSSPageDescriptors.marginBottom","api.CSSPageDescriptors.marginLeft","api.CSSPageDescriptors.marginRight","api.CSSPageDescriptors.marginTop","api.CSSPageDescriptors.page-orientation","api.CSSPageDescriptors.pageOrientation","api.CSSPageDescriptors.size","api.CSSPageRule","api.CSSPageRule.selectorText","api.CSSPageRule.style","api.CSSPageRule.style.type_CSSPageDescriptors","api.CSSPseudoElement","api.CSSPseudoElement.element","api.CSSPseudoElement.type","api.CSSRule","api.CSSRule.cssText","api.CSSRule.parentRule","api.CSSRule.parentStyleSheet","api.CSSRuleList","api.CSSRuleList.item","api.CSSRuleList.length","api.CSSStyleDeclaration","api.CSSStyleDeclaration.@@iterator","api.CSSStyleDeclaration.cssFloat","api.CSSStyleDeclaration.cssText","api.CSSStyleDeclaration.getPropertyPriority","api.CSSStyleDeclaration.getPropertyValue","api.CSSStyleDeclaration.item","api.CSSStyleDeclaration.length","api.CSSStyleDeclaration.parentRule","api.CSSStyleDeclaration.removeProperty","api.CSSStyleDeclaration.setProperty","api.CSSStyleRule","api.CSSStyleRule.selectorText","api.CSSStyleRule.style","api.CSSStyleSheet","api.CSSStyleSheet.cssRules","api.CSSStyleSheet.deleteRule","api.CSSStyleSheet.insertRule","api.CSSStyleSheet.insertRule.index_parameter_optional","api.CSSStyleSheet.ownerRule","api.Document.styleSheets","api.HTMLElement.style","api.HTMLLinkElement.sheet","api.HTMLStyleElement.sheet","api.MediaList","api.MediaList.appendMedium","api.MediaList.deleteMedium","api.MediaList.item","api.MediaList.length","api.MediaList.mediaText","api.MediaList.toString","api.ProcessingInstruction.sheet","api.ShadowRoot.styleSheets","api.StyleSheet","api.StyleSheet.disabled","api.StyleSheet.href","api.StyleSheet.media","api.StyleSheet.ownerNode","api.StyleSheet.parentStyleSheet","api.StyleSheet.title","api.StyleSheet.type","api.StyleSheetList","api.StyleSheetList.item","api.StyleSheetList.length"],"description":"The CSS object model API reads, creates, and modifies CSS stylesheets and inline styles. Also known as CSSOM.","description_html":"The CSS object model API reads, creates, and modifies CSS stylesheets and inline styles. Also known as CSSOM.","group":"cssom","name":"CSS object model","spec":"https://drafts.csswg.org/cssom-1/#css-object-model","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"}}},"css-object-model-discouraged":{"compat_features":["api.CSSPrimitiveValue","api.CSSPrimitiveValue.getCounterValue","api.CSSPrimitiveValue.getFloatValue","api.CSSPrimitiveValue.getRGBColorValue","api.CSSPrimitiveValue.getRectValue","api.CSSPrimitiveValue.getStringValue","api.CSSPrimitiveValue.primitiveType","api.CSSPrimitiveValue.setFloatValue","api.CSSPrimitiveValue.setStringValue","api.CSSValue","api.CSSValue.cssText","api.CSSValue.cssValueType","api.CSSValueList","api.CSSValueList.item","api.CSSValueList.length","api.Counter","api.Counter.identifier","api.Counter.listStyle","api.Counter.separator","api.Rect","api.Rect.bottom","api.Rect.left","api.Rect.right","api.Rect.top"],"description":"The DOM level 2 style specification defined interfaces to access and modify CSS styles, such as CSSValue and CSSPrimitiveValue, that were later excluded from the CSS object model.","description_html":"The DOM level 2 style specification defined interfaces to access and modify CSS styles, such as <code>CSSValue</code> and <code>CSSPrimitiveValue</code>, that were later excluded from the CSS object model.","discouraged":{"according_to":["https://www.w3.org/TR/DOM-Level-2-Style/#Overview-status"],"alternatives":["css-object-model"]},"group":"cssom","name":"CSS object model (DOM level 2)","spec":"https://www.w3.org/TR/DOM-Level-2-Style/","status":{"baseline":false,"support":{"safari":"10","safari_ios":"10"}}},"css-supports":{"caniuse":"css-supports-api","compat_features":["api.CSS.supports_static","api.CSS.supports_static.optional_parens"],"description":"The CSS.supports() static method returns whether the browser supports a CSS declaration (given by two arguments, a property and value) or an @supports at-rule condition string.","description_html":"The <code>CSS.supports()</code> static method returns whether the browser supports a CSS declaration (given by two arguments, a property and value) or an <code>@supports</code> at-rule condition string.","group":"css","name":"CSS.supports()","spec":"https://drafts.csswg.org/css-conditional-3/#the-css-namespace","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"55","firefox_android":"55","safari":"11","safari_ios":"11"}}},"css-typed-om":{"compat_features":["api.CSSImageValue","api.CSSKeywordValue","api.CSSKeywordValue.CSSKeywordValue","api.CSSKeywordValue.value","api.CSSMathClamp","api.CSSMathClamp.CSSMathClamp","api.CSSMathClamp.lower","api.CSSMathClamp.upper","api.CSSMathClamp.value","api.CSSMathInvert","api.CSSMathInvert.CSSMathInvert","api.CSSMathInvert.value","api.CSSMathMax","api.CSSMathMax.CSSMathMax","api.CSSMathMax.values","api.CSSMathMin","api.CSSMathMin.CSSMathMin","api.CSSMathMin.values","api.CSSMathNegate","api.CSSMathNegate.CSSMathNegate","api.CSSMathNegate.value","api.CSSMathProduct","api.CSSMathProduct.CSSMathProduct","api.CSSMathProduct.values","api.CSSMathSum","api.CSSMathSum.CSSMathSum","api.CSSMathSum.values","api.CSSMathValue","api.CSSMathValue.operator","api.CSSMatrixComponent","api.CSSMatrixComponent.CSSMatrixComponent","api.CSSMatrixComponent.matrix","api.CSSNumericArray","api.CSSNumericArray.@@iterator","api.CSSNumericArray.entries","api.CSSNumericArray.forEach","api.CSSNumericArray.keys","api.CSSNumericArray.length","api.CSSNumericArray.values","api.CSSNumericValue","api.CSSNumericValue.add","api.CSSNumericValue.div","api.CSSNumericValue.equals","api.CSSNumericValue.max","api.CSSNumericValue.min","api.CSSNumericValue.mul","api.CSSNumericValue.parse_static","api.CSSNumericValue.sub","api.CSSNumericValue.to","api.CSSNumericValue.toSum","api.CSSNumericValue.type","api.CSSPerspective","api.CSSPerspective.CSSPerspective","api.CSSPerspective.length","api.CSSRotate","api.CSSRotate.CSSRotate","api.CSSRotate.angle","api.CSSRotate.x","api.CSSRotate.y","api.CSSRotate.z","api.CSSScale","api.CSSScale.CSSScale","api.CSSScale.x","api.CSSScale.y","api.CSSScale.z","api.CSSSkew","api.CSSSkew.CSSSkew","api.CSSSkew.ax","api.CSSSkew.ay","api.CSSSkewX","api.CSSSkewX.CSSSkewX","api.CSSSkewX.ax","api.CSSSkewY","api.CSSSkewY.CSSSkewY","api.CSSSkewY.ay","api.CSSStyleRule.styleMap","api.CSSStyleValue","api.CSSStyleValue.parseAll_static","api.CSSStyleValue.parse_static","api.CSSStyleValue.toString","api.CSSTransformComponent","api.CSSTransformComponent.is2D","api.CSSTransformComponent.toMatrix","api.CSSTransformComponent.toString","api.CSSTransformValue","api.CSSTransformValue.@@iterator","api.CSSTransformValue.CSSTransformValue","api.CSSTransformValue.entries","api.CSSTransformValue.forEach","api.CSSTransformValue.is2D","api.CSSTransformValue.keys","api.CSSTransformValue.length","api.CSSTransformValue.toMatrix","api.CSSTransformValue.values","api.CSSTranslate","api.CSSTranslate.CSSTranslate","api.CSSTranslate.x","api.CSSTranslate.y","api.CSSTranslate.z","api.CSSUnitValue","api.CSSUnitValue.CSSUnitValue","api.CSSUnitValue.unit","api.CSSUnitValue.value","api.CSSUnparsedValue","api.CSSUnparsedValue.@@iterator","api.CSSUnparsedValue.CSSUnparsedValue","api.CSSUnparsedValue.entries","api.CSSUnparsedValue.forEach","api.CSSUnparsedValue.keys","api.CSSUnparsedValue.length","api.CSSUnparsedValue.values","api.CSSVariableReferenceValue","api.CSSVariableReferenceValue.CSSVariableReferenceValue","api.CSSVariableReferenceValue.fallback","api.CSSVariableReferenceValue.variable","api.Element.computedStyleMap","api.HTMLElement.attributeStyleMap","api.StylePropertyMap","api.StylePropertyMap.append","api.StylePropertyMap.clear","api.StylePropertyMap.delete","api.StylePropertyMap.set","api.StylePropertyMapReadOnly","api.StylePropertyMapReadOnly.@@iterator","api.StylePropertyMapReadOnly.entries","api.StylePropertyMapReadOnly.forEach","api.StylePropertyMapReadOnly.get","api.StylePropertyMapReadOnly.getAll","api.StylePropertyMapReadOnly.has","api.StylePropertyMapReadOnly.keys","api.StylePropertyMapReadOnly.size","api.StylePropertyMapReadOnly.values"],"description":"The CSSStyleValue and its subclasses represent CSS values as distinct types instead of only strings. Also known as typed OM.","description_html":"The <code>CSSStyleValue</code> and its subclasses represent CSS values as distinct types instead of only strings. Also known as typed OM.","group":"cssom","name":"CSS typed object model","spec":"https://drafts.css-houdini.org/css-typed-om-1/","status":{"baseline":false,"support":{"chrome":"66","chrome_android":"66","edge":"79","safari":"16.4","safari_ios":"16.4"}}},"cubic-bezier-easing":{"compat_features":["css.types.easing-function","css.types.easing-function.cubic-bezier"],"description":"The cubic-bezier() CSS easing function interpolates along a smooth curve, creating animations and transitions with continuous changes in speed. The ease, ease-in, ease-out, and ease-in-out keyword values are presets for common Bézier curves.","description_html":"The <code>cubic-bezier()</code> CSS easing function interpolates along a smooth curve, creating animations and transitions with continuous changes in speed. The <code>ease</code>, <code>ease-in</code>, <code>ease-out</code>, and <code>ease-in-out</code> keyword values are presets for common Bézier curves.","group":["animation","transitions"],"name":"cubic-bezier() easing","spec":"https://drafts.csswg.org/css-easing-2/#cubic-bezier-easing-functions","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"16","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"6","safari_ios":"6"}}},"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"}}},"cursor":{"caniuse":["css3-cursors","css3-cursors-grab","css3-cursors-newer"],"compat_features":["css.properties.cursor","css.properties.cursor.alias","css.properties.cursor.all-scroll","css.properties.cursor.auto","css.properties.cursor.cell","css.properties.cursor.col-resize","css.properties.cursor.context-menu","css.properties.cursor.copy","css.properties.cursor.crosshair","css.properties.cursor.default","css.properties.cursor.e-resize","css.properties.cursor.ew-resize","css.properties.cursor.grab","css.properties.cursor.grabbing","css.properties.cursor.help","css.properties.cursor.move","css.properties.cursor.n-resize","css.properties.cursor.ne-resize","css.properties.cursor.nesw-resize","css.properties.cursor.no-drop","css.properties.cursor.none","css.properties.cursor.not-allowed","css.properties.cursor.ns-resize","css.properties.cursor.nw-resize","css.properties.cursor.nwse-resize","css.properties.cursor.pointer","css.properties.cursor.progress","css.properties.cursor.row-resize","css.properties.cursor.s-resize","css.properties.cursor.se-resize","css.properties.cursor.sw-resize","css.properties.cursor.text","css.properties.cursor.url","css.properties.cursor.url_positioning_syntax","css.properties.cursor.vertical-text","css.properties.cursor.w-resize","css.properties.cursor.wait","css.properties.cursor.zoom-in","css.properties.cursor.zoom-out","svg.global_attributes.cursor"],"description":"The cursor CSS property styles the pointer, allowing you to provide hints to the user on how to interact with the hovered element.","description_html":"The <code>cursor</code> CSS property styles the pointer, allowing you to provide hints to the user on how to interact with the hovered element.","group":"css","name":"Cursor styles","spec":"https://drafts.csswg.org/css-ui-4/#cursor","status":{"baseline":false,"support":{"chrome":"68","chrome_android":"68","edge":"79","firefox":"27","firefox_android":"95","safari":"11"}}},"custom-ellipses":{"compat_features":["css.properties.text-overflow.string"],"description":"The text-overflow CSS property with a string value sets the string representing clipped text.","description_html":"The <code>text-overflow</code> CSS property with a string value sets the string representing clipped text.","name":"Custom ellipses","spec":"https://drafts.csswg.org/css-overflow-4/#overflow-string","status":{"baseline":false,"support":{"firefox":"9","firefox_android":"9"}}},"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"}}},"customizable-select":{"description":"The <select> element's appearance, including the button, selected option, picker dropdown, and options, can be customized using CSS.","description_html":"The <code>&#x3C;select></code> element's appearance, including the button, selected option, picker dropdown, and options, can be customized using CSS.","group":["forms","html-elements"],"name":"Customizable <select>","spec":"https://open-ui.org/components/customizableselect/","status":{"baseline":false,"support":{}}},"customized-built-in-elements":{"compat_features":["api.CustomElementRegistry.builtin_element_support","html.global_attributes.is"],"description":"Customized built-in elements are HTML elements that extend built-in elements using the is attribute, to add new behaviors that you define.","description_html":"Customized built-in elements are HTML elements that extend built-in elements using the <code>is</code> attribute, to add new behaviors that you define.","group":"custom-elements","name":"Customized built-in elements","spec":"https://html.spec.whatwg.org/multipage/custom-elements.html#customized-built-in-element","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67","edge":"79","firefox":"63","firefox_android":"63"}}},"data":{"compat_features":["api.HTMLDataElement","api.HTMLDataElement.value","html.elements.data","html.elements.data.value"],"description":"The <data> element links a given piece of content with a machine-readable translation.","description_html":"The <code>&#x3C;data></code> element links a given piece of content with a machine-readable translation.","group":"html-elements","name":"<data>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-data-element","status":{"baseline":"high","baseline_high_date":"2020-04-24","baseline_low_date":"2017-10-24","support":{"chrome":"62","chrome_android":"62","edge":"14","firefox":"22","firefox_android":"22","safari":"10","safari_ios":"10"}}},"data-urls":{"compat_features":["http.data-url","http.data-url.css_files","http.data-url.html_files","http.data-url.js_files","http.data-url.top_level_navigation_blocked"],"description":"Data URLs are URLs that start with the data: scheme and which directly contain data rather than point to remote resources.","description_html":"Data URLs are URLs that start with the <code>data:</code> scheme and which directly contain data rather than point to remote resources.","name":"Data URLs","spec":"https://www.rfc-editor.org/rfc/rfc2397","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"≤4","chrome_android":"18","edge":"12","firefox":"≤2","firefox_android":"4","safari":"≤3.1","safari_ios":"≤2"}}},"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>&#x3C;datalist></code> element sets recommended values for an <code>&#x3C;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"}}},"dataset":{"caniuse":"dataset","compat_features":["api.DOMStringMap","api.HTMLElement.dataset","api.MathMLElement.dataset","api.SVGElement.dataset"],"description":"The dataset API attaches and accesses custom data on elements, using either the dataset property of HTMLElement or attributes prefixed with data-.","description_html":"The <code>dataset</code> API attaches and accesses custom data on elements, using either the <code>dataset</code> property of <code>HTMLElement</code> or attributes prefixed with <code>data-</code>.","name":"Dataset","spec":"https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"6","firefox_android":"6","safari":"5.1","safari_ios":"5"}}},"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.shadowRootClonable","api.HTMLTemplateElement.shadowRootDelegatesFocus","api.HTMLTemplateElement.shadowRootMode","api.HTMLTemplateElement.shadowRootSerializable","html.elements.template.shadowrootclonable","html.elements.template.shadowrootdelegatesfocus","html.elements.template.shadowrootmode","html.elements.template.shadowrootserializable"],"description":"The shadowrootmode attribute on <template> creates a shadow root without the use of JavaScript. It is a declarative alternative to the attachShadow() method.","description_html":"The <code>shadowrootmode</code> attribute on <code>&#x3C;template></code> creates a shadow root without the use of JavaScript. It is a declarative alternative to the <code>attachShadow()</code> method.","group":["html","web-components"],"name":"Declarative shadow DOM","spec":"https://html.spec.whatwg.org/multipage/scripting.html#attr-template-shadowrootmode","status":{"baseline":"low","baseline_low_date":"2024-02-20","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"123","firefox_android":"123","safari":"16.4","safari_ios":"16.4"}}},"default":{"caniuse":"css-default-pseudo","compat_features":["css.selectors.default"],"description":"The :default CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the checked attribute.","description_html":"The <code>:default</code> CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with the <code>checked</code> attribute.","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>&#x3C;del></code> element element represents a range of text that has been deleted from a document, styling text as strikethrough by default.","group":"html-elements","name":"<del>","spec":"https://html.spec.whatwg.org/multipage/edits.html#the-del-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"description-list":{"compat_features":["api.HTMLDListElement","html.elements.dd","html.elements.dl","html.elements.dt"],"description":"The <dl>, <dt>, and <dd> HTML elements represent a list of terms and their associated descriptions. Use a description list to create glossaries or similar list of key-value pairs.","description_html":"The <code>&#x3C;dl></code>, <code>&#x3C;dt></code>, and <code>&#x3C;dd></code> HTML elements represent a list of terms and their associated descriptions. Use a description list to create glossaries or similar list of key-value pairs.","group":"html","name":"Description list","spec":["https://html.spec.whatwg.org/multipage/grouping-content.html#the-dd-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-dt-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"}}},"destructuring":{"compat_features":["javascript.operators.destructuring","javascript.operators.destructuring.computed_property_names","javascript.operators.destructuring.rest_in_arrays","javascript.operators.destructuring.rest_in_objects"],"description":"The destructuring assignment syntax is a JavaScript expression that unpacks values from arrays, or properties from objects, into distinct variables.","description_html":"The destructuring assignment syntax is a JavaScript expression that unpacks values from arrays, or properties from objects, into distinct variables.","group":"javascript","name":"Destructuring","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-destructuring-assignment","https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-destructuring-binding-patterns"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"55","firefox_android":"55","safari":"11.1","safari_ios":"11.3"}}},"details":{"caniuse":"details","compat_features":["api.HTMLDetailsElement","api.HTMLDetailsElement.open","api.HTMLElement.toggle_event","api.HTMLElement.toggle_event.details_elements","html.elements.details","html.elements.details.open","html.elements.summary","html.elements.summary.display_list_item"],"description":"The <details> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <summary> element is visible.","description_html":"The <code>&#x3C;details></code> element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested <code>&#x3C;summary></code> element is visible.","group":"html-elements","name":"<details>","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#the-details-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"12","chrome_android":"18","edge":"79","firefox":"49","firefox_android":"49","safari":"6","safari_ios":"6"}}},"details-content":{"compat_features":["css.selectors.details-content"],"description":"The ::details-content pseudo-element selects the expandable content of a <details> element, excluding the <summary>.","description_html":"The <code>::details-content</code> pseudo-element selects the expandable content of a <code>&#x3C;details></code> element, excluding the <code>&#x3C;summary></code>.","group":"selectors","name":"::details-content","spec":"https://drafts.csswg.org/css-pseudo-4/#details-content-pseudo","status":{"baseline":false,"support":{"chrome":"131","chrome_android":"131","edge":"131"}}},"details-name":{"compat_features":["api.HTMLDetailsElement.name","html.elements.details.name"],"description":"Multiple <details> elements which use the same name attribute are mutually exclusive. When one member of the group is opened, all other members are closed.","description_html":"Multiple <code>&#x3C;details></code> elements which use the same <code>name</code> attribute are mutually exclusive. When one member of the group is opened, all other members are closed.","group":"html-elements","name":"Mutually exclusive <details> elements","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#attr-details-name","status":{"baseline":"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-memory":{"compat_features":["api.Navigator.deviceMemory","api.WorkerNavigator.deviceMemory","http.headers.Device-Memory"],"description":"The navigator.deviceMemory property returns the approximate amount of device memory, in gigabytes.","description_html":"The <code>navigator.deviceMemory</code> property returns the approximate amount of device memory, in gigabytes.","name":"Device memory","spec":"https://www.w3.org/TR/device-memory/","status":{"baseline":false,"support":{"chrome":"65","chrome_android":"65","edge":"79"}}},"device-orientation-events":{"caniuse":"deviceorientation","compat_features":["api.DeviceMotionEvent","api.DeviceMotionEvent.DeviceMotionEvent","api.DeviceMotionEvent.acceleration","api.DeviceMotionEvent.accelerationIncludingGravity","api.DeviceMotionEvent.interval","api.DeviceMotionEvent.requestPermission_static","api.DeviceMotionEvent.rotationRate","api.DeviceMotionEventAcceleration","api.DeviceMotionEventAcceleration.x","api.DeviceMotionEventAcceleration.y","api.DeviceMotionEventAcceleration.z","api.DeviceMotionEventRotationRate","api.DeviceMotionEventRotationRate.alpha","api.DeviceMotionEventRotationRate.beta","api.DeviceMotionEventRotationRate.gamma","api.DeviceOrientationEvent","api.DeviceOrientationEvent.DeviceOrientationEvent","api.DeviceOrientationEvent.absolute","api.DeviceOrientationEvent.alpha","api.DeviceOrientationEvent.beta","api.DeviceOrientationEvent.gamma","api.DeviceOrientationEvent.requestPermission_static","api.Window.devicemotion_event","api.Window.deviceorientation_event","api.Window.deviceorientationabsolute_event"],"description":"The DeviceMotion and DeviceOrientation events report the movement and orientation of the browser's device in physical space. Note that coordinates can differ noticeably between platforms and devices.","description_html":"The <code>DeviceMotion</code> and <code>DeviceOrientation</code> events report the movement and orientation of the browser's device in physical space. Note that coordinates can differ noticeably between platforms and devices.","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":{"chrome":"132","chrome_android":"132","edge":"132"}}},"device-queries":{"compat_features":["css.at-rules.media.device-aspect-ratio","css.at-rules.media.device-height","css.at-rules.media.device-width"],"description":"The device-aspect-ratio, device-height, and device-width media features describe physical properties of the displaying output device.","description_html":"The <code>device-aspect-ratio</code>, <code>device-height</code>, and <code>device-width</code> media features describe physical properties of the displaying output device.","discouraged":{"according_to":["https://drafts.csswg.org/mediaqueries-5/#mf-deprecated"],"alternatives":["media-queries"]},"group":"media-queries","name":"Device media queries","spec":"https://drafts.csswg.org/mediaqueries-5/#mf-deprecated","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"2","firefox_android":"4","safari":"3","safari_ios":"1"}}},"devicepixelratio":{"caniuse":"devicepixelratio","compat_features":["api.Window.devicePixelRatio"],"description":"The window.devicePixelRatio read-only property returns the ratio of the size of one CSS pixel to the vertical size of one physical pixel on the current display device.","description_html":"The <code>window.devicePixelRatio</code> read-only property returns the ratio of the size of one CSS pixel to the vertical size of one physical pixel on the current display device.","name":"devicePixelRatio","spec":"https://drafts.csswg.org/cssom-view-1/#dom-window-devicepixelratio","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"18","firefox_android":"18"}}},"dfn":{"compat_features":["html.elements.dfn"],"description":"The <dfn> element marks a term to be defined, styling text as italic by default.","description_html":"The <code>&#x3C;dfn></code> element marks a term to be defined, styling text as italic by default.","group":"html-elements","name":"<dfn>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-dfn-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"15","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"6","safari_ios":"6"}}},"dialog":{"caniuse":"dialog","compat_features":["api.HTMLDialogElement","api.HTMLDialogElement.cancel_event","api.HTMLDialogElement.close","api.HTMLDialogElement.close_event","api.HTMLDialogElement.open","api.HTMLDialogElement.returnValue","api.HTMLDialogElement.show","api.HTMLDialogElement.showModal","api.HTMLElement.beforetoggle_event.dialog_elements","api.HTMLElement.toggle_event.dialog_elements","html.elements.dialog","html.elements.dialog.open"],"description":"The <dialog> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data.","description_html":"The <code>&#x3C;dialog></code> HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data.","group":"html-elements","name":"<dialog>","spec":"https://html.spec.whatwg.org/multipage/interactive-elements.html#the-dialog-element","status":{"baseline":"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"}}},"digital-goods":{"compat_features":["api.Window.getDigitalGoodsService"],"description":"The window.getDigitalGoodsService API connects to stores or billing services for in-app products and subscriptions.","description_html":"The <code>window.getDigitalGoodsService</code> API connects to stores or billing services for in-app products and subscriptions.","name":"Digital goods","spec":"https://wicg.github.io/digital-goods/","status":{"baseline":false,"support":{"chrome_android":"101"}}},"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>&#x3C;textarea></code> and <code>&#x3C;input></code> HTML elements includes the field's writing direction as form data on submission.","name":"dirname","spec":"https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-dirname","status":{"baseline":"low","baseline_low_date":"2023-08-01","support":{"chrome":"17","chrome_android":"18","edge":"79","firefox":"116","firefox_android":"116","safari":"6","safari_ios":"6"}}},"display":{"compat_features":["css.properties.display","css.properties.display.block","css.properties.display.inline","css.properties.display.inline-block","css.properties.display.none","css.properties.display.none.option_is_hidden"],"description":"The display CSS property sets the display behavior of an element's box within its layout and sets the layout behavior for its child elements.","description_html":"The <code>display</code> CSS property sets the display behavior of an element's box within its layout and sets the layout behavior for its child elements.","group":"css","name":"Display","spec":"https://drafts.csswg.org/css-display-3/#the-display-properties","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"}}},"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-contents":{"caniuse":"css-display-contents","compat_features":["css.properties.display.contents","css.properties.display.contents.contents_unusual","css.properties.display.contents.focusable_elements"],"description":"The display: contents CSS declaration sets an element to display only its contents, not itself.","description_html":"The <code>display: contents</code> CSS declaration sets an element to display only its contents, not itself.","group":"css","name":"display: contents","spec":"https://drafts.csswg.org/css-display-3/#box-generation","status":{"baseline":false,"support":{}}},"display-flow-root":{"caniuse":"flow-root","compat_features":["css.properties.display.flow-root"],"description":"The display: flow-root CSS declaration sets an element as the root element of a new flow layout for its children, preventing margin collapse with sibling elements.","description_html":"The <code>display: flow-root</code> CSS declaration sets an element as the root element of a new flow layout for its children, preventing margin collapse with sibling elements.","group":"css","name":"display: flow-root","spec":"https://drafts.csswg.org/css-display-3/#inner-model","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"58","chrome_android":"58","edge":"79","firefox":"53","firefox_android":"53","safari":"13","safari_ios":"13"}}},"display-list-item":{"compat_features":["css.properties.display.list-item","css.properties.display.list-item.legend-support"],"description":"The display: list-item CSS declaration renders an element with the box layout of a <li> HTML element.","description_html":"The <code>display: list-item</code> CSS declaration renders an element with the box layout of a <code>&#x3C;li></code> HTML element.","group":["css","lists"],"name":"display: list-item","spec":"https://drafts.csswg.org/css-display-3/#list-items","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"}}},"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"}}},"display-ruby":{"compat_features":["css.properties.display.ruby","css.properties.display.ruby-base","css.properties.display.ruby-base-container","css.properties.display.ruby-text","css.properties.display.ruby-text-container"],"description":"The display: ruby CSS declaration renders an element with the box layout of a <ruby> HTML element. Child elements may use equivalents to <ruby> internal elements such as display: ruby-base for <rb>.","description_html":"The <code>display: ruby</code> CSS declaration renders an element with the box layout of a <code>&#x3C;ruby></code> HTML element. Child elements may use equivalents to <code>&#x3C;ruby></code> internal elements such as <code>display: ruby-base</code> for <code>&#x3C;rb></code>.","group":["css","ruby"],"name":"display: ruby","spec":"https://drafts.csswg.org/css-display-3/#layout-specific-display","status":{"baseline":false,"support":{"firefox":"38","firefox_android":"38"}}},"display-table":{"caniuse":"css-table","compat_features":["css.properties.display.inline-table","css.properties.display.table","css.properties.display.table-caption","css.properties.display.table-cell","css.properties.display.table-column","css.properties.display.table-column-group","css.properties.display.table-footer-group","css.properties.display.table-header-group","css.properties.display.table-row","css.properties.display.table-row-group"],"description":"The display: table CSS declaration renders an element with the box layout of a <table> HTML element. Child elements may use equivalents to <table> internal elements such as display: table-row for <tr>.","description_html":"The <code>display: table</code> CSS declaration renders an element with the box layout of a <code>&#x3C;table></code> HTML element. Child elements may use equivalents to <code>&#x3C;table></code> internal elements such as <code>display: table-row</code> for <code>&#x3C;tr></code>.","group":"css","name":"display: table","spec":"https://drafts.csswg.org/css-display-3/#layout-specific-display","status":{"baseline":"high","baseline_high_date":"≤2022-09-24","baseline_low_date":"≤2020-03-24","support":{"chrome":"≤80","chrome_android":"≤80","edge":"≤80","firefox":"3","firefox_android":"4","safari":"≤13.1","safari_ios":"≤13.4"}}},"div":{"compat_features":["api.HTMLDivElement","html.elements.div"],"description":"The <div> HTML element is the generic container for content.","description_html":"The <code>&#x3C;div></code> HTML element is the generic container for content.","group":"html-elements","name":"<div>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-div-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"document-caretpositionfrompoint":{"compat_features":["api.CaretPosition","api.CaretPosition.getClientRect","api.CaretPosition.offset","api.CaretPosition.offsetNode","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":"23","firefox_android":"23"}}},"document-colors":{"compat_features":["api.Document.alinkColor","api.Document.bgColor","api.Document.fgColor","api.Document.linkColor","api.Document.vlinkColor"],"description":"A document's bgColor, fgColor, alinkColor, linkColor, and vlinkColor properties get and set the background, foreground, active link, link, and visited link colors of that document.","description_html":"A document's <code>bgColor</code>, <code>fgColor</code>, <code>alinkColor</code>, <code>linkColor</code>, and <code>vlinkColor</code> properties get and set the background, foreground, active link, link, and visited link colors of that document.","discouraged":{"according_to":["https://html.spec.whatwg.org/multipage/obsolete.html"],"alternatives":["background-color","color","css-object-model","get-computed-style"]},"name":"Document colors","spec":"https://html.spec.whatwg.org/multipage/obsolete.html","status":{"baseline":false,"support":{"chrome":"64","chrome_android":"64","edge":"12","firefox":"69","firefox_android":"79","safari":"11","safari_ios":"11"}}},"document-picture-in-picture":{"compat_features":["api.DocumentPictureInPicture","api.DocumentPictureInPicture.enter_event","api.DocumentPictureInPicture.requestWindow","api.DocumentPictureInPicture.requestWindow.option_disallowReturnToOpener","api.DocumentPictureInPicture.requestWindow.option_preferInitialWindowPlacement","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":"130","edge":"130"}}},"document-write":{"compat_features":["api.Document.close","api.Document.open","api.Document.write","api.Document.write.accepts_TrustedHTML","api.Document.writeln","api.Document.writeln.accepts_TrustedHTML"],"description":"The document.open(), document.write(), document.writeln(), and document.close() methods write content to a document, possibly while that document is still loading.","description_html":"The <code>document.open()</code>, <code>document.write()</code>, <code>document.writeln()</code>, and <code>document.close()</code> methods write content to a document, possibly while that document is still loading.","discouraged":{"according_to":["https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#document.write()"],"alternatives":["dom"]},"name":"document.write()","spec":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html","status":{"baseline":false,"support":{"chrome":"45","chrome_android":"45","edge":"12","firefox":"69","firefox_android":"79","safari":"11","safari_ios":"11"}}},"dom":{"compat_features":["api.Attr","api.Attr.localName","api.Attr.name","api.Attr.namespaceURI","api.Attr.ownerElement","api.Attr.prefix","api.Attr.value","api.CDATASection","api.CharacterData","api.CharacterData.after","api.CharacterData.appendData","api.CharacterData.before","api.CharacterData.data","api.CharacterData.deleteData","api.CharacterData.insertData","api.CharacterData.length","api.CharacterData.nextElementSibling","api.CharacterData.previousElementSibling","api.CharacterData.remove","api.CharacterData.replaceData","api.CharacterData.replaceWith","api.CharacterData.substringData","api.Comment","api.Comment.Comment","api.DOMException","api.DOMException.DOMException","api.DOMException.message","api.DOMException.name","api.DOMImplementation","api.DOMImplementation.createDocument","api.DOMImplementation.createDocumentType","api.DOMImplementation.createHTMLDocument","api.DOMStringList","api.DOMStringList.contains","api.DOMStringList.item","api.DOMStringList.length","api.DOMTokenList","api.DOMTokenList.@@iterator","api.DOMTokenList.add","api.DOMTokenList.add.multiple_parameters","api.DOMTokenList.contains","api.DOMTokenList.entries","api.DOMTokenList.forEach","api.DOMTokenList.item","api.DOMTokenList.keys","api.DOMTokenList.length","api.DOMTokenList.remove","api.DOMTokenList.remove.multiple_parameters","api.DOMTokenList.remove_duplicates","api.DOMTokenList.replace","api.DOMTokenList.replace.boolean_value","api.DOMTokenList.supports","api.DOMTokenList.toString","api.DOMTokenList.toggle","api.DOMTokenList.toggle.force_parameter","api.DOMTokenList.trim_whitespace","api.DOMTokenList.value","api.DOMTokenList.values","api.Document","api.Document.DOMContentLoaded_event","api.Document.Document","api.Document.URL","api.Document.activeElement","api.Document.adoptNode","api.Document.append","api.Document.body","api.Document.characterSet","api.Document.childElementCount","api.Document.children","api.Document.compatMode","api.Document.contentType","api.Document.createAttribute","api.Document.createAttributeNS","api.Document.createCDATASection","api.Document.createComment","api.Document.createDocumentFragment","api.Document.createElement","api.Document.createElement.options_parameter","api.Document.createElementNS","api.Document.createElementNS.options_parameter","api.Document.createNodeIterator","api.Document.createProcessingInstruction","api.Document.createTextNode","api.Document.createTreeWalker","api.Document.createTreeWalker.whatToShow_filter_parameters_optional","api.Document.currentScript","api.Document.defaultView","api.Document.designMode","api.Document.dir","api.Document.doctype","api.Document.documentElement","api.Document.documentURI","api.Document.embeds","api.Document.firstElementChild","api.Document.forms","api.Document.getElementById","api.Document.getElementsByClassName","api.Document.getElementsByName","api.Document.getElementsByTagName","api.Document.getElementsByTagNameNS","api.Document.hasFocus","api.Document.head","api.Document.images","api.Document.implementation","api.Document.importNode","api.Document.lastElementChild","api.Document.lastModified","api.Document.links","api.Document.plugins","api.Document.prepend","api.Document.querySelector","api.Document.querySelectorAll","api.Document.readyState","api.Document.readystatechange_event","api.Document.referrer","api.Document.replaceChildren","api.Document.scripts","api.Document.title","api.DocumentFragment","api.DocumentFragment.DocumentFragment","api.DocumentFragment.append","api.DocumentFragment.childElementCount","api.DocumentFragment.children","api.DocumentFragment.firstElementChild","api.DocumentFragment.getElementById","api.DocumentFragment.lastElementChild","api.DocumentFragment.prepend","api.DocumentFragment.querySelector","api.DocumentFragment.querySelectorAll","api.DocumentFragment.replaceChildren","api.DocumentType","api.DocumentType.after","api.DocumentType.before","api.DocumentType.name","api.DocumentType.publicId","api.DocumentType.remove","api.DocumentType.replaceWith","api.DocumentType.systemId","api.Element","api.Element.after","api.Element.append","api.Element.attributes","api.Element.before","api.Element.childElementCount","api.Element.children","api.Element.classList","api.Element.className","api.Element.clientHeight","api.Element.clientLeft","api.Element.clientTop","api.Element.clientWidth","api.Element.closest","api.Element.currentCSSZoom","api.Element.firstElementChild","api.Element.getAttribute","api.Element.getAttributeNS","api.Element.getAttributeNames","api.Element.getAttributeNode","api.Element.getAttributeNodeNS","api.Element.getBoundingClientRect","api.Element.getClientRects","api.Element.getElementsByClassName","api.Element.getElementsByTagName","api.Element.getElementsByTagName.all_elements_selector","api.Element.getElementsByTagNameNS","api.Element.getElementsByTagNameNS.all_elements_selector","api.Element.hasAttribute","api.Element.hasAttributeNS","api.Element.hasAttributes","api.Element.id","api.Element.innerHTML","api.Element.insertAdjacentElement","api.Element.insertAdjacentHTML","api.Element.insertAdjacentText","api.Element.lastElementChild","api.Element.localName","api.Element.matches","api.Element.namespaceURI","api.Element.nextElementSibling","api.Element.outerHTML","api.Element.prefix","api.Element.prepend","api.Element.previousElementSibling","api.Element.querySelector","api.Element.querySelectorAll","api.Element.remove","api.Element.removeAttribute","api.Element.removeAttributeNS","api.Element.removeAttributeNode","api.Element.replaceChildren","api.Element.replaceWith","api.Element.setAttribute","api.Element.setAttributeNS","api.Element.setAttributeNode","api.Element.setAttributeNodeNS","api.Element.tagName","api.Element.toggleAttribute","api.HTMLCollection","api.HTMLCollection.item","api.HTMLCollection.length","api.HTMLCollection.namedItem","api.HTMLDocument","api.HTMLElement","api.HTMLElement.dir","api.HTMLElement.hidden","api.HTMLElement.innerText","api.HTMLElement.offsetHeight","api.HTMLElement.offsetLeft","api.HTMLElement.offsetParent","api.HTMLElement.offsetTop","api.HTMLElement.offsetWidth","api.HTMLElement.outerText","api.NamedNodeMap","api.NamedNodeMap.getNamedItem","api.NamedNodeMap.getNamedItemNS","api.NamedNodeMap.item","api.NamedNodeMap.length","api.NamedNodeMap.removeNamedItem","api.NamedNodeMap.removeNamedItemNS","api.NamedNodeMap.setNamedItem","api.NamedNodeMap.setNamedItemNS","api.Node","api.Node.appendChild","api.Node.baseURI","api.Node.childNodes","api.Node.cloneNode","api.Node.compareDocumentPosition","api.Node.contains","api.Node.firstChild","api.Node.hasChildNodes","api.Node.insertBefore","api.Node.isDefaultNamespace","api.Node.isEqualNode","api.Node.isSameNode","api.Node.lastChild","api.Node.lookupNamespaceURI","api.Node.lookupPrefix","api.Node.nextSibling","api.Node.nodeName","api.Node.nodeType","api.Node.nodeValue","api.Node.normalize","api.Node.ownerDocument","api.Node.parentElement","api.Node.parentNode","api.Node.previousSibling","api.Node.removeChild","api.Node.replaceChild","api.Node.textContent","api.NodeIterator","api.NodeIterator.filter","api.NodeIterator.nextNode","api.NodeIterator.pointerBeforeReferenceNode","api.NodeIterator.previousNode","api.NodeIterator.referenceNode","api.NodeIterator.root","api.NodeIterator.whatToShow","api.NodeList","api.NodeList.@@iterator","api.NodeList.entries","api.NodeList.forEach","api.NodeList.item","api.NodeList.keys","api.NodeList.length","api.NodeList.values","api.ProcessingInstruction","api.ProcessingInstruction.target","api.Text","api.Text.Text","api.Text.splitText","api.Text.wholeText","api.TreeWalker","api.TreeWalker.currentNode","api.TreeWalker.filter","api.TreeWalker.firstChild","api.TreeWalker.lastChild","api.TreeWalker.nextNode","api.TreeWalker.nextSibling","api.TreeWalker.parentNode","api.TreeWalker.previousNode","api.TreeWalker.previousSibling","api.TreeWalker.root","api.TreeWalker.whatToShow","api.Window.document","api.XMLDocument"],"description":"The DOM (Document Object Model) API represents HTML and XML documents as trees of nodes. You can use the API to inspect and modify the structure and content of a document.","description_html":"The DOM (Document Object Model) API represents HTML and XML documents as trees of nodes. You can use the API to inspect and modify the structure and content of a document.","name":"DOM","spec":"https://dom.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":"1","safari_ios":"1"}}},"dom-geometry":{"compat_features":["api.DOMMatrix","api.DOMMatrix.DOMMatrix","api.DOMMatrix.a","api.DOMMatrix.b","api.DOMMatrix.c","api.DOMMatrix.d","api.DOMMatrix.e","api.DOMMatrix.f","api.DOMMatrix.fromFloat32Array_static","api.DOMMatrix.fromFloat64Array_static","api.DOMMatrix.fromMatrix_static","api.DOMMatrix.invertSelf","api.DOMMatrix.m11","api.DOMMatrix.m12","api.DOMMatrix.m13","api.DOMMatrix.m14","api.DOMMatrix.m21","api.DOMMatrix.m22","api.DOMMatrix.m23","api.DOMMatrix.m24","api.DOMMatrix.m31","api.DOMMatrix.m32","api.DOMMatrix.m33","api.DOMMatrix.m34","api.DOMMatrix.m41","api.DOMMatrix.m42","api.DOMMatrix.m43","api.DOMMatrix.m44","api.DOMMatrix.multiplySelf","api.DOMMatrix.preMultiplySelf","api.DOMMatrix.rotateAxisAngleSelf","api.DOMMatrix.rotateFromVectorSelf","api.DOMMatrix.rotateSelf","api.DOMMatrix.scale3dSelf","api.DOMMatrix.scaleSelf","api.DOMMatrix.setMatrixValue","api.DOMMatrix.skewXSelf","api.DOMMatrix.skewYSelf","api.DOMMatrix.translateSelf","api.DOMMatrix.worker_support","api.DOMMatrixReadOnly","api.DOMMatrixReadOnly.DOMMatrixReadOnly","api.DOMMatrixReadOnly.a","api.DOMMatrixReadOnly.b","api.DOMMatrixReadOnly.c","api.DOMMatrixReadOnly.d","api.DOMMatrixReadOnly.e","api.DOMMatrixReadOnly.f","api.DOMMatrixReadOnly.flipX","api.DOMMatrixReadOnly.flipY","api.DOMMatrixReadOnly.fromFloat32Array_static","api.DOMMatrixReadOnly.fromFloat64Array_static","api.DOMMatrixReadOnly.fromMatrix_static","api.DOMMatrixReadOnly.inverse","api.DOMMatrixReadOnly.is2D","api.DOMMatrixReadOnly.isIdentity","api.DOMMatrixReadOnly.m11","api.DOMMatrixReadOnly.m12","api.DOMMatrixReadOnly.m13","api.DOMMatrixReadOnly.m14","api.DOMMatrixReadOnly.m21","api.DOMMatrixReadOnly.m22","api.DOMMatrixReadOnly.m23","api.DOMMatrixReadOnly.m24","api.DOMMatrixReadOnly.m31","api.DOMMatrixReadOnly.m32","api.DOMMatrixReadOnly.m33","api.DOMMatrixReadOnly.m34","api.DOMMatrixReadOnly.m41","api.DOMMatrixReadOnly.m42","api.DOMMatrixReadOnly.m43","api.DOMMatrixReadOnly.m44","api.DOMMatrixReadOnly.multiply","api.DOMMatrixReadOnly.rotate","api.DOMMatrixReadOnly.rotateAxisAngle","api.DOMMatrixReadOnly.rotateFromVector","api.DOMMatrixReadOnly.scale","api.DOMMatrixReadOnly.scale3d","api.DOMMatrixReadOnly.skewX","api.DOMMatrixReadOnly.skewY","api.DOMMatrixReadOnly.toFloat32Array","api.DOMMatrixReadOnly.toFloat64Array","api.DOMMatrixReadOnly.toJSON","api.DOMMatrixReadOnly.toString","api.DOMMatrixReadOnly.transformPoint","api.DOMMatrixReadOnly.translate","api.DOMMatrixReadOnly.worker_support","api.DOMPoint","api.DOMPoint.DOMPoint","api.DOMPoint.fromPoint_static","api.DOMPoint.w","api.DOMPoint.worker_support","api.DOMPoint.x","api.DOMPoint.y","api.DOMPoint.z","api.DOMPointReadOnly","api.DOMPointReadOnly.DOMPointReadOnly","api.DOMPointReadOnly.fromPoint_static","api.DOMPointReadOnly.matrixTransform","api.DOMPointReadOnly.toJSON","api.DOMPointReadOnly.w","api.DOMPointReadOnly.worker_support","api.DOMPointReadOnly.x","api.DOMPointReadOnly.y","api.DOMPointReadOnly.z","api.DOMQuad","api.DOMQuad.DOMQuad","api.DOMQuad.fromQuad_static","api.DOMQuad.fromRect_static","api.DOMQuad.getBounds","api.DOMQuad.p1","api.DOMQuad.p2","api.DOMQuad.p3","api.DOMQuad.p4","api.DOMQuad.toJSON","api.DOMQuad.worker_support","api.DOMRect","api.DOMRect.DOMRect","api.DOMRect.fromRect_static","api.DOMRect.height","api.DOMRect.width","api.DOMRect.worker_support","api.DOMRect.x","api.DOMRect.y","api.DOMRectList","api.DOMRectList.item","api.DOMRectList.length","api.DOMRectReadOnly","api.DOMRectReadOnly.DOMRectReadOnly","api.DOMRectReadOnly.bottom","api.DOMRectReadOnly.fromRect_static","api.DOMRectReadOnly.height","api.DOMRectReadOnly.left","api.DOMRectReadOnly.right","api.DOMRectReadOnly.toJSON","api.DOMRectReadOnly.top","api.DOMRectReadOnly.width","api.DOMRectReadOnly.worker_support","api.DOMRectReadOnly.x","api.DOMRectReadOnly.y"],"description":"The DOMMatrix, DOMPoint, DOMQuad and DOMRect interfaces offer a way to represent points, rectangles, quadrilaterals and transformation matrices within JavaScript. They can be used in transformations in CSS, <canvas>, and SVG.","description_html":"The <code>DOMMatrix</code>, <code>DOMPoint</code>, <code>DOMQuad</code> and <code>DOMRect</code> interfaces offer a way to represent points, rectangles, quadrilaterals and transformation matrices within JavaScript. They can be used in transformations in CSS, <code>&#x3C;canvas></code>, and SVG.","name":"DOM Geometry","spec":"https://drafts.fxtf.org/geometry-1/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"33","firefox_android":"33","safari":"11","safari_ios":"11"}}},"dominant-baseline":{"compat_features":["css.properties.dominant-baseline","css.properties.dominant-baseline.alphabetic","css.properties.dominant-baseline.auto","css.properties.dominant-baseline.central","css.properties.dominant-baseline.hanging","css.properties.dominant-baseline.ideographic","css.properties.dominant-baseline.mathematical","css.properties.dominant-baseline.middle"],"description":"The dominant-baseline CSS property sets the specific baseline used to align an elements's text and inline-level contents.","description_html":"The <code>dominant-baseline</code> CSS property sets the specific baseline used to align an elements's text and inline-level contents.","group":"text","name":"dominant-baseline","spec":"https://drafts.csswg.org/css-inline-3/#dominant-baseline-property","status":{"baseline":"high","baseline_high_date":"≤2022-09-24","baseline_low_date":"≤2020-03-24","support":{"chrome":"≤80","chrome_android":"≤80","edge":"≤80","firefox":"1","firefox_android":"4","safari":"≤13.1","safari_ios":"≤13.4"}}},"domparser":{"compat_features":["api.DOMParser","api.DOMParser.DOMParser","api.DOMParser.parseFromString","api.DOMParser.parseFromString.html","api.DOMParser.parseFromString.xml"],"description":"The DOMParser API parses XML or HTML source code from a string into a DOM Document.","description_html":"The <code>DOMParser</code> API parses XML or HTML source code from a string into a DOM Document.","group":"parsing-and-serialization","name":"DOMParser","spec":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#the-domparser-interface","status":{"baseline":"high","baseline_high_date":"2018-09-21","baseline_low_date":"2016-03-21","support":{"chrome":"31","chrome_android":"31","edge":"12","firefox":"12","firefox_android":"14","safari":"9.1","safari_ios":"9.3"}}},"download":{"caniuse":"download","compat_features":["api.HTMLAnchorElement.download","api.HTMLAreaElement.download","api.SVGAElement.download","html.elements.a.download","html.elements.area.download","svg.elements.a.download"],"description":"The download attribute for <a> elements loads the target URL as a file to be saved, instead of navigating to it. An optional attribute value sets a default file name.","description_html":"The <code>download</code> attribute for <code>&#x3C;a></code> elements loads the target URL as a file to be saved, instead of navigating to it. An optional attribute value sets a default file name.","name":"download","spec":"https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink-download","status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"14","chrome_android":"18","edge":"18","firefox":"20","firefox_android":"20","safari":"10.1","safari_ios":"13"}}},"draganddrop":{"caniuse":"dragndrop","compat_features":["api.DataTransfer","api.DataTransfer.DataTransfer","api.DataTransfer.clearData","api.DataTransfer.dropEffect","api.DataTransfer.effectAllowed","api.DataTransfer.files","api.DataTransfer.getData","api.DataTransfer.items","api.DataTransfer.setData","api.DataTransfer.setDragImage","api.DataTransfer.types","api.DataTransferItem","api.DataTransferItem.getAsFile","api.DataTransferItem.getAsFileSystemHandle","api.DataTransferItem.getAsString","api.DataTransferItem.kind","api.DataTransferItem.type","api.DataTransferItemList","api.DataTransferItemList.add","api.DataTransferItemList.clear","api.DataTransferItemList.length","api.DataTransferItemList.remove","api.DragEvent","api.DragEvent.DragEvent","api.DragEvent.dataTransfer","api.HTMLElement.drag_event","api.HTMLElement.dragend_event","api.HTMLElement.dragenter_event","api.HTMLElement.draggable","api.HTMLElement.dragleave_event","api.HTMLElement.dragover_event","api.HTMLElement.dragstart_event","api.HTMLElement.drop_event"],"description":"The Drag and Drop API lets users drag and drop elements and external files such as images onto web pages. Developers can customize which elements can become draggable, the type of feedback the draggable elements produce, and the droppable elements.","description_html":"The Drag and Drop API lets users drag and drop elements and external files such as images onto web pages. Developers can customize which elements can become draggable, the type of feedback the draggable elements produce, and the droppable elements.","name":"Drag and Drop","spec":"https://html.spec.whatwg.org/multipage/dnd.html#dnd","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":"3.2"}}},"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":"high","baseline_high_date":"2024-11-03","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"}}},"early-data":{"compat_features":["http.headers.Early-Data","http.status.425"],"description":"TLS 1.3 sessions may be resumed more quickly by sending so-called early data to servers before the TLS handshake has finished. Also known as zero round-trip time resumption or 0-RTT.","description_html":"TLS 1.3 sessions may be resumed more quickly by sending so-called early data to servers before the TLS handshake has finished. Also known as zero round-trip time resumption or 0-RTT.","name":"Early data","spec":"https://httpwg.org/specs/rfc8470.html","status":{"baseline":false,"support":{"firefox":"58","firefox_android":"58"}}},"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"}}},"element":{"caniuse":"css-element-function","compat_features":["css.properties.background-image.element","css.types.image.element"],"description":"The element() CSS function creates a live-updating image from an HTML element that can be used as an image or background image.","description_html":"The <code>element()</code> CSS function creates a live-updating image from an HTML element that can be used as an image or background image.","name":"element()","spec":"https://drafts.csswg.org/css-images-4/#element-notation","status":{"baseline":false,"support":{}}},"element-capture":{"compat_features":["api.BrowserCaptureMediaStreamTrack.restrictTo","api.RestrictionTarget","api.RestrictionTarget.fromElement_static"],"description":"The restrictTo() method on screen capture media tracks limits capture to a specific element, excluding content which might occlude the element itself, such as video conferencing controls.","description_html":"The <code>restrictTo()</code> method on screen capture media tracks limits capture to a specific element, excluding content which might occlude the element itself, such as video conferencing controls.","name":"Element capture","spec":"https://screen-share.github.io/element-capture/","status":{"baseline":false,"support":{"chrome":"132","edge":"132"}}},"element-from-point":{"caniuse":"element-from-point","compat_features":["api.Document.elementFromPoint","api.Document.elementsFromPoint"],"description":"The document.elementFromPoint() and document.elementsFromPoint() methods find the top-most element at a given point in the viewport, or all elements at a given point in the viewport, respectively.","description_html":"The <code>document.elementFromPoint()</code> and <code>document.elementsFromPoint()</code> methods find the top-most element at a given point in the viewport, or all elements at a given point in the viewport, respectively.","name":"document.elementFromPoint() and document.elementsFromPoint()","spec":["https://drafts.csswg.org/cssom-view-1/#dom-document-elementfrompoint","https://drafts.csswg.org/cssom-view-1/#dom-document-elementsfrompoint"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"43","chrome_android":"43","edge":"79","firefox":"46","firefox_android":"46","safari":"11.1","safari_ios":"11.3"}}},"element-timing":{"compat_features":["api.Element.elementTiming","api.PerformanceElementTiming","api.PerformanceElementTiming.element","api.PerformanceElementTiming.id","api.PerformanceElementTiming.identifier","api.PerformanceElementTiming.intersectionRect","api.PerformanceElementTiming.loadTime","api.PerformanceElementTiming.naturalHeight","api.PerformanceElementTiming.naturalWidth","api.PerformanceElementTiming.renderTime","api.PerformanceElementTiming.toJSON","api.PerformanceElementTiming.url"],"description":"The element performance entry and the PerformanceElementTiming API measures the time to render elements that have the elementtiming attribute.","description_html":"The <code>element</code> performance entry and the <code>PerformanceElementTiming</code> API measures the time to render elements that have the <code>elementtiming</code> attribute.","group":"performance","name":"Element timing","spec":"https://w3c.github.io/element-timing/","status":{"baseline":false,"support":{"chrome":"77","chrome_android":"77","edge":"79"}}},"em":{"compat_features":["html.elements.em"],"description":"The <em> HTML element emphasizes or stresses the content, styling text as italic by default.","description_html":"The <code>&#x3C;em></code> HTML element emphasizes or stresses the content, styling text as italic by default.","group":"html-elements","name":"<em>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-em-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"em-unit":{"compat_features":["css.types.length.em"],"description":"The em CSS length unit is a font-relative length equal to the specified font size. In an element with a 2 inch font, 1em equals 2 inches.","description_html":"The <code>em</code> CSS length unit is a font-relative length equal to the specified font size. In an element with a 2 inch font, <code>1em</code> equals 2 inches.","group":"units","name":"em unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","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"}}},"embed":{"compat_features":["api.HTMLEmbedElement","api.HTMLEmbedElement.getSVGDocument","api.HTMLEmbedElement.height","api.HTMLEmbedElement.src","api.HTMLEmbedElement.type","api.HTMLEmbedElement.width","html.elements.embed","html.elements.embed.height","html.elements.embed.src","html.elements.embed.type","html.elements.embed.width"],"description":"The <embed> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","description_html":"The <code>&#x3C;embed></code> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","group":"html-elements","name":"<embed>","spec":["https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element","https://html.spec.whatwg.org/multipage/obsolete.html#noembed"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"1","chrome_android":"18","edge":"79","firefox":"1.5","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"empty":{"compat_features":["css.selectors.empty","css.selectors.empty.matches_whitespace"],"description":"The :empty CSS pseudo-class matches elements without child elements.","description_html":"The <code>:empty</code> CSS pseudo-class matches elements without child elements.","group":"selectors","name":":empty","spec":"https://drafts.csswg.org/selectors-4/#the-empty-pseudo","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.1","safari_ios":"2"}}},"encrypted-media-extensions":{"caniuse":"eme","compat_features":["api.HTMLMediaElement.encrypted_event","api.HTMLMediaElement.mediaKeys","api.HTMLMediaElement.setMediaKeys","api.HTMLMediaElement.waitingforkey_event","api.MediaCapabilities.decodingInfo.configuration_keySystemConfiguration_parameter","api.MediaEncryptedEvent","api.MediaEncryptedEvent.MediaEncryptedEvent","api.MediaEncryptedEvent.initData","api.MediaEncryptedEvent.initDataType","api.MediaKeyMessageEvent","api.MediaKeyMessageEvent.MediaKeyMessageEvent","api.MediaKeyMessageEvent.message","api.MediaKeyMessageEvent.messageType","api.MediaKeySession","api.MediaKeySession.close","api.MediaKeySession.closed","api.MediaKeySession.expiration","api.MediaKeySession.generateRequest","api.MediaKeySession.keyStatuses","api.MediaKeySession.keystatuseschange_event","api.MediaKeySession.load","api.MediaKeySession.message_event","api.MediaKeySession.remove","api.MediaKeySession.sessionId","api.MediaKeySession.update","api.MediaKeyStatusMap","api.MediaKeyStatusMap.@@iterator","api.MediaKeyStatusMap.entries","api.MediaKeyStatusMap.forEach","api.MediaKeyStatusMap.get","api.MediaKeyStatusMap.has","api.MediaKeyStatusMap.keys","api.MediaKeyStatusMap.size","api.MediaKeyStatusMap.values","api.MediaKeySystemAccess","api.MediaKeySystemAccess.createMediaKeys","api.MediaKeySystemAccess.getConfiguration","api.MediaKeySystemAccess.keySystem","api.MediaKeys","api.MediaKeys.createSession","api.MediaKeys.getStatusForPolicy","api.MediaKeys.setServerCertificate","api.Navigator.requestMediaKeySystemAccess","html.elements.iframe.allow.encrypted-media","http.headers.Permissions-Policy.encrypted-media"],"description":"The mediaKeys property of HTMLMediaElement and the navigator.requestMediaKeySystemAccess() method control the playback of content subject to digital rights management. Also known as EME.","description_html":"The <code>mediaKeys</code> property of <code>HTMLMediaElement</code> and the <code>navigator.requestMediaKeySystemAccess()</code> method control the playback of content subject to digital rights management. Also known as EME.","name":"Encrypted media extensions","spec":"https://w3c.github.io/encrypted-media/","status":{"baseline":"high","baseline_high_date":"2021-09-25","baseline_low_date":"2019-03-25","support":{"chrome":"42","chrome_android":"42","edge":"13","firefox":"38","firefox_android":"38","safari":"12.1","safari_ios":"12.2"}}},"enterkeyhint":{"compat_features":["api.HTMLElement.enterKeyHint","html.global_attributes.enterkeyhint"],"description":"The enterkeyhint global HTML attribute sets the label for a virtual keyboard's Enter key. For example, enterkeyhint=\"search\" may label the key with a magnifying glass icon.","description_html":"The <code>enterkeyhint</code> global HTML attribute sets the label for a virtual keyboard's Enter key. For example, <code>enterkeyhint=\"search\"</code> may label the key with a magnifying glass icon.","name":"Enterkeyhint","spec":"https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-enterkeyhint-attribute","status":{"baseline":"high","baseline_high_date":"2024-05-02","baseline_low_date":"2021-11-02","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"94","firefox_android":"94","safari":"13.1","safari_ios":"13.4"}}},"error-cause":{"compat_features":["javascript.builtins.Error.Error.options_cause_parameter","javascript.builtins.Error.cause"],"description":"The cause property of errors records the specific original cause of the error, particularly for errors that have been re-thrown.","description_html":"The <code>cause</code> property of errors records the specific original cause of the error, particularly for errors that have been re-thrown.","name":"Error cause","spec":"https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-installerrorcause","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"93","chrome_android":"93","edge":"93","firefox":"91","firefox_android":"91","safari":"15","safari_ios":"15"}}},"event-timing":{"compat_features":["api.EventCounts","api.EventCounts.@@iterator","api.EventCounts.entries","api.EventCounts.forEach","api.EventCounts.get","api.EventCounts.has","api.EventCounts.keys","api.EventCounts.size","api.EventCounts.values","api.Performance.eventCounts","api.PerformanceEventTiming","api.PerformanceEventTiming.cancelable","api.PerformanceEventTiming.interactionId","api.PerformanceEventTiming.processingEnd","api.PerformanceEventTiming.processingStart","api.PerformanceEventTiming.target","api.PerformanceEventTiming.toJSON"],"description":"The event and first-input performance entries and the PerformanceEventTiming API measures the latency of user input events, such as mouse clicks or keypresses, and the latency of the first user input. First Input Delay (FID) is a common metric for perceived responsiveness.","description_html":"The <code>event</code> and <code>first-input</code> performance entries and the <code>PerformanceEventTiming</code> API measures the latency of user input events, such as mouse clicks or keypresses, and the latency of the first user input. First Input Delay (FID) is a common metric for perceived responsiveness.","group":"performance","name":"Event timing","spec":"https://w3c.github.io/event-timing/","status":{"baseline":false,"support":{"chrome":"76","chrome_android":"76","edge":"79","firefox":"89","firefox_android":"89"}}},"events":{"compat_features":["api.CustomEvent","api.CustomEvent.CustomEvent","api.CustomEvent.detail","api.CustomEvent.worker_support","api.Event","api.Event.Event","api.Event.bubbles","api.Event.cancelable","api.Event.currentTarget","api.Event.defaultPrevented","api.Event.eventPhase","api.Event.isTrusted","api.Event.preventDefault","api.Event.stopImmediatePropagation","api.Event.stopPropagation","api.Event.target","api.Event.timeStamp","api.Event.type","api.EventTarget","api.EventTarget.EventTarget","api.EventTarget.addEventListener","api.EventTarget.addEventListener.options_parameter","api.EventTarget.addEventListener.options_parameter.options_capture_parameter","api.EventTarget.addEventListener.options_parameter.options_once_parameter","api.EventTarget.addEventListener.options_parameter.options_passive_parameter","api.EventTarget.addEventListener.options_parameter.options_passive_parameter_default_true_touch","api.EventTarget.addEventListener.options_parameter.options_passive_parameter_default_true_wheel","api.EventTarget.addEventListener.options_parameter.options_signal_parameter","api.EventTarget.addEventListener.useCapture_parameter_optional","api.EventTarget.dispatchEvent","api.EventTarget.removeEventListener","api.EventTarget.removeEventListener.options_parameter","api.EventTarget.removeEventListener.useCapture_parameter_optional"],"description":"The Event API and the addEventListener() method on objects that receive events (event targets) represent and handle significant things happening on a page. Many APIs fire events for a wide range of situations relating to those APIs, such as an image loading, a user clicking, or a value changing.","description_html":"The <code>Event</code> API and the <code>addEventListener()</code> method on objects that receive events (event targets) represent and handle significant things happening on a page. Many APIs fire events for a wide range of situations relating to those APIs, such as an image loading, a user clicking, or a value changing.","name":"Events","spec":["https://html.spec.whatwg.org/multipage/indices.html#events-2","https://dom.spec.whatwg.org/#interface-customevent","https://dom.spec.whatwg.org/#interface-eventtarget"],"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"}}},"ex":{"compat_features":["css.types.length.ex"],"description":"The ex CSS length unit is a font-relative length equal to the used x-height of the first available font. X-height is often equal to the height of the lowercase x.","description_html":"The <code>ex</code> CSS length unit is a font-relative length equal to the used x-height of the first available font. X-height is often equal to the height of the lowercase x.","group":"units","name":"ex unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","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"}}},"execcommand":{"compat_features":["api.Document.execCommand","api.Document.execCommand.copy","api.Document.execCommand.cut","api.Document.execCommand.defaultParagraphSeparator","api.Document.execCommand.insertBrOnReturn","api.Document.queryCommandEnabled","api.Document.queryCommandIndeterm","api.Document.queryCommandState","api.Document.queryCommandSupported","api.Document.queryCommandValue"],"description":"The execCommand() method reads and writes from the clipboard and performs editing commands on editable text, such as changing the font name or style. Related methods check whether commands are supported, enabled, or applied.","description_html":"The <code>execCommand()</code> method reads and writes from the clipboard and performs editing commands on editable text, such as changing the font name or style. Related methods check whether commands are supported, enabled, or applied.","discouraged":{"according_to":["https://w3c.github.io/editing/docs/execCommand/"],"alternatives":["async-clipboard","contenteditable"]},"group":"clipboard","name":"execCommand()","spec":"https://w3c.github.io/editing/docs/execCommand/","status":{"baseline":false,"support":{"firefox":"69","firefox_android":"79"}}},"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"}}},"exponentiation":{"compat_features":["javascript.operators.exponentiation","javascript.operators.exponentiation_assignment"],"description":"The exponentiation (**) operator returns the result of raising the first operand to the power of the second operand.","description_html":"The exponentiation (<code>**</code>) operator returns the result of raising the first operand to the power of the second operand.","group":"javascript","name":"Exponentiation operator","snapshot":"ecmascript-2016","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-exp-operator","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"52","chrome_android":"52","edge":"14","firefox":"52","firefox_android":"52","safari":"10.1","safari_ios":"10.3"}}},"ext-blend-minmax":{"compat_features":["api.EXT_blend_minmax"],"description":"The EXT_blend_minmax extension for WebGL 1.0 contexts adds two blend equations, the minimum and maximum color components of the source and destination colors.","description_html":"The <code>EXT_blend_minmax</code> extension for WebGL 1.0 contexts adds two blend equations, the minimum and maximum color components of the source and destination colors.","group":"webgl-extensions","name":"EXT_blend_minmax WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_blend_minmax/","status":{"baseline":"high","baseline_high_date":"2020-10-30","baseline_low_date":"2018-04-30","support":{"chrome":"38","chrome_android":"38","edge":"17","firefox":"47","firefox_android":"35","safari":"9","safari_ios":"9"}}},"ext-color-buffer-float":{"compat_features":["api.EXT_color_buffer_float"],"description":"The EXT_color_buffer_float extension for WebGL 2.0 contexts adds color-renderable floating point formats to renderbufferStorage().","description_html":"The <code>EXT_color_buffer_float</code> extension for WebGL 2.0 contexts adds color-renderable floating point formats to <code>renderbufferStorage()</code>.","group":"webgl-extensions","name":"EXT_color_buffer_float WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_color_buffer_float/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"56","chrome_android":"56","edge":"79","firefox":"51","firefox_android":"51","safari":"15","safari_ios":"15"}}},"ext-color-buffer-half-float":{"compat_features":["api.EXT_color_buffer_half_float"],"description":"The EXT_color_buffer_half_float extension for WebGL 1.0 and 2.0 contexts renders 16-bit floating-point color buffers.","description_html":"The <code>EXT_color_buffer_half_float</code> extension for WebGL 1.0 and 2.0 contexts renders 16-bit floating-point color buffers.","group":"webgl-extensions","name":"EXT_color_buffer_half_float WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_color_buffer_half_float/","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"63","chrome_android":"63","edge":"17","firefox":"47","firefox_android":"36","safari":"14","safari_ios":"14"}}},"ext-disjoint-timer-query":{"compat_features":["api.EXT_disjoint_timer_query","api.EXT_disjoint_timer_query.beginQueryEXT","api.EXT_disjoint_timer_query.createQueryEXT","api.EXT_disjoint_timer_query.deleteQueryEXT","api.EXT_disjoint_timer_query.endQueryEXT","api.EXT_disjoint_timer_query.getQueryEXT","api.EXT_disjoint_timer_query.getQueryObjectEXT","api.EXT_disjoint_timer_query.isQueryEXT","api.EXT_disjoint_timer_query.queryCounterEXT","api.WebGLTimerQueryEXT"],"description":"The EXT_disjoint_timer_query extension for WebGL 1.0 contexts measures the duration of a set of GL commands, without stalling the rendering pipeline.","description_html":"The <code>EXT_disjoint_timer_query</code> extension for WebGL 1.0 contexts measures the duration of a set of GL commands, without stalling the rendering pipeline.","group":"webgl-extensions","name":"EXT_disjoint_timer_query WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_disjoint_timer_query/","status":{"baseline":false,"support":{}}},"ext-float-blend":{"compat_features":["api.EXT_float_blend"],"description":"The EXT_float_blend extension for WebGL 1.0 and 2.0 contexts adds 32-bit floating-point components to blending and draw buffers.","description_html":"The <code>EXT_float_blend</code> extension for WebGL 1.0 and 2.0 contexts adds 32-bit floating-point components to blending and draw buffers.","group":"webgl-extensions","name":"EXT_float_blend WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_float_blend/","status":{"baseline":false,"support":{"chrome":"75","chrome_android":"75","edge":"79","firefox":"67","firefox_android":"67","safari":"14.1"}}},"ext-frag-depth":{"compat_features":["api.EXT_frag_depth"],"description":"The EXT_frag_depth extension for WebGL 1.0 and 2.0 contexts adds setting the depth value of a fragment from within the fragment shader.","description_html":"The <code>EXT_frag_depth</code> extension for WebGL 1.0 and 2.0 contexts adds setting the depth value of a fragment from within the fragment shader.","group":"webgl-extensions","name":"EXT_frag_depth WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_frag_depth/","status":{"baseline":false,"support":{"chrome":"38","chrome_android":"38","firefox":"47","safari":"9","safari_ios":"15"}}},"ext-shader-texture-lod":{"compat_features":["api.EXT_shader_texture_lod"],"description":"The EXT_shader_texture_lod extension for WebGL 1.0 and 2.0 contexts adds texture functions to the OpenGL ES Shading Language such that the shader writer explicitly controls of the level of detail (LOD).","description_html":"The <code>EXT_shader_texture_lod</code> extension for WebGL 1.0 and 2.0 contexts adds texture functions to the OpenGL ES Shading Language such that the shader writer explicitly controls of the level of detail (LOD).","group":"webgl-extensions","name":"EXT_shader_texture_lod WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_shader_texture_lod/","status":{"baseline":false,"support":{"chrome":"38","chrome_android":"38","firefox":"47","safari":"8","safari_ios":"8"}}},"ext-srgb":{"compat_features":["api.EXT_sRGB"],"description":"The EXT_sRGB extension for WebGL 1.0 contexts adds sRGB support to textures and framebuffer objects.","description_html":"The <code>EXT_sRGB</code> extension for WebGL 1.0 contexts adds sRGB support to textures and framebuffer objects.","group":"webgl-extensions","name":"EXT_sRGB WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_sRGB/","status":{"baseline":"high","baseline_high_date":"2022-08-07","baseline_low_date":"2020-02-07","support":{"chrome":"40","chrome_android":"40","edge":"80","firefox":"58","firefox_android":"28","safari":"9","safari_ios":"9"}}},"ext-texture-compression-bptc":{"compat_features":["api.EXT_texture_compression_bptc"],"description":"The EXT_texture_compression_bptc extension for WebGL 1.0 and 2.0 contexts adds the BPTC compressed texture formats to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>EXT_texture_compression_bptc</code> extension for WebGL 1.0 and 2.0 contexts adds the BPTC compressed texture formats to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"EXT_texture_compression_bptc WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/","status":{"baseline":false,"support":{"chrome":"93","chrome_android":"92","edge":"93","firefox":"68","safari":"16"}}},"ext-texture-compression-rgtc":{"compat_features":["api.EXT_texture_compression_rgtc"],"description":"The EXT_texture_compression_rgtc extension for WebGL 1.0 and 2.0 contexts adds RGTC compressed texture formats. RGTC is a block-based texture compression format suited for unsigned and signed red and red-green textures. Also known as Red-Green Texture Compression.","description_html":"The <code>EXT_texture_compression_rgtc</code> extension for WebGL 1.0 and 2.0 contexts adds RGTC compressed texture formats. RGTC is a block-based texture compression format suited for unsigned and signed red and red-green textures. Also known as Red-Green Texture Compression.","group":"webgl-extensions","name":"EXT_texture_compression_rgtc WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/","status":{"baseline":false,"support":{"chrome":"93","chrome_android":"83","edge":"93","safari":"14.1"}}},"ext-texture-filter-anisotropic":{"compat_features":["api.EXT_texture_filter_anisotropic"],"description":"The EXT_texture_filter_anisotropic extension for WebGL 1.0 and 2.0 contexts adds anisotropic filtering (AF). AF improves the quality of mipmapped texture access when viewing a textured primitive at an oblique angle.","description_html":"The <code>EXT_texture_filter_anisotropic</code> extension for WebGL 1.0 and 2.0 contexts adds anisotropic filtering (AF). AF improves the quality of mipmapped texture access when viewing a textured primitive at an oblique angle.","group":"webgl-extensions","name":"EXT_texture_filter_anisotropic WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_texture_filter_anisotropic/","status":{"baseline":"high","baseline_high_date":"2018-12-07","baseline_low_date":"2016-06-07","support":{"chrome":"34","chrome_android":"34","edge":"12","firefox":"47","firefox_android":"47","safari":"9.1","safari_ios":"9.3"}}},"ext-texture-norm16":{"compat_features":["api.EXT_texture_norm16"],"description":"The EXT_texture_norm16 extension to WebGL 2.0 contexts adds 16 bit signed normalized and unsigned normalized fixed-point texture, renderbuffer, and texture buffer formats.","description_html":"The <code>EXT_texture_norm16</code> extension to WebGL 2.0 contexts adds 16 bit signed normalized and unsigned normalized fixed-point texture, renderbuffer, and texture buffer formats.","group":"webgl-extensions","name":"EXT_texture_norm16c WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/EXT_texture_norm16/","status":{"baseline":false,"support":{"chrome":"87","chrome_android":"87","edge":"87","safari":"16","safari_ios":"16"}}},"external":{"compat_features":["api.External","api.External.AddSearchProvider","api.External.IsSearchProviderInstalled"],"description":"The window.external.AddSearchProvider() and window.external.IsSearchProviderInstalled() do nothing. Historically, they added external search providers to the browser.","description_html":"The <code>window.external.AddSearchProvider()</code> and <code>window.external.IsSearchProviderInstalled()</code> do nothing. Historically, they added external search providers to the browser.","discouraged":{"according_to":["https://html.spec.whatwg.org/multipage/obsolete.html#external"]},"name":"window.external","spec":"https://html.spec.whatwg.org/multipage/obsolete.html#external","status":{"baseline":false,"support":{"chrome":"9","chrome_android":"18","edge":"12","firefox":"2","firefox_android":"4"}}},"eyedropper":{"compat_features":["api.EyeDropper","api.EyeDropper.EyeDropper","api.EyeDropper.open","api.EyeDropper.secure_context_required"],"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":"96","edge":"96"}}},"fast-seek":{"compat_features":["api.HTMLMediaElement.fastSeek"],"description":"The fastSeek() method seeks an <audio> or <video> element as fast as possible, by seeking to a keyframe instead of exactly the requested time.","description_html":"The <code>fastSeek()</code> method seeks an <code>&#x3C;audio></code> or <code>&#x3C;video></code> element as fast as possible, by seeking to a keyframe instead of exactly the requested time.","group":"media-elements","name":"fastSeek()","spec":"https://html.spec.whatwg.org/multipage/media.html#dom-media-fastseek-dev","status":{"baseline":false,"support":{"firefox":"31","firefox_android":"31","safari":"8","safari_ios":"8"}}},"fedcm":{"compat_features":["api.CredentialsContainer.get.identity_option","api.CredentialsContainer.get.identity_option.context_option","api.CredentialsContainer.get.identity_option.loginHint","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":"116","chrome_android":"116","edge":"116"}}},"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"}}},"fencedframe":{"compat_features":["api.Fence","api.Fence.getNestedConfigs","api.Fence.reportEvent","api.Fence.setReportEventDataForAutomaticBeacons","api.Fence.setReportEventDataForAutomaticBeacons.start_commit_eventType","api.FencedFrameConfig","api.FencedFrameConfig.setSharedStorageContext","api.HTMLFencedFrameElement","api.HTMLFencedFrameElement.allow","api.HTMLFencedFrameElement.config","api.HTMLFencedFrameElement.height","api.HTMLFencedFrameElement.sandbox","api.HTMLFencedFrameElement.width","api.Navigator.deprecatedReplaceInURN","api.Window.fence","html.elements.a.target.unfencedTop","html.elements.fencedframe","html.elements.fencedframe.allow","html.elements.fencedframe.height","html.elements.fencedframe.width","http.headers.Content-Security-Policy.fenced-frame-src","http.headers.Sec-Fetch-Dest.fencedframe"],"description":"The <fencedframe> element embeds another HTML page into the current page in a more secure and privacy-preserving way than <iframe> elements.","description_html":"The <code>&#x3C;fencedframe></code> element embeds another HTML page into the current page in a more secure and privacy-preserving way than <code>&#x3C;iframe></code> elements.","name":"<fencedframe>","spec":"https://wicg.github.io/fenced-frame/","status":{"baseline":false,"support":{"chrome":"120","chrome_android":"120","edge":"120"}}},"fetch":{"caniuse":"fetch","compat_features":["api.Headers","api.Headers.@@iterator","api.Headers.Headers","api.Headers.append","api.Headers.delete","api.Headers.entries","api.Headers.forEach","api.Headers.get","api.Headers.getSetCookie","api.Headers.has","api.Headers.iterate_combined_duplicates","api.Headers.iterate_lexicographically","api.Headers.keys","api.Headers.set","api.Headers.values","api.Request","api.Request.Request","api.Request.Request.cross_origin_stripped","api.Request.Request.init_keepalive_parameter","api.Request.Request.init_referrer_parameter","api.Request.Request.request_body_readablestream","api.Request.Request.response_body_readablestream","api.Request.arrayBuffer","api.Request.blob","api.Request.bodyUsed","api.Request.bytes","api.Request.cache","api.Request.cache.only-if-cached","api.Request.clone","api.Request.credentials","api.Request.credentials.default_same-origin","api.Request.destination","api.Request.duplex","api.Request.formData","api.Request.headers","api.Request.integrity","api.Request.isHistoryNavigation","api.Request.json","api.Request.keepalive","api.Request.method","api.Request.mode","api.Request.mode.navigate_mode","api.Request.redirect","api.Request.referrer","api.Request.referrerPolicy","api.Request.text","api.Request.url","api.Response","api.Response.Response","api.Response.Response.accept_readablestream","api.Response.Response.body_parameter_optional","api.Response.arrayBuffer","api.Response.blob","api.Response.body","api.Response.body.readable_byte_stream","api.Response.bodyUsed","api.Response.bytes","api.Response.clone","api.Response.error_static","api.Response.formData","api.Response.headers","api.Response.json","api.Response.json_static","api.Response.ok","api.Response.redirect_static","api.Response.redirected","api.Response.status","api.Response.statusText","api.Response.text","api.Response.type","api.Response.url","api.fetch","api.fetch.authorization_removed_cross_origin","api.fetch.blob_data_support","api.fetch.init_keepalive_parameter","api.fetch.init_referrerPolicy_parameter"],"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","http.headers.Link.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":"low","baseline_low_date":"2024-10-29","support":{"chrome":"103","chrome_android":"103","edge":"103","firefox":"132","firefox_android":"132","safari":"17.2","safari_ios":"17.2"}}},"fetch-request-streams":{"compat_features":["api.Request.body"],"description":"A fetch() request streams data to the server when a request's body property is a ReadableStream object.","description_html":"A <code>fetch()</code> request streams data to the server when a request's <code>body</code> property is a <code>ReadableStream</code> object.","name":"Fetch request streams","spec":"https://fetch.spec.whatwg.org/#concept-body-stream","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105","safari":"11.1","safari_ios":"11.3"}}},"field-sizing":{"compat_features":["css.properties.field-sizing","css.properties.field-sizing.content","css.properties.field-sizing.fixed"],"description":"The field-sizing CSS property allows form controls such as <textarea> to be sized based on their content.","description_html":"The <code>field-sizing</code> CSS property allows form controls such as <code>&#x3C;textarea></code> to be sized based on their content.","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>&#x3C;fieldset></code> and <code>&#x3C;legend></code> elements group several form control elements within a web form.","group":["forms","html-elements"],"name":"<fieldset> and <legend>","spec":["https://html.spec.whatwg.org/multipage/form-elements.html#the-fieldset-element","https://html.spec.whatwg.org/multipage/form-elements.html#the-legend-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"figure":{"compat_features":["html.elements.figcaption","html.elements.figure"],"description":"The <figure> and <figcaption> HTML elements represent an illustration, diagram, text, or other self-contained reference content, with an optional caption.","description_html":"The <code>&#x3C;figure></code> and <code>&#x3C;figcaption></code> HTML elements represent an illustration, diagram, text, or other self-contained reference content, with an optional caption.","group":"html-elements","name":"<figure> and <figcaption>","spec":["https://html.spec.whatwg.org/multipage/grouping-content.html#the-figure-element","https://html.spec.whatwg.org/multipage/grouping-content.html#the-figcaption-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"8","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"file":{"caniuse":"fileapi","compat_features":["api.Blob","api.Blob.Blob","api.Blob.arrayBuffer","api.Blob.bytes","api.Blob.size","api.Blob.slice","api.Blob.stream","api.Blob.text","api.Blob.type","api.File","api.File.File","api.File.lastModified","api.File.name","api.FileList","api.FileList.item","api.FileList.length","api.FileReader","api.FileReader.FileReader","api.FileReader.abort","api.FileReader.abort_event","api.FileReader.error","api.FileReader.error_event","api.FileReader.load_event","api.FileReader.loadend_event","api.FileReader.loadstart_event","api.FileReader.progress_event","api.FileReader.readAsArrayBuffer","api.FileReader.readAsDataURL","api.FileReader.readAsText","api.FileReader.readyState","api.FileReader.result","api.FileReader.worker_support","api.FileReaderSync","api.FileReaderSync.FileReaderSync","api.FileReaderSync.readAsArrayBuffer","api.FileReaderSync.readAsDataURL","api.FileReaderSync.readAsText","api.FileReaderSync.worker_support","api.URL.createObjectURL_static","api.URL.revokeObjectURL_static"],"description":"The File API represents and reads from file data and metadata. Typically, you get files through other APIs, such as the <input type=\"file\"> element or drag-and-drop events. You may also send file data to other APIs, such as creating images or drawing on canvases.","description_html":"The File API represents and reads from file data and metadata. Typically, you get files through other APIs, such as the <code>&#x3C;input type=\"file\"></code> element or drag-and-drop events. You may also send file data to other APIs, such as creating images or drawing on canvases.","name":"File API","spec":"https://w3c.github.io/FileAPI/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"38","chrome_android":"38","edge":"79","firefox":"28","firefox_android":"28","safari":"10.1","safari_ios":"10.3"}}},"file-selector-button":{"compat_features":["css.selectors.file-selector-button"],"description":"The ::file-selector-button CSS pseudo-element selects the button of a <input type=\"file\"> element.","description_html":"The <code>::file-selector-button</code> CSS pseudo-element selects the button of a <code>&#x3C;input type=\"file\"></code> element.","group":"selectors","name":"::file-selector-button","spec":"https://drafts.csswg.org/css-pseudo-4/#file-selector-button-pseudo","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"82","firefox_android":"82","safari":"14.1","safari_ios":"14.5"}}},"file-system-access":{"caniuse":"native-filesystem-api","compat_features":["api.FileSystemDirectoryHandle.@@asyncIterator","api.FileSystemFileHandle.createWritable","api.FileSystemHandle.queryPermission","api.FileSystemHandle.requestPermission","api.FileSystemWritableFileStream","api.FileSystemWritableFileStream.seek","api.FileSystemWritableFileStream.truncate","api.FileSystemWritableFileStream.write","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","chrome_android":"132","edge":"86"}}},"filter":{"caniuse":"css-filters","compat_features":["css.properties.filter","css.types.filter-function","css.types.filter-function.blur","css.types.filter-function.brightness","css.types.filter-function.contrast","css.types.filter-function.drop-shadow","css.types.filter-function.grayscale","css.types.filter-function.hue-rotate","css.types.filter-function.invert","css.types.filter-function.opacity","css.types.filter-function.saturate","css.types.filter-function.sepia"],"description":"The filter CSS property applies one or more graphic effects to an element. You can use filter functions, such as blur() and drop-shadow(), alone or combined to produce different effects.","description_html":"The <code>filter</code> CSS property applies one or more graphic effects to an element. You can use filter functions, such as <code>blur()</code> and <code>drop-shadow()</code>, alone or combined to produce different effects.","group":"css","name":"filter","spec":"https://drafts.fxtf.org/filter-effects-1/#propdef-filter","status":{"baseline":"high","baseline_high_date":"2019-03-07","baseline_low_date":"2016-09-07","support":{"chrome":"53","chrome_android":"53","edge":"12","firefox":"35","firefox_android":"35","safari":"9.1","safari_ios":"9.3"}}},"first-letter":{"caniuse":"css-first-letter","compat_features":["css.selectors.first-letter","css.selectors.first-letter.dutch_ij_digraph","css.selectors.first-letter.svg_text_element"],"description":"The ::first-letter CSS pseudo-element selects the first letter in an element for styling.","description_html":"The <code>::first-letter</code> CSS pseudo-element selects the first letter in an element for styling.","group":"selectors","name":"::first-letter","spec":"https://drafts.csswg.org/css-pseudo-4/#first-letter-pseudo","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"}}},"first-line":{"caniuse":"css-first-line","compat_features":["css.selectors.first-line","css.selectors.first-line.svg_text_element"],"description":"The ::first-line CSS pseudo-element selects the first line of text in an element for styling.","description_html":"The <code>::first-line</code> CSS pseudo-element selects the first line of text in an element for styling.","group":"selectors","name":"::first-line","spec":"https://drafts.csswg.org/css-pseudo-4/#first-line-pseudo","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"}}},"fit-content":{"compat_features":["css.properties.height.fit-content","css.properties.max-height.fit-content","css.properties.max-width.fit-content","css.properties.min-height.fit-content","css.properties.min-width.fit-content","css.properties.width.fit-content"],"description":"The fit-content CSS keyword expands a box as needed to fit its contents until the maximum size is reached, preserving the content's preferred aspect ratio.","description_html":"The <code>fit-content</code> CSS keyword expands a box as needed to fit its contents until the maximum size is reached, preserving the content's preferred aspect ratio.","group":"layout","name":"fit-content","spec":"https://drafts.csswg.org/css-sizing-4/#valdef-width-fit-content","status":{"baseline":"high","baseline_high_date":"2024-05-02","baseline_low_date":"2021-11-02","support":{"chrome":"46","chrome_android":"46","edge":"79","firefox":"94","firefox_android":"94","safari":"11","safari_ios":"11"}}},"fit-content-function":{"compat_features":["css.properties.block-size.fit-content_function","css.properties.height.fit-content_function","css.properties.inline-size.fit-content_function","css.properties.max-block-size.fit-content_function","css.properties.max-height.fit-content_function","css.properties.max-inline-size.fit-content_function","css.properties.max-width.fit-content_function","css.properties.min-block-size.fit-content_function","css.properties.min-height.fit-content_function","css.properties.min-inline-size.fit-content_function","css.properties.min-width.fit-content_function","css.properties.width.fit-content_function"],"description":"The fit-content() CSS function, used outside of a grid layout property, clamps a length between min-content and max-content.","description_html":"The <code>fit-content()</code> CSS function, used outside of a grid layout property, clamps a length between <code>min-content</code> and <code>max-content</code>.","group":"layout","name":"fit-content()","spec":"https://drafts.csswg.org/css-sizing-3/#funcdef-width-fit-content","status":{"baseline":false,"support":{}}},"fixed-positioning":{"compat_features":["css.properties.position.fixed"],"description":"The position: fixed CSS declaration removes an element from the normal flow and positions it relative to the viewport or page.","description_html":"The <code>position: fixed</code> CSS declaration removes an element from the normal flow and positions it relative to the viewport or page.","group":"positioning","name":"Fixed positioning","spec":"https://drafts.csswg.org/css-position-3/#abspos-insets","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"}}},"flexbox":{"caniuse":"flexbox","compat_features":["css.properties.align-content","css.properties.align-content.flex_context","css.properties.align-content.flex_context.baseline","css.properties.align-content.flex_context.first_baseline","css.properties.align-content.flex_context.last_baseline","css.properties.align-content.flex_context.safe_unsafe","css.properties.align-content.flex_context.space-evenly","css.properties.align-content.flex_context.start_end","css.properties.align-content.flex_context.stretch","css.properties.align-items","css.properties.align-items.flex_context","css.properties.align-items.flex_context.baseline","css.properties.align-items.flex_context.first_baseline","css.properties.align-items.flex_context.last_baseline","css.properties.align-items.flex_context.safe_unsafe","css.properties.align-items.flex_context.start_end","css.properties.align-self","css.properties.align-self.flex_context","css.properties.align-self.flex_context.baseline","css.properties.align-self.flex_context.first_baseline","css.properties.align-self.flex_context.last_baseline","css.properties.align-self.flex_context.safe_unsafe","css.properties.align-self.flex_context.start_end","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-basis.content","css.properties.flex-basis.fit-content","css.properties.flex-basis.max-content","css.properties.flex-basis.min-content","css.properties.flex-direction","css.properties.flex-direction.column","css.properties.flex-direction.column-reverse","css.properties.flex-direction.row","css.properties.flex-direction.row-reverse","css.properties.flex-flow","css.properties.flex-grow","css.properties.flex-grow.less_than_zero_animate","css.properties.flex-shrink","css.properties.flex-wrap","css.properties.flex-wrap.nowrap","css.properties.flex-wrap.wrap","css.properties.flex-wrap.wrap-reverse","css.properties.flex.none","css.properties.justify-content","css.properties.justify-content.flex_context","css.properties.justify-content.flex_context.left_right","css.properties.justify-content.flex_context.safe_unsafe","css.properties.justify-content.flex_context.space-evenly","css.properties.justify-content.flex_context.start_end","css.properties.justify-content.flex_context.stretch","css.properties.justify-items","css.properties.justify-items.flex_context","css.properties.order","css.properties.place-content","css.properties.place-content.flex_context","css.properties.place-items","css.properties.place-items.flex_context","css.properties.place-self","css.properties.place-self.flex_context","css.properties.position.absolutely_positioned_flex_children"],"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":"20","firefox_android":"20","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"}}},"float-clear":{"compat_features":["css.properties.clear","css.properties.clear.both","css.properties.clear.left","css.properties.clear.right","css.properties.float","css.properties.float.left","css.properties.float.none","css.properties.float.right"],"description":"The float CSS property aligns an element to either side of its container, allowing text and inline elements to flow around it. The clear CSS property sets whether an element is moved below floating elements that proceed it.","description_html":"The <code>float</code> CSS property aligns an element to either side of its container, allowing text and inline elements to flow around it. The <code>clear</code> CSS property sets whether an element is moved below floating elements that proceed it.","group":"css","name":"float and clear","spec":["https://drafts.csswg.org/css2/#propdef-float","https://drafts.csswg.org/css2/#propdef-clear"],"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"}}},"float16array":{"compat_features":["javascript.builtins.DataView.getFloat16","javascript.builtins.DataView.setFloat16","javascript.builtins.Float16Array","javascript.builtins.Float16Array.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","safari":"18.2","safari_ios":"18.2"}}},"focus-events":{"compat_features":["api.Element.blur_event","api.Element.focus_event","api.Element.focusin_event","api.Element.focusout_event","api.FocusEvent","api.FocusEvent.FocusEvent","api.FocusEvent.relatedTarget","api.HTMLElement.blur","api.HTMLElement.focus","api.HTMLElement.focus.options_focusVisible_parameter","api.HTMLElement.focus.options_preventScroll_parameter"],"description":"Focus events, such as focus and blur, fire when an element gets or loses focus.","description_html":"Focus events, such as <code>focus</code> and <code>blur</code>, fire when an element gets or loses focus.","name":"Focus events","spec":"https://w3c.github.io/uievents/#events-focusevent","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"24","firefox_android":"24","safari":"3.1","safari_ios":"2"}}},"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"}}},"focus-within":{"caniuse":"css-focus-within","compat_features":["css.selectors.focus-within"],"description":"The :focus-within CSS pseudo-class matches an element if the element or any of its children are focused.","description_html":"The <code>:focus-within</code> CSS pseudo-class matches an element if the element or any of its children are focused.","group":"selectors","name":":focus-within","spec":"https://drafts.csswg.org/selectors-4/#the-focus-within-pseudo","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"52","firefox_android":"52","safari":"10.1","safari_ios":"10.3"}}},"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.OpenType_CBDT_CBLC","css.at-rules.font-face.OpenType_SBIX","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.src.drop_invalid_item","css.at-rules.font-face.src.format_keyword","css.at-rules.font-face.src.format_variations","css.at-rules.font-face.src.tech_keyword","css.at-rules.font-face.unicode-range","css.types.url"],"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-family-ui":{"caniuse":"extended-system-fonts","compat_features":["css.properties.font-family.ui-monospace","css.properties.font-family.ui-rounded","css.properties.font-family.ui-sans-serif","css.properties.font-family.ui-serif"],"description":"The ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for the font-family CSS property use device-default user interface fonts for text.","description_html":"The <code>ui-serif</code>, <code>ui-sans-serif</code>, <code>ui-monospace</code> and <code>ui-rounded</code> values for the <code>font-family</code> CSS property use device-default user interface fonts for text.","group":"fonts","name":"UI fonts","spec":"https://drafts.csswg.org/css-fonts-4/#ui-serif-def","status":{"baseline":false,"support":{"safari":"13.1","safari_ios":"13.4"}}},"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-loading":{"caniuse":"font-loading","compat_features":["api.Document.fonts","api.FontFace","api.FontFace.FontFace","api.FontFace.display","api.FontFace.family","api.FontFace.featureSettings","api.FontFace.load","api.FontFace.loaded","api.FontFace.status","api.FontFace.stretch","api.FontFace.style","api.FontFace.unicodeRange","api.FontFace.variant","api.FontFace.variationSettings","api.FontFace.weight","api.FontFace.worker_support","api.FontFaceSet","api.FontFaceSet.@@iterator","api.FontFaceSet.add","api.FontFaceSet.check","api.FontFaceSet.clear","api.FontFaceSet.delete","api.FontFaceSet.entries","api.FontFaceSet.forEach","api.FontFaceSet.has","api.FontFaceSet.keys","api.FontFaceSet.load","api.FontFaceSet.loading_event","api.FontFaceSet.loadingdone_event","api.FontFaceSet.loadingerror_event","api.FontFaceSet.ready","api.FontFaceSet.size","api.FontFaceSet.status","api.FontFaceSet.values","api.FontFaceSet.worker_support","api.FontFaceSetLoadEvent","api.FontFaceSetLoadEvent.FontFaceSetLoadEvent","api.FontFaceSetLoadEvent.fontfaces","api.FontFaceSetLoadEvent.worker_support","api.WorkerGlobalScope.fonts"],"description":"The document.fonts API dynamically loads custom fonts and tracks when fonts are loading or ready to use.","description_html":"The <code>document.fonts</code> API dynamically loads custom fonts and tracks when fonts are loading or ready to use.","name":"Font loading","spec":"https://drafts.csswg.org/css-font-loading-3/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"35","chrome_android":"35","edge":"79","firefox":"41","firefox_android":"41","safari":"10","safari_ios":"10"}}},"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","css.properties.font.caption","css.properties.font.icon","css.properties.font.menu","css.properties.font.message-box","css.properties.font.small-caption","css.properties.font.status-bar"],"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","css.properties.font.font_stretch_support","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","css.properties.font-synthesis.position","css.properties.font-synthesis.small-caps","css.properties.font-synthesis.style","css.properties.font-synthesis.weight"],"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.css_fonts_shorthand","css.properties.font-variant.greek_accented_characters","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","css.properties.font-variant.uppercase_eszett","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","css.properties.font-variant-emoji.emoji","css.properties.font-variant-emoji.normal","css.properties.font-variant-emoji.text","css.properties.font-variant-emoji.unicode"],"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":{"chrome":"131","chrome_android":"131","edge":"131"}}},"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":false,"support":{"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.FormDataEvent","api.FormDataEvent.FormDataEvent","api.FormDataEvent.formData","api.HTMLFormControlsCollection","api.HTMLFormControlsCollection.namedItem","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","api.SubmitEvent","api.SubmitEvent.SubmitEvent","api.SubmitEvent.submitter","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>&#x3C;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"}}},"form-validity-pseudos":{"caniuse":["css-optional-pseudo","css-in-out-of-range"],"compat_features":["css.selectors.in-range","css.selectors.invalid","css.selectors.invalid.form","css.selectors.optional","css.selectors.out-of-range","css.selectors.required","css.selectors.valid","css.selectors.valid.form"],"description":"The form validity CSS pseudo-classes match <form> elements based on the constraints of a form field, such as validity (:valid, :invalid, :in-range, :out-of-range) and necessity (:optional or :required).","description_html":"The form validity CSS pseudo-classes match <code>&#x3C;form></code> elements based on the constraints of a form field, such as validity (<code>:valid</code>, <code>:invalid</code>, <code>:in-range</code>, <code>:out-of-range</code>) and necessity (<code>:optional</code> or <code>:required</code>).","group":"selectors","name":"Form validity pseudo-classes","spec":"https://drafts.csswg.org/selectors-4/#ui-validity","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"10","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"5"}}},"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.options_navigationUI_parameter","api.Element.requestFullscreen.returns_promise","api.HTMLIFrameElement.allowFullscreen","api.ShadowRoot.fullscreenElement","css.selectors.backdrop.fullscreen","css.selectors.fullscreen","css.selectors.fullscreen.all_elements","html.elements.iframe.allow.fullscreen","html.elements.iframe.allowfullscreen","http.headers.Permissions-Policy.fullscreen"],"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.builtins.Function.toString.toString_revision","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.grammar.trailing_commas.trailing_commas_in_functions","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"}}},"functions-caller-arguments":{"compat_features":["javascript.builtins.Function.arguments","javascript.builtins.Function.caller"],"description":"The caller and arguments properties of a non-strict mode Function object are the function that called it and the arguments it was called with. Not to be confused with the arguments variable in a function body's local scope.","description_html":"The <code>caller</code> and <code>arguments</code> properties of a non-strict mode <code>Function</code> object are the function that called it and the arguments it was called with. Not to be confused with the <code>arguments</code> variable in a function body's local scope.","discouraged":{"according_to":["https://tc39.es/ecma262/multipage/error-handling-and-language-extensions.html#sec-forbidden-extensions"]},"group":"javascript","name":"Function caller and arguments","spec":"https://tc39.es/ecma262/multipage/error-handling-and-language-extensions.html#sec-forbidden-extensions","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"gamepad":{"caniuse":"gamepad","compat_features":["api.Gamepad","api.Gamepad.axes","api.Gamepad.buttons","api.Gamepad.connected","api.Gamepad.id","api.Gamepad.index","api.Gamepad.mapping","api.Gamepad.secure_context_required","api.Gamepad.timestamp","api.GamepadButton","api.GamepadButton.pressed","api.GamepadButton.secure_context_required","api.GamepadButton.value","api.GamepadEvent","api.GamepadEvent.GamepadEvent","api.GamepadEvent.gamepad","api.GamepadEvent.secure_context_required","api.Navigator.getGamepads","api.Navigator.getGamepads.secure_context_required","api.Window.gamepadconnected_event","api.Window.gamepaddisconnected_event","html.elements.iframe.allow.gamepad"],"description":"The navigator.getGamepads() API accesses and responds to signals from game controllers.","description_html":"The <code>navigator.getGamepads()</code> API accesses and responds to signals from game controllers.","group":"gamepad","name":"Gamepad","spec":"https://w3c.github.io/gamepad/","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"35","chrome_android":"35","edge":"12","firefox":"29","firefox_android":"32","safari":"10.1","safari_ios":"10.3"}}},"gamepad-haptics":{"compat_features":["api.Gamepad.hapticActuators","api.Gamepad.vibrationActuator","api.GamepadHapticActuator","api.GamepadHapticActuator.effects","api.GamepadHapticActuator.effects.type_trigger-rumble","api.GamepadHapticActuator.playEffect","api.GamepadHapticActuator.playEffect.params_leftTrigger_parameter","api.GamepadHapticActuator.playEffect.params_rightTrigger_parameter","api.GamepadHapticActuator.playEffect.type_trigger-rumble","api.GamepadHapticActuator.pulse","api.GamepadHapticActuator.reset","api.GamepadHapticActuator.secure_context_required"],"description":"The gamepad.vibrationActuator property represents a gamepad's haptics hardware, which allows you to control the vibration motors in a gamepad.","description_html":"The <code>gamepad.vibrationActuator</code> property represents a gamepad's haptics hardware, which allows you to control the vibration motors in a gamepad.","group":"gamepad","name":"Gamepad haptic feedback","spec":"https://w3c.github.io/gamepad/#gamepadhapticactuator-interface","status":{"baseline":false,"support":{"chrome":"68","chrome_android":"68","edge":"79","safari":"16.4"}}},"gamepad-touch":{"compat_features":["api.GamepadButton.touched"],"description":"The touched property of a GamepadButton object indicates whether a button capable of detecting touch is currently touched.","description_html":"The <code>touched</code> property of a <code>GamepadButton</code> object indicates whether a button capable of detecting touch is currently touched.","group":"gamepad","name":"Gamepad touch buttons","spec":"https://w3c.github.io/gamepad/#dom-gamepadbutton-touched","status":{"baseline":false,"support":{"chrome":"73","chrome_android":"73","edge":"15","firefox":"55","firefox_android":"55"}}},"gamepad-vr":{"compat_features":["api.Gamepad.hand","api.Gamepad.pose","api.GamepadPose","api.GamepadPose.angularAcceleration","api.GamepadPose.angularVelocity","api.GamepadPose.hasOrientation","api.GamepadPose.hasPosition","api.GamepadPose.linearAcceleration","api.GamepadPose.linearVelocity","api.GamepadPose.orientation","api.GamepadPose.position","api.GamepadPose.secure_context_required"],"description":"The hand and pose properties of a Gamepad object represent the position in space and the hand that WebVR controllers are held in.","description_html":"The <code>hand</code> and <code>pose</code> properties of a <code>Gamepad</code> object represent the position in space and the hand that WebVR controllers are held in.","group":"gamepad","name":"Gamepad VR hands and poses","spec":"https://w3c.github.io/gamepad/extensions.html","status":{"baseline":false,"support":{"firefox":"55","firefox_android":"55"}}},"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","api.Permissions.permission_geolocation","html.elements.iframe.allow.geolocation","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"}}},"get-computed-style":{"caniuse":"getcomputedstyle","compat_features":["api.Window.getComputedStyle","api.Window.getComputedStyle.pseudo_element_support"],"description":"The getComputedStyle() global method returns an CSSStyleDeclaration object that represents all CSS declarations applied to a given element.","description_html":"The <code>getComputedStyle()</code> global method returns an <code>CSSStyleDeclaration</code> object that represents all CSS declarations applied to a given element.","group":"cssom","name":"getComputedStyle()","spec":"https://drafts.csswg.org/cssom-1/#extensions-to-the-window-interface","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"11","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"gethtml":{"compat_features":["api.Element.getHTML","api.ShadowRoot.getHTML"],"description":"The getHTML() method of Element and ShadowRoot objects serializes an element's DOM to an HTML string.","description_html":"The <code>getHTML()</code> method of <code>Element</code> and <code>ShadowRoot</code> objects serializes an element's DOM to an HTML string.","name":"getHTML()","spec":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#html-serialization-methods","status":{"baseline":"low","baseline_low_date":"2024-09-16","support":{"chrome":"125","chrome_android":"125","edge":"125","firefox":"128","firefox_android":"128","safari":"18","safari_ios":"18"}}},"globalthis":{"compat_features":["javascript.builtins.globalThis"],"description":"The globalThis property accesses the global this value (and hence the global object itself) across environments.","description_html":"The <code>globalThis</code> property accesses the global <code>this</code> value (and hence the global object itself) across environments.","group":"javascript","name":"globalThis","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/global-object.html#sec-globalthis","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"71","chrome_android":"71","edge":"79","firefox":"65","firefox_android":"65","safari":"12.1","safari_ios":"12.2"}}},"glyph-orientation-vertical":{"compat_features":["css.properties.glyph-orientation-vertical"],"description":"The glyph-orientation-vertical CSS property sets the orientation of glyphs in text rendered in a vertical writing mode.","description_html":"The <code>glyph-orientation-vertical</code> CSS property sets the orientation of glyphs in text rendered in a vertical writing mode.","discouraged":{"according_to":["https://drafts.csswg.org/css-writing-modes-4/#glyph-orientation"],"alternatives":["text-orientation"]},"group":"css","name":"glyph-orientation-vertical","spec":"https://drafts.csswg.org/css-writing-modes-4/#glyph-orientation","status":{"baseline":false,"support":{"safari":"≤13.1","safari_ios":"≤13.4"}}},"gpc":{"compat_features":["api.Navigator.globalPrivacyControl","api.WorkerNavigator.globalPrivacyControl","http.headers.Sec-GPC"],"description":"The Sec-GPC request header indicates that the user does not consent to a website or service selling or sharing their personal information with third parties.","description_html":"The <code>Sec-GPC</code> request header indicates that the user does not consent to a website or service selling or sharing their personal information with third parties.","name":"Global privacy control","spec":"https://w3c.github.io/gpc/","status":{"baseline":false,"support":{"firefox":"120"}}},"gradient-interpolation":{"compat_features":["css.types.gradient.conic-gradient.hue_interpolation_method","css.types.gradient.conic-gradient.interpolation_color_space","css.types.gradient.linear-gradient.hue_interpolation_method","css.types.gradient.linear-gradient.interpolation_color_space","css.types.gradient.radial-gradient.hue_interpolation_method","css.types.gradient.radial-gradient.interpolation_color_space","css.types.gradient.repeating-conic-gradient.hue_interpolation_method","css.types.gradient.repeating-conic-gradient.interpolation_color_space","css.types.gradient.repeating-linear-gradient.hue_interpolation_method","css.types.gradient.repeating-linear-gradient.interpolation_color_space","css.types.gradient.repeating-radial-gradient.hue_interpolation_method","css.types.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"}}},"gradients":{"compat_features":["css.properties.background-image.gradients","css.types.gradient","css.types.gradient.linear-gradient","css.types.gradient.linear-gradient.doubleposition","css.types.gradient.linear-gradient.interpolation_hints","css.types.gradient.linear-gradient.premultiplied_gradients","css.types.gradient.linear-gradient.to","css.types.gradient.linear-gradient.unitless_0_angle","css.types.gradient.radial-gradient","css.types.gradient.radial-gradient.at","css.types.gradient.radial-gradient.doubleposition","css.types.gradient.radial-gradient.interpolation_hints","css.types.gradient.radial-gradient.premultiplied_gradients","css.types.gradient.repeating-linear-gradient","css.types.gradient.repeating-linear-gradient.doubleposition","css.types.gradient.repeating-linear-gradient.interpolation_hints","css.types.gradient.repeating-linear-gradient.to","css.types.gradient.repeating-linear-gradient.unitless_0_angle","css.types.gradient.repeating-radial-gradient","css.types.gradient.repeating-radial-gradient.at","css.types.gradient.repeating-radial-gradient.doubleposition","css.types.gradient.repeating-radial-gradient.interpolation_hints","css.types.image"],"description":"The linear-gradient() and radial-gradient() CSS functions and their repeating counterparts create backgrounds that progress smoothly between multiple colors.","description_html":"The <code>linear-gradient()</code> and <code>radial-gradient()</code> CSS functions and their repeating counterparts create backgrounds that progress smoothly between multiple colors.","group":"gradients","name":"Gradients","spec":"https://drafts.csswg.org/css-images-3/#gradients","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"3.6","firefox_android":"4","safari":"7","safari_ios":"7"}}},"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","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-flow.column","css.properties.grid-auto-flow.dense","css.properties.grid-auto-flow.row","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-areas.none","css.properties.grid-template-columns","css.properties.grid-template-columns.auto","css.properties.grid-template-columns.fit-content","css.properties.grid-template-columns.max-content","css.properties.grid-template-columns.min-content","css.properties.grid-template-columns.minmax","css.properties.grid-template-columns.none","css.properties.grid-template-columns.repeat","css.properties.grid-template-rows","css.properties.grid-template-rows.auto","css.properties.grid-template-rows.fit-content","css.properties.grid-template-rows.max-content","css.properties.grid-template-rows.min-content","css.properties.grid-template-rows.minmax","css.properties.grid-template-rows.none","css.properties.grid-template-rows.repeat","css.properties.grid-template.none","css.properties.justify-content.grid_context","css.properties.justify-items.grid_context","css.properties.justify-self","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","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":"2020-04-17","baseline_low_date":"2017-10-17","support":{"chrome":"57","chrome_android":"57","edge":"16","firefox":"52","firefox_android":"52","safari":"10.1","safari_ios":"10.3"}}},"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","html.elements.iframe.allow.gyroscope","http.headers.Permissions-Policy.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"}}},"hanging-punctuation":{"compat_features":["css.properties.hanging-punctuation","css.properties.hanging-punctuation.allow-end","css.properties.hanging-punctuation.first","css.properties.hanging-punctuation.last","css.properties.hanging-punctuation.none"],"description":"The hanging-punctuation CSS property puts punctuation characters outside of the box to align the text with the rest of the document.","description_html":"The <code>hanging-punctuation</code> CSS property puts punctuation characters outside of the box to align the text with the rest of the document.","name":"Hanging punctuation","spec":"https://drafts.csswg.org/css-text-4/#hanging-punctuation-property","status":{"baseline":false,"support":{}}},"hardware-concurrency":{"caniuse":"hardwareconcurrency","compat_features":["api.Navigator.hardwareConcurrency","api.WorkerNavigator.hardwareConcurrency"],"description":"The navigator.hardwareConcurrency read-only property returns the number of logical processors available to run threads on the user's computer.","description_html":"The <code>navigator.hardwareConcurrency</code> read-only property returns the number of logical processors available to run threads on the user's computer.","name":"hardwareConcurrency","spec":"https://html.spec.whatwg.org/multipage/workers.html#navigator.hardwareconcurrency","status":{"baseline":"high","baseline_high_date":"2024-09-14","baseline_low_date":"2022-03-14","support":{"chrome":"37","chrome_android":"37","edge":"15","firefox":"48","firefox_android":"48","safari":"15.4","safari_ios":"15.4"}}},"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"}}},"has-slotted":{"compat_features":["css.selectors.has-slotted"],"description":"The :has-slotted CSS pseudo-class matches <slot> elements where the fallback content is not shown. The pseudo-class matches any slotted content, including white space, text nodes, or elements.","description_html":"The <code>:has-slotted</code> CSS pseudo-class matches <code>&#x3C;slot></code> elements where the fallback content is not shown. The pseudo-class matches any slotted content, including white space, text nodes, or elements.","group":["selectors","web-components"],"name":":has-slotted","spec":"https://drafts.csswg.org/css-scoping-1/#the-has-slotted-pseudo","status":{"baseline":false,"support":{}}},"hashbang-comments":{"compat_features":["javascript.grammar.hashbang_comments"],"description":"The #! comment at the absolute start of a script or module is treated as a normal comment and is ignored by the JavaScript engine.","description_html":"The <code>#!</code> comment at the absolute start of a script or module is treated as a normal comment and is ignored by the JavaScript engine.","group":"javascript","name":"Hashbang comments","snapshot":"ecmascript-2023","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#sec-hashbang","status":{"baseline":"high","baseline_high_date":"2022-09-24","baseline_low_date":"2020-03-24","support":{"chrome":"74","chrome_android":"74","edge":"79","firefox":"67","firefox_android":"67","safari":"13.1","safari_ios":"13.4"}}},"hashchange":{"caniuse":"hashchange","compat_features":["api.HashChangeEvent","api.HashChangeEvent.HashChangeEvent","api.HashChangeEvent.newURL","api.HashChangeEvent.oldURL","api.Window.hashchange_event"],"description":"The hashchange event fires when the URL fragment identifier (the part of the URL starting with #) of the current page has changed.","description_html":"The <code>hashchange</code> event fires when the URL fragment identifier (the part of the URL starting with <code>#</code>) of the current page has changed.","name":"hashchange","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-hashchangeevent-interface","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"16","chrome_android":"18","edge":"12","firefox":"11","firefox_android":"14","safari":"6","safari_ios":"6"}}},"head":{"compat_features":["api.HTMLHeadElement","html.elements.head"],"description":"The <head> element contains machine-readable information (metadata) about the document, such as the title, <script> and <style> elements, and <meta> elements.","description_html":"The <code>&#x3C;head></code> element contains machine-readable information (metadata) about the document, such as the title, <code>&#x3C;script></code> and <code>&#x3C;style></code> elements, and <code>&#x3C;meta></code> elements.","group":"html-elements","name":"<head>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-head-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"header-footer":{"compat_features":["html.elements.footer","html.elements.header"],"description":"The <header> and <footer> HTML elements represent content that precedes and follows the main page content, respectively.","description_html":"The <code>&#x3C;header></code> and <code>&#x3C;footer></code> HTML elements represent content that precedes and follows the main page content, respectively.","group":"html-elements","name":"<header> and <footer>","spec":["https://html.spec.whatwg.org/multipage/sections.html#the-header-element","https://html.spec.whatwg.org/multipage/sections.html#the-footer-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"headings":{"compat_features":["api.HTMLHeadingElement","html.elements.h1","html.elements.h2","html.elements.h3","html.elements.h4","html.elements.h5","html.elements.h6"],"description":"The <h1> through <h6> HTML elements represent six levels of section headings, in order of decreasing importance.","description_html":"The <code>&#x3C;h1></code> through <code>&#x3C;h6></code> HTML elements represent six levels of section headings, in order of decreasing importance.","group":"html-elements","name":"<h1> through <h6>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"hgroup":{"compat_features":["html.elements.hgroup"],"description":"The <hgroup> element represents a heading and related content.","description_html":"The <code>&#x3C;hgroup></code> element represents a heading and related content.","group":"html-elements","name":"<hgroup>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-hgroup-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"hidden-until-found":{"compat_features":["api.Element.beforematch_event","html.global_attributes.hidden.until-found"],"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"}}},"history":{"caniuse":"history","compat_features":["api.History","api.History.back","api.History.forward","api.History.go","api.History.length","api.History.pushState","api.History.replaceState","api.History.scrollRestoration","api.History.state","api.PopStateEvent","api.PopStateEvent.PopStateEvent","api.PopStateEvent.hasUAVisualTransition","api.PopStateEvent.state","api.Window.history","api.Window.popstate_event"],"description":"The window.history API manipulates the browser session history, from navigations to state management, in the tab or frame that the current page is loaded in.","description_html":"The <code>window.history</code> API manipulates the browser session history, from navigations to state management, in the tab or frame that the current page is loaded in.","name":"History","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-history-interface","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"}}},"host":{"compat_features":["css.selectors.host","css.selectors.hostfunction"],"description":"The :host CSS pseudo-class selects the containing element of the shadow tree in which it is used. The :host() CSS pseudo-class selects the that element only if it matches the provided selector.","description_html":"The <code>:host</code> CSS pseudo-class selects the containing element of the shadow tree in which it is used. The <code>:host()</code> CSS pseudo-class selects the that element only if it matches the provided selector.","group":["selectors","web-components"],"name":"Host","spec":"https://drafts.csswg.org/css-scoping-1/#host-selector","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","safari_ios":"10"}}},"host-context":{"compat_features":["css.selectors.host-context"],"description":"The :host-context() CSS pseudo-class selects the containing element of the shadow tree in which it is used if that element or an ancestor matches the provided selector.","description_html":"The <code>:host-context()</code> CSS pseudo-class selects the containing element of the shadow tree in which it is used if that element or an ancestor matches the provided selector.","group":["selectors","web-components"],"name":"host-context","spec":"https://drafts.csswg.org/css-scoping-1/#host-selector","status":{"baseline":false,"support":{"chrome":"54","chrome_android":"54","edge":"79"}}},"hr":{"compat_features":["api.HTMLHRElement","html.elements.hr"],"description":"The <hr> element represents a thematic break between paragraphs, often shown as a horizontal rule.","description_html":"The <code>&#x3C;hr></code> element represents a thematic break between paragraphs, often shown as a horizontal rule.","group":"html-elements","name":"<hr>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-hr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"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"}}},"hsts":{"compat_features":["http.headers.Strict-Transport-Security"],"description":"The Strict-Transport-Security HTTP response header informs browsers that the site should only be accessed using HTTPS, and that any future attempts to access it using HTTP should automatically be converted to HTTPS. Also known as HSTS.","description_html":"The <code>Strict-Transport-Security</code> HTTP response header informs browsers that the site should only be accessed using HTTPS, and that any future attempts to access it using HTTP should automatically be converted to HTTPS. Also known as HSTS.","group":"security","name":"HTTP Strict Transport Security","spec":"https://www.rfc-editor.org/rfc/rfc6797","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":"7","safari_ios":"7"}}},"html":{"compat_features":["api.HTMLHtmlElement","html.elements.html"],"description":"The <html> element represents the top-level of an HTML document and is referred to as the root element.","description_html":"The <code>&#x3C;html></code> element represents the top-level of an HTML document and is referred to as the root element.","group":"html-elements","name":"<html>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-html-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"html-media-capture":{"caniuse":"html-media-capture","compat_features":["api.HTMLInputElement.capture","html.elements.input.capture"],"description":"The capture HTML attribute for <input type=\"file\"> elements allows the user to capture media using the device's camera or microphone.","description_html":"The <code>capture</code> HTML attribute for <code>&#x3C;input type=\"file\"></code> elements allows the user to capture media using the device's camera or microphone.","name":"HTML media capture","spec":"https://w3c.github.io/html-media-capture/","status":{"baseline":false,"support":{"chrome_android":"25","firefox_android":"79","safari_ios":"10"}}},"http-authentication":{"compat_features":["http.headers.Authorization","http.headers.Authorization.Basic","http.headers.Authorization.Digest","http.headers.Authorization.Digest.SHA-256","http.headers.Authorization.Digest.md5","http.headers.Authorization.NTLM","http.headers.Authorization.Negotiate","http.headers.Authorization.authorization_removed_cross_origin","http.headers.WWW-Authenticate","http.headers.WWW-Authenticate.Basic","http.headers.WWW-Authenticate.Digest","http.headers.WWW-Authenticate.Digest.SHA-256","http.headers.WWW-Authenticate.Digest.md5","http.headers.WWW-Authenticate.NTLM","http.headers.WWW-Authenticate.Negotiate"],"description":"The Authorization and WWW-Authenticate headers authenticate a user with a server.","description_html":"The <code>Authorization</code> and <code>WWW-Authenticate</code> headers authenticate a user with a server.","name":"HTTP authentication","spec":["https://httpwg.org/specs/rfc9110.html#authentication","https://httpwg.org/specs/rfc7616.html","https://www.rfc-editor.org/rfc/rfc4120"],"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"}}},"http11":{"compat_features":["http.headers.Accept","http.headers.Accept-Encoding","http.headers.Accept-Language","http.headers.Accept-Ranges","http.headers.Age","http.headers.Cache-Control","http.headers.Connection","http.headers.Content-Disposition","http.headers.Content-Encoding","http.headers.Content-Language","http.headers.Content-Length","http.headers.Content-Location","http.headers.Content-Range","http.headers.Content-Type","http.headers.Date","http.headers.ETag","http.headers.Expires","http.headers.From","http.headers.Host","http.headers.If-Match","http.headers.If-Modified-Since","http.headers.If-None-Match","http.headers.If-Range","http.headers.If-Unmodified-Since","http.headers.Keep-Alive","http.headers.Last-Modified","http.headers.Location","http.headers.Origin","http.headers.Proxy-Authenticate","http.headers.Range","http.headers.Referer","http.headers.Server","http.headers.TE","http.headers.Trailer","http.headers.Transfer-Encoding","http.headers.User-Agent","http.headers.Vary","http.headers.Via","http.methods.CONNECT","http.methods.DELETE","http.methods.GET","http.methods.HEAD","http.methods.OPTIONS","http.methods.POST","http.methods.PUT"],"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":"low","baseline_low_date":"2024-09-16","support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"88","firefox_android":"88","safari":"18","safari_ios":"18"}}},"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":"high","baseline_high_date":"2024-10-28","baseline_low_date":"2022-04-28","support":{"chrome":"101","chrome_android":"101","edge":"101","firefox":"96","firefox_android":"96","safari":"15","safari_ios":"15"}}},"hyphenate-character":{"compat_features":["css.properties.hyphenate-character","css.properties.hyphenate-character.auto"],"description":"The hyphenate-character CSS property sets the character or string to use at the end of a line before a line break.","description_html":"The <code>hyphenate-character</code> CSS property sets the character or string to use at the end of a line before a line break.","group":"text-wrap","name":"Hyphenate character","spec":"https://drafts.csswg.org/css-text-4/#hyphenate-character","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"106","chrome_android":"106","edge":"106","firefox":"98","firefox_android":"98","safari":"17","safari_ios":"17"}}},"hyphenate-limit-chars":{"compat_features":["css.properties.hyphenate-limit-chars","css.properties.hyphenate-limit-chars.auto"],"description":"The hyphenate-limit-chars CSS property sets the number of characters in a word before it is hyphenated and the minimum number of characters on either side of the hyphen.","description_html":"The <code>hyphenate-limit-chars</code> CSS property sets the number of characters in a word before it is hyphenated and the minimum number of characters on either side of the hyphen.","group":"text-wrap","name":"Hyphenate limit chars","spec":"https://drafts.csswg.org/css-text-4/#hyphenate-char-limits","status":{"baseline":false,"support":{"chrome":"109","chrome_android":"109","edge":"109"}}},"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 significantly.","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 significantly.","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>&#x3C;i></code> HTML element identifies idiomatic content, styling text as italic by default.","group":"html-elements","name":"<i>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-i-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"ic":{"compat_features":["css.types.length.ic"],"description":"The ic CSS length unit corresponds to the width of CJK ideographic characters.","description_html":"The <code>ic</code> CSS length 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","html.elements.iframe.allow.idle-detection","http.headers.Permissions-Policy.idle-detection"],"description":"The IdleDetector API is used to notify a webpage of the user's idle, active, and locked state.","description_html":"The <code>IdleDetector</code> API is used to notify a webpage of the user's idle, active, and locked state.","name":"Idle detection","spec":"https://wicg.github.io/idle-detection/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"114"}}},"iframe":{"compat_features":["api.HTMLIFrameElement","api.HTMLIFrameElement.allow","api.HTMLIFrameElement.contentDocument","api.HTMLIFrameElement.contentWindow","api.HTMLIFrameElement.getSVGDocument","api.HTMLIFrameElement.height","api.HTMLIFrameElement.name","api.HTMLIFrameElement.src","api.HTMLIFrameElement.width","html.elements.iframe","html.elements.iframe.allow","html.elements.iframe.height","html.elements.iframe.name","html.elements.iframe.src","html.elements.iframe.width"],"description":"The <iframe> element embeds another HTML page into the current page.","description_html":"The <code>&#x3C;iframe></code> element embeds another HTML page into the current page.","group":"html-elements","name":"<iframe>","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"iframe-credentialless":{"compat_features":["api.HTMLIFrameElement.credentialless","api.Window.credentialless","html.elements.iframe.credentialless"],"description":"The credentialless attribute for the <iframe> HTML element loads third-party content in an ephemeral context and does not send any credentials such as cookies. When using cross-origin isolation, this allows you to embed content that does not send Cross-Origin-Embedder-Policy headers.","description_html":"The <code>credentialless</code> attribute for the <code>&#x3C;iframe></code> HTML element loads third-party content in an ephemeral context and does not send any credentials such as cookies. When using cross-origin isolation, this allows you to embed content that does not send <code>Cross-Origin-Embedder-Policy</code> headers.","group":"security","name":"Credentialless iframes","spec":"https://wicg.github.io/anonymous-iframe/","status":{"baseline":false,"support":{"chrome":"110","chrome_android":"110","edge":"110"}}},"iframe-sandbox":{"caniuse":"iframe-sandbox","compat_features":["api.HTMLIFrameElement.sandbox","html.elements.iframe.sandbox","html.elements.iframe.sandbox.allow-downloads","html.elements.iframe.sandbox.allow-forms","html.elements.iframe.sandbox.allow-modals","html.elements.iframe.sandbox.allow-popups","html.elements.iframe.sandbox.allow-popups-to-escape-sandbox","html.elements.iframe.sandbox.allow-same-origin","html.elements.iframe.sandbox.allow-scripts","html.elements.iframe.sandbox.allow-top-navigation","html.elements.iframe.sandbox.allow-top-navigation-by-user-activation","html.elements.iframe.sandbox.allow-top-navigation-to-custom-protocols"],"description":"The sandbox attribute for the <iframe> HTML element sets many security restrictions on the iframe, such as preventing form submissions or opening modal dialogs. Optional allow- values relax specific restrictions.","description_html":"The <code>sandbox</code> attribute for the <code>&#x3C;iframe></code> HTML element sets many security restrictions on the iframe, such as preventing form submissions or opening modal dialogs. Optional <code>allow-</code> values relax specific restrictions.","name":"Sandboxed iframes","spec":["https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-sandbox","https://privacycg.github.io/storage-access/#sandboxing-storage-access"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"17","firefox_android":"17","safari":"5","safari_ios":"4"}}},"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>&#x3C;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-function":{"description":"The image() CSS function creates an image similar to url() but with additional functionality. It can create a solid color as an image, provide a fallback from an image URL to a solid color, or clip a sprite image using media fragments. Not to be confused with the Image() constructor.","description_html":"The <code>image()</code> CSS function creates an image similar to <code>url()</code> but with additional functionality. It can create a solid color as an image, provide a fallback from an image URL to a solid color, or clip a sprite image using media fragments. Not to be confused with the <code>Image()</code> constructor.","group":"images","name":"image()","spec":"https://drafts.csswg.org/css-images-4/#image-notation","status":{"baseline":false,"support":{}}},"image-maps":{"compat_features":["api.HTMLAreaElement","api.HTMLAreaElement.alt","api.HTMLAreaElement.coords","api.HTMLAreaElement.hash","api.HTMLAreaElement.host","api.HTMLAreaElement.hostname","api.HTMLAreaElement.href","api.HTMLAreaElement.origin","api.HTMLAreaElement.password","api.HTMLAreaElement.pathname","api.HTMLAreaElement.port","api.HTMLAreaElement.protocol","api.HTMLAreaElement.rel","api.HTMLAreaElement.relList","api.HTMLAreaElement.search","api.HTMLAreaElement.shape","api.HTMLAreaElement.target","api.HTMLAreaElement.toString","api.HTMLAreaElement.username","api.HTMLImageElement.isMap","api.HTMLImageElement.useMap","api.HTMLMapElement","api.HTMLMapElement.areas","api.HTMLMapElement.name","html.elements.area","html.elements.area.alt","html.elements.area.coords","html.elements.area.href","html.elements.area.implicit_noopener","html.elements.area.rel","html.elements.area.rel.noopener","html.elements.area.rel.noreferrer","html.elements.area.shape","html.elements.area.target","html.elements.img.ismap","html.elements.img.usemap","html.elements.map","html.elements.map.name"],"description":"The <area> and <map> elements define a clickable area on an image.","description_html":"The <code>&#x3C;area></code> and <code>&#x3C;map></code> elements define a clickable area on an image.","group":"html-elements","name":"Image maps","spec":"https://html.spec.whatwg.org/multipage/image-maps.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"image-orientation":{"caniuse":"css-image-orientation","compat_features":["css.properties.image-orientation","css.properties.image-orientation.from-image","css.properties.image-orientation.none"],"description":"The image-orientation CSS property corrects the rotation of an image using the image's metadata, such as EXIF.","description_html":"The <code>image-orientation</code> CSS property corrects the rotation of an image using the image's metadata, such as EXIF.","group":"images","name":"image-orientation","spec":"https://drafts.csswg.org/css-images-3/#the-image-orientation","status":{"baseline":"high","baseline_high_date":"2022-10-13","baseline_low_date":"2020-04-13","support":{"chrome":"81","chrome_android":"81","edge":"81","firefox":"26","firefox_android":"26","safari":"13.1","safari_ios":"13.4"}}},"image-rendering":{"caniuse":"css-crisp-edges","compat_features":["css.properties.image-rendering","css.properties.image-rendering.auto","css.properties.image-rendering.pixelated"],"description":"The image-rendering CSS property sets how images are scaled, retaining smoothness for photos, or hard edges for pixel art and QR codes.","description_html":"The <code>image-rendering</code> CSS property sets how images are scaled, retaining smoothness for photos, or hard edges for pixel art and QR codes.","group":"image-scaling","name":"image-rendering","spec":"https://drafts.csswg.org/css-images-3/#the-image-rendering","status":{"baseline":"high","baseline_high_date":"2024-04-05","baseline_low_date":"2021-10-05","support":{"chrome":"41","chrome_android":"41","edge":"79","firefox":"93","firefox_android":"93","safari":"10","safari_ios":"10"}}},"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"}}},"ime-mode":{"compat_features":["css.properties.ime-mode"],"description":"The ime-mode CSS property sets the state of the input method editor for text fields.","description_html":"The <code>ime-mode</code> CSS property sets the state of the input method editor for text fields.","discouraged":{"according_to":["https://drafts.csswg.org/css-ui-3/#input-method-editor"]},"group":"css","name":"ime-mode","spec":"https://drafts.csswg.org/css-ui-3/#input-method-editor","status":{"baseline":false,"support":{"firefox":"3","firefox_android":"4"}}},"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","api.HTMLImageElement.x","api.HTMLImageElement.y","html.elements.img","html.elements.img.alt","html.elements.img.crossorigin","html.elements.img.decoding","html.elements.img.height","html.elements.img.src","html.elements.img.width"],"description":"The <img> element adds an image into the document.","description_html":"The <code>&#x3C;img></code> element adds an image into the document.","group":"html-elements","name":"<img>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"import":{"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-assertions":{"compat_features":["javascript.statements.import.import_assertions","javascript.statements.import.import_assertions.type_css","javascript.statements.import.import_assertions.type_json"],"description":"Module import … assert { type: \"json\" } and import … assert { type: \"css\" } JavaScript statements load JSON and CSS data.","description_html":"Module <code>import … assert { type: \"json\" }</code> and <code>import … assert { type: \"css\" }</code> JavaScript statements load JSON and CSS data.","discouraged":{"according_to":["https://github.com/tc39/proposal-import-attributes/pull/131"],"alternatives":["css-modules","json-modules"]},"name":"Import assertions","spec":"https://github.com/tc39/proposal-import-attributes/tree/abca60286360b47f9a6be25a28f489c2cb157beb","status":{"baseline":false,"support":{}}},"import-maps":{"caniuse":"import-maps","compat_features":["html.elements.script.type.importmap"],"description":"A <script type=\"importmap\"> HTML element provides an import map as a JSON string. An import map controls how the browser should resolve module specifiers when importing JavaScript modules.","description_html":"A <code>&#x3C;script type=\"importmap\"></code> HTML element provides an import map as a JSON string. An import map controls how the browser should resolve module specifiers when importing JavaScript modules.","name":"Import maps","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#import-maps","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"108","firefox_android":"108","safari":"16.4","safari_ios":"16.4"}}},"indeterminate":{"caniuse":"css-indeterminate-pseudo","compat_features":["css.selectors.indeterminate","css.selectors.indeterminate.checkbox","css.selectors.indeterminate.progress","css.selectors.indeterminate.radio"],"description":"The :indeterminate CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.","description_html":"The <code>:indeterminate</code> CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.","group":"forms","name":":indeterminate","spec":["https://drafts.csswg.org/selectors-4/#indeterminate","https://html.spec.whatwg.org/multipage/semantics-other.html#selector-indeterminate"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"39","chrome_android":"39","edge":"79","firefox":"51","firefox_android":"51","safari":"10","safari_ios":"10"}}},"indexeddb":{"caniuse":["indexeddb","indexeddb2"],"compat_features":["api.IDBCursor","api.IDBCursor.advance","api.IDBCursor.continue","api.IDBCursor.continuePrimaryKey","api.IDBCursor.delete","api.IDBCursor.direction","api.IDBCursor.key","api.IDBCursor.key.binary_keys","api.IDBCursor.primaryKey","api.IDBCursor.request","api.IDBCursor.source","api.IDBCursor.update","api.IDBCursor.worker_support","api.IDBCursorWithValue","api.IDBCursorWithValue.value","api.IDBCursorWithValue.worker_support","api.IDBDatabase","api.IDBDatabase.close","api.IDBDatabase.close_event","api.IDBDatabase.createObjectStore","api.IDBDatabase.deleteObjectStore","api.IDBDatabase.name","api.IDBDatabase.objectStoreNames","api.IDBDatabase.transaction","api.IDBDatabase.version","api.IDBDatabase.versionchange_event","api.IDBDatabase.worker_support","api.IDBFactory","api.IDBFactory.cmp","api.IDBFactory.databases","api.IDBFactory.deleteDatabase","api.IDBFactory.open","api.IDBFactory.worker_support","api.IDBIndex","api.IDBIndex.count","api.IDBIndex.get","api.IDBIndex.getAll","api.IDBIndex.getAllKeys","api.IDBIndex.getKey","api.IDBIndex.keyPath","api.IDBIndex.multiEntry","api.IDBIndex.name","api.IDBIndex.name.renaming_through_name_setter","api.IDBIndex.objectStore","api.IDBIndex.openCursor","api.IDBIndex.openKeyCursor","api.IDBIndex.unique","api.IDBIndex.worker_support","api.IDBKeyRange","api.IDBKeyRange.bound_static","api.IDBKeyRange.includes","api.IDBKeyRange.lower","api.IDBKeyRange.lowerBound_static","api.IDBKeyRange.lowerOpen","api.IDBKeyRange.only_static","api.IDBKeyRange.upper","api.IDBKeyRange.upperBound_static","api.IDBKeyRange.upperOpen","api.IDBKeyRange.worker_support","api.IDBObjectStore","api.IDBObjectStore.add","api.IDBObjectStore.autoIncrement","api.IDBObjectStore.clear","api.IDBObjectStore.count","api.IDBObjectStore.createIndex","api.IDBObjectStore.delete","api.IDBObjectStore.deleteIndex","api.IDBObjectStore.get","api.IDBObjectStore.getAll","api.IDBObjectStore.getAllKeys","api.IDBObjectStore.getKey","api.IDBObjectStore.index","api.IDBObjectStore.indexNames","api.IDBObjectStore.keyPath","api.IDBObjectStore.name","api.IDBObjectStore.name.renaming_through_name_setter","api.IDBObjectStore.openCursor","api.IDBObjectStore.openKeyCursor","api.IDBObjectStore.put","api.IDBObjectStore.transaction","api.IDBObjectStore.worker_support","api.IDBOpenDBRequest","api.IDBOpenDBRequest.blocked_event","api.IDBOpenDBRequest.upgradeneeded_event","api.IDBOpenDBRequest.worker_support","api.IDBRequest","api.IDBRequest.error","api.IDBRequest.error.DOMException","api.IDBRequest.error_event","api.IDBRequest.readyState","api.IDBRequest.result","api.IDBRequest.source","api.IDBRequest.success_event","api.IDBRequest.transaction","api.IDBRequest.worker_support","api.IDBTransaction","api.IDBTransaction.abort","api.IDBTransaction.abort_event","api.IDBTransaction.commit","api.IDBTransaction.complete_event","api.IDBTransaction.db","api.IDBTransaction.durability","api.IDBTransaction.error","api.IDBTransaction.error.DOMException","api.IDBTransaction.error_event","api.IDBTransaction.mode","api.IDBTransaction.objectStore","api.IDBTransaction.objectStoreNames","api.IDBTransaction.worker_support","api.IDBVersionChangeEvent","api.IDBVersionChangeEvent.IDBVersionChangeEvent","api.IDBVersionChangeEvent.newVersion","api.IDBVersionChangeEvent.oldVersion","api.IDBVersionChangeEvent.worker_support","api.indexedDB","api.indexedDB.worker_support"],"description":"The IndexedDB API is a local storage transactional object database.","description_html":"The IndexedDB API is a local storage transactional object database.","name":"IndexedDB","spec":"https://w3c.github.io/IndexedDB/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"58","chrome_android":"58","edge":"79","firefox":"51","firefox_android":"51","safari":"15","safari_ios":"15"}}},"individual-transforms":{"compat_features":["css.properties.rotate","css.properties.rotate.none","css.properties.rotate.x_y_z_angle","css.properties.scale","css.properties.scale.none","css.properties.translate","css.properties.translate.none"],"description":"The translate, rotate, and scale CSS properties apply single transformations independently, as opposed to applying multiple transformations with the transform CSS property.","description_html":"The <code>translate</code>, <code>rotate</code>, and <code>scale</code> CSS properties apply single transformations independently, as opposed to applying multiple transformations with the <code>transform</code> CSS property.","group":"transforms","name":"Individual transform properties","spec":"https://drafts.csswg.org/css-transforms-2/#individual-transforms","status":{"baseline":"high","baseline_high_date":"2025-02-05","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","api.HTMLElement.inert.ignores_find_in_page","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":false,"support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"120","firefox_android":"120"}}},"inherit-value":{"compat_features":["css.types.global_keywords","css.types.global_keywords.inherit"],"description":"The inherit keyword resets any CSS property to the computed value of that property from the parent element.","description_html":"The <code>inherit</code> keyword resets any CSS property to the computed value of that property from the parent element.","group":"explicit-defaults","name":"inherit","spec":"https://drafts.csswg.org/css-cascade-3/#inherit","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"}}},"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"}}},"initial-value":{"caniuse":"css-initial-value","compat_features":["css.types.global_keywords.initial"],"description":"The initial keyword resets any CSS property to its initial value as defined by the specification. For example, the initial value of the display property is inline, regardless of the element being styled. Not to be confused with revert, which resets to the user or browser default style.","description_html":"The <code>initial</code> keyword resets any CSS property to its initial value as defined by the specification. For example, the <code>initial</code> value of the <code>display</code> property is <code>inline</code>, regardless of the element being styled. Not to be confused with <code>revert</code>, which resets to the user or browser default style.","group":"explicit-defaults","name":"initial","spec":"https://drafts.csswg.org/css-cascade-3/#initial","status":{"baseline":"high","baseline_high_date":"2018-05-12","baseline_low_date":"2015-11-12","support":{"chrome":"1","chrome_android":"18","edge":"13","firefox":"19","firefox_android":"19","safari":"1.2","safari_ios":"1"}}},"ink":{"compat_features":["api.DelegatedInkTrailPresenter","api.DelegatedInkTrailPresenter.presentationArea","api.DelegatedInkTrailPresenter.updateInkTrailStartPoint","api.Ink","api.Ink.requestPresenter","api.Navigator.ink"],"description":"The navigator.ink API uses the system compositor to draw to a <canvas> element ahead of pointer events, reducing the delay between moving a stylus or cursor and a pen stroke appearing on screen.","description_html":"The <code>navigator.ink</code> API uses the system compositor to draw to a <code>&#x3C;canvas></code> element ahead of pointer events, reducing the delay between moving a stylus or cursor and a pen stroke appearing on screen.","name":"Ink","spec":"https://wicg.github.io/ink-enhancement/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"93"}}},"input":{"compat_features":["api.HTMLInputElement","api.HTMLInputElement.accept","api.HTMLInputElement.alt","api.HTMLInputElement.autocomplete","api.HTMLInputElement.cancel_event","api.HTMLInputElement.checked","api.HTMLInputElement.defaultValue","api.HTMLInputElement.disabled","api.HTMLInputElement.form","api.HTMLInputElement.formAction","api.HTMLInputElement.formEnctype","api.HTMLInputElement.formMethod","api.HTMLInputElement.formNoValidate","api.HTMLInputElement.formTarget","api.HTMLInputElement.height","api.HTMLInputElement.invalid_event","api.HTMLInputElement.labels","api.HTMLInputElement.list","api.HTMLInputElement.maxLength","api.HTMLInputElement.minLength","api.HTMLInputElement.multiple","api.HTMLInputElement.name","api.HTMLInputElement.pattern","api.HTMLInputElement.placeholder","api.HTMLInputElement.readOnly","api.HTMLInputElement.required","api.HTMLInputElement.select","api.HTMLInputElement.select_event","api.HTMLInputElement.selectionDirection","api.HTMLInputElement.selectionEnd","api.HTMLInputElement.selectionStart","api.HTMLInputElement.setRangeText","api.HTMLInputElement.setSelectionRange","api.HTMLInputElement.size","api.HTMLInputElement.type","api.HTMLInputElement.value","api.HTMLInputElement.width","html.elements.input","html.elements.input.accept","html.elements.input.alt","html.elements.input.checked","html.elements.input.disabled","html.elements.input.form","html.elements.input.formaction","html.elements.input.formenctype","html.elements.input.formmethod","html.elements.input.formnovalidate","html.elements.input.formtarget","html.elements.input.list","html.elements.input.maxlength","html.elements.input.minlength","html.elements.input.multiple","html.elements.input.name","html.elements.input.pattern","html.elements.input.placeholder","html.elements.input.readonly","html.elements.input.required","html.elements.input.size","html.elements.input.src","html.elements.input.type_text"],"description":"The <input type=\"text\"> HTML element allows the user to enter information into a form. By default, an <input> element is a text input.","description_html":"The <code>&#x3C;input type=\"text\"></code> HTML element allows the user to enter information into a form. By default, an <code>&#x3C;input></code> element is a text input.","group":["forms","html-elements"],"name":"<input>","spec":"https://html.spec.whatwg.org/multipage/input.html#the-input-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"}}},"input-button":{"compat_features":["html.elements.input.type_button"],"description":"The <input type=\"button\"> HTML element represents a button that triggers some action, such as submitting a form or opening a dialog, styled as a labeled rectangular box by default. Not to be confused with the <button> element, which contains HTML content.","description_html":"The <code>&#x3C;input type=\"button\"></code> HTML element represents a button that triggers some action, such as submitting a form or opening a dialog, styled as a labeled rectangular box by default. Not to be confused with the <code>&#x3C;button></code> element, which contains HTML content.","group":["forms","html-elements"],"name":"<input type=\"button\">","spec":"https://html.spec.whatwg.org/multipage/input.html#button-state-(type=button)","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"}}},"input-checkbox":{"compat_features":["api.HTMLInputElement.defaultChecked","api.HTMLInputElement.indeterminate","html.elements.input.type_checkbox"],"description":"The <input type=\"checkbox\"> HTML element represents a tickable box with two states, checked and unchecked.","description_html":"The <code>&#x3C;input type=\"checkbox\"></code> HTML element represents a tickable box with two states, checked and unchecked.","group":["forms","html-elements"],"name":"<input type=\"checkbox\">","spec":"https://html.spec.whatwg.org/multipage/input.html#checkbox-state-(type=checkbox)","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.6","firefox_android":"4","safari":"3","safari_ios":"1"}}},"input-color":{"caniuse":"input-color","compat_features":["html.elements.input.type_color"],"description":"The <input type=\"color\"> HTML element shows a color picker from which users can choose a color value.","description_html":"The <code>&#x3C;input type=\"color\"></code> HTML element shows a color picker from which users can choose a color value.","group":["forms","html-elements"],"name":"<input type=\"color\">","spec":"https://html.spec.whatwg.org/multipage/input.html#color-state-(type=color)","status":{"baseline":false,"support":{"chrome":"20","chrome_android":"25","edge":"14","firefox":"29","safari":"12.1","safari_ios":"12.2"}}},"input-date-time":{"caniuse":"input-datetime","compat_features":["api.HTMLInputElement.valueAsDate","html.elements.input.type_date","html.elements.input.type_datetime-local","html.elements.input.type_month","html.elements.input.type_time","html.elements.input.type_week"],"description":"The <input type=\"date\"> and <input type=\"time\"> HTML elements show date and time pickers.","description_html":"The <code>&#x3C;input type=\"date\"></code> and <code>&#x3C;input type=\"time\"></code> HTML elements show date and time pickers.","group":["forms","html-elements"],"name":"Date and time <input> types","spec":"https://html.spec.whatwg.org/multipage/input.html#date-state-(type=date)","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"20","chrome_android":"25","edge":"12","firefox":"57","firefox_android":"57","safari":"14.1","safari_ios":"5"}}},"input-email-tel-url":{"caniuse":"input-email-tel-url","compat_features":["html.elements.input.type_email","html.elements.input.type_tel","html.elements.input.type_url"],"description":"The <input type=\"email\">, <input type=\"tel\">, and <input type=\"url\"> HTML elements represent email address, telephone number, and URL fields in a form.","description_html":"The <code>&#x3C;input type=\"email\"></code>, <code>&#x3C;input type=\"tel\"></code>, and <code>&#x3C;input type=\"url\"></code> HTML elements represent email address, telephone number, and URL fields in a form.","group":["forms","html-elements"],"name":"Email, telephone, and URL <input> types","spec":["https://html.spec.whatwg.org/multipage/input.html#email-state-(type=email)","https://html.spec.whatwg.org/multipage/input.html#telephone-state-(type=tel)","https://html.spec.whatwg.org/multipage/input.html#url-state-(type=url)"],"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":"3"}}},"input-event":{"caniuse":"input-event","compat_features":["api.Element.beforeinput_event","api.Element.input_event","api.InputEvent","api.InputEvent.InputEvent","api.InputEvent.data","api.InputEvent.dataTransfer","api.InputEvent.getTargetRanges","api.InputEvent.inputType","api.InputEvent.inputType.insertFromPasteAsQuotation","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 events","spec":"https://w3c.github.io/uievents/#event-type-input","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"1","chrome_android":"18","edge":"79","firefox":"6","firefox_android":"6","safari":"3.1","safari_ios":"2"}}},"input-file":{"compat_features":["api.HTMLInputElement.files","html.elements.input.type_file"],"description":"The <input type=\"file\"> HTML element shows a file picker from which users can choose a file to upload with the form.","description_html":"The <code>&#x3C;input type=\"file\"></code> HTML element shows a file picker from which users can choose a file to upload with the form.","group":["forms","html-elements"],"name":"<input type=\"file\">","spec":"https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"3","firefox_android":"4","safari":"4","safari_ios":"3"}}},"input-hidden":{"compat_features":["html.elements.input.type_hidden"],"description":"The <input type=\"hidden\"> HTML element represents a form field that is not shown visually but is still included in the form submission.","description_html":"The <code>&#x3C;input type=\"hidden\"></code> HTML element represents a form field that is not shown visually but is still included in the form submission.","group":["forms","html-elements"],"name":"<input type=\"hidden\">","spec":"https://html.spec.whatwg.org/multipage/input.html#hidden-state-(type=hidden)","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"}}},"input-image":{"compat_features":["api.HTMLInputElement.src","html.elements.input.type_image"],"description":"The <input type=\"image\"> HTML element is an image that can be used to submit a form, like the <input type=\"submit\"> element.","description_html":"The <code>&#x3C;input type=\"image\"></code> HTML element is an image that can be used to submit a form, like the <code>&#x3C;input type=\"submit\"></code> element.","group":["forms","html-elements"],"name":"<input type=\"image\">","spec":"https://html.spec.whatwg.org/multipage/input.html#image-button-state-(type=image)","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"}}},"input-number":{"caniuse":"input-number","compat_features":["api.HTMLInputElement.max","api.HTMLInputElement.min","api.HTMLInputElement.step","api.HTMLInputElement.stepDown","api.HTMLInputElement.stepUp","api.HTMLInputElement.valueAsNumber","html.elements.input.max","html.elements.input.min","html.elements.input.step","html.elements.input.type_number"],"description":"The <input type=\"number\"> HTML element represents numeric input data.","description_html":"The <code>&#x3C;input type=\"number\"></code> HTML element represents numeric input data.","group":["forms","html-elements"],"name":"<input type=\"number\">","spec":"https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number)","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"29","firefox_android":"29","safari":"5.1","safari_ios":"5"}}},"input-password":{"compat_features":["html.elements.input.type_password","html.elements.input.type_password.insecure_login_handling"],"description":"The <input type=\"password\"> HTML element represents a field for users to enter a password. The password is hidden from view, typically replaced by dots or asterisks.","description_html":"The <code>&#x3C;input type=\"password\"></code> HTML element represents a field for users to enter a password. The password is hidden from view, typically replaced by dots or asterisks.","group":["forms","html-elements"],"name":"<input type=\"password\">","spec":"https://html.spec.whatwg.org/multipage/input.html#password-state-(type=password)","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"}}},"input-radio":{"compat_features":["html.elements.input.type_radio"],"description":"The <input type=\"radio\"> HTML element represents one button in a group such that only one can be chosen at a time.","description_html":"The <code>&#x3C;input type=\"radio\"></code> HTML element represents one button in a group such that only one can be chosen at a time.","group":["forms","html-elements"],"name":"<input type=\"radio\">","spec":"https://html.spec.whatwg.org/multipage/input.html#radio-button-state-(type=radio)","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"}}},"input-range":{"caniuse":"input-range","compat_features":["html.elements.input.type_range","html.elements.input.type_range.tick_marks","html.elements.input.type_range.vertical_orientation"],"description":"The <input type=\"range\"> element represents a slider for choosing an inexact value between a minimum and maximum value.","description_html":"The <code>&#x3C;input type=\"range\"></code> element represents a slider for choosing an inexact value between a minimum and maximum value.","group":["forms","html-elements"],"name":"<input type=\"range\">","spec":"https://html.spec.whatwg.org/multipage/input.html#range-state-(type=range)","status":{"baseline":"high","baseline_high_date":"2019-09-16","baseline_low_date":"2017-03-16","support":{"chrome":"4","chrome_android":"57","edge":"12","firefox":"23","firefox_android":"52","safari":"3.1","safari_ios":"5"}}},"input-reset":{"compat_features":["html.elements.input.type_reset"],"description":"The <input type=\"reset\"> HTML element represents a button that sets all form fields to their initial values.","description_html":"The <code>&#x3C;input type=\"reset\"></code> HTML element represents a button that sets all form fields to their initial values.","group":["forms","html-elements"],"name":"<input type=\"reset\">","spec":"https://html.spec.whatwg.org/multipage/input.html#reset-button-state-(type=reset)","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"}}},"input-selectors":{"compat_features":["css.selectors.checked","css.selectors.disabled","css.selectors.enabled"],"description":"The :checked, :disabled, and :enabled CSS pseudo-classes match form elements based on their state.","description_html":"The <code>:checked</code>, <code>:disabled</code>, and <code>:enabled</code> CSS pseudo-classes match form elements based on their state.","group":["forms","selectors"],"name":"Input selectors","spec":["https://drafts.csswg.org/selectors-4/#checked","https://drafts.csswg.org/selectors-4/#enableddisabled"],"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.1","safari_ios":"2"}}},"input-submit":{"compat_features":["html.elements.input.type_submit"],"description":"The <input type=\"submit\"> HTML element represents a button that triggers an action on its associated <form>, such as sending the form data to a server.","description_html":"The <code>&#x3C;input type=\"submit\"></code> HTML element represents a button that triggers an action on its associated <code>&#x3C;form></code>, such as sending the form data to a server.","group":["forms","html-elements"],"name":"<input type=\"submit\">","spec":"https://html.spec.whatwg.org/multipage/input.html#submit-button-state-(type=submit)","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"}}},"inputmode":{"caniuse":"input-inputmode","compat_features":["api.HTMLElement.inputMode","html.global_attributes.inputmode"],"description":"The inputmode global HTML attribute gives a hint about what type of data is to be entered into an <input> element, such as text, numeric, or email, so the browser may help the user enter data using an adapted input mechanism, such as an on-screen virtual keyboard.","description_html":"The <code>inputmode</code> global HTML attribute gives a hint about what type of data is to be entered into an <code>&#x3C;input></code> element, such as <code>text</code>, <code>numeric</code>, or <code>email</code>, so the browser may help the user enter data using an adapted input mechanism, such as an on-screen virtual keyboard.","name":"inputmode","spec":"https://html.spec.whatwg.org/multipage/interaction.html#attr-inputmode","status":{"baseline":"high","baseline_high_date":"2024-06-07","baseline_low_date":"2021-12-07","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"95","firefox_android":"79","safari":"12.1","safari_ios":"12.2"}}},"ins":{"compat_features":["html.elements.ins","html.elements.ins.cite","html.elements.ins.datetime"],"description":"The <ins> element element represents a range of text that has been inserted into a document, styling text as underlined by default.","description_html":"The <code>&#x3C;ins></code> element element represents a range of text that has been inserted into a document, styling text as underlined by default.","group":"html-elements","name":"<ins>","spec":"https://html.spec.whatwg.org/multipage/edits.html#the-ins-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"insertable-streams":{"compat_features":["api.MediaStreamTrackProcessor","api.MediaStreamTrackProcessor.MediaStreamTrackProcessor","api.MediaStreamTrackProcessor.readable","api.VideoTrackGenerator","api.VideoTrackGenerator.VideoTrackGenerator","api.VideoTrackGenerator.muted","api.VideoTrackGenerator.track","api.VideoTrackGenerator.writable"],"description":"The MediaStreamTrackProcessor and MediaStreamTrackGenerator APIs modify the contents of a media track for merging streams, applying real-time effects like funny hats, and content overlays.","description_html":"The <code>MediaStreamTrackProcessor</code> and <code>MediaStreamTrackGenerator</code> APIs modify the contents of a media track for merging streams, applying real-time effects like funny hats, and content overlays.","name":"Insertable streams for MediaStreamTrack","spec":"https://w3c.github.io/mediacapture-transform/","status":{"baseline":false,"support":{"safari":"18","safari_ios":"18"}}},"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"}}},"interactivity":{"description":"The interactivity: inert CSS declaration makes an element and its descendants inert, like when using the inert HTML attribute. Inert elements can't be focused or clicked, their text can't be selected or found using the browser's find-in-page feature.","description_html":"The <code>interactivity: inert</code> CSS declaration makes an element and its descendants inert, like when using the <code>inert</code> HTML attribute. Inert elements can't be focused or clicked, their text can't be selected or found using the browser's find-in-page feature.","name":"interactivity","spec":"https://drafts.csswg.org/css-ui-4/#inertness","status":{"baseline":false,"support":{}}},"interpolate-size":{"compat_features":["css.properties.interpolate-size","css.properties.interpolate-size.allow-keywords","css.properties.interpolate-size.numeric-only"],"description":"The interpolate-size CSS property sets whether animations and transitions interpolate between a numeric value and a keyword value, such as from a fixed length to auto or fit-content.","description_html":"The <code>interpolate-size</code> CSS property sets whether animations and transitions interpolate between a numeric value and a keyword value, such as from a fixed length to <code>auto</code> or <code>fit-content</code>.","group":["transitions","animation"],"name":"interpolate-size","spec":"https://drafts.csswg.org/css-values-5/#interpolate-size","status":{"baseline":false,"support":{"chrome":"129","chrome_android":"129","edge":"129"}}},"intersection-observer":{"caniuse":"intersectionobserver","compat_features":["api.IntersectionObserver","api.IntersectionObserver.IntersectionObserver","api.IntersectionObserver.IntersectionObserver.options_root_parameter_Document","api.IntersectionObserver.delay","api.IntersectionObserver.disconnect","api.IntersectionObserver.observe","api.IntersectionObserver.root","api.IntersectionObserver.rootMargin","api.IntersectionObserver.scrollMargin","api.IntersectionObserver.takeRecords","api.IntersectionObserver.thresholds","api.IntersectionObserver.trackVisibility","api.IntersectionObserver.unobserve","api.IntersectionObserverEntry","api.IntersectionObserverEntry.IntersectionObserverEntry","api.IntersectionObserverEntry.boundingClientRect","api.IntersectionObserverEntry.intersectionRatio","api.IntersectionObserverEntry.intersectionRect","api.IntersectionObserverEntry.isIntersecting","api.IntersectionObserverEntry.isVisible","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.IntlLegacyConstructedSymbol","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.IntlLegacyConstructedSymbol","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.NumberFormat.options_parameter.options_useGrouping_parameter.string_values","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","javascript.builtins.Intl.Locale.getWeekInfo"],"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":{"chrome":"130","chrome_android":"130","edge":"130","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"}}},"invoker-commands":{"compat_features":["api.CommandEvent","api.CommandEvent.CommandEvent","api.CommandEvent.command","api.CommandEvent.source","api.HTMLButtonElement.command","api.HTMLButtonElement.commandForElement","api.HTMLElement.command_event","html.elements.button.command","html.elements.button.commandfor"],"description":"The command and commandfor attributes for the <button> HTML element dispatch an action to an element when the button is invoked (by click or keystroke), as a declarative alternative to addEventListener() calls or onclick attribute handlers.","description_html":"The <code>command</code> and <code>commandfor</code> attributes for the <code>&#x3C;button></code> HTML element dispatch an action to an element when the button is invoked (by click or keystroke), as a declarative alternative to <code>addEventListener()</code> calls or <code>onclick</code> attribute handlers.","name":"Invoker commands","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#attr-button-command","status":{"baseline":false,"support":{}}},"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"}}},"isolation":{"compat_features":["css.properties.isolation"],"description":"The isolation CSS property creates a new stacking context, which impacts z-index ordering and blend modes.","description_html":"The <code>isolation</code> CSS property creates a new stacking context, which impacts <code>z-index</code> ordering and blend modes.","group":"blend-mode","name":"isolation","spec":"https://drafts.fxtf.org/compositing-2/#isolation","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"41","chrome_android":"41","edge":"79","firefox":"36","firefox_android":"36","safari":"8","safari_ios":"8"}}},"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","firefox":"131","firefox_android":"131"}}},"iterators":{"compat_features":["javascript.builtins.Iterator","javascript.builtins.Iterator.@@iterator","javascript.statements.for_of","javascript.statements.for_of.closing_iterators"],"description":"The for...of loop operates on a sequence of values sourced from an iterable object, such as arrays, array-like objects, DOM collections, iterators, generators, and user-defined iterables. All built-in iterators inherit from the Iterator class.","description_html":"The <code>for...of</code> loop operates on a sequence of values sourced from an iterable object, such as arrays, array-like objects, DOM collections, iterators, generators, and user-defined iterables. All built-in iterators inherit from the <code>Iterator</code> class.","group":"iterators","name":"Iterators and the for...of loop","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-%iteratorprototype%-object","https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-for-in-and-for-of-statements"],"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":"7","safari_ios":"7"}}},"javascript":{"compat_features":["javascript.builtins.Boolean","javascript.builtins.Boolean.Boolean","javascript.builtins.Boolean.toString","javascript.builtins.Boolean.valueOf","javascript.builtins.Error","javascript.builtins.Error.Error","javascript.builtins.Error.message","javascript.builtins.Error.name","javascript.builtins.Error.toString","javascript.builtins.EvalError","javascript.builtins.EvalError.EvalError","javascript.builtins.RangeError","javascript.builtins.RangeError.RangeError","javascript.builtins.ReferenceError","javascript.builtins.ReferenceError.ReferenceError","javascript.builtins.SyntaxError","javascript.builtins.SyntaxError.SyntaxError","javascript.builtins.TypeError","javascript.builtins.TypeError.TypeError","javascript.builtins.URIError","javascript.builtins.URIError.URIError","javascript.builtins.decodeURI","javascript.builtins.decodeURIComponent","javascript.builtins.encodeURI","javascript.builtins.encodeURIComponent","javascript.builtins.eval","javascript.builtins.isFinite","javascript.builtins.parseFloat","javascript.builtins.undefined","javascript.grammar.boolean_literals","javascript.grammar.hexadecimal_escape_sequences","javascript.grammar.null_literal","javascript.grammar.trailing_commas","javascript.grammar.trailing_commas.trailing_commas_in_object_literals","javascript.grammar.unicode_escape_sequences","javascript.operators.addition","javascript.operators.addition_assignment","javascript.operators.assignment","javascript.operators.bitwise_and","javascript.operators.bitwise_and_assignment","javascript.operators.bitwise_not","javascript.operators.bitwise_or","javascript.operators.bitwise_or_assignment","javascript.operators.bitwise_xor","javascript.operators.bitwise_xor_assignment","javascript.operators.comma","javascript.operators.conditional","javascript.operators.decrement","javascript.operators.delete","javascript.operators.division","javascript.operators.division_assignment","javascript.operators.equality","javascript.operators.greater_than","javascript.operators.greater_than_or_equal","javascript.operators.grouping","javascript.operators.in","javascript.operators.increment","javascript.operators.inequality","javascript.operators.instanceof","javascript.operators.left_shift","javascript.operators.left_shift_assignment","javascript.operators.less_than","javascript.operators.less_than_or_equal","javascript.operators.logical_and","javascript.operators.logical_not","javascript.operators.logical_or","javascript.operators.multiplication","javascript.operators.multiplication_assignment","javascript.operators.new","javascript.operators.null","javascript.operators.property_accessors","javascript.operators.remainder","javascript.operators.remainder_assignment","javascript.operators.right_shift","javascript.operators.right_shift_assignment","javascript.operators.strict_equality","javascript.operators.strict_inequality","javascript.operators.subtraction","javascript.operators.subtraction_assignment","javascript.operators.this","javascript.operators.typeof","javascript.operators.unary_negation","javascript.operators.unary_plus","javascript.operators.unsigned_right_shift","javascript.operators.unsigned_right_shift_assignment","javascript.operators.void","javascript.statements.block","javascript.statements.break","javascript.statements.continue","javascript.statements.debugger","javascript.statements.do_while","javascript.statements.empty","javascript.statements.for","javascript.statements.for_in","javascript.statements.if_else","javascript.statements.label","javascript.statements.return","javascript.statements.switch","javascript.statements.throw","javascript.statements.try_catch","javascript.statements.var","javascript.statements.while"],"description":"JavaScript is a programming language that runs in browsers, usually through the <script> element. JavaScript has changed over many years. This feature represents the oldest language features, such as built-in objects, statements, and operators. Also known as ECMAScript.","description_html":"JavaScript is a programming language that runs in browsers, usually through the <code>&#x3C;script></code> element. JavaScript has changed over many years. This feature represents the oldest language features, such as built-in objects, statements, and operators. Also known as ECMAScript.","group":"javascript","name":"JavaScript (initial core language support)","spec":"https://tc39.es/ecma262/multipage/#sec-intro","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"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.operators.import","javascript.operators.import_meta","javascript.operators.import_meta.resolve","javascript.statements.export","javascript.statements.export.default","javascript.statements.export.namespace","javascript.statements.import","javascript.statements.import.import_attributes","javascript.statements.import.worklet_support","svg.elements.script.type.module"],"description":"JavaScript modules allow code to be organized into reusable units. Modules use import to load other modules and export to declare what is available to import from other modules. In HTML, modules are loaded with <script type=\"module\">.","description_html":"JavaScript modules allow code to be organized into reusable units. Modules use <code>import</code> to load other modules and <code>export</code> to declare what is available to import from other modules. In HTML, modules are loaded with <code>&#x3C;script type=\"module\"></code>.","group":"js-modules","name":"JavaScript modules","snapshot":"ecmascript-2015","spec":["https://html.spec.whatwg.org/multipage/webappapis.html#javascript-module-script","https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#sec-modules"],"status":{"baseline":"high","baseline_high_date":"2020-11-09","baseline_low_date":"2018-05-09","support":{"chrome":"61","chrome_android":"61","edge":"16","firefox":"60","firefox_android":"60","safari":"11","safari_ios":"11"}}},"js-modules-service-workers":{"compat_features":["api.ServiceWorker.ecmascript_modules","javascript.statements.import.service_worker_support"],"description":"The navigator.serviceWorker.register() method accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in service workers.","description_html":"The <code>navigator.serviceWorker.register()</code> method accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in service workers.","group":"js-modules","name":"JavaScript modules in service workers","spec":"https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type","status":{"baseline":false,"support":{"chrome":"91","chrome_android":"91","edge":"91","safari":"15","safari_ios":"15"}}},"js-modules-shared-workers":{"compat_features":["api.SharedWorker.SharedWorker.ecmascript_modules","api.SharedWorker.SharedWorker.options_type_parameter"],"description":"The SharedWorker() constructor accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in shared workers.","description_html":"The <code>SharedWorker()</code> constructor accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in shared workers.","group":"js-modules","name":"JavaScript modules in shared workers","spec":"https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface:dom-sharedworker-2","status":{"baseline":false,"support":{"chrome":"80","edge":"80","firefox":"114","firefox_android":"114","safari":"16","safari_ios":"16"}}},"js-modules-workers":{"compat_features":["api.Worker.Worker.ecmascript_modules","api.Worker.Worker.options_type_parameter","javascript.operators.import.worker_support","javascript.statements.import.worker_support"],"description":"The Worker() constructor accepts { type: \"module\" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in workers.","description_html":"The <code>Worker()</code> constructor accepts <code>{ type: \"module\" }</code> to load scripts that use <code>import</code> and <code>export</code>. Also known as ECMAScript modules or ESM in workers.","group":"js-modules","name":"JavaScript modules in workers","spec":"https://html.spec.whatwg.org/multipage/workers.html#dom-worker-dev","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"114","firefox_android":"114","safari":"15","safari_ios":"15"}}},"json":{"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.","description_html":"Module <code>import … with { type: \"json\" }</code> statements load JSON data. Also known as JSON module scripts.","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","firefox":"135","firefox_android":"135"}}},"kbd":{"compat_features":["html.elements.kbd"],"description":"The <kbd> element represents textual user input, such as keyboard or voice input, styling text in monospaced type by default.","description_html":"The <code>&#x3C;kbd></code> element represents textual user input, such as keyboard or voice input, styling text in monospaced type by default.","group":"html-elements","name":"<kbd>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-kbd-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"keyboard-events":{"compat_features":["api.Element.keydown_event","api.Element.keyup_event","api.KeyboardEvent","api.KeyboardEvent.KeyboardEvent","api.KeyboardEvent.altKey","api.KeyboardEvent.code","api.KeyboardEvent.ctrlKey","api.KeyboardEvent.getModifierState","api.KeyboardEvent.getModifierState.key_parameter_alt","api.KeyboardEvent.getModifierState.key_parameter_altgraph","api.KeyboardEvent.getModifierState.key_parameter_capslock","api.KeyboardEvent.getModifierState.key_parameter_control","api.KeyboardEvent.getModifierState.key_parameter_fn","api.KeyboardEvent.getModifierState.key_parameter_meta","api.KeyboardEvent.getModifierState.key_parameter_numlock","api.KeyboardEvent.getModifierState.key_parameter_scrolllock","api.KeyboardEvent.getModifierState.key_parameter_shift","api.KeyboardEvent.getModifierState.key_parameter_symbol","api.KeyboardEvent.isComposing","api.KeyboardEvent.key","api.KeyboardEvent.key.dead_key","api.KeyboardEvent.key.non_printable_keys","api.KeyboardEvent.key.printable_key","api.KeyboardEvent.location","api.KeyboardEvent.metaKey","api.KeyboardEvent.repeat","api.KeyboardEvent.shiftKey"],"description":"The keydown and keyup events fire for each key press (or, with modifier keys, a combination of key presses) on a keyboard.","description_html":"The <code>keydown</code> and <code>keyup</code> events fire for each key press (or, with modifier keys, a combination of key presses) on a keyboard.","name":"Keyboard events","spec":"https://w3c.github.io/uievents/#events-keyboardevents","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"6","firefox_android":"6","safari":"1.2","safari_ios":"1"}}},"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","api.KeyboardLayoutMap.@@iterator","api.KeyboardLayoutMap.entries","api.KeyboardLayoutMap.forEach","api.KeyboardLayoutMap.get","api.KeyboardLayoutMap.has","api.KeyboardLayoutMap.keys","api.KeyboardLayoutMap.size","api.KeyboardLayoutMap.values"],"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"}}},"khr-parallel-shader-compile":{"compat_features":["api.KHR_parallel_shader_compile"],"description":"The KHR_parallel_shader_compile extension for WebGL 1.0 and 2.0 contexts checks the status of shader compilation without blocking the runtime.","description_html":"The <code>KHR_parallel_shader_compile</code> extension for WebGL 1.0 and 2.0 contexts checks the status of shader compilation without blocking the runtime.","group":"webgl-extensions","name":"KHR_parallel_shader_compile WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/KHR_parallel_shader_compile/","status":{"baseline":false,"support":{"chrome":"76","chrome_android":"76","edge":"79","safari":"14.1","safari_ios":"14.5"}}},"lab":{"caniuse":"css-lch-lab","compat_features":["css.types.color.lab","css.types.color.lab.mixed_type_parameters","css.types.color.lch","css.types.color.lch.mixed_type_parameters"],"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>&#x3C;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"}}},"lang":{"compat_features":["css.selectors.lang","css.selectors.lang.argument_list","css.selectors.lang.wildcards"],"description":"The :lang() CSS functional pseudo-class matches elements based on their content language.","description_html":"The <code>:lang()</code> CSS functional pseudo-class matches elements based on their content language.","group":"selectors","name":":lang()","spec":"https://drafts.csswg.org/selectors-4/#the-lang-pseudo","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.1","safari_ios":"2"}}},"lang-attr":{"compat_features":["api.HTMLElement.lang","html.global_attributes.lang"],"description":"The lang global HTML attribute defines the language of an element. It's used by assistive technology to correctly read the content, translation tools to select the origin language, and other applications.","description_html":"The <code>lang</code> global HTML attribute defines the language of an element. It's used by assistive technology to correctly read the content, translation tools to select the origin language, and other applications.","name":"Lang","spec":"https://html.spec.whatwg.org/multipage/dom.html#attr-lang","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"}}},"language":{"compat_features":["api.Navigator.language","api.Navigator.languages","api.Window.languagechange_event","api.WorkerGlobalScope.languagechange_event","api.WorkerNavigator.language","api.WorkerNavigator.languages"],"description":"The navigator.language read-only property returns a string representing the preferred language of the user, usually the language of the browser UI. The navigator.languages read-only property returns an array of strings representing the user's preferred languages.","description_html":"The <code>navigator.language</code> read-only property returns a string representing the preferred language of the user, usually the language of the browser UI. The <code>navigator.languages</code> read-only property returns an array of strings representing the user's preferred languages.","name":"Language","spec":"https://html.spec.whatwg.org/multipage/system-state.html#language-preferences","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"}}},"largest-contentful-paint":{"compat_features":["api.LargestContentfulPaint","api.LargestContentfulPaint.element","api.LargestContentfulPaint.id","api.LargestContentfulPaint.loadTime","api.LargestContentfulPaint.renderTime","api.LargestContentfulPaint.size","api.LargestContentfulPaint.toJSON","api.LargestContentfulPaint.url"],"description":"The largest-contentful-paint performance entry and the LargestContentfulPaint API measures  the time it takes for the largest image or text to appear. Largest contentful paint (LCP) is a common metric for perceived loading times.","description_html":"The <code>largest-contentful-paint</code> performance entry and the <code>LargestContentfulPaint</code> API measures  the time it takes for the largest image or text to appear. Largest contentful paint (LCP) is a common metric for perceived loading times.","group":"performance","name":"Largest contentful paint (LCP)","spec":"https://w3c.github.io/largest-contentful-paint/","status":{"baseline":false,"support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"122","firefox_android":"122"}}},"layout-direction-override":{"compat_features":["css.properties.direction","css.properties.direction.ltr","css.properties.direction.rtl","css.properties.unicode-bidi","css.properties.unicode-bidi.bidi-override","css.properties.unicode-bidi.embed","css.properties.unicode-bidi.isolate","css.properties.unicode-bidi.isolate-override","css.properties.unicode-bidi.normal","css.properties.unicode-bidi.plaintext"],"description":"The unicode-bidi and direction CSS properties override the Unicode layout algorithm. They are intended for Document Type Definition (DTD) designers. For HTML documents, you should use the dir global HTML attribute and <bdo> HTML element instead.","description_html":"The <code>unicode-bidi</code> and <code>direction</code> CSS properties override the Unicode layout algorithm. They are intended for Document Type Definition (DTD) designers. For HTML documents, you should use the <code>dir</code> global HTML attribute and <code>&#x3C;bdo></code> HTML element instead.","group":"css","name":"Layout direction override","spec":["https://drafts.csswg.org/css-writing-modes-4/#direction","https://drafts.csswg.org/css-writing-modes-4/#unicode-bidi"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"48","chrome_android":"48","edge":"79","firefox":"50","firefox_android":"50","safari":"11","safari_ios":"11"}}},"layout-instability":{"compat_features":["api.LayoutShift","api.LayoutShift.hadRecentInput","api.LayoutShift.lastInputTime","api.LayoutShift.sources","api.LayoutShift.toJSON","api.LayoutShift.value","api.LayoutShiftAttribution","api.LayoutShiftAttribution.currentRect","api.LayoutShiftAttribution.node","api.LayoutShiftAttribution.previousRect","api.LayoutShiftAttribution.toJSON"],"description":"The layout-shift performance entry and LayoutShift API measures the layout stability of web pages based on movements of the elements on the page.","description_html":"The <code>layout-shift</code> performance entry and <code>LayoutShift</code> API measures the layout stability of web pages based on movements of the elements on the page.","group":"performance","name":"Layout instability","spec":"https://wicg.github.io/layout-instability/","status":{"baseline":false,"support":{"chrome":"84","chrome_android":"84","edge":"84"}}},"let-const":{"caniuse":["let","const"],"compat_features":["javascript.statements.const","javascript.statements.let"],"description":"The let and const declarations define block-scoped variables.","description_html":"The <code>let</code> and <code>const</code> declarations define block-scoped variables.","group":"javascript","name":"Let and const","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-let-and-const-declarations","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"49","chrome_android":"49","edge":"14","firefox":"44","firefox_android":"44","safari":"10","safari_ios":"10"}}},"letter-spacing":{"caniuse":"css-letter-spacing","compat_features":["css.properties.letter-spacing","css.properties.letter-spacing.normal","svg.global_attributes.letter-spacing"],"description":"The letter-spacing CSS property controls the amount of space between each letter in an element or block of text.","description_html":"The <code>letter-spacing</code> CSS property controls the amount of space between each letter in an element or block of text.","group":"text","name":"letter-spacing","spec":"https://drafts.csswg.org/css-text-4/#letter-spacing-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"}}},"lh":{"compat_features":["css.types.length.lh"],"description":"The lh CSS length 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 <code>lh</code> CSS length 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-break":{"compat_features":["css.properties.line-break","css.properties.line-break.anywhere","css.properties.line-break.auto","css.properties.line-break.loose","css.properties.line-break.normal","css.properties.line-break.strict"],"description":"The line-break CSS property sets how strictly to apply rules for wrapping text to new lines, especially for symbols and punctuation.","description_html":"The <code>line-break</code> CSS property sets how strictly to apply rules for wrapping text to new lines, especially for symbols and punctuation.","group":"text-wrap","name":"line-break","spec":"https://drafts.csswg.org/css-text-4/#line-break-property","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"83","chrome_android":"83","edge":"83","firefox":"69","firefox_android":"79","safari":"13","safari_ios":"13"}}},"line-clamp":{"caniuse":"css-line-clamp","compat_features":["css.properties.line-clamp","css.properties.line-clamp.none"],"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":{"safari":"18.2","safari_ios":"18.2"}}},"line-height":{"compat_features":["css.properties.line-height","css.properties.line-height.normal"],"description":"The line-height CSS property sets the spacing between text baselines, oriented to the horizontal or vertical writing mode.","description_html":"The <code>line-height</code> CSS property sets the spacing between text baselines, oriented to the horizontal or vertical writing mode.","group":"text","name":"line-height","spec":"https://drafts.csswg.org/css-inline-3/#line-height-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"}}},"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>&#x3C;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"}}},"link-rel-dns-prefetch":{"caniuse":"link-rel-dns-prefetch","compat_features":["html.elements.link.rel.dns-prefetch"],"description":"The rel=\"dns-prefetch\" attribute for the <link> HTML element is a hint to the browser that the page or user is likely to request resources from another domain, so the browser should preemptively resolve DNS for the href value's domain.","description_html":"The <code>rel=\"dns-prefetch\"</code> attribute for the <code>&#x3C;link></code> HTML element is a hint to the browser that the page or user is likely to request resources from another domain, so the browser should preemptively resolve DNS for the <code>href</code> value's domain.","name":"<link rel=\"dns-prefetch\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-dns-prefetch","status":{"baseline":"low","baseline_low_date":"2024-06-11","support":{"chrome":"46","chrome_android":"46","edge":"≤79","firefox":"127","firefox_android":"127","safari":"5","safari_ios":"4.2"}}},"link-rel-expect":{"compat_features":["html.elements.link.rel.expect"],"description":"The rel=\"expect\" attribute for the <link> HTML element is a hint to the browser to block rendering until the element that the href value references is connected to the document and fully parsed.","description_html":"The <code>rel=\"expect\"</code> attribute for the <code>&#x3C;link></code> HTML element is a hint to the browser to block rendering until the element that the <code>href</code> value references is connected to the document and fully parsed.","name":"<link rel=\"expect\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-expect","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124"}}},"link-rel-preconnect":{"compat_features":["html.elements.link.rel.preconnect"],"description":"The rel=\"preconnect\" attribute for the <link> HTML element is a hint to the browser that the page or user is likely to request resources from another origin, so the browser should preemptively start a connection to the href value's origin.","description_html":"The <code>rel=\"preconnect\"</code> attribute for the <code>&#x3C;link></code> HTML element is a hint to the browser that the page or user is likely to request resources from another origin, so the browser should preemptively start a connection to the <code>href</code> value's origin.","name":"<link rel=\"preconnect\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-preconnect","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"46","chrome_android":"46","edge":"79","firefox":"39","firefox_android":"39","safari":"11.1","safari_ios":"11.3"}}},"link-rel-prefetch":{"caniuse":"link-rel-prefetch","compat_features":["api.PerformanceResourceTiming.deliveryType.navigational-prefetch","html.elements.link.rel.prefetch","http.headers.Sec-Purpose","http.headers.Sec-Purpose.prefetch"],"description":"The rel=\"prefetch\" attribute for the <link> HTML element is a hint to the browser that the user is likely to navigate to a resource, so the browser should preemptively fetch and cache the resource.","description_html":"The <code>rel=\"prefetch\"</code> attribute for the <code>&#x3C;link></code> HTML element is a hint to the browser that the user is likely to navigate to a resource, so the browser should preemptively fetch and cache the resource.","name":"<link rel=\"prefetch\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-prefetch","status":{"baseline":false,"support":{}}},"link-rel-preload":{"caniuse":"link-rel-preload","compat_features":["html.elements.link.rel.preload","html.elements.link.rel.preload.as-fetch","html.elements.link.rel.preload.as-font","html.elements.link.rel.preload.as-image","html.elements.link.rel.preload.as-script","html.elements.link.rel.preload.as-style","html.elements.link.rel.preload.as-track"],"description":"The rel=\"preload\" attribute for the <link> HTML element requests resources, such as images or style sheets, that the page needs soon, so the browser may prioritize them for loading before rendering begins.","description_html":"The <code>rel=\"preload\"</code> attribute for the <code>&#x3C;link></code> HTML element requests resources, such as images or style sheets, that the page needs soon, so the browser may prioritize them for loading before rendering begins.","name":"<link rel=\"preload\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-preload","status":{"baseline":"high","baseline_high_date":"2023-07-26","baseline_low_date":"2021-01-26","support":{"chrome":"50","chrome_android":"50","edge":"≤79","firefox":"85","firefox_android":"85","safari":"11.1","safari_ios":"11.3"}}},"link-selectors":{"caniuse":"css-any-link","compat_features":["css.selectors.any-link","css.selectors.any-link.not_match_link","css.selectors.link","css.selectors.link.not_match_link","css.selectors.visited","css.selectors.visited.not_match_link","css.selectors.visited.privacy_measures"],"description":"The :link CSS pseudo-class matches unvisited links, :visited matches visited links, and :any-link matches both.","description_html":"The <code>:link</code> CSS pseudo-class matches unvisited links, <code>:visited</code> matches visited links, and <code>:any-link</code> matches both.","group":"selectors","name":"Link selectors","spec":"https://drafts.csswg.org/selectors-4/#location","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"65","chrome_android":"65","edge":"79","firefox":"50","firefox_android":"50","safari":"9","safari_ios":"9"}}},"list-elements":{"compat_features":["api.HTMLLIElement","api.HTMLLIElement.value","api.HTMLOListElement","api.HTMLOListElement.reversed","api.HTMLOListElement.start","api.HTMLOListElement.type","api.HTMLUListElement","html.elements.li","html.elements.li.value","html.elements.ol","html.elements.ol.reversed","html.elements.ol.start","html.elements.ol.type","html.elements.ul"],"description":"The <ol>, <ul>, and <li> HTML elements represent ordered and unordered lists.","description_html":"The <code>&#x3C;ol></code>, <code>&#x3C;ul></code>, and <code>&#x3C;li></code> HTML elements represent ordered and unordered lists.","group":["html-elements","lists"],"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"}}},"list-style":{"compat_features":["css.properties.list-style","css.properties.list-style-image","css.properties.list-style-image.none","css.properties.list-style-position","css.properties.list-style-position.inside","css.properties.list-style-position.outside","css.properties.list-style-type","css.properties.list-style-type.arabic-indic","css.properties.list-style-type.armenian","css.properties.list-style-type.bengali","css.properties.list-style-type.cambodian","css.properties.list-style-type.circle","css.properties.list-style-type.cjk-decimal","css.properties.list-style-type.cjk-earthly-branch","css.properties.list-style-type.cjk-heavenly-stem","css.properties.list-style-type.cjk-ideographic","css.properties.list-style-type.decimal","css.properties.list-style-type.decimal-leading-zero","css.properties.list-style-type.devanagari","css.properties.list-style-type.disc","css.properties.list-style-type.disclosure-closed","css.properties.list-style-type.disclosure-open","css.properties.list-style-type.ethiopic-numeric","css.properties.list-style-type.georgian","css.properties.list-style-type.gujarati","css.properties.list-style-type.gurmukhi","css.properties.list-style-type.hebrew","css.properties.list-style-type.hiragana","css.properties.list-style-type.hiragana-iroha","css.properties.list-style-type.japanese-formal","css.properties.list-style-type.japanese-informal","css.properties.list-style-type.kannada","css.properties.list-style-type.katakana","css.properties.list-style-type.katakana-iroha","css.properties.list-style-type.khmer","css.properties.list-style-type.korean-hangul-formal","css.properties.list-style-type.korean-hanja-formal","css.properties.list-style-type.korean-hanja-informal","css.properties.list-style-type.lao","css.properties.list-style-type.lower-alpha","css.properties.list-style-type.lower-armenian","css.properties.list-style-type.lower-greek","css.properties.list-style-type.lower-latin","css.properties.list-style-type.lower-roman","css.properties.list-style-type.malayalam","css.properties.list-style-type.mongolian","css.properties.list-style-type.myanmar","css.properties.list-style-type.none","css.properties.list-style-type.oriya","css.properties.list-style-type.persian","css.properties.list-style-type.simp-chinese-formal","css.properties.list-style-type.simp-chinese-informal","css.properties.list-style-type.square","css.properties.list-style-type.string","css.properties.list-style-type.symbols","css.properties.list-style-type.tamil","css.properties.list-style-type.telugu","css.properties.list-style-type.thai","css.properties.list-style-type.tibetan","css.properties.list-style-type.trad-chinese-formal","css.properties.list-style-type.trad-chinese-informal","css.properties.list-style-type.upper-alpha","css.properties.list-style-type.upper-armenian","css.properties.list-style-type.upper-latin","css.properties.list-style-type.upper-roman","css.properties.list-style.symbols"],"description":"The list-style shorthand CSS property and the list-style-image, list-style-position, and list-style-type longhand properties set the position and appearance of a list item's marker.","description_html":"The <code>list-style</code> shorthand CSS property and the <code>list-style-image</code>, <code>list-style-position</code>, and <code>list-style-type</code> longhand properties set the position and appearance of a list item's marker.","group":"lists","name":"List style","spec":"https://drafts.csswg.org/css-lists-3/#list-style-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"}}},"loading-lazy":{"caniuse":"loading-lazy-attr","compat_features":["api.HTMLIFrameElement.loading","api.HTMLImageElement.loading","html.elements.iframe.loading","html.elements.img.loading"],"description":"The loading=\"lazy\" attribute for <img> and <iframe> elements blocks loading the external resource until the user scrolls to that element's part of the page.","description_html":"The <code>loading=\"lazy\"</code> attribute for <code>&#x3C;img></code> and <code>&#x3C;iframe></code> elements blocks loading the external resource until the user scrolls to that element's part of the page.","name":"Lazy-loading images and iframes","spec":"https://html.spec.whatwg.org/multipage/urls-and-fetching.html#lazy-loading-attributes","status":{"baseline":"low","baseline_low_date":"2023-12-19","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"121","firefox_android":"121","safari":"16.4","safari_ios":"16.4"}}},"local-fonts":{"compat_features":["api.FontData","api.FontData.blob","api.FontData.family","api.FontData.fullName","api.FontData.postscriptName","api.FontData.style","api.Permissions.permission_local-fonts","api.Window.queryLocalFonts","html.elements.iframe.allow.local-fonts","http.headers.Permissions-Policy.local-fonts"],"description":"The window.queryLocalFonts() method returns an array of locally-installed fonts, each represented by a FontData object.","description_html":"The <code>window.queryLocalFonts()</code> method returns an array of locally-installed fonts, each represented by a <code>FontData</code> object.","name":"Local fonts","spec":"https://wicg.github.io/local-font-access/","status":{"baseline":false,"support":{"chrome":"103","edge":"103"}}},"localstorage":{"caniuse":"namevalue-storage","compat_features":["api.Storage","api.Storage.clear","api.Storage.getItem","api.Storage.key","api.Storage.length","api.Storage.removeItem","api.Storage.setItem","api.StorageEvent","api.StorageEvent.StorageEvent","api.StorageEvent.key","api.StorageEvent.newValue","api.StorageEvent.oldValue","api.StorageEvent.storageArea","api.StorageEvent.url","api.Window.localStorage","api.Window.sessionStorage","api.Window.storage_event"],"description":"The localStorage and sessionStorage APIs store data as key-value pairs. While localStorage persists across sessions, sessionStorage data is discarded when the page is closed.","description_html":"The <code>localStorage</code> and <code>sessionStorage</code> APIs store data as key-value pairs. While <code>localStorage</code> persists across sessions, <code>sessionStorage</code> data is discarded when the page is closed.","group":"storage","name":"localStorage and sessionStorage","spec":"https://storage.spec.whatwg.org/","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":"6","safari":"4","safari_ios":"3.2"}}},"location":{"compat_features":["api.Document.location","api.Location","api.Location.ancestorOrigins","api.Location.assign","api.Location.hash","api.Location.host","api.Location.hostname","api.Location.href","api.Location.origin","api.Location.pathname","api.Location.port","api.Location.protocol","api.Location.reload","api.Location.replace","api.Location.search","api.Location.toString","api.Window.location"],"description":"The location global object represents the current page's address. You can use it to get the parts of the address (such as location.hostname or location.pathname) or navigate to another URL.","description_html":"The <code>location</code> global object represents the current page's address. You can use it to get the parts of the address (such as <code>location.hostname</code> or <code>location.pathname</code>) or navigate to another URL.","name":"Location","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-location-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":"1","safari_ios":"1"}}},"logical-assignments":{"compat_features":["javascript.operators.logical_and_assignment","javascript.operators.logical_or_assignment"],"description":"The logical AND assignment (&&=) and the logical OR assignment (||=) operators short-circuit the respective binary logical operators.","description_html":"The logical AND assignment (<code>&#x26;&#x26;=</code>) and the logical OR assignment (<code>||=</code>) operators short-circuit the respective binary logical operators.","group":"javascript","name":"Logical assignments","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-assignment-operators","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"}}},"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.overflow-block","css.properties.overflow-block.overlay","css.properties.overflow-inline","css.properties.overflow-inline.overlay","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"}}},"long-animation-frames":{"compat_features":["api.PerformanceLongAnimationFrameTiming","api.PerformanceLongAnimationFrameTiming.blockingDuration","api.PerformanceLongAnimationFrameTiming.firstUIEventTimestamp","api.PerformanceLongAnimationFrameTiming.renderStart","api.PerformanceLongAnimationFrameTiming.scripts","api.PerformanceLongAnimationFrameTiming.styleAndLayoutStart","api.PerformanceLongAnimationFrameTiming.toJSON","api.PerformanceScriptTiming","api.PerformanceScriptTiming.executionStart","api.PerformanceScriptTiming.forcedStyleAndLayoutDuration","api.PerformanceScriptTiming.invoker","api.PerformanceScriptTiming.invokerType","api.PerformanceScriptTiming.pauseDuration","api.PerformanceScriptTiming.sourceCharPosition","api.PerformanceScriptTiming.sourceFunctionName","api.PerformanceScriptTiming.sourceURL","api.PerformanceScriptTiming.toJSON","api.PerformanceScriptTiming.window","api.PerformanceScriptTiming.windowAttribution"],"description":"The long-animation-frame performance event type and the PerformanceLongAnimationFrameTiming API provide information about rendering updates that take longer than 50 milliseconds. Also known as LoAFs.","description_html":"The <code>long-animation-frame</code> performance event type and the <code>PerformanceLongAnimationFrameTiming</code> API provide information about rendering updates that take longer than 50 milliseconds. Also known as LoAFs.","group":"performance","name":"Long animation frames","spec":"https://w3c.github.io/long-animation-frames/","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123"}}},"longtasks":{"compat_features":["api.PerformanceLongTaskTiming","api.PerformanceLongTaskTiming.attribution","api.PerformanceLongTaskTiming.toJSON","api.TaskAttributionTiming","api.TaskAttributionTiming.containerId","api.TaskAttributionTiming.containerName","api.TaskAttributionTiming.containerSrc","api.TaskAttributionTiming.containerType","api.TaskAttributionTiming.toJSON"],"description":"The longtask performance event type and the PerformanceLongTaskTiming API provides information about tasks that occupy the UI thread for 50 milliseconds or more, a metric for input latency, delayed animations, and other sources of \"jank.\"","description_html":"The <code>longtask</code> performance event type and the <code>PerformanceLongTaskTiming</code> API provides information about tasks that occupy the UI thread for 50 milliseconds or more, a metric for input latency, delayed animations, and other sources of \"jank.\"","group":"performance","name":"Long tasks","spec":"https://w3c.github.io/longtasks/","status":{"baseline":false,"support":{"chrome":"58","chrome_android":"58","edge":"79"}}},"magnetometer":{"compat_features":["api.Magnetometer","api.Magnetometer.Magnetometer","api.Magnetometer.x","api.Magnetometer.y","api.Magnetometer.z","api.Permissions.permission_magnetometer","html.elements.iframe.allow.magnetometer","http.headers.Permissions-Policy.magnetometer"],"description":"The Magnetometer API reads magnetic field sensor data from the device's magnetometer.","description_html":"The <code>Magnetometer</code> API reads magnetic field sensor data from the device's magnetometer.","group":"sensors","name":"Magnetometer","spec":"https://w3c.github.io/magnetometer/","status":{"baseline":false,"support":{}}},"main":{"compat_features":["html.elements.main"],"description":"The <main> element represents the dominant content of a document. It is commonly used together with <header> and <footer>.","description_html":"The <code>&#x3C;main></code> element represents the dominant content of a document. It is commonly used together with <code>&#x3C;header></code> and <code>&#x3C;footer></code>.","group":"html-elements","name":"<main>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-main-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"21","firefox_android":"21","safari":"7","safari_ios":"7"}}},"managed-media-source":{"compat_features":["api.ManagedMediaSource","api.ManagedMediaSource.ManagedMediaSource","api.ManagedMediaSource.endstreaming_event","api.ManagedMediaSource.startstreaming_event","api.ManagedMediaSource.streaming","api.ManagedSourceBuffer","api.ManagedSourceBuffer.bufferedchange_event"],"description":"The ManagedMediaSource API is a MediaSource where the browser manages the memory of source buffers and may evict data if needed.","description_html":"The <code>ManagedMediaSource</code> API is a <code>MediaSource</code> where the browser manages the memory of source buffers and may evict data if needed.","name":"Managed media source","spec":"https://w3c.github.io/media-source/#managedmediasource-interface","status":{"baseline":false,"support":{"safari":"17","safari_ios":"17.1"}}},"manifest":{"compat_features":["html.elements.link.rel.manifest","html.manifest.background_color","html.manifest.description","html.manifest.display","html.manifest.icons","html.manifest.id","html.manifest.name","html.manifest.orientation","html.manifest.scope","html.manifest.serviceworker","html.manifest.serviceworker.scope","html.manifest.serviceworker.src","html.manifest.serviceworker.use_cache","html.manifest.short_name","html.manifest.start_url","html.manifest.theme_color"],"description":"A web app manifest file provides metadata about the site. The browser can use the metadata to install the site as a standalone application on the user's device. The metadata usually includes the app's name, icon, description, and ways in which the app wishes to integrate with the device.","description_html":"A web app manifest file provides metadata about the site. The browser can use the metadata to install the site as a standalone application on the user's device. The metadata usually includes the app's name, icon, description, and ways in which the app wishes to integrate with the device.","group":"progressive-web-app","name":"Web app manifest","spec":"https://w3c.github.io/manifest/","status":{"baseline":false,"support":{"chrome":"53","chrome_android":"53","edge":"79","firefox_android":"79","safari":"17","safari_ios":"15.4"}}},"map":{"compat_features":["javascript.builtins.Map","javascript.builtins.Map.@@iterator","javascript.builtins.Map.@@species","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":{"compat_features":["css.properties.margin","css.properties.margin-bottom","css.properties.margin-bottom.auto","css.properties.margin-left","css.properties.margin-left.auto","css.properties.margin-right","css.properties.margin-right.auto","css.properties.margin-top","css.properties.margin-top.auto","css.properties.margin.auto"],"description":"The margin CSS property sets space around an element. It is a shorthand for margin-top, margin-right, margin-bottom, and margin-left.","description_html":"The <code>margin</code> CSS property sets space around an element. It is a shorthand for <code>margin-top</code>, <code>margin-right</code>, <code>margin-bottom</code>, and <code>margin-left</code>.","group":"layout","name":"margin","spec":"https://drafts.csswg.org/css-box-4/#margins","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"}}},"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>&#x3C;mark></code> element represents text which is marked or highlighted for reference or notation purposes.","group":"html-elements","name":"<mark>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-mark-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"5"}}},"marker":{"caniuse":"css-marker-pseudo","compat_features":["css.selectors.marker","css.selectors.marker.animation_and_transition_support"],"description":"The ::marker CSS pseudo-element selects list item markers for styling numbers or bullets.","description_html":"The <code>::marker</code> CSS pseudo-element selects list item markers for styling numbers or bullets.","group":"lists","name":"::marker","spec":"https://drafts.csswg.org/css-pseudo-4/#marker-pseudo","status":{"baseline":false,"support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"80","firefox_android":"80"}}},"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","safari_ios":"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>&#x3C;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-clip.border","css.properties.mask-clip.content","css.properties.mask-clip.padding","css.properties.mask-clip.text","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-origin.border","css.properties.mask-origin.content","css.properties.mask-origin.fill-box","css.properties.mask-origin.padding","css.properties.mask-origin.stroke-box","css.properties.mask-origin.view-box","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":{}}},"matchmedia":{"caniuse":"matchmedia","compat_features":["api.MediaQueryList","api.MediaQueryList.EventTarget_inheritance","api.MediaQueryList.change_event","api.MediaQueryList.matches","api.MediaQueryList.media","api.MediaQueryListEvent","api.MediaQueryListEvent.MediaQueryListEvent","api.MediaQueryListEvent.matches","api.MediaQueryListEvent.media","api.Window.matchMedia"],"description":"The window.matchMedia() method checks whether a media query applies to the document.","description_html":"The <code>window.matchMedia()</code> method checks whether a media query applies to the document.","name":"matchMedia","spec":"https://drafts.csswg.org/cssom-view-1/#dom-window-matchmedia","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"9","chrome_android":"18","edge":"12","firefox":"6","firefox_android":"6","safari":"5.1","safari_ios":"5"}}},"mathml":{"caniuse":"mathml","compat_features":["api.MathMLElement","api.MathMLElement.attributeStyleMap","api.MathMLElement.blur","api.MathMLElement.focus","api.MathMLElement.nonce","api.MathMLElement.style","api.MathMLElement.tabIndex","css.properties.display.math","css.properties.font-size.math","css.properties.math-depth","css.properties.math-shift","css.properties.math-style","css.properties.text-transform.math-auto","mathml.attribute_values.named_space","mathml.attribute_values.nonzero_unitless_values","mathml.elements.annotation","mathml.elements.annotation-xml","mathml.elements.math","mathml.elements.math.display","mathml.elements.menclose","mathml.elements.menclose.notation","mathml.elements.menclose.notation.actuarial","mathml.elements.menclose.notation.bottom","mathml.elements.menclose.notation.box","mathml.elements.menclose.notation.circle","mathml.elements.menclose.notation.downdiagonalstrike","mathml.elements.menclose.notation.horizontalstrike","mathml.elements.menclose.notation.left","mathml.elements.menclose.notation.longdiv","mathml.elements.menclose.notation.madruwb","mathml.elements.menclose.notation.phasorangle","mathml.elements.menclose.notation.right","mathml.elements.menclose.notation.roundedbox","mathml.elements.menclose.notation.top","mathml.elements.menclose.notation.updiagonalarrow","mathml.elements.menclose.notation.updiagonalstrike","mathml.elements.menclose.notation.verticalstrike","mathml.elements.merror","mathml.elements.mfrac","mathml.elements.mfrac.linethickness","mathml.elements.mi","mathml.elements.mi.mathvariant","mathml.elements.mmultiscripts","mathml.elements.mn","mathml.elements.mo","mathml.elements.mo.accent","mathml.elements.mo.form","mathml.elements.mo.largeop","mathml.elements.mo.lspace","mathml.elements.mo.maxsize","mathml.elements.mo.minsize","mathml.elements.mo.movablelimits","mathml.elements.mo.rspace","mathml.elements.mo.stretchy","mathml.elements.mo.symmetric","mathml.elements.mover","mathml.elements.mover.accent","mathml.elements.mpadded","mathml.elements.mpadded.depth","mathml.elements.mpadded.height","mathml.elements.mpadded.lspace","mathml.elements.mpadded.relative_values","mathml.elements.mpadded.voffset","mathml.elements.mpadded.width","mathml.elements.mphantom","mathml.elements.mprescripts","mathml.elements.mroot","mathml.elements.mrow","mathml.elements.ms","mathml.elements.mspace","mathml.elements.mspace.depth","mathml.elements.mspace.height","mathml.elements.mspace.width","mathml.elements.msqrt","mathml.elements.mstyle","mathml.elements.msub","mathml.elements.msubsup","mathml.elements.msup","mathml.elements.mtable","mathml.elements.mtable.align","mathml.elements.mtable.columnalign","mathml.elements.mtable.columnlines","mathml.elements.mtable.columnspacing","mathml.elements.mtable.frame","mathml.elements.mtable.framespacing","mathml.elements.mtable.rowalign","mathml.elements.mtable.rowlines","mathml.elements.mtable.rowspacing","mathml.elements.mtable.width","mathml.elements.mtd","mathml.elements.mtd.columnalign","mathml.elements.mtd.columnspan","mathml.elements.mtd.rowalign","mathml.elements.mtd.rowspan","mathml.elements.mtext","mathml.elements.mtr","mathml.elements.mtr.columnalign","mathml.elements.mtr.rowalign","mathml.elements.munder","mathml.elements.munder.accentunder","mathml.elements.munderover","mathml.elements.munderover.accent","mathml.elements.munderover.accentunder","mathml.elements.semantics","mathml.global_attributes.dir","mathml.global_attributes.displaystyle","mathml.global_attributes.href","mathml.global_attributes.scriptlevel"],"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":"5.1","safari_ios":"5"}}},"measure-memory":{"compat_features":["api.Performance.measureUserAgentSpecificMemory"],"description":"The measureUserAgentSpecificMemory() method estimates the memory usage of a web application including all its iframes and workers.","description_html":"The <code>measureUserAgentSpecificMemory()</code> method estimates the memory usage of a web application including all its iframes and workers.","group":"performance","name":"Memory measurement","spec":"https://wicg.github.io/performance-measure-memory/","status":{"baseline":false,"support":{"chrome":"89","chrome_android":"89","edge":"89"}}},"media-capabilities":{"compat_features":["api.InputDeviceInfo.getCapabilities","api.MediaCapabilities","api.MediaCapabilities.decodingInfo","api.MediaCapabilities.encodingInfo","api.MediaStreamTrack.getCapabilities","api.Navigator.mediaCapabilities","api.WorkerNavigator.mediaCapabilities"],"description":"The navigator.mediaCapabilities API queries the encoding and decoding abilities of the device, such as supported codecs, resolutions, and bitrates.","description_html":"The <code>navigator.mediaCapabilities</code> API queries the encoding and decoding abilities of the device, such as supported codecs, resolutions, and bitrates.","name":"Media capabilities","spec":"https://w3c.github.io/media-capabilities/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"63","firefox_android":"63","safari":"13","safari_ios":"13"}}},"media-capture":{"caniuse":"stream","compat_features":["api.InputDeviceInfo","api.MediaDeviceInfo","api.MediaDeviceInfo.deviceId","api.MediaDeviceInfo.groupId","api.MediaDeviceInfo.kind","api.MediaDeviceInfo.label","api.MediaDeviceInfo.toJSON","api.MediaDevices","api.MediaDevices.devicechange_event","api.MediaDevices.enumerateDevices","api.MediaDevices.getSupportedConstraints","api.MediaDevices.getUserMedia","api.MediaDevices.getUserMedia.secure_context_required","api.MediaStream","api.MediaStream.MediaStream","api.MediaStream.active","api.MediaStream.addTrack","api.MediaStream.addtrack_event","api.MediaStream.clone","api.MediaStream.getAudioTracks","api.MediaStream.getTrackById","api.MediaStream.getTracks","api.MediaStream.getVideoTracks","api.MediaStream.id","api.MediaStream.removeTrack","api.MediaStream.removetrack_event","api.MediaStreamTrack","api.MediaStreamTrack.applyConstraints","api.MediaStreamTrack.applyConstraints.aspectRatio_constraint","api.MediaStreamTrack.applyConstraints.autoGainControl_constraint","api.MediaStreamTrack.applyConstraints.channelCount_constraint","api.MediaStreamTrack.applyConstraints.deviceId_constraint","api.MediaStreamTrack.applyConstraints.echoCancellation_constraint","api.MediaStreamTrack.applyConstraints.facingMode_constraint","api.MediaStreamTrack.applyConstraints.frameRate_constraint","api.MediaStreamTrack.applyConstraints.groupId_constraint","api.MediaStreamTrack.applyConstraints.height_constraint","api.MediaStreamTrack.applyConstraints.latency_constraint","api.MediaStreamTrack.applyConstraints.noiseSuppression_constraint","api.MediaStreamTrack.applyConstraints.resizeMode_constraint","api.MediaStreamTrack.applyConstraints.sampleRate_constraint","api.MediaStreamTrack.applyConstraints.sampleSize_constraint","api.MediaStreamTrack.applyConstraints.width_constraint","api.MediaStreamTrack.clone","api.MediaStreamTrack.enabled","api.MediaStreamTrack.ended_event","api.MediaStreamTrack.getConstraints","api.MediaStreamTrack.getSettings","api.MediaStreamTrack.id","api.MediaStreamTrack.kind","api.MediaStreamTrack.label","api.MediaStreamTrack.mute_event","api.MediaStreamTrack.muted","api.MediaStreamTrack.readyState","api.MediaStreamTrack.stop","api.MediaStreamTrack.unmute_event","api.MediaStreamTrackEvent","api.MediaStreamTrackEvent.MediaStreamTrackEvent","api.MediaStreamTrackEvent.track","api.Navigator.mediaDevices","api.Navigator.mediaDevices.secure_context_required","api.OverconstrainedError","api.OverconstrainedError.OverconstrainedError","api.OverconstrainedError.constraint","api.Permissions.permission_camera","api.Permissions.permission_microphone","html.elements.iframe.allow.camera","html.elements.iframe.allow.microphone","http.headers.Permissions-Policy.camera","http.headers.Permissions-Policy.microphone"],"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-playback-quality":{"compat_features":["api.HTMLVideoElement.getVideoPlaybackQuality","api.VideoPlaybackQuality","api.VideoPlaybackQuality.creationTime","api.VideoPlaybackQuality.droppedVideoFrames","api.VideoPlaybackQuality.totalVideoFrames"],"description":"The getVideoPlaybackQuality() method of HTMLVideoElement returns metrics that can be used to determine the playback quality of a video, such as how many frames were dropped.","description_html":"The <code>getVideoPlaybackQuality()</code> method of <code>HTMLVideoElement</code> returns metrics that can be used to determine the playback quality of a video, such as how many frames were dropped.","name":"Media playback quality","spec":"https://w3c.github.io/media-playback-quality/","status":{"baseline":"high","baseline_high_date":"2022-08-04","baseline_low_date":"2020-02-04","support":{"chrome":"80","chrome_android":"80","edge":"12","firefox":"42","firefox_android":"42","safari":"8","safari_ios":"12.2"}}},"media-pseudos":{"compat_features":["css.selectors.buffering","css.selectors.muted","css.selectors.paused","css.selectors.playing","css.selectors.seeking","css.selectors.stalled","css.selectors.volume-locked"],"description":"The :playing, :paused, :seeking, :buffering, :stalled, :muted, and :volume-locked CSS pseudo-classes match <audio> and <video> elements based on their state.","description_html":"The <code>:playing</code>, <code>:paused</code>, <code>:seeking</code>, <code>:buffering</code>, <code>:stalled</code>, <code>:muted</code>, and <code>:volume-locked</code> CSS pseudo-classes match <code>&#x3C;audio></code> and <code>&#x3C;video></code> elements based on their state.","group":"media-elements","name":"Media element pseudo-classes","spec":["https://drafts.csswg.org/selectors-4/#resource-pseudos","https://html.spec.whatwg.org/multipage/semantics-other.html#pseudo-classes"],"status":{"baseline":false,"support":{"safari":"15.4","safari_ios":"15.4"}}},"media-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","css.types.ratio.number_value"],"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>&#x3C;</code>, <code>></code>, <code>&#x3C;=</code>, and <code>>=</code> to define a range of values for a media query. For example, <code>(400px &#x3C; width &#x3C; 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.ChapterInformation","api.ChapterInformation.artwork","api.ChapterInformation.startTime","api.ChapterInformation.title","api.MediaMetadata","api.MediaMetadata.MediaMetadata","api.MediaMetadata.album","api.MediaMetadata.artist","api.MediaMetadata.artwork","api.MediaMetadata.chapterInfo","api.MediaMetadata.title","api.MediaSession","api.MediaSession.metadata","api.MediaSession.playbackState","api.MediaSession.setActionHandler","api.MediaSession.setActionHandler.hangup_type","api.MediaSession.setActionHandler.nextslide_type","api.MediaSession.setActionHandler.nexttrack_type","api.MediaSession.setActionHandler.pause_type","api.MediaSession.setActionHandler.play_type","api.MediaSession.setActionHandler.previousslide_type","api.MediaSession.setActionHandler.previoustrack_type","api.MediaSession.setActionHandler.seekbackward_type","api.MediaSession.setActionHandler.seekforward_type","api.MediaSession.setActionHandler.seekto_type","api.MediaSession.setActionHandler.skipad_type","api.MediaSession.setActionHandler.stop_type","api.MediaSession.setActionHandler.togglecamera_type","api.MediaSession.setActionHandler.togglemicrophone_type","api.MediaSession.setCameraActive","api.MediaSession.setMicrophoneActive","api.MediaSession.setPositionState","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.AudioTrack.sourceBuffer","api.BufferedChangeEvent","api.BufferedChangeEvent.BufferedChangeEvent","api.BufferedChangeEvent.addedRanges","api.BufferedChangeEvent.removedRanges","api.HTMLMediaElement.srcObject","api.MediaSource","api.MediaSource.MediaSource","api.MediaSource.activeSourceBuffers","api.MediaSource.addSourceBuffer","api.MediaSource.canConstructInDedicatedWorker_static","api.MediaSource.clearLiveSeekableRange","api.MediaSource.duration","api.MediaSource.endOfStream","api.MediaSource.handle","api.MediaSource.isTypeSupported_static","api.MediaSource.readyState","api.MediaSource.removeSourceBuffer","api.MediaSource.setLiveSeekableRange","api.MediaSource.sourceBuffers","api.MediaSource.sourceclose_event","api.MediaSource.sourceended_event","api.MediaSource.sourceopen_event","api.MediaSource.worker_support","api.MediaSourceHandle","api.SourceBuffer","api.SourceBuffer.abort","api.SourceBuffer.abort.worker_support","api.SourceBuffer.abort_event","api.SourceBuffer.abort_event.worker_support","api.SourceBuffer.appendBuffer","api.SourceBuffer.appendBuffer.worker_support","api.SourceBuffer.appendWindowEnd","api.SourceBuffer.appendWindowEnd.worker_support","api.SourceBuffer.appendWindowStart","api.SourceBuffer.appendWindowStart.worker_support","api.SourceBuffer.audioTracks","api.SourceBuffer.audioTracks.worker_support","api.SourceBuffer.buffered","api.SourceBuffer.buffered.worker_support","api.SourceBuffer.changeType","api.SourceBuffer.changeType.worker_support","api.SourceBuffer.error_event","api.SourceBuffer.error_event.worker_support","api.SourceBuffer.mode","api.SourceBuffer.mode.worker_support","api.SourceBuffer.remove","api.SourceBuffer.remove.worker_support","api.SourceBuffer.textTracks","api.SourceBuffer.timestampOffset","api.SourceBuffer.timestampOffset.worker_support","api.SourceBuffer.update_event","api.SourceBuffer.update_event.worker_support","api.SourceBuffer.updateend_event","api.SourceBuffer.updateend_event.worker_support","api.SourceBuffer.updatestart_event","api.SourceBuffer.updatestart_event.worker_support","api.SourceBuffer.updating","api.SourceBuffer.updating.worker_support","api.SourceBuffer.videoTracks","api.SourceBuffer.videoTracks.worker_support","api.SourceBufferList","api.SourceBufferList.addsourcebuffer_event","api.SourceBufferList.addsourcebuffer_event.worker_support","api.SourceBufferList.length","api.SourceBufferList.length.worker_support","api.SourceBufferList.removesourcebuffer_event","api.SourceBufferList.removesourcebuffer_event.worker_support","api.TextTrack.sourceBuffer","api.VideoTrack.sourceBuffer"],"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":"41","safari":"8"}}},"mediastream-recording":{"compat_features":["api.BlobEvent","api.BlobEvent.BlobEvent","api.BlobEvent.data","api.BlobEvent.timecode","api.MediaRecorder","api.MediaRecorder.MediaRecorder","api.MediaRecorder.MediaRecorder.options_parameter","api.MediaRecorder.audioBitrateMode","api.MediaRecorder.audioBitsPerSecond","api.MediaRecorder.dataavailable_event","api.MediaRecorder.error_event","api.MediaRecorder.isTypeSupported_static","api.MediaRecorder.mimeType","api.MediaRecorder.pause","api.MediaRecorder.pause_event","api.MediaRecorder.requestData","api.MediaRecorder.resume","api.MediaRecorder.resume_event","api.MediaRecorder.start","api.MediaRecorder.start_event","api.MediaRecorder.state","api.MediaRecorder.stop","api.MediaRecorder.stop_event","api.MediaRecorder.stream","api.MediaRecorder.videoBitsPerSecond"],"description":"The MediaRecorder API captures data generated by MediaStream or HTMLMediaElement objects for analysis, processing, or saving to disk. Also known as the Media Recording API or the MediaRecorder API.","description_html":"The <code>MediaRecorder</code> API captures data generated by <code>MediaStream</code> or <code>HTMLMediaElement</code> objects for analysis, processing, or saving to disk. Also known as the Media Recording API or the MediaRecorder API.","name":"MediaStream recording","spec":"https://w3c.github.io/mediacapture-record/","status":{"baseline":false,"support":{}}},"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>&#x3C;menu></code> element represents an unordered list of action items (<code>&#x3C;li></code>), such as a toolbar. It is a semantic alternative to the <code>&#x3C;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.","group":"messaging","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.content-type","html.elements.meta.http-equiv.refresh","html.elements.meta.name","html.elements.meta.name.referrer"],"description":"The <meta> element represents metadata about the page used by the browser or search engines, including description, keywords, and character sets.","description_html":"The <code>&#x3C;meta></code> element represents metadata about the page used by the browser or search engines, including description, keywords, and character sets.","group":"html-elements","name":"<meta>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#meta","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"meta-theme-color":{"caniuse":"meta-theme-color","compat_features":["html.elements.meta.name.theme-color"],"description":"The name=\"theme-color\" attribute for the <meta> HTML element sets the preferred color to customize the display of the page or the surrounding browser user interface.","description_html":"The <code>name=\"theme-color\"</code> attribute for the <code>&#x3C;meta></code> HTML element sets the preferred color to customize the display of the page or the surrounding browser user interface.","group":"html","name":"<meta name=\"theme-color\">","spec":"https://html.spec.whatwg.org/multipage/semantics.html#meta-theme-color","status":{"baseline":false,"support":{"chrome_android":"92","safari":"15","safari_ios":"15"}}},"meter":{"caniuse":"meter","compat_features":["api.HTMLMeterElement","api.HTMLMeterElement.high","api.HTMLMeterElement.labels","api.HTMLMeterElement.low","api.HTMLMeterElement.max","api.HTMLMeterElement.min","api.HTMLMeterElement.optimum","api.HTMLMeterElement.value","html.elements.meter","html.elements.meter.high","html.elements.meter.low","html.elements.meter.max","html.elements.meter.min","html.elements.meter.optimum","html.elements.meter.value"],"description":"The <meter> element represents a scalar value within a known range or a fractional value, typically shown as a progress bar.","description_html":"The <code>&#x3C;meter></code> element represents a scalar value within a known range or a fractional value, typically shown as a progress bar.","group":["forms","html-elements"],"name":"<meter>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-meter-element","status":{"baseline":"high","baseline_high_date":"2021-04-02","baseline_low_date":"2018-10-02","support":{"chrome":"6","chrome_android":"18","edge":"18","firefox":"56","firefox_android":"56","safari":"6","safari_ios":"10.3"}}},"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"}}},"min-max-content":{"compat_features":["css.properties.height.max-content","css.properties.height.min-content","css.properties.max-height.max-content","css.properties.max-height.min-content","css.properties.max-width.max-content","css.properties.max-width.min-content","css.properties.min-height.max-content","css.properties.min-height.min-content","css.properties.min-width.max-content","css.properties.min-width.min-content","css.properties.width.max-content","css.properties.width.min-content"],"description":"The min-content and max-content CSS keywords represent the smallest and largest intrinsic sizes of an element.","description_html":"The <code>min-content</code> and <code>max-content</code> CSS keywords represent the smallest and largest intrinsic sizes of an element.","group":"layout","name":"min-content and max-content","spec":["https://drafts.csswg.org/css-sizing-3/#valdef-width-max-content","https://drafts.csswg.org/css-sizing-3/#valdef-width-min-content"],"status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"46","chrome_android":"46","edge":"79","firefox":"66","firefox_android":"66","safari":"11","safari_ios":"11"}}},"min-max-width-height":{"caniuse":"minmaxwh","compat_features":["css.properties.max-height","css.properties.max-height.none","css.properties.max-width","css.properties.max-width.none","css.properties.min-height","css.properties.min-height.auto","css.properties.min-width","css.properties.min-width.auto"],"description":"The min-width, min-height, max-width, and max-height CSS properties set the minimum and maximum size of an element.","description_html":"The <code>min-width</code>, <code>min-height</code>, <code>max-width</code>, and <code>max-height</code> CSS properties set the minimum and maximum size of an element.","name":"Min and max width and height","spec":["https://drafts.csswg.org/css-sizing-3/#min-size-properties","https://drafts.csswg.org/css-sizing-3/#max-size-properties"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"18","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1.3","safari_ios":"1"}}},"mix-blend-mode":{"caniuse":"css-mixblendmode","compat_features":["css.properties.mix-blend-mode","css.properties.mix-blend-mode.plus-darker","css.properties.mix-blend-mode.plus-lighter","css.properties.mix-blend-mode.svg_elements"],"description":"The mix-blend-mode CSS property blends an element's content with its background or parent elements using blend modes like multiply, difference, or color.","description_html":"The <code>mix-blend-mode</code> CSS property blends an element's content with its background or parent elements using blend modes like <code>multiply</code>, <code>difference</code>, or <code>color</code>.","group":"blend-mode","name":"mix-blend-mode","spec":"https://drafts.fxtf.org/compositing-2/#mix-blend-mode","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"41","chrome_android":"41","edge":"79","firefox":"32","firefox_android":"32","safari":"8","safari_ios":"8"}}},"mixed-content":{"compat_features":["http.mixed-content","http.mixed-content.allow_file_urls","http.mixed-content.allow_localhost_url","http.mixed-content.allow_loopback_url","http.mixed-content.auto_upgrade_images","http.mixed-content.auto_upgrade_video_audio","http.mixed-content.block_mixed_downloads","http.mixed-content.blockable_mixed_content"],"description":"When a document is loaded over HTTPS, browsers ensure that none of the document's resources are loaded over an insecure protocol. Instead, resources that the document attempts to load over an insecure protocol are either loaded over HTTPS or are blocked.","description_html":"When a document is loaded over HTTPS, browsers ensure that none of the document's resources are loaded over an insecure protocol. Instead, resources that the document attempts to load over an insecure protocol are either loaded over HTTPS or are blocked.","group":"security","name":"Mixed content handling","spec":"https://w3c.github.io/webappsec-mixed-content/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"≤79","chrome_android":"≤79","edge":"79","firefox":"≤23","firefox_android":"≤23","safari":"≤9.1","safari_ios":"≤9.3"}}},"modal":{"compat_features":["css.selectors.modal"],"description":"The :modal pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <dialog> element used with showModal().","description_html":"The <code>:modal</code> pseudo-class selects elements that put other elements into a non-interactive state, such as a fullscreen element or a <code>&#x3C;dialog></code> element used with <code>showModal()</code>.","group":"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>&#x3C;link></code> HTML element indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution.","name":"<link rel=\"modulepreload\">","spec":"https://html.spec.whatwg.org/multipage/links.html#link-type-modulepreload","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"66","chrome_android":"66","edge":"≤79","firefox":"115","firefox_android":"115","safari":"17","safari_ios":"17"}}},"motion-path":{"caniuse":"css-motion-paths","compat_features":["css.properties.offset","css.properties.offset-anchor","css.properties.offset-anchor.auto","css.properties.offset-anchor.bottom","css.properties.offset-anchor.center","css.properties.offset-anchor.left","css.properties.offset-anchor.right","css.properties.offset-anchor.top","css.properties.offset-distance","css.properties.offset-path","css.properties.offset-path.basic_shape","css.properties.offset-path.border-box","css.properties.offset-path.content-box","css.properties.offset-path.fill-box","css.properties.offset-path.margin-box","css.properties.offset-path.none","css.properties.offset-path.padding-box","css.properties.offset-path.path","css.properties.offset-path.ray","css.properties.offset-path.stroke-box","css.properties.offset-path.url","css.properties.offset-path.view-box","css.properties.offset-position","css.properties.offset-position.auto","css.properties.offset-position.bottom","css.properties.offset-position.center","css.properties.offset-position.left","css.properties.offset-position.normal","css.properties.offset-position.right","css.properties.offset-position.top","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.auxclick_event","api.Element.click_event","api.Element.contextmenu_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.HTMLElement.click","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"}}},"multi-column":{"compat_features":["css.properties.align-content.multicol_context","css.properties.column-count","css.properties.column-count.auto","css.properties.column-gap","css.properties.column-gap.multicol_context","css.properties.column-gap.multicol_context.calc_values","css.properties.column-gap.multicol_context.percentage_values","css.properties.column-rule","css.properties.column-rule-color","css.properties.column-rule-style","css.properties.column-rule-width","css.properties.column-width","css.properties.column-width.auto","css.properties.columns","css.properties.gap.multicol_context"],"description":"Multi-column layout flows an element's content across one or more columns in a single row, without affecting the display property of its children.","description_html":"Multi-column layout flows an element's content across one or more columns in a single row, without affecting the <code>display</code> property of its children.","group":"multi-column","name":"Multi-column layout","spec":"https://drafts.csswg.org/css-multicol-1/","status":{"baseline":"high","baseline_high_date":"2019-09-07","baseline_low_date":"2017-03-07","support":{"chrome":"50","chrome_android":"50","edge":"12","firefox":"52","firefox_android":"52","safari":"9","safari_ios":"9"}}},"mutation-events":{"compat_features":["api.MutationEvent","api.MutationEvent.attrChange","api.MutationEvent.attrName","api.MutationEvent.initMutationEvent","api.MutationEvent.newValue","api.MutationEvent.prevValue","api.MutationEvent.relatedNode"],"description":"Mutation events like DOMSubtreeModified, DOMNodeInserted, or DOMNodeRemoved fire when DOM changes occur.","description_html":"Mutation events like <code>DOMSubtreeModified</code>, <code>DOMNodeInserted</code>, or <code>DOMNodeRemoved</code> fire when DOM changes occur.","discouraged":{"according_to":["https://www.w3.org/TR/2024/WD-uievents-20240906/#legacy-mutationevent-events"],"alternatives":["mutationobserver"]},"name":"Mutation events","spec":"https://w3c.github.io/uievents/","status":{"baseline":false,"support":{"firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"mutationobserver":{"compat_features":["api.MutationObserver","api.MutationObserver.MutationObserver","api.MutationObserver.disconnect","api.MutationObserver.observe","api.MutationObserver.takeRecords","api.MutationRecord","api.MutationRecord.addedNodes","api.MutationRecord.attributeName","api.MutationRecord.attributeNamespace","api.MutationRecord.nextSibling","api.MutationRecord.oldValue","api.MutationRecord.previousSibling","api.MutationRecord.removedNodes","api.MutationRecord.target","api.MutationRecord.type"],"description":"The MutationObserver API watches for changes to the DOM tree and calls a callback function when DOM changes occur.","description_html":"The <code>MutationObserver</code> API watches for changes to the DOM tree and calls a callback function when DOM changes occur.","name":"MutationObserver","spec":"https://dom.spec.whatwg.org/#interface-mutationobserver","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"14","firefox_android":"14","safari":"7","safari_ios":"7"}}},"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"}}},"namespace":{"caniuse":"css-namespaces","compat_features":["api.CSSNamespaceRule","api.CSSNamespaceRule.namespaceURI","api.CSSNamespaceRule.prefix","css.at-rules.namespace","css.selectors.namespace"],"description":"The @namespace CSS rule sets a default namespace or namespace prefix. Namespace prefixes allow CSS selectors to distinguish elements with the same name but different document types, such as the HTML <a> element and the SVG <a> element.","description_html":"The <code>@namespace</code> CSS rule sets a default namespace or namespace prefix. Namespace prefixes allow CSS selectors to distinguish elements with the same name but different document types, such as the HTML <code>&#x3C;a></code> element and the SVG <code>&#x3C;a></code> element.","group":["css","selectors"],"name":"@namespace","spec":"https://drafts.csswg.org/css-namespaces-3/#declaration","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"nav":{"compat_features":["html.elements.nav"],"description":"The <nav> element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents.","description_html":"The <code>&#x3C;nav></code> element represents a section of a page whose purpose is to provide navigation links, either within the current document or to other documents.","group":"html-elements","name":"<nav>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-nav-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"navigation":{"compat_features":["api.NavigateEvent","api.NavigateEvent.NavigateEvent","api.NavigateEvent.canIntercept","api.NavigateEvent.destination","api.NavigateEvent.downloadRequest","api.NavigateEvent.formData","api.NavigateEvent.hasUAVisualTransition","api.NavigateEvent.hashChange","api.NavigateEvent.info","api.NavigateEvent.intercept","api.NavigateEvent.navigationType","api.NavigateEvent.scroll","api.NavigateEvent.signal","api.NavigateEvent.userInitiated","api.Navigation","api.Navigation.activation","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.NavigationActivation","api.NavigationActivation.entry","api.NavigationActivation.from","api.NavigationActivation.navigationType","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 initiates, intercepts, or modifies browser navigation actions. Not to be confused with the navigator API.","description_html":"The <code>navigation</code> API initiates, intercepts, or modifies browser navigation actions. Not to be confused with the <code>navigator</code> API.","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"}}},"navigation-timing":{"compat_features":["api.PerformanceNavigationTiming","api.PerformanceNavigationTiming.criticalCHRestart","api.PerformanceNavigationTiming.domComplete","api.PerformanceNavigationTiming.domContentLoadedEventEnd","api.PerformanceNavigationTiming.domContentLoadedEventStart","api.PerformanceNavigationTiming.domInteractive","api.PerformanceNavigationTiming.loadEventEnd","api.PerformanceNavigationTiming.loadEventStart","api.PerformanceNavigationTiming.redirectCount","api.PerformanceNavigationTiming.toJSON","api.PerformanceNavigationTiming.type","api.PerformanceNavigationTiming.unloadEventEnd","api.PerformanceNavigationTiming.unloadEventStart"],"description":"The navigation performance entry and the PerformanceNavigationTiming API measures navigation events, such as loading time or the number of redirects.","description_html":"The <code>navigation</code> performance entry and the <code>PerformanceNavigationTiming</code> API measures navigation events, such as loading time or the number of redirects.","group":"performance","name":"Navigation timing","spec":"https://w3c.github.io/navigation-timing/","status":{"baseline":"high","baseline_high_date":"2024-04-25","baseline_low_date":"2021-10-25","support":{"chrome":"57","chrome_android":"57","edge":"12","firefox":"58","firefox_android":"58","safari":"15","safari_ios":"15.1"}}},"navigator":{"compat_features":["api.Navigator","api.Window.navigator"],"description":"The window.navigator API is a generic global object, under which many other, more interesting APIs are located. It doesn't do anything interesting on its own.","description_html":"The <code>window.navigator</code> API is a generic global object, under which many other, more interesting APIs are located. It doesn't do anything interesting on its own.","name":"Navigator","spec":"https://html.spec.whatwg.org/multipage/system-state.html#the-navigator-object","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"}}},"nesting":{"caniuse":"css-nesting","compat_features":["api.CSSNestedDeclarations","api.CSSNestedDeclarations.style","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"}}},"network-information":{"compat_features":["api.Navigator.connection","api.NetworkInformation","api.NetworkInformation.change_event","api.NetworkInformation.downlink","api.NetworkInformation.downlinkMax","api.NetworkInformation.effectiveType","api.NetworkInformation.rtt","api.NetworkInformation.type","api.NetworkInformation.worker_support","api.WorkerNavigator.connection","http.headers.Downlink","http.headers.ECT","http.headers.RTT"],"description":"The navigator.connection API provides information about the network connection a device is using and fires events when the connection type changes.","description_html":"The <code>navigator.connection</code> API provides information about the network connection a device is using and fires events when the connection type changes.","name":"Network Information","spec":"https://wicg.github.io/netinfo/","status":{"baseline":false,"support":{"chrome":"67","chrome_android":"67"}}},"non-cookie-storage-access":{"compat_features":["api.Document.hasUnpartitionedCookieAccess","api.Document.requestStorageAccess.types_parameter","api.Document.requestStorageAccess.types_parameter.types_BroadcastChannel_parameter","api.Document.requestStorageAccess.types_parameter.types_SharedWorker_parameter","api.Document.requestStorageAccess.types_parameter.types_all_parameter","api.Document.requestStorageAccess.types_parameter.types_caches_parameter","api.Document.requestStorageAccess.types_parameter.types_cookies_parameter","api.Document.requestStorageAccess.types_parameter.types_createObjectURL_parameter","api.Document.requestStorageAccess.types_parameter.types_estimate_parameter","api.Document.requestStorageAccess.types_parameter.types_getDirectory_parameter","api.Document.requestStorageAccess.types_parameter.types_indexedDB_parameter","api.Document.requestStorageAccess.types_parameter.types_localStorage_parameter","api.Document.requestStorageAccess.types_parameter.types_locks_parameter","api.Document.requestStorageAccess.types_parameter.types_revokeObjectURL_parameter","api.Document.requestStorageAccess.types_parameter.types_sessionStorage_parameter","api.SharedWorker.SharedWorker.options_sameSiteCookies_parameter","api.StorageAccessHandle","api.StorageAccessHandle.BroadcastChannel","api.StorageAccessHandle.SharedWorker","api.StorageAccessHandle.caches","api.StorageAccessHandle.createObjectURL","api.StorageAccessHandle.estimate","api.StorageAccessHandle.getDirectory","api.StorageAccessHandle.indexedDB","api.StorageAccessHandle.localStorage","api.StorageAccessHandle.locks","api.StorageAccessHandle.revokeObjectURL","api.StorageAccessHandle.sessionStorage"],"description":"Non-cookie storage access extends the requestStorageAccess() API to let content in cross-site iframes request access to first-party data beyond cookies.","description_html":"Non-cookie storage access extends the <code>requestStorageAccess()</code> API to let content in cross-site iframes request access to first-party data beyond cookies.","group":"storage","name":"Non-cookie storage access","spec":"https://privacycg.github.io/saa-non-cookie-storage/","status":{"baseline":false,"support":{"chrome":"125"}}},"not":{"caniuse":"css-not-sel-list","compat_features":["css.selectors.not","css.selectors.not.selector_list"],"description":"The :not() functional pseudo-class matches elements that do not match the selectors in its argument.","description_html":"The <code>:not()</code> functional pseudo-class matches elements that do not match the selectors in its argument.","group":"selectors","name":":not()","spec":"https://drafts.csswg.org/selectors-4/#negation","status":{"baseline":"high","baseline_high_date":"2023-07-21","baseline_low_date":"2021-01-21","support":{"chrome":"88","chrome_android":"88","edge":"88","firefox":"84","firefox_android":"84","safari":"9","safari_ios":"9"}}},"notifications":{"compat_features":["api.Notification","api.Notification.Notification","api.Notification.actions","api.Notification.badge","api.Notification.body","api.Notification.click_event","api.Notification.close","api.Notification.close_event","api.Notification.data","api.Notification.dir","api.Notification.error_event","api.Notification.icon","api.Notification.image","api.Notification.lang","api.Notification.maxActions_static","api.Notification.permission_static","api.Notification.renotify","api.Notification.requestPermission_static","api.Notification.requestPermission_static.returns_promise","api.Notification.requireInteraction","api.Notification.secure_context_required","api.Notification.show_event","api.Notification.silent","api.Notification.tag","api.Notification.timestamp","api.Notification.title","api.Notification.vibrate","api.Notification.worker_support","api.NotificationEvent","api.NotificationEvent.NotificationEvent","api.NotificationEvent.action","api.NotificationEvent.notification","api.Permissions.permission_notifications","api.ServiceWorkerGlobalScope.notificationclick_event","api.ServiceWorkerGlobalScope.notificationclose_event","api.ServiceWorkerRegistration.getNotifications","api.ServiceWorkerRegistration.showNotification","api.ServiceWorkerRegistration.showNotification.options_actions_parameter","api.ServiceWorkerRegistration.showNotification.options_badge_parameter","api.ServiceWorkerRegistration.showNotification.options_data_parameter","api.ServiceWorkerRegistration.showNotification.options_image_parameter","api.ServiceWorkerRegistration.showNotification.options_renotify_parameter","api.ServiceWorkerRegistration.showNotification.options_requireInteraction_parameter","api.ServiceWorkerRegistration.showNotification.options_vibrate_parameter"],"description":"The Notification() constructor shows a message to the user, typically using the notification system of the host operating system.","description_html":"The <code>Notification()</code> constructor shows a message to the user, typically using the notification system of the host operating system.","name":"Notifications","spec":"https://notifications.spec.whatwg.org/","status":{"baseline":false,"support":{"chrome":"20","edge":"14","firefox":"22","firefox_android":"22","safari":"7"}}},"notifications-apps":{"caniuse":"notifications","description":"Notifications via service worker registration's showNotification() method, sent from installed web applications (for example, saved to the Home Screen on Safari for iOS), show a message to the user, typically using the notification system of the host operating system.","description_html":"Notifications via service worker registration's <code>showNotification()</code> method, sent from installed web applications (for example, saved to the Home Screen on Safari for iOS), show a message to the user, typically using the notification system of the host operating system.","name":"Notifications from service workers and installed apps","spec":"https://notifications.spec.whatwg.org/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"20","chrome_android":"42","edge":"14","firefox":"22","firefox_android":"22","safari":"7","safari_ios":"16.4"}}},"nth-child":{"compat_features":["css.selectors.first-child","css.selectors.first-child.no_parent_required","css.selectors.last-child","css.selectors.last-child.no_parent_required","css.selectors.nth-child","css.selectors.nth-child.no_parent_required","css.selectors.nth-last-child","css.selectors.nth-last-child.no_parent_required","css.selectors.only-child","css.selectors.only-child.no_parent_required"],"description":"The :nth-child() and :nth-last-child() CSS functional pseudo-classes match elements based on their index within a list of elements. The :first-child and :last-child pseudo-classes match the first and last element in a list, and the :only-child pseudo-class matches an element with no siblings.","description_html":"The <code>:nth-child()</code> and <code>:nth-last-child()</code> CSS functional pseudo-classes match elements based on their index within a list of elements. The <code>:first-child</code> and <code>:last-child</code> pseudo-classes match the first and last element in a list, and the <code>:only-child</code> pseudo-class matches an element with no siblings.","group":"selectors","name":":nth-child()","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":"1","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"}}},"nth-of-type":{"compat_features":["css.selectors.first-of-type","css.selectors.last-of-type","css.selectors.nth-last-of-type","css.selectors.nth-of-type","css.selectors.only-of-type"],"description":"The :nth-of-type() and :nth-last-of-type() CSS functional pseudo-classes match elements based on their position among siblings of the same type. The :first-of-type, :last-of-type, and :only-of-type pseudo-classes match the first, last, and only elements of its type.","description_html":"The <code>:nth-of-type()</code> and <code>:nth-last-of-type()</code> CSS functional pseudo-classes match elements based on their position among siblings of the same type. The <code>:first-of-type</code>, <code>:last-of-type</code>, and <code>:only-of-type</code> pseudo-classes match the first, last, and only elements of its type.","group":"selectors","name":":nth-of-type() pseudo-classes","spec":"https://drafts.csswg.org/selectors-4/#typed-child-index","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"}}},"nullish-coalescing":{"compat_features":["javascript.operators.nullish_coalescing","javascript.operators.nullish_coalescing_assignment"],"description":"The nullish coalescing (??) and nullish coalescing assignment (??=) operators return (or assign) its right-hand side operand when its left-hand side operand is null or undefined, and otherwise returns its left-hand side operand.","description_html":"The nullish coalescing (<code>??</code>) and nullish coalescing assignment (<code>??=</code>) operators return (or assign) its right-hand side operand when its left-hand side operand is null or undefined, and otherwise returns its left-hand side operand.","group":"javascript","name":"Nullish coalescing","snapshot":"ecmascript-2020","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#prod-CoalesceExpression","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"}}},"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.builtins.parseInt.leading_zero_strings_as_decimal","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"}}},"numeric-factory-functions":{"compat_features":["api.CSS.Hz_static","api.CSS.Q_static","api.CSS.cap_static","api.CSS.ch_static","api.CSS.cm_static","api.CSS.cqb_static","api.CSS.cqh_static","api.CSS.cqi_static","api.CSS.cqmax_static","api.CSS.cqmin_static","api.CSS.cqw_static","api.CSS.deg_static","api.CSS.dpcm_static","api.CSS.dpi_static","api.CSS.dppx_static","api.CSS.dvb_static","api.CSS.dvh_static","api.CSS.dvi_static","api.CSS.dvmax_static","api.CSS.dvmin_static","api.CSS.dvw_static","api.CSS.em_static","api.CSS.ex_static","api.CSS.fr_static","api.CSS.grad_static","api.CSS.ic_static","api.CSS.in_static","api.CSS.kHz_static","api.CSS.lh_static","api.CSS.lvb_static","api.CSS.lvh_static","api.CSS.lvi_static","api.CSS.lvmax_static","api.CSS.lvmin_static","api.CSS.lvw_static","api.CSS.mm_static","api.CSS.ms_static","api.CSS.number_static","api.CSS.pc_static","api.CSS.percent_static","api.CSS.pt_static","api.CSS.px_static","api.CSS.rad_static","api.CSS.rcap_static","api.CSS.rch_static","api.CSS.rem_static","api.CSS.rex_static","api.CSS.ric_static","api.CSS.rlh_static","api.CSS.s_static","api.CSS.svb_static","api.CSS.svh_static","api.CSS.svi_static","api.CSS.svmax_static","api.CSS.svmin_static","api.CSS.svw_static","api.CSS.turn_static","api.CSS.vb_static","api.CSS.vh_static","api.CSS.vi_static","api.CSS.vmax_static","api.CSS.vmin_static","api.CSS.vw_static"],"description":"The numeric factory functions, such as CSS.px() or CSS.kHz(), return a CSSUnitValue representing a CSS number value (as in 12px or 440kHz).","description_html":"The numeric factory functions, such as <code>CSS.px()</code> or <code>CSS.kHz()</code>, return a <code>CSSUnitValue</code> representing a CSS number value (as in <code>12px</code> or <code>440kHz</code>).","group":"cssom","name":"Numeric factory functions","spec":"https://drafts.css-houdini.org/css-typed-om-1/#numeric-factory","status":{"baseline":false,"support":{"chrome":"118","chrome_android":"118","edge":"118","safari":"17.2","safari_ios":"17.2"}}},"numeric-seperators":{"compat_features":["javascript.grammar.numeric_separators"],"description":"To improve readability for numeric literals, underscores (_) can be used as separators. For example, 1_050.95 is equivalent to 1050.95.","description_html":"To improve readability for numeric literals, underscores (<code>_</code>) can be used as separators. For example, <code>1_050.95</code> is equivalent to <code>1050.95</code>.","group":"javascript","name":"Numeric separators","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#prod-NumericLiteralSeparator","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"75","chrome_android":"75","edge":"79","firefox":"70","firefox_android":"79","safari":"13","safari_ios":"13"}}},"object":{"compat_features":["api.HTMLObjectElement","api.HTMLObjectElement.contentDocument","api.HTMLObjectElement.contentWindow","api.HTMLObjectElement.data","api.HTMLObjectElement.form","api.HTMLObjectElement.getSVGDocument","api.HTMLObjectElement.height","api.HTMLObjectElement.name","api.HTMLObjectElement.type","api.HTMLObjectElement.width","html.elements.object","html.elements.object.data","html.elements.object.form","html.elements.object.height","html.elements.object.name","html.elements.object.type","html.elements.object.width"],"description":"The <object> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","description_html":"The <code>&#x3C;object></code> element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash.","group":"html-elements","name":"<object>","spec":"https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"object-fit":{"caniuse":"object-fit","compat_features":["css.properties.object-fit","css.properties.object-fit.contain","css.properties.object-fit.cover","css.properties.object-fit.fill","css.properties.object-fit.none","css.properties.object-fit.scale-down"],"description":"The object-fit CSS property sets how images, videos, and other replaced elements are scaled within their container.","description_html":"The <code>object-fit</code> CSS property sets how images, videos, and other replaced elements are scaled within their container.","name":"object-fit","spec":"https://drafts.csswg.org/css-images-4/#the-object-fit","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"32","chrome_android":"32","edge":"79","firefox":"36","firefox_android":"36","safari":"10","safari_ios":"10"}}},"object-object":{"compat_features":["javascript.builtins.Object","javascript.builtins.Object.Object","javascript.builtins.Object.assign","javascript.builtins.Object.constructor","javascript.builtins.Object.create","javascript.builtins.Object.defineProperties","javascript.builtins.Object.defineProperty","javascript.builtins.Object.entries","javascript.builtins.Object.freeze","javascript.builtins.Object.fromEntries","javascript.builtins.Object.getOwnPropertyDescriptor","javascript.builtins.Object.getOwnPropertyDescriptors","javascript.builtins.Object.getOwnPropertyNames","javascript.builtins.Object.getOwnPropertySymbols","javascript.builtins.Object.getPrototypeOf","javascript.builtins.Object.hasOwn","javascript.builtins.Object.hasOwnProperty","javascript.builtins.Object.is","javascript.builtins.Object.isExtensible","javascript.builtins.Object.isFrozen","javascript.builtins.Object.isPrototypeOf","javascript.builtins.Object.isSealed","javascript.builtins.Object.keys","javascript.builtins.Object.preventExtensions","javascript.builtins.Object.preventExtensions.ES2015_behavior","javascript.builtins.Object.propertyIsEnumerable","javascript.builtins.Object.seal","javascript.builtins.Object.setPrototypeOf","javascript.builtins.Object.toString","javascript.builtins.Object.valueOf","javascript.builtins.Object.values","javascript.grammar.shorthand_object_literals","javascript.operators.object_initializer","javascript.operators.object_initializer.computed_property_names","javascript.operators.object_initializer.shorthand_method_names","javascript.operators.object_initializer.shorthand_property_names","javascript.operators.object_initializer.spread_properties","javascript.operators.optional_chaining"],"description":"Objects in JavaScript are collections of key-value pairs.","description_html":"Objects in JavaScript are collections of key-value pairs.","name":"Object","spec":"https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object-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-position":{"compat_features":["css.properties.object-position"],"description":"The object-position CSS property places images, videos, and other replaced elements within their boxes.","description_html":"The <code>object-position</code> CSS property places images, videos, and other replaced elements within their boxes.","name":"object-position","spec":"https://drafts.csswg.org/css-images-3/#the-object-position","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"32","chrome_android":"32","edge":"79","firefox":"36","firefox_android":"36","safari":"10","safari_ios":"10"}}},"object-view-box":{"compat_features":["css.properties.object-view-box","css.properties.object-view-box.none"],"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"}}},"oes-element-index-uint":{"compat_features":["api.OES_element_index_uint"],"description":"The OES_element_index_uint extension for WebGL 1.0 contexts adds support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements().","description_html":"The <code>OES_element_index_uint</code> extension for WebGL 1.0 contexts adds support for <code>gl.UNSIGNED_INT</code> types to <code>WebGLRenderingContext.drawElements()</code>.","group":"webgl-extensions","name":"OES_element_index_uint WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_element_index_uint/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"24","chrome_android":"25","edge":"12","firefox":"24","firefox_android":"24","safari":"8","safari_ios":"8"}}},"oes-fbo-render-mipmap":{"compat_features":["api.OES_fbo_render_mipmap"],"description":"The OES_fbo_render_mipmap extension for WebGL 1.0 contexts attaches any level of a texture to a framebuffer object.","description_html":"The <code>OES_fbo_render_mipmap</code> extension for WebGL 1.0 contexts attaches any level of a texture to a framebuffer object.","group":"webgl-extensions","name":"OES_fbo_render_mipmap WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_fbo_render_mipmap/","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"71","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"oes-standard-derivatives":{"compat_features":["api.OES_standard_derivatives"],"description":"The OES_standard_derivatives extension for WebGL 1.0 contexts adds the GLSL derivative functions dFdx, dFdy, and fwidth.","description_html":"The <code>OES_standard_derivatives</code> extension for WebGL 1.0 contexts adds the GLSL derivative functions <code>dFdx</code>, <code>dFdy</code>, and <code>fwidth</code>.","group":"webgl-extensions","name":"OES_standard_derivatives WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_standard_derivatives/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"10","chrome_android":"18","edge":"12","firefox":"10","firefox_android":"10","safari":"8","safari_ios":"8"}}},"oes-texture-float":{"compat_features":["api.OES_texture_float"],"description":"The OES_texture_float extension for WebGL 1.0 contexts adds floating-point pixel types for textures.","description_html":"The <code>OES_texture_float</code> extension for WebGL 1.0 contexts adds floating-point pixel types for textures.","group":"webgl-extensions","name":"OES_texture_float WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_texture_float/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"10","chrome_android":"18","edge":"12","firefox":"6","firefox_android":"6","safari":"8","safari_ios":"8"}}},"oes-texture-float-linear":{"compat_features":["api.OES_texture_float_linear"],"description":"The OES_texture_float_linear extension for WebGL 1.0 and 2.0 contexts adds linear filtering with floating-point pixel types for textures.","description_html":"The <code>OES_texture_float_linear</code> extension for WebGL 1.0 and 2.0 contexts adds linear filtering with floating-point pixel types for textures.","group":"webgl-extensions","name":"OES_texture_float_linear WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_texture_float_linear/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"29","chrome_android":"29","edge":"12","firefox":"24","firefox_android":"24","safari":"8","safari_ios":"8"}}},"oes-texture-half-float":{"compat_features":["api.OES_texture_half_float"],"description":"The OES_texture_half_float extension for WebGL 1.0 contexts adds texture formats with 16-bit (also known as half float) and 32-bit floating-point components.","description_html":"The <code>OES_texture_half_float</code> extension for WebGL 1.0 contexts adds texture formats with 16-bit (also known as half float) and 32-bit floating-point components.","group":"webgl-extensions","name":"OES_texture_half_float WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_texture_half_float/","status":{"baseline":"high","baseline_high_date":"2019-02-02","baseline_low_date":"2016-08-02","support":{"chrome":"27","chrome_android":"27","edge":"14","firefox":"29","firefox_android":"29","safari":"8","safari_ios":"8"}}},"oes-texture-half-float-linear":{"compat_features":["api.OES_texture_half_float_linear"],"description":"The OES_texture_half_float_linear extension for WebGL 1.0 contexts adds linear filtering with half floating-point pixel types for textures.","description_html":"The <code>OES_texture_half_float_linear</code> extension for WebGL 1.0 contexts adds linear filtering with half floating-point pixel types for textures.","group":"webgl-extensions","name":"OES_texture_half_float_linear WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_texture_half_float_linear/","status":{"baseline":false,"support":{"chrome":"29","chrome_android":"29","edge":"14","firefox":"30","safari":"8","safari_ios":"8"}}},"oes-vertex-array-object":{"compat_features":["api.OES_vertex_array_object","api.OES_vertex_array_object.bindVertexArrayOES","api.OES_vertex_array_object.createVertexArrayOES","api.OES_vertex_array_object.deleteVertexArrayOES","api.OES_vertex_array_object.isVertexArrayOES","api.WebGLVertexArrayObjectOES"],"description":"The OES_vertex_array_object extension for WebGL 1.0 contexts adds vertex array objects (VAOs) which encapsulate vertex array states. These objects keep pointers to vertex data and names for different sets of vertex data.","description_html":"The <code>OES_vertex_array_object</code> extension for WebGL 1.0 contexts adds vertex array objects (VAOs) which encapsulate vertex array states. These objects keep pointers to vertex data and names for different sets of vertex data.","group":"webgl-extensions","name":"OES_vertex_array_object WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OES_vertex_array_object/","status":{"baseline":"high","baseline_high_date":"2020-10-30","baseline_low_date":"2018-04-30","support":{"chrome":"24","chrome_android":"25","edge":"17","firefox":"25","firefox_android":"25","safari":"8","safari_ios":"9"}}},"offline-audio-context":{"compat_features":["api.OfflineAudioCompletionEvent","api.OfflineAudioCompletionEvent.OfflineAudioCompletionEvent","api.OfflineAudioCompletionEvent.renderedBuffer","api.OfflineAudioContext","api.OfflineAudioContext.OfflineAudioContext","api.OfflineAudioContext.OfflineAudioContext.options_parameter","api.OfflineAudioContext.complete_event","api.OfflineAudioContext.length","api.OfflineAudioContext.resume","api.OfflineAudioContext.startRendering","api.OfflineAudioContext.startRendering.returns_promise","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.convertToBlob.option_type_parameter_webp","api.OffscreenCanvas.getContext","api.OffscreenCanvas.getContext.2d_context","api.OffscreenCanvas.getContext.bitmaprenderer_context","api.OffscreenCanvas.getContext.webgl2_context","api.OffscreenCanvas.getContext.webgl_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.filter","api.OffscreenCanvasRenderingContext2D.font","api.OffscreenCanvasRenderingContext2D.fontKerning","api.OffscreenCanvasRenderingContext2D.fontStretch","api.OffscreenCanvasRenderingContext2D.fontVariantCaps","api.OffscreenCanvasRenderingContext2D.getImageData","api.OffscreenCanvasRenderingContext2D.getLineDash","api.OffscreenCanvasRenderingContext2D.getTransform","api.OffscreenCanvasRenderingContext2D.globalAlpha","api.OffscreenCanvasRenderingContext2D.globalCompositeOperation","api.OffscreenCanvasRenderingContext2D.imageSmoothingEnabled","api.OffscreenCanvasRenderingContext2D.imageSmoothingQuality","api.OffscreenCanvasRenderingContext2D.isPointInPath","api.OffscreenCanvasRenderingContext2D.isPointInStroke","api.OffscreenCanvasRenderingContext2D.letterSpacing","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.textRendering","api.OffscreenCanvasRenderingContext2D.transform","api.OffscreenCanvasRenderingContext2D.translate","api.OffscreenCanvasRenderingContext2D.wordSpacing"],"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":"69","chrome_android":"69","edge":"79","firefox":"105","firefox_android":"105","safari":"16.4","safari_ios":"16.4"}}},"oklab":{"compat_features":["css.types.color.oklab","css.types.color.oklab.mixed_type_parameters","css.types.color.oklch","css.types.color.oklch.mixed_type_parameters"],"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"}}},"online":{"caniuse":"online-status","compat_features":["api.Navigator.onLine","api.Window.offline_event","api.Window.online_event","api.WorkerGlobalScope.offline_event","api.WorkerGlobalScope.online_event","api.WorkerNavigator.onLine"],"description":"The navigator.onLine property returns a Boolean for whether the browser is connected to some network (though not necessarily the internet). The online and offline events fire when the connection state changes.","description_html":"The <code>navigator.onLine</code> property returns a Boolean for whether the browser is connected to some network (though not necessarily the internet). The <code>online</code> and <code>offline</code> events fire when the connection state changes.","name":"Online status","spec":["https://html.spec.whatwg.org/multipage/system-state.html#navigator.online","https://html.spec.whatwg.org/multipage/indices.html#event-online"],"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.5","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"opacity":{"compat_features":["css.properties.opacity","css.properties.opacity.percentages","css.types.number","css.types.number.scientific_notation","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":"≤2022-09-24","baseline_low_date":"≤2020-03-24","support":{"chrome":"≤80","chrome_android":"≤80","edge":"≤80","firefox":"1","firefox_android":"4","safari":"≤13.1","safari_ios":"≤13.4"}}},"open-closed":{"compat_features":["css.selectors.closed","css.selectors.open"],"description":"The :open and :closed CSS pseudo-classes match elements that have open and closed states, like <details, <dialog>, or <select>, based on their state.","description_html":"The <code>:open</code> and <code>:closed</code> CSS pseudo-classes match elements that have open and closed states, like <code>&#x3C;details</code>, <code>&#x3C;dialog></code>, or <code>&#x3C;select></code>, based on their state.","group":"selectors","name":"Open and closed selectors","spec":"https://drafts.csswg.org/selectors-4/#open-state","status":{"baseline":false,"support":{}}},"optional-catch-binding":{"compat_features":["javascript.statements.try_catch.optional_catch_binding"],"description":"Omit the the binding parameter of a catch clause when you don't need information about the exception in a try ... catch statement.","description_html":"Omit the the binding parameter of a <code>catch</code> clause when you don't need information about the exception in a <code>try ... catch</code> statement.","group":"javascript","name":"Optional catch binding","snapshot":"ecmascript-2019","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-try-statement","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"66","chrome_android":"66","edge":"79","firefox":"58","firefox_android":"58","safari":"11.1","safari_ios":"11.3"}}},"orientation-sensor":{"compat_features":["api.AbsoluteOrientationSensor","api.AbsoluteOrientationSensor.AbsoluteOrientationSensor","api.OrientationSensor","api.OrientationSensor.populateMatrix","api.OrientationSensor.quaternion","api.RelativeOrientationSensor","api.RelativeOrientationSensor.RelativeOrientationSensor","api.Sensor","api.Sensor.activate_event","api.Sensor.activated","api.Sensor.error_event","api.Sensor.hasReading","api.Sensor.reading_event","api.Sensor.start","api.Sensor.stop","api.Sensor.timestamp","api.SensorErrorEvent","api.SensorErrorEvent.SensorErrorEvent","api.SensorErrorEvent.error"],"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.close.sync_version","api.FileSystemSyncAccessHandle.flush","api.FileSystemSyncAccessHandle.flush.sync_version","api.FileSystemSyncAccessHandle.getSize","api.FileSystemSyncAccessHandle.getSize.sync_version","api.FileSystemSyncAccessHandle.read","api.FileSystemSyncAccessHandle.truncate","api.FileSystemSyncAccessHandle.truncate.sync_version","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-27","support":{"chrome":"108","chrome_android":"109","edge":"108","firefox":"111","firefox_android":"111","safari":"16.4","safari_ios":"16.4"}}},"outline":{"compat_features":["css.properties.outline"],"description":"The outline CSS shorthand sets the color, style, and width of a line around an element, outside of the border.","description_html":"The <code>outline</code> CSS shorthand sets the color, style, and width of a line around an element, outside of the border.","name":"outline","spec":"https://drafts.csswg.org/css-ui-4/#outline","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"94","chrome_android":"94","edge":"94","firefox":"88","firefox_android":"88","safari":"16.4","safari_ios":"16.4"}}},"outlines":{"compat_features":["css.properties.outline-color","css.properties.outline-offset","css.properties.outline-style","css.properties.outline-style.auto","css.properties.outline-style.dashed","css.properties.outline-style.dotted","css.properties.outline-style.double","css.properties.outline-style.groove","css.properties.outline-style.inset","css.properties.outline-style.none","css.properties.outline-style.outset","css.properties.outline-style.ridge","css.properties.outline-style.solid","css.properties.outline-width"],"description":"The outline-color, outline-style, and outline-width and outline-offset CSS properties style a line around an element, outside of the border.","description_html":"The <code>outline-color</code>, <code>outline-style</code>, and <code>outline-width</code> and <code>outline-offset</code> CSS properties style a line around an element, outside of the border.","name":"Outlines","spec":"https://drafts.csswg.org/css-ui-4/#outline","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"1","chrome_android":"18","edge":"15","firefox":"1.5","firefox_android":"4","safari":"1.2","safari_ios":"1"}}},"output":{"compat_features":["api.HTMLOutputElement","api.HTMLOutputElement.HTMLOutputElement","api.HTMLOutputElement.defaultValue","api.HTMLOutputElement.form","api.HTMLOutputElement.htmlFor","api.HTMLOutputElement.labels","api.HTMLOutputElement.name","api.HTMLOutputElement.type","api.HTMLOutputElement.value","html.elements.output","html.elements.output.for","html.elements.output.form","html.elements.output.name"],"description":"The <output> element represents the result of a calculation, user action, or form entry.","description_html":"The <code>&#x3C;output></code> element represents the result of a calculation, user action, or form entry.","group":["forms","html-elements"],"name":"<output>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-output-element","status":{"baseline":"high","baseline_high_date":"≤2021-04-02","baseline_low_date":"≤2018-10-02","support":{"chrome":"10","chrome_android":"18","edge":"≤18","firefox":"4","firefox_android":"4","safari":"7","safari_ios":"7"}}},"overflow":{"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-anchor":{"caniuse":"css-overflow-anchor","compat_features":["css.properties.overflow-anchor","css.properties.overflow-anchor.auto","css.properties.overflow-anchor.none"],"description":"The overflow-anchor CSS property sets an element as a possible scroll anchor, reducing unintended scrolling when document changes occur above the current scrollport. This is enabled by default where supported.","description_html":"The <code>overflow-anchor</code> CSS property sets an element as a possible scroll anchor, reducing unintended scrolling when document changes occur above the current scrollport. This is enabled by default where supported.","group":"scrolling","name":"overflow-anchor","spec":"https://drafts.csswg.org/css-scroll-anchoring-1/#exclusion-api","status":{"baseline":false,"support":{"chrome":"56","chrome_android":"56","edge":"79","firefox":"66","firefox_android":"66"}}},"overflow-clip-margin":{"compat_features":["css.properties.overflow-clip-margin","css.properties.overflow-clip-margin.border-box","css.properties.overflow-clip-margin.content-box","css.properties.overflow-clip-margin.padding-box"],"description":"The overflow-clip-margin CSS property sets how far overflow content may appear outside the bounds of an element before it's clipped by effects such as overflow: clip.","description_html":"The <code>overflow-clip-margin</code> CSS property sets how far overflow content may appear outside the bounds of an element before it's clipped by effects such as <code>overflow: clip</code>.","group":"css","name":"overflow-clip-margin","spec":"https://drafts.csswg.org/css-overflow-4/#overflow-clip-margin","status":{"baseline":false,"support":{}}},"overflow-overlay":{"caniuse":"css-overflow-overlay","compat_features":["css.types.overflow.overlay"],"description":"The overflow: overlay CSS declaration is an alias to overflow: auto. Historically, it caused non-standard behavior, allowing scrollbars to overlay content without taking up layout space.","description_html":"The <code>overflow: overlay</code> CSS declaration is an alias to <code>overflow: auto</code>. Historically, it caused non-standard behavior, allowing scrollbars to overlay content without taking up layout space.","discouraged":{"according_to":["https://drafts.csswg.org/css-overflow-3/#valdef-overflow-overlay"],"alternatives":["overflow-shorthand"]},"group":"css","name":"overflow: overlay","spec":"https://drafts.csswg.org/css-overflow-3/#propdef-overflow","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"112","firefox_android":"112","safari":"12","safari_ios":"12"}}},"overflow-shorthand":{"caniuse":"css-overflow","compat_features":["css.properties.overflow","css.properties.overflow-x","css.properties.overflow-x.auto","css.properties.overflow-x.clip","css.properties.overflow-x.hidden","css.properties.overflow-x.scroll","css.properties.overflow-x.visible","css.properties.overflow-y","css.properties.overflow-y.auto","css.properties.overflow-y.clip","css.properties.overflow-y.hidden","css.properties.overflow-y.scroll","css.properties.overflow-y.visible","css.properties.overflow.auto","css.properties.overflow.clip","css.properties.overflow.hidden","css.properties.overflow.multiple_keywords","css.properties.overflow.scroll","css.properties.overflow.visible","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"}}},"overflow-wrap":{"caniuse":"wordwrap","compat_features":["css.properties.overflow-wrap","css.properties.overflow-wrap.anywhere","css.properties.overflow-wrap.break-word","css.properties.overflow-wrap.normal"],"description":"The overflow-wrap CSS property breaks a line of text onto multiple lines inside the targeted element in an otherwise unbreakable place to prevent overflow. The legacy property is word-wrap.","description_html":"The <code>overflow-wrap</code> CSS property breaks a line of text onto multiple lines inside the targeted element in an otherwise unbreakable place to prevent overflow. The legacy property is <code>word-wrap</code>.","group":"text-wrap","name":"overflow-wrap","spec":"https://drafts.csswg.org/css-text-4/#overflow-wrap-property","status":{"baseline":"high","baseline_high_date":"2021-04-02","baseline_low_date":"2018-10-02","support":{"chrome":"23","chrome_android":"25","edge":"18","firefox":"49","firefox_android":"49","safari":"7","safari_ios":"7"}}},"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>&#x3C;dialog></code>, from being removed from the top layer before it has finished animating. You can't set the value of the <code>overlay</code> property; only use it as transition property.","group":"css","name":"overlay","spec":"https://drafts.csswg.org/css-position-4/#overlay","status":{"baseline":false,"support":{"chrome":"117","chrome_android":"117","edge":"117"}}},"overscroll-behavior":{"caniuse":"css-overscroll-behavior","compat_features":["css.properties.overscroll-behavior","css.properties.overscroll-behavior-block","css.properties.overscroll-behavior-block.auto","css.properties.overscroll-behavior-block.contain","css.properties.overscroll-behavior-block.none","css.properties.overscroll-behavior-inline","css.properties.overscroll-behavior-inline.auto","css.properties.overscroll-behavior-inline.contain","css.properties.overscroll-behavior-inline.none","css.properties.overscroll-behavior-x","css.properties.overscroll-behavior-x.auto","css.properties.overscroll-behavior-x.contain","css.properties.overscroll-behavior-x.none","css.properties.overscroll-behavior-y","css.properties.overscroll-behavior-y.auto","css.properties.overscroll-behavior-y.contain","css.properties.overscroll-behavior-y.none","css.properties.overscroll-behavior.auto","css.properties.overscroll-behavior.contain","css.properties.overscroll-behavior.none"],"description":"The overscroll-behavior CSS property disables default scrolling behaviors when the edges of a scrolling area are reached.","description_html":"The <code>overscroll-behavior</code> CSS property disables default scrolling behaviors when the edges of a scrolling area are reached.","group":"scrolling","name":"overscroll-behavior","spec":"https://drafts.csswg.org/css-overscroll-1/","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"63","chrome_android":"63","edge":"18","firefox":"59","firefox_android":"59","safari":"16","safari_ios":"16"}}},"ovr-multiview2":{"compat_features":["api.OVR_multiview2","api.OVR_multiview2.framebufferTextureMultiviewOVR"],"description":"The OVR_multiview2 extension for WebGL 2.0 contexts renders into multiple views simultaneously. This especially useful for virtual reality (VR) and WebXR.","description_html":"The <code>OVR_multiview2</code> extension for WebGL 2.0 contexts renders into multiple views simultaneously. This especially useful for virtual reality (VR) and WebXR.","group":"webgl-extensions","name":"OVR_multiview2 WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/OVR_multiview2/","status":{"baseline":false,"support":{"chrome_android":"93"}}},"p":{"compat_features":["api.HTMLParagraphElement","html.elements.p"],"description":"The <p> element represents a paragraph of text.","description_html":"The <code>&#x3C;p></code> element represents a paragraph of text.","group":"html-elements","name":"<p>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-p-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"padding":{"compat_features":["css.properties.padding","css.properties.padding-bottom","css.properties.padding-left","css.properties.padding-right","css.properties.padding-top"],"description":"The padding CSS property sets space between an element's edge and its contents. It is a shorthand for padding-top, padding-right, padding-bottom, and padding-left.","description_html":"The <code>padding</code> CSS property sets space between an element's edge and its contents. It is a shorthand for <code>padding-top</code>, <code>padding-right</code>, <code>padding-bottom</code>, and <code>padding-left</code>.","group":"layout","name":"padding","spec":"https://drafts.csswg.org/css-box-4/#paddings","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"}}},"page-break-aliases":{"compat_features":["css.properties.page-break-after","css.properties.page-break-after.always","css.properties.page-break-after.auto","css.properties.page-break-after.avoid","css.properties.page-break-after.left","css.properties.page-break-after.right","css.properties.page-break-before","css.properties.page-break-before.always","css.properties.page-break-before.auto","css.properties.page-break-before.avoid","css.properties.page-break-before.left","css.properties.page-break-before.right","css.properties.page-break-inside","css.properties.page-break-inside.auto","css.properties.page-break-inside.avoid"],"description":"The page-break-before, page-break-inside, and page-break-after CSS properties are aliases to the break-before, break-inside, and break-after properties.","description_html":"The <code>page-break-before</code>, <code>page-break-inside</code>, and <code>page-break-after</code> CSS properties are aliases to the <code>break-before</code>, <code>break-inside</code>, and <code>break-after</code> properties.","discouraged":{"according_to":["https://drafts.csswg.org/css-break-4/#page-break-properties"],"alternatives":["page-breaks"]},"group":"layout","name":"Page break aliases","spec":"https://drafts.csswg.org/css-break-4/#page-break-properties","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12"}}},"page-breaks":{"compat_features":["css.properties.break-after","css.properties.break-after.always","css.properties.break-after.auto","css.properties.break-after.avoid","css.properties.break-after.avoid-page","css.properties.break-after.left","css.properties.break-after.page","css.properties.break-after.paged_context","css.properties.break-after.paged_context.avoid-page","css.properties.break-after.paged_context.page","css.properties.break-after.paged_context.recto","css.properties.break-after.recto","css.properties.break-after.right","css.properties.break-after.verso","css.properties.break-before","css.properties.break-before.always","css.properties.break-before.auto","css.properties.break-before.avoid","css.properties.break-before.avoid-page","css.properties.break-before.left","css.properties.break-before.page","css.properties.break-before.paged_context","css.properties.break-before.paged_context.page","css.properties.break-before.paged_context.recto","css.properties.break-before.recto","css.properties.break-before.right","css.properties.break-before.verso","css.properties.break-inside","css.properties.break-inside.auto","css.properties.break-inside.avoid","css.properties.break-inside.avoid-page","css.properties.break-inside.paged_context","css.properties.break-inside.paged_context.avoid-page"],"description":"In printed page layouts, the break-after, break-before, break-inside CSS properties control where printed pages start and end. Also known as pagination or page breaking.","description_html":"In printed page layouts, the <code>break-after</code>, <code>break-before</code>, <code>break-inside</code> CSS properties 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-4/#breaking-controls","status":{"baseline":"high","baseline_high_date":"2021-07-29","baseline_low_date":"2019-01-29","support":{"chrome":"50","chrome_android":"50","edge":"12","firefox":"65","firefox_android":"65","safari":"10","safari_ios":"10"}}},"page-lifecycle":{"compat_features":["api.Document.freeze_event","api.Document.resume_event","api.Document.wasDiscarded"],"description":"The page lifecycle API helps you safely handle page suspensions or discards from memory. The freeze and resume events fire when the browser suspends or resumes a page from memory while the document.wasDiscarded property reports whether the page was reloaded after being dropped.","description_html":"The page lifecycle API helps you safely handle page suspensions or discards from memory. The <code>freeze</code> and <code>resume</code> events fire when the browser suspends or resumes a page from memory while the <code>document.wasDiscarded</code> property reports whether the page was reloaded after being dropped.","name":"Page lifecycle","spec":"https://wicg.github.io/page-lifecycle/","status":{"baseline":false,"support":{"chrome":"68","chrome_android":"68","edge":"79"}}},"page-orientation":{"compat_features":["css.at-rules.page.page-orientation"],"description":"The page-orientation CSS property sets the rotation of a page after pagination. This allows pages with the same size declaration to display with different orientations.","description_html":"The <code>page-orientation</code> CSS property sets the rotation of a page after pagination. This allows pages with the same <code>size</code> declaration to display with different orientations.","group":["layout","print"],"name":"page-orientation","spec":"https://drafts.csswg.org/css-page-3/#page-orientation-prop","status":{"baseline":false,"support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"122","firefox_android":"122"}}},"page-selectors":{"compat_features":["css.properties.page","css.selectors.first","css.selectors.left","css.selectors.right"],"description":"The :first, :left, and :right pseudo-classes select pages based on their position in sequence after pagination. They're often used with the page CSS property, to choose a print layout defined by the @page rule.","description_html":"The <code>:first</code>, <code>:left</code>, and <code>:right</code> pseudo-classes select pages based on their position in sequence after pagination. They're often used with the <code>page</code> CSS property, to choose a print layout defined by the <code>@page</code> rule.","group":["selectors","print"],"name":"Page selectors","spec":"https://drafts.csswg.org/css-page-3/#page-selectors","status":{"baseline":false,"support":{"chrome":"85","chrome_android":"85","edge":"85","safari":"≤13.1","safari_ios":"≤13.4"}}},"page-setup":{"caniuse":"css-paged-media","compat_features":["css.at-rules.page","css.at-rules.page.bottom-center","css.at-rules.page.bottom-left","css.at-rules.page.bottom-left-corner","css.at-rules.page.bottom-right","css.at-rules.page.bottom-right-corner","css.at-rules.page.left-bottom","css.at-rules.page.left-middle","css.at-rules.page.left-top","css.at-rules.page.right-bottom","css.at-rules.page.right-middle","css.at-rules.page.right-top","css.at-rules.page.size","css.at-rules.page.size.jis-b4","css.at-rules.page.size.jis-b5","css.at-rules.page.top-center","css.at-rules.page.top-left","css.at-rules.page.top-left-corner","css.at-rules.page.top-right","css.at-rules.page.top-right-corner"],"description":"The @page CSS at-rule sets the page-specific dimensions and margins for content such as printed documents, ebooks, or slides.","description_html":"The <code>@page</code> CSS at-rule sets the page-specific dimensions and margins for content such as printed documents, ebooks, or slides.","group":["layout","print"],"name":"Page setup","spec":"https://drafts.csswg.org/css-page-3/#at-page-rule","status":{"baseline":"low","baseline_low_date":"2024-12-11","support":{"chrome":"15","chrome_android":"18","edge":"79","firefox":"95","firefox_android":"95","safari":"18.2","safari_ios":"18.2"}}},"page-transition-events":{"caniuse":"page-transition-events","compat_features":["api.PageTransitionEvent","api.PageTransitionEvent.PageTransitionEvent","api.PageTransitionEvent.persisted","api.Window.pagehide_event","api.Window.pageshow_event"],"description":"The pageshow and pagehide transition events fire when a document loads or unloads due to a navigation, such as clicking on a link on a page or the back button in a browser.","description_html":"The <code>pageshow</code> and <code>pagehide</code> transition events fire when a document loads or unloads due to a navigation, such as clicking on a link on a page or the back button in a browser.","name":"Page transition events","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-pagetransitionevent-interface","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"1.5","firefox_android":"4","safari":"5","safari_ios":"4"}}},"page-visibility":{"caniuse":"pagevisibility","compat_features":["api.Document.hidden","api.Document.visibilityState","api.Document.visibilitychange_event"],"description":"The document.visibilityState and document.hidden properties tell you whether the page is visible to the user (for example, it's not minimized or in a background tab).","description_html":"The <code>document.visibilityState</code> and <code>document.hidden</code> properties tell you whether the page is visible to the user (for example, it's not minimized or in a background tab).","name":"Page visibility","spec":"https://html.spec.whatwg.org/multipage/interaction.html#page-visibility","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"33","chrome_android":"33","edge":"12","firefox":"18","firefox_android":"18","safari":"7","safari_ios":"7"}}},"page-visibility-state":{"compat_features":["api.VisibilityStateEntry","api.VisibilityStateEntry.duration","api.VisibilityStateEntry.entryType","api.VisibilityStateEntry.name","api.VisibilityStateEntry.startTime"],"description":"The visibility-state performance entry and the VisibilityStateEntry API measure the timing of page visibility state changes, such as when a tab is no longer visible or the user has switched to another app.","description_html":"The <code>visibility-state</code> performance entry and the <code>VisibilityStateEntry</code> API measure the timing of page visibility state changes, such as when a tab is no longer visible or the user has switched to another app.","group":"performance","name":"Page visibility state","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-visibilitystateentry-interface","status":{"baseline":false,"support":{"chrome":"115","chrome_android":"115","edge":"115"}}},"paint":{"caniuse":"css-paint-api","compat_features":["api.CSS.paintWorklet_static","api.PaintRenderingContext2D","api.PaintRenderingContext2D.beginPath","api.PaintRenderingContext2D.clearRect","api.PaintRenderingContext2D.clip","api.PaintRenderingContext2D.createLinearGradient","api.PaintRenderingContext2D.createPattern","api.PaintRenderingContext2D.createRadialGradient","api.PaintRenderingContext2D.drawImage","api.PaintRenderingContext2D.fill","api.PaintRenderingContext2D.fillRect","api.PaintRenderingContext2D.fillStyle","api.PaintRenderingContext2D.filter","api.PaintRenderingContext2D.getLineDash","api.PaintRenderingContext2D.getTransform","api.PaintRenderingContext2D.globalAlpha","api.PaintRenderingContext2D.globalCompositeOperation","api.PaintRenderingContext2D.imageSmoothingEnabled","api.PaintRenderingContext2D.imageSmoothingQuality","api.PaintRenderingContext2D.isPointInPath","api.PaintRenderingContext2D.isPointInStroke","api.PaintRenderingContext2D.lineCap","api.PaintRenderingContext2D.lineDashOffset","api.PaintRenderingContext2D.lineJoin","api.PaintRenderingContext2D.lineWidth","api.PaintRenderingContext2D.miterLimit","api.PaintRenderingContext2D.resetTransform","api.PaintRenderingContext2D.restore","api.PaintRenderingContext2D.rotate","api.PaintRenderingContext2D.save","api.PaintRenderingContext2D.scale","api.PaintRenderingContext2D.setLineDash","api.PaintRenderingContext2D.setTransform","api.PaintRenderingContext2D.shadowBlur","api.PaintRenderingContext2D.shadowColor","api.PaintRenderingContext2D.shadowOffsetX","api.PaintRenderingContext2D.shadowOffsetY","api.PaintRenderingContext2D.stroke","api.PaintRenderingContext2D.strokeRect","api.PaintRenderingContext2D.strokeStyle","api.PaintRenderingContext2D.transform","api.PaintRenderingContext2D.translate","api.PaintSize","api.PaintSize.height","api.PaintSize.width","api.PaintWorkletGlobalScope","api.PaintWorkletGlobalScope.devicePixelRatio","api.PaintWorkletGlobalScope.registerPaint","css.types.image.paint","css.types.image.paint.additional_parameters"],"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"}}},"paint-timing":{"compat_features":["api.PerformancePaintTiming","api.PerformancePaintTiming.first-contentful-paint","api.PerformancePaintTiming.first-paint"],"description":"The paint performance entry and the PerformancePaintTiming API measures the duration of \"paint\" (also called \"render\") operations as a page loads. The API measures the time to First Paint (FP) and First Contentful Paint (FCP), common metrics for perceived loading times.","description_html":"The <code>paint</code> performance entry and the <code>PerformancePaintTiming</code> API measures the duration of \"paint\" (also called \"render\") operations as a page loads. The API measures the time to First Paint (FP) and First Contentful Paint (FCP), common metrics for perceived loading times.","group":"performance","name":"Paint timing","spec":"https://w3c.github.io/paint-timing/","status":{"baseline":false,"support":{"chrome":"60","chrome_android":"60","edge":"79"}}},"parse-html-unsafe":{"compat_features":["api.Document.parseHTMLUnsafe_static","api.Element.setHTMLUnsafe","api.ShadowRoot.setHTMLUnsafe"],"description":"The Document.parseHTMLUnsafe() static method parses HTML into a DOM tree, while the setHTMLUnsafe() method of Element and ShadowRoot parses and inserts HTML into an existing tree. No sanitization applies to these methods, so never call them with user-provided HTML strings.","description_html":"The <code>Document.parseHTMLUnsafe()</code> static method parses HTML into a DOM tree, while the <code>setHTMLUnsafe()</code> method of <code>Element</code> and <code>ShadowRoot</code> parses and inserts HTML into an existing tree. No sanitization applies to these methods, so never call them with user-provided HTML strings.","name":"Unsanitized HTML parsing methods","spec":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#unsafe-html-parsing-methods","status":{"baseline":"low","baseline_low_date":"2024-07-09","support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"128","firefox_android":"128","safari":"17.4","safari_ios":"17.4"}}},"partitioned-cookies":{"compat_features":["api.CookieChangeEvent.changed.partitioned_property","api.CookieChangeEvent.deleted.partitioned_property","api.CookieStore.delete.partitioned_option","api.CookieStore.get.partitioned_return_property","api.CookieStore.getAll.partitioned_return_property","api.CookieStore.set.partitioned_option","api.ExtendableCookieChangeEvent.changed.partitioned_property","api.ExtendableCookieChangeEvent.deleted.partitioned_property","http.headers.Set-Cookie.Partitioned"],"description":"Partitioned cookies allow you to opt a cookie into partitioned storage, with a separate cookie jar per top-level site. Also known as Cookies Having Independent Partitioned State or CHIPS.","description_html":"Partitioned cookies allow you to opt a cookie into partitioned storage, with a separate cookie jar per top-level site. Also known as Cookies Having Independent Partitioned State or CHIPS.","name":"Partitioned cookies","spec":"https://wicg.github.io/cookie-store/","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114"}}},"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"}}},"path-shape":{"compat_features":["css.types.basic-shape.path","css.types.basic-shape.path.clip-path","css.types.basic-shape.path.d","css.types.basic-shape.path.offset-path","css.types.basic-shape.path.shape-outside"],"description":"The path() CSS shape function creates a shape for clip-path, shape-outside, and the SVG attribute d.","description_html":"The <code>path()</code> CSS shape function creates a shape for <code>clip-path</code>, <code>shape-outside</code>, and the SVG attribute <code>d</code>.","name":"path()","spec":"https://drafts.csswg.org/css-shapes-1/#supported-basic-shapes","status":{"baseline":false,"support":{}}},"payment-handler":{"compat_features":["api.CanMakePaymentEvent","api.CanMakePaymentEvent.CanMakePaymentEvent","api.CanMakePaymentEvent.respondWith","api.PaymentManager","api.PaymentManager.enableDelegations","api.PaymentManager.secure_context_required","api.PaymentManager.userHint","api.PaymentRequestEvent","api.PaymentRequestEvent.PaymentRequestEvent","api.PaymentRequestEvent.changePaymentMethod","api.PaymentRequestEvent.changeShippingAddress","api.PaymentRequestEvent.changeShippingOption","api.PaymentRequestEvent.methodData","api.PaymentRequestEvent.modifiers","api.PaymentRequestEvent.openWindow","api.PaymentRequestEvent.paymentOptions","api.PaymentRequestEvent.paymentRequestId","api.PaymentRequestEvent.paymentRequestOrigin","api.PaymentRequestEvent.respondWith","api.PaymentRequestEvent.shippingOptions","api.PaymentRequestEvent.topOrigin","api.PaymentRequestEvent.total","api.Permissions.permission_payment-handler","api.ServiceWorkerGlobalScope.canmakepayment_event","api.ServiceWorkerGlobalScope.paymentrequest_event","api.ServiceWorkerRegistration.paymentManager"],"description":"The payment handler API registers a web application as a payment handler and responds to payment requests in the browser's user interface, rather than redirecting users to a separate site to complete a payment.","description_html":"The payment handler API registers a web application as a payment handler and responds to payment requests in the browser's user interface, rather than redirecting users to a separate site to complete a payment.","group":"payments","name":"Payment handler","spec":"https://w3c.github.io/payment-handler/","status":{"baseline":false,"support":{"chrome":"70","chrome_android":"70","edge":"79"}}},"payment-request":{"compat_features":["api.PaymentMethodChangeEvent","api.PaymentMethodChangeEvent.PaymentMethodChangeEvent","api.PaymentMethodChangeEvent.methodDetails","api.PaymentMethodChangeEvent.methodName","api.PaymentRequest","api.PaymentRequest.PaymentRequest","api.PaymentRequest.PaymentRequest.secure_payment_confirmation_method","api.PaymentRequest.abort","api.PaymentRequest.canMakePayment","api.PaymentRequest.id","api.PaymentRequest.paymentmethodchange_event","api.PaymentRequest.show","api.PaymentRequestUpdateEvent","api.PaymentRequestUpdateEvent.PaymentRequestUpdateEvent","api.PaymentRequestUpdateEvent.secure_context_required","api.PaymentRequestUpdateEvent.updateWith","api.PaymentResponse","api.PaymentResponse.complete","api.PaymentResponse.details","api.PaymentResponse.methodName","api.PaymentResponse.payerEmail","api.PaymentResponse.payerName","api.PaymentResponse.payerPhone","api.PaymentResponse.payerdetailchange_event","api.PaymentResponse.requestId","api.PaymentResponse.retry","api.PaymentResponse.shippingAddress","api.PaymentResponse.shippingOption","api.PaymentResponse.toJSON","html.elements.iframe.allow.payment","http.headers.Permissions-Policy.payment"],"description":"The PaymentRequest API prompts the user to make a payment through the browser's user interface.","description_html":"The <code>PaymentRequest</code> API prompts the user to make a payment through the browser's user interface.","group":"payments","name":"Payment request","spec":"https://w3c.github.io/payment-request/","status":{"baseline":false,"support":{"chrome":"60","chrome_android":"53","edge":"15","safari":"11.1","safari_ios":"11.3"}}},"pdf-viewer":{"compat_features":["api.Navigator.pdfViewerEnabled"],"description":"The navigator.pdfViewerEnabled read-only property returns a Boolean for whether the browser navigates to and shows a PDF in the browser window or downloads the PDF.","description_html":"The <code>navigator.pdfViewerEnabled</code> read-only property returns a Boolean for whether the browser navigates to and shows a PDF in the browser window or downloads the PDF.","name":"pdfViewerEnabled","spec":"https://html.spec.whatwg.org/multipage/system-state.html#pdf-viewing-support","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"94","chrome_android":"94","edge":"94","firefox":"99","firefox_android":"99","safari":"16.4","safari_ios":"16.4"}}},"performance":{"caniuse":["user-timing","high-resolution-time"],"compat_features":["api.Performance","api.Performance.clearMarks","api.Performance.clearMeasures","api.Performance.clearResourceTimings","api.Performance.getEntries","api.Performance.getEntriesByName","api.Performance.getEntriesByType","api.Performance.mark","api.Performance.mark.markOptions_parameter","api.Performance.mark.returns_performancemark","api.Performance.measure","api.Performance.measure.measureOptions_parameter","api.Performance.measure.returns_performancemeasure","api.Performance.now","api.Performance.resourcetimingbufferfull_event","api.Performance.setResourceTimingBufferSize","api.Performance.timeOrigin","api.Performance.toJSON","api.PerformanceEntry","api.PerformanceEntry.duration","api.PerformanceEntry.entryType","api.PerformanceEntry.name","api.PerformanceEntry.startTime","api.PerformanceEntry.toJSON","api.PerformanceEntry.worker_support","api.PerformanceMark","api.PerformanceMark.PerformanceMark","api.PerformanceMark.detail","api.PerformanceMeasure","api.PerformanceMeasure.detail","api.PerformanceObserver","api.PerformanceObserver.PerformanceObserver","api.PerformanceObserver.PerformanceObserver.droppedEntriesCount","api.PerformanceObserver.disconnect","api.PerformanceObserver.observe","api.PerformanceObserver.supportedEntryTypes_static","api.PerformanceObserver.takeRecords","api.PerformanceObserver.worker_support","api.PerformanceObserverEntryList","api.PerformanceObserverEntryList.getEntries","api.PerformanceObserverEntryList.getEntriesByName","api.PerformanceObserverEntryList.getEntriesByType","api.performance","api.performance.worker_support","http.headers.Timing-Allow-Origin"],"description":"The performance global object and the Performance API provide access to performance-related information for the current execution context.","description_html":"The <code>performance</code> global object and the <code>Performance</code> API provide access to performance-related information for the current execution context.","group":"performance","name":"Performance","spec":["https://w3c.github.io/hr-time/","https://w3c.github.io/performance-timeline/","https://w3c.github.io/resource-timing/","https://w3c.github.io/user-timing/#extensions-performance-interface"],"status":{"baseline":"high","baseline_high_date":"2018-03-16","baseline_low_date":"2015-09-16","support":{"chrome":"6","chrome_android":"18","edge":"12","firefox":"7","firefox_android":"7","safari":"8","safari_ios":"9"}}},"performancetiming":{"compat_features":["api.Performance.navigation","api.Performance.timing","api.PerformanceNavigation","api.PerformanceNavigation.redirectCount","api.PerformanceNavigation.toJSON","api.PerformanceNavigation.type","api.PerformanceTiming","api.PerformanceTiming.connectEnd","api.PerformanceTiming.connectStart","api.PerformanceTiming.domComplete","api.PerformanceTiming.domContentLoadedEventEnd","api.PerformanceTiming.domContentLoadedEventStart","api.PerformanceTiming.domInteractive","api.PerformanceTiming.domLoading","api.PerformanceTiming.domainLookupEnd","api.PerformanceTiming.domainLookupStart","api.PerformanceTiming.fetchStart","api.PerformanceTiming.loadEventEnd","api.PerformanceTiming.loadEventStart","api.PerformanceTiming.navigationStart","api.PerformanceTiming.redirectEnd","api.PerformanceTiming.redirectStart","api.PerformanceTiming.requestStart","api.PerformanceTiming.responseEnd","api.PerformanceTiming.responseStart","api.PerformanceTiming.secureConnectionStart","api.PerformanceTiming.toJSON","api.PerformanceTiming.unloadEventEnd","api.PerformanceTiming.unloadEventStart"],"description":"The window.performance.timing and window.performance.navigation APIs report performance timing information for events that occur during the loading and use of the current page.","description_html":"The <code>window.performance.timing</code> and <code>window.performance.navigation</code> APIs report performance timing information for events that occur during the loading and use of the current page.","discouraged":{"according_to":["https://w3c.github.io/navigation-timing/#obsolete"],"alternatives":["performance","navigation-timing"]},"group":"performance","name":"PerformanceTiming and PerformanceNavigation","spec":"https://w3c.github.io/navigation-timing/#obsolete","status":{"baseline":false,"support":{"chrome":"56","chrome_android":"56","edge":"18","firefox":"56","firefox_android":"56","safari":"14.1","safari_ios":"14.5"}}},"permissions":{"caniuse":"permissions-api","compat_features":["api.Navigator.permissions","api.PermissionStatus","api.PermissionStatus.change_event","api.PermissionStatus.name","api.PermissionStatus.state","api.Permissions","api.Permissions.query","api.Permissions.request","api.WorkerNavigator.permissions"],"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.","group":"security","name":"Permissions","spec":["https://w3c.github.io/permissions/","https://wicg.github.io/permissions-request/#dom-permissions-request"],"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"}}},"physical-properties":{"compat_features":["css.properties.bottom","css.properties.bottom.auto","css.properties.left","css.properties.left.auto","css.properties.right","css.properties.right.auto","css.properties.top","css.properties.top.auto"],"description":"The physical CSS properties, top, right, bottom, and left, set the inset position of an element relative to the corresponding side of a container determined by the element's position property.","description_html":"The physical CSS properties, <code>top</code>, <code>right</code>, <code>bottom</code>, and <code>left</code>, set the inset position of an element relative to the corresponding side of a container determined by the element's <code>position</code> property.","group":"css","name":"Physical properties","spec":"https://drafts.csswg.org/css-position-3/#insets","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"}}},"picture":{"caniuse":"picture","compat_features":["api.HTMLPictureElement","html.elements.picture"],"description":"The <picture> element is used for art direction in responsive images, where a different image is displayed based on the <source> element.","description_html":"The <code>&#x3C;picture></code> element is used for art direction in responsive images, where a different image is displayed based on the <code>&#x3C;source></code> element.","group":"html-elements","name":"<picture>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element","status":{"baseline":"high","baseline_high_date":"2018-09-21","baseline_low_date":"2016-03-21","support":{"chrome":"38","chrome_android":"38","edge":"13","firefox":"38","firefox_android":"38","safari":"9.1","safari_ios":"9.3"}}},"picture-in-picture":{"caniuse":"picture-in-picture","compat_features":["api.Document.exitPictureInPicture","api.Document.pictureInPictureElement","api.Document.pictureInPictureEnabled","api.HTMLVideoElement.disablePictureInPicture","api.HTMLVideoElement.enterpictureinpicture_event","api.HTMLVideoElement.leavepictureinpicture_event","api.HTMLVideoElement.requestPictureInPicture","api.PictureInPictureEvent","api.PictureInPictureEvent.PictureInPictureEvent","api.PictureInPictureEvent.pictureInPictureWindow","api.PictureInPictureWindow","api.PictureInPictureWindow.height","api.PictureInPictureWindow.resize_event","api.PictureInPictureWindow.width","api.ShadowRoot.pictureInPictureElement","css.selectors.picture-in-picture","html.elements.iframe.allow.picture-in-picture","html.elements.video.disablepictureinpicture","http.headers.Permissions-Policy.picture-in-picture"],"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"}}},"ping":{"caniuse":"ping","compat_features":["api.HTMLAnchorElement.ping","api.HTMLAreaElement.ping","api.SVGAElement.ping","html.elements.a.ping","html.elements.area.ping","svg.elements.a.ping"],"description":"The ping attribute for <a> elements sets a URL to send a POST request to when the <a> is clicked. This is typically used for outbound link reporting.","description_html":"The <code>ping</code> attribute for <code>&#x3C;a></code> elements sets a URL to send a POST request to when the <code>&#x3C;a></code> is clicked. This is typically used for outbound link reporting.","name":"ping","spec":"https://html.spec.whatwg.org/multipage/links.html#ping","status":{"baseline":false,"support":{"chrome":"12","chrome_android":"18","edge":"17","safari":"6","safari_ios":"6"}}},"placeholder":{"caniuse":"css-placeholder","compat_features":["css.selectors.placeholder"],"description":"The ::placeholder CSS pseudo-element selects help text in <input> and <textarea> elements when no value is set.","description_html":"The <code>::placeholder</code> CSS pseudo-element selects help text in <code>&#x3C;input></code> and <code>&#x3C;textarea></code> elements when no value is set.","group":"selectors","name":"::placeholder","spec":"https://drafts.csswg.org/css-pseudo-4/#placeholder-pseudo","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"57","chrome_android":"57","edge":"79","firefox":"51","firefox_android":"51","safari":"10.1","safari_ios":"10.3"}}},"placeholder-shown":{"caniuse":"css-placeholder-shown","compat_features":["css.selectors.placeholder-shown","css.selectors.placeholder-shown.non_text_types"],"description":"The :placeholder-shown CSS pseudo-element selects <input> and <textarea> elements when no value is set and the element's placeholder attribute is not empty. Not to be confused with ::placeholder, which selects the placeholder text itself.","description_html":"The <code>:placeholder-shown</code> CSS pseudo-element selects <code>&#x3C;input></code> and <code>&#x3C;textarea></code> elements when no value is set and the element's <code>placeholder</code> attribute is not empty. Not to be confused with <code>::placeholder</code>, which selects the placeholder text itself.","group":"selectors","name":":placeholder-shown","spec":"https://drafts.csswg.org/selectors-4/#placeholder","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"47","chrome_android":"47","edge":"79","firefox":"51","firefox_android":"51","safari":"9","safari_ios":"9"}}},"pointer-events":{"caniuse":"pointer-events","compat_features":["css.properties.pointer-events","css.properties.pointer-events.html_elements"],"description":"The pointer-events CSS property sets whether a user can interact with an element using a mouse, touch, or other pointing input device.","description_html":"The <code>pointer-events</code> CSS property sets whether a user can interact with an element using a mouse, touch, or other pointing input device.","group":"css","name":"pointer-events","spec":"https://drafts.csswg.org/css-ui-4/#pointer-events-control","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"3.6","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"pointer-events-api":{"caniuse":"pointer","compat_features":["api.Element.auxclick_event.type_pointerevent","api.Element.click_event.type_pointerevent","api.Element.contextmenu_event.type_pointerevent","api.Element.gotpointercapture_event","api.Element.hasPointerCapture","api.Element.lostpointercapture_event","api.Element.pointercancel_event","api.Element.pointerdown_event","api.Element.pointerenter_event","api.Element.pointerleave_event","api.Element.pointermove_event","api.Element.pointerout_event","api.Element.pointerover_event","api.Element.pointerrawupdate_event","api.Element.pointerup_event","api.Element.releasePointerCapture","api.Element.setPointerCapture","api.Navigator.maxTouchPoints","api.PointerEvent","api.PointerEvent.PointerEvent","api.PointerEvent.PointerEvent.options_altitudeAngle_parameter","api.PointerEvent.PointerEvent.options_azimuthAngle_parameter","api.PointerEvent.altitudeAngle","api.PointerEvent.azimuthAngle","api.PointerEvent.getCoalescedEvents","api.PointerEvent.getPredictedEvents","api.PointerEvent.height","api.PointerEvent.isPrimary","api.PointerEvent.persistentDeviceId","api.PointerEvent.pointerId","api.PointerEvent.pointerType","api.PointerEvent.pointerType.fractional_coordinates","api.PointerEvent.pressure","api.PointerEvent.tangentialPressure","api.PointerEvent.tiltX","api.PointerEvent.tiltY","api.PointerEvent.twist","api.PointerEvent.width"],"description":"Pointer events, such as pointerdown, and the PointerEvent API, represent general pointing inputs, from a wide range of devices, such as a mouse, pen or stylus, or touch with one or more fingers. Not to be confused with the pointer-events CSS property.","description_html":"Pointer events, such as <code>pointerdown</code>, and the <code>PointerEvent</code> API, represent general pointing inputs, from a wide range of devices, such as a mouse, pen or stylus, or touch with one or more fingers. Not to be confused with the <code>pointer-events</code> CSS property.","name":"Pointer Events","spec":"https://w3c.github.io/pointerevents/","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"55","chrome_android":"55","edge":"12","firefox":"59","firefox_android":"79","safari":"13","safari_ios":"13"}}},"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.beforetoggle_event.popover_elements","api.HTMLElement.hidePopover","api.HTMLElement.popover","api.HTMLElement.showPopover","api.HTMLElement.showPopover.source","api.HTMLElement.togglePopover","api.HTMLElement.togglePopover.returns_boolean","api.HTMLElement.togglePopover.source","api.HTMLElement.toggle_event.popover_elements","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":"2025-01-27","support":{"chrome":"116","chrome_android":"116","edge":"116","firefox":"125","firefox_android":"125","safari":"17","safari_ios":"18.3"}}},"popover-hint":{"compat_features":["api.HTMLElement.popover.hint","html.global_attributes.popover.hint"],"description":"The popover=\"hint\" global HTML attribute creates a popover that is subordinate to popovers with a popover=\"auto\" attribute. You can use this to create tooltips that don't dismiss auto popovers.","description_html":"The <code>popover=\"hint\"</code> global HTML attribute creates a popover that is subordinate to popovers with a <code>popover=\"auto\"</code> attribute. You can use this to create tooltips that don't dismiss <code>auto</code> popovers.","group":"html","name":"popover=\"hint\"","spec":"https://html.spec.whatwg.org/multipage/popover.html#attr-popover-hint","status":{"baseline":false,"support":{"chrome":"133","chrome_android":"133","edge":"133"}}},"portal":{"caniuse":"portals","description":"The <portal> HTML element embeds another page into the current page as a non-interactive preview.","description_html":"The <code>&#x3C;portal></code> HTML element embeds another page into the current page as a non-interactive preview.","discouraged":{"according_to":["https://github.com/WICG/portals/blob/421e74f5bb3e12d6d439ad19654a1463a5cb9b0a/README.md?plain=1#L1"],"alternatives":["fencedframe","link-rel-prefetch","speculation-rules","view-transitions"]},"name":"Portals","spec":"https://wicg.github.io/portals/","status":{"baseline":false,"support":{}}},"position":{"compat_features":["css.properties.position"],"description":"The position CSS property sets the origin position of an element to an element, the element's scrollport, or the viewport.","description_html":"The <code>position</code> CSS property sets the origin position of an element to an element, the element's scrollport, or the viewport.","group":"positioning","name":"Position","spec":"https://drafts.csswg.org/css-position-3/#position-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"}}},"postmessage":{"caniuse":"x-doc-messaging","compat_features":["api.DedicatedWorkerGlobalScope.message_event","api.DedicatedWorkerGlobalScope.postMessage","api.MessageEvent","api.MessageEvent.MessageEvent","api.MessageEvent.data","api.MessageEvent.lastEventId","api.MessageEvent.origin","api.MessageEvent.source","api.Window.message_event","api.Window.postMessage","api.Worker.message_event","api.Worker.postMessage"],"description":"The postMessage() global method sends cross-origin messages to windows and workers, including popups and iframes. Also known as cross-document messaging.","description_html":"The <code>postMessage()</code> global method sends cross-origin messages to windows and workers, including popups and iframes. Also known as cross-document messaging.","group":"messaging","name":"postMessage","spec":"https://html.spec.whatwg.org/multipage/web-messaging.html#web-messaging","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"3","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"pre":{"compat_features":["api.HTMLPreElement","html.elements.pre"],"description":"The <pre> element represents a block element of preformatted text that is presented exactly as written, including all white space.","description_html":"The <code>&#x3C;pre></code> element represents a block element of preformatted text that is presented exactly as written, including all white space.","group":"html-elements","name":"<pre>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"prefers-color-scheme":{"compat_features":["css.at-rules.media.prefers-color-scheme","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":"high","baseline_high_date":"2024-11-30","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>&#x3C;link></code> HTML element starts fetching responsive images before they're found in the body of the document.","name":"Preloading responsive images","spec":"https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"78","firefox_android":"79","safari":"17.2","safari_ios":"17.2"}}},"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.close_event","api.PresentationConnection.connect_event","api.PresentationConnection.id","api.PresentationConnection.message_event","api.PresentationConnection.send","api.PresentationConnection.state","api.PresentationConnection.terminate","api.PresentationConnection.terminate_event","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.connectionavailable_event","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.secure_context_required","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>&#x3C;audio></code> or <code>&#x3C;video></code> adjusts the pitch of audio to sound more natural when the playback rate is faster or slower than the default.","group":"media-elements","name":"preservesPitch","spec":"https://html.spec.whatwg.org/multipage/media.html#dom-media-preservespitch-dev","status":{"baseline":"low","baseline_low_date":"2023-12-11","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"101","firefox_android":"101","safari":"17.2","safari_ios":"17.2"}}},"print":{"compat_features":["api.Window.print"],"description":"The window.print() method opens the browser's print dialog.","description_html":"The <code>window.print()</code> method opens the browser's print dialog.","group":"print","name":"window.print()","spec":"https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#printing","status":{"baseline":"low","baseline_low_date":"2023-06-06","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"114","safari":"1.1","safari_ios":"1"}}},"print-color-adjust":{"compat_features":["css.properties.print-color-adjust","css.properties.print-color-adjust.economy","css.properties.print-color-adjust.exact"],"description":"The print-color-adjust CSS property sets whether styles of printed pages should be adjusted to use less ink, in cases such as light text on a dark background.","description_html":"The <code>print-color-adjust</code> CSS property sets whether styles of printed pages should be adjusted to use less ink, in cases such as light text on a dark background.","group":"print","name":"Print color adjust","spec":"https://drafts.csswg.org/css-color-adjust-1/#propdef-print-color-adjust","status":{"baseline":false,"support":{"firefox":"97","firefox_android":"97","safari":"15.4","safari_ios":"15.4"}}},"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"}}},"private-click-measurement":{"compat_features":["api.HTMLAnchorElement.attributionSourceId","html.elements.a.attributionsourceid"],"description":"The attributionsourceid and attributiondestination attributes for <a> elements measure clicks across websites without associating a click to a specific session. Not to be confused with attribution reporting. Also known as PCM.","description_html":"The <code>attributionsourceid</code> and <code>attributiondestination</code> attributes for <code>&#x3C;a></code> elements measure clicks across websites without associating a click to a specific session. Not to be confused with attribution reporting. Also known as PCM.","name":"Private click measurement","spec":"https://privacycg.github.io/private-click-measurement/","status":{"baseline":false,"support":{"safari":"15.4","safari_ios":"15.4"}}},"private-network-access":{"compat_features":["api.Request.targetAddressSpace","http.mixed-content.private_network_access"],"description":"The Access-Control-Request-Private-Network: true and Access-Control-Allow-Private-Network: true HTTP request and response headers establish permission for websites to make requests to internal networks, such as to routers.","description_html":"The <code>Access-Control-Request-Private-Network: true</code> and <code>Access-Control-Allow-Private-Network: true</code> HTTP request and response headers establish permission for websites to make requests to internal networks, such as to routers.","name":"Private network access","spec":"https://wicg.github.io/private-network-access/","status":{"baseline":false,"support":{"chrome":"124","chrome_android":"124","edge":"124"}}},"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>&#x3C;progress></code> element displays an indicator showing the completion progress of a task, typically displayed as a progress bar.","group":["forms","html-elements"],"name":"<progress>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-progress-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"6","chrome_android":"18","edge":"12","firefox":"6","firefox_android":"6","safari":"6","safari_ios":"7"}}},"promise":{"caniuse":"promises","compat_features":["javascript.builtins.Promise","javascript.builtins.Promise.@@species","javascript.builtins.Promise.Promise","javascript.builtins.Promise.all","javascript.builtins.Promise.catch","javascript.builtins.Promise.incumbent_settings_object_tracking","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.AggregateError.serializable_object","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":"low","baseline_low_date":"2025-01-07","support":{"chrome":"128","chrome_android":"128","edge":"128","firefox":"134","firefox_android":"134","safari":"18.2","safari_ios":"18.2"}}},"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.Permissions.permission_push","api.PushEvent","api.PushEvent.PushEvent","api.PushEvent.data","api.PushManager","api.PushManager.getSubscription","api.PushManager.permissionState","api.PushManager.subscribe","api.PushManager.supportedContentEncodings_static","api.PushMessageData","api.PushMessageData.arrayBuffer","api.PushMessageData.blob","api.PushMessageData.bytes","api.PushMessageData.json","api.PushMessageData.text","api.PushSubscription","api.PushSubscription.endpoint","api.PushSubscription.expirationTime","api.PushSubscription.getKey","api.PushSubscription.options","api.PushSubscription.toJSON","api.PushSubscription.unsubscribe","api.PushSubscriptionChangeEvent","api.PushSubscriptionChangeEvent.PushSubscriptionChangeEvent","api.PushSubscriptionChangeEvent.newSubscription","api.PushSubscriptionChangeEvent.oldSubscription","api.PushSubscriptionOptions","api.PushSubscriptionOptions.applicationServerKey","api.PushSubscriptionOptions.userVisibleOnly","api.ServiceWorkerGlobalScope.push_event","api.ServiceWorkerGlobalScope.pushsubscriptionchange_event","api.ServiceWorkerRegistration","api.ServiceWorkerRegistration.pushManager"],"description":"The Push API subscribes to and receives server-initiated messages. Subscribers receive pushed messages in the background, even after periods inactive or offline.","description_html":"The Push API subscribes to and receives server-initiated messages. Subscribers receive pushed messages in the background, even after periods inactive or offline.","name":"Push messages","spec":"https://w3c.github.io/push-api/","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"50","chrome_android":"50","edge":"17","firefox":"44","firefox_android":"48","safari":"16","safari_ios":"16.4"}}},"q":{"compat_features":["api.HTMLQuoteElement","api.HTMLQuoteElement.cite","html.elements.q","html.elements.q.cite"],"description":"The <q> element represents a short inline quotation.","description_html":"The <code>&#x3C;q></code> element represents a short inline quotation.","group":"html-elements","name":"<q>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-q-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"2"}}},"q-unit":{"compat_features":["css.types.length.Q"],"description":"The Q CSS length unit is an absolute length anchored to the physical measurement of quarter-millimeters. 1Q is equivalent to 1/40 of 1 centimeter.","description_html":"The <code>Q</code> CSS length unit is an absolute length anchored to the physical measurement of quarter-millimeters. <code>1Q</code> is equivalent to 1/40 of 1 centimeter.","group":"units","name":"Q unit","spec":"https://drafts.csswg.org/css-values-4/#absolute-lengths","status":{"baseline":"high","baseline_high_date":"2022-09-24","baseline_low_date":"2020-03-24","support":{"chrome":"63","chrome_android":"63","edge":"79","firefox":"49","firefox_android":"49","safari":"13.1","safari_ios":"13.4"}}},"quotes":{"compat_features":["css.properties.quotes","css.properties.quotes.auto","css.properties.quotes.none"],"description":"The quotes CSS property sets the quotation marks inserted via the content CSS property or <q> element.","description_html":"The <code>quotes</code> CSS property sets the quotation marks inserted via the <code>content</code> CSS property or <code>&#x3C;q></code> element.","group":"css","name":"Quotes","spec":"https://drafts.csswg.org/css-content-3/#quotes","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"70","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"rcap":{"compat_features":["css.types.length.rcap"],"description":"The rcap CSS length unit is a font-relative length equal to the value of the cap unit on the root element. Cap-height is approximately equal to the height of a capital Latin letter.","description_html":"The <code>rcap</code> CSS length unit is a font-relative length equal to the value of the <code>cap</code> unit on the root element. Cap-height is approximately equal to the height of a capital Latin letter.","group":"units","name":"rcap unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","status":{"baseline":false,"support":{"chrome":"118","chrome_android":"118","edge":"118","safari":"17.2","safari_ios":"17.2"}}},"rch":{"compat_features":["css.types.length.rch"],"description":"The rch CSS length unit is a font-relative length equal to the value of the ch unit on the root element. ch length is based on the width of the zero (0) character.","description_html":"The <code>rch</code> CSS length unit is a font-relative length equal to the value of the <code>ch</code> unit on the root element. <code>ch</code> length is based on the width of the zero (0) character.","group":"units","name":"rch unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","safari":"17.2","safari_ios":"17.2"}}},"read-write-pseudos":{"caniuse":"css-read-only-write","compat_features":["css.selectors.read-only","css.selectors.read-write"],"description":"The :read-only and :read-write CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, :read-only matches <input> and <textarea> elements with the readonly attribute.","description_html":"The <code>:read-only</code> and <code>:read-write</code> CSS pseudo-classes match elements that are read-only or read-write, respectively. For example, <code>:read-only</code> matches <code>&#x3C;input></code> and <code>&#x3C;textarea></code> elements with the <code>readonly</code> attribute.","group":"forms","name":":read-only and :read-write","spec":["https://html.spec.whatwg.org/multipage/semantics-other.html#selector-read-only","https://drafts.csswg.org/selectors-4/#rw-pseudos"],"status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"1","chrome_android":"18","edge":"13","firefox":"78","firefox_android":"79","safari":"4","safari_ios":"3.2"}}},"reading-flow":{"compat_features":["css.properties.reading-flow"],"description":"The reading-flow CSS property sets the order in which flex or grid elements are rendered to speech or reached via focus navigation.","description_html":"The <code>reading-flow</code> CSS property sets the order in which flex or grid elements are rendered to speech or reached via focus navigation.","group":"css","name":"reading-flow","spec":"https://drafts.csswg.org/css-display-4/#reading-flow","status":{"baseline":false,"support":{}}},"referrer-policy":{"caniuse":"referrer-policy","compat_features":["api.HTMLAnchorElement.referrerPolicy","api.HTMLAnchorElement.referrerPolicy.no-referrer-when-downgrade","api.HTMLAnchorElement.referrerPolicy.origin-when-cross-origin","api.HTMLAnchorElement.referrerPolicy.unsafe-url","api.HTMLAreaElement.referrerPolicy","api.HTMLAreaElement.referrerPolicy.no-referrer-when-downgrade","api.HTMLAreaElement.referrerPolicy.origin-when-cross-origin","api.HTMLAreaElement.referrerPolicy.unsafe-url","api.HTMLIFrameElement.referrerPolicy","api.HTMLIFrameElement.referrerPolicy.no-referrer-when-downgrade","api.HTMLIFrameElement.referrerPolicy.origin-when-cross-origin","api.HTMLIFrameElement.referrerPolicy.unsafe-url","api.HTMLImageElement.referrerPolicy","api.HTMLImageElement.referrerPolicy.no-referrer-when-downgrade","api.HTMLImageElement.referrerPolicy.origin-when-cross-origin","api.HTMLImageElement.referrerPolicy.unsafe-url","api.HTMLLinkElement.referrerPolicy","api.HTMLLinkElement.referrerPolicy.no-referrer-when-downgrade","api.HTMLLinkElement.referrerPolicy.origin-when-cross-origin","api.HTMLLinkElement.referrerPolicy.unsafe-url","api.HTMLScriptElement.referrerPolicy","api.HTMLScriptElement.referrerPolicy.no-referrer-when-downgrade","api.HTMLScriptElement.referrerPolicy.origin-when-cross-origin","api.HTMLScriptElement.referrerPolicy.unsafe-url","html.elements.a.referrerpolicy","html.elements.a.referrerpolicy.no-referrer-when-downgrade","html.elements.a.referrerpolicy.origin-when-cross-origin","html.elements.a.referrerpolicy.unsafe-url","html.elements.area.referrerpolicy","html.elements.area.referrerpolicy.no-referrer-when-downgrade","html.elements.area.referrerpolicy.origin-when-cross-origin","html.elements.area.referrerpolicy.unsafe-url","html.elements.iframe.referrerpolicy","html.elements.iframe.referrerpolicy.no-referrer-when-downgrade","html.elements.iframe.referrerpolicy.origin-when-cross-origin","html.elements.iframe.referrerpolicy.unsafe-url","html.elements.img.referrerpolicy","html.elements.img.referrerpolicy.no-referrer-when-downgrade","html.elements.img.referrerpolicy.origin-when-cross-origin","html.elements.img.referrerpolicy.unsafe-url","html.elements.link.referrerpolicy","html.elements.link.referrerpolicy.no-referrer-when-downgrade","html.elements.link.referrerpolicy.origin-when-cross-origin","html.elements.link.referrerpolicy.unsafe-url","html.elements.script.referrerpolicy","html.elements.script.referrerpolicy.no-referrer-when-downgrade","html.elements.script.referrerpolicy.origin-when-cross-origin","html.elements.script.referrerpolicy.unsafe-url","http.headers.Referrer-Policy","http.headers.Referrer-Policy.default_strict-origin-when-cross-origin","http.headers.Referrer-Policy.no-referrer-when-downgrade","http.headers.Referrer-Policy.origin-when-cross-origin","http.headers.Referrer-Policy.same-origin","http.headers.Referrer-Policy.strict-origin","http.headers.Referrer-Policy.strict-origin-when-cross-origin","http.headers.Referrer-Policy.unsafe-url"],"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"}}},"regexp-escape":{"compat_features":["javascript.builtins.RegExp.escape"],"description":"The RegExp.escape() static method takes a string and replaces any characters that are potentially special characters of a regular expression with equivalent escape sequences. For example, RegExp.escape(\"[abc]\") returns \"\\\\[abc\\\\]\".","description_html":"The <code>RegExp.escape()</code> static method takes a string and replaces any characters that are potentially special characters of a regular expression with equivalent escape sequences. For example, <code>RegExp.escape(\"[abc]\")</code> returns <code>\"\\\\[abc\\\\]\"</code>.","name":"RegExp.escape()","spec":"https://tc39.es/proposal-regex-escaping/","status":{"baseline":false,"support":{"firefox":"134","firefox_android":"134","safari":"18.2","safari_ios":"18.2"}}},"regexp-static-properties":{"compat_features":["javascript.builtins.RegExp.input","javascript.builtins.RegExp.lastMatch","javascript.builtins.RegExp.lastParen","javascript.builtins.RegExp.leftContext","javascript.builtins.RegExp.n","javascript.builtins.RegExp.rightContext"],"description":"The RegExp object has several static properties to access the input and results of the most-recent regular expression match.","description_html":"The <code>RegExp</code> object has several static properties to access the input and results of the most-recent regular expression match.","discouraged":{"according_to":["https://github.com/tc39/proposal-regexp-legacy-features"]},"name":"RegExp static properties","spec":"https://github.com/tc39/proposal-regexp-legacy-features","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"3","safari_ios":"1"}}},"region-capture":{"compat_features":["api.BrowserCaptureMediaStreamTrack","api.BrowserCaptureMediaStreamTrack.clone","api.BrowserCaptureMediaStreamTrack.cropTo","api.CropTarget","api.CropTarget.fromElement_static"],"description":"The CropTarget API crops an element from a video track derived from display-capture of the active browser tab. For example, you can crop out video conferencing during screen sharing.","description_html":"The <code>CropTarget</code> API crops an element from a video track derived from display-capture of the active browser tab. For example, you can crop out video conferencing during screen sharing.","name":"Region capture","spec":"https://w3c.github.io/mediacapture-region/","status":{"baseline":false,"support":{"chrome":"104","edge":"104"}}},"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"}}},"registerprotocolhandler":{"compat_features":["api.Navigator.registerProtocolHandler","api.Navigator.registerProtocolHandler.scheme_parameter_bitcoin","api.Navigator.registerProtocolHandler.scheme_parameter_ftp","api.Navigator.registerProtocolHandler.scheme_parameter_ftps","api.Navigator.registerProtocolHandler.scheme_parameter_geo","api.Navigator.registerProtocolHandler.scheme_parameter_im","api.Navigator.registerProtocolHandler.scheme_parameter_irc","api.Navigator.registerProtocolHandler.scheme_parameter_ircs","api.Navigator.registerProtocolHandler.scheme_parameter_magnet","api.Navigator.registerProtocolHandler.scheme_parameter_mailto","api.Navigator.registerProtocolHandler.scheme_parameter_matrix","api.Navigator.registerProtocolHandler.scheme_parameter_mms","api.Navigator.registerProtocolHandler.scheme_parameter_news","api.Navigator.registerProtocolHandler.scheme_parameter_nntp","api.Navigator.registerProtocolHandler.scheme_parameter_openpgp4fpr","api.Navigator.registerProtocolHandler.scheme_parameter_sftp","api.Navigator.registerProtocolHandler.scheme_parameter_sip","api.Navigator.registerProtocolHandler.scheme_parameter_sms","api.Navigator.registerProtocolHandler.scheme_parameter_smsto","api.Navigator.registerProtocolHandler.scheme_parameter_ssh","api.Navigator.registerProtocolHandler.scheme_parameter_tel","api.Navigator.registerProtocolHandler.scheme_parameter_urn","api.Navigator.registerProtocolHandler.scheme_parameter_webcal","api.Navigator.registerProtocolHandler.scheme_parameter_wtai","api.Navigator.registerProtocolHandler.scheme_parameter_xmpp","api.Navigator.registerProtocolHandler.secure_context_required","api.Navigator.unregisterProtocolHandler"],"description":"The navigator.registerProtocolHandler() method declares a site's ability to handle an address scheme (also known as a protocol). For example, an email site can register to open mailto: URLs or a VoIP site to open tel: URLs.","description_html":"The <code>navigator.registerProtocolHandler()</code> method declares a site's ability to handle an address scheme (also known as a protocol). For example, an email site can register to open <code>mailto:</code> URLs or a VoIP site to open <code>tel:</code> URLs.","name":"registerProtocolHandler","spec":"https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers","status":{"baseline":false,"support":{"chrome":"13","edge":"79","firefox":"2","firefox_android":"4"}}},"relative-color":{"caniuse":"css-relative-colors","compat_features":["css.types.calc.color_component","css.types.color.color.relative_syntax","css.types.color.hsl.relative_syntax","css.types.color.hwb.relative_syntax","css.types.color.lab.relative_syntax","css.types.color.lch.relative_syntax","css.types.color.oklab.relative_syntax","css.types.color.oklch.relative_syntax","css.types.color.rgb.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-09-16","support":{"chrome":"125","chrome_android":"125","edge":"125","firefox":"128","firefox_android":"128","safari":"18","safari_ios":"18"}}},"relative-positioning":{"compat_features":["css.properties.position.relative"],"description":"The position: relative CSS declaration offsets the position of an element relative to its position in the normal flow.","description_html":"The <code>position: relative</code> CSS declaration offsets the position of an element relative to its position in the normal flow.","group":"positioning","name":"Relative positioning","spec":"https://drafts.csswg.org/css-position-3/#relpos-insets","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"}}},"rem":{"caniuse":"rem","compat_features":["css.types.length.rem"],"description":"The rem CSS length unit is a font-relative length that is equal to the font size of the root HTML element which for most browsers is 16px.","description_html":"The <code>rem</code> CSS length unit is a font-relative length that is equal to the font size of the root HTML element which for most browsers is <code>16px</code>.","group":"units","name":"rem","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","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.6","firefox_android":"4","safari":"5","safari_ios":"4"}}},"remote-playback":{"compat_features":["api.HTMLMediaElement.disableRemotePlayback","api.HTMLMediaElement.remote","api.RemotePlayback","api.RemotePlayback.cancelWatchAvailability","api.RemotePlayback.connect_event","api.RemotePlayback.connecting_event","api.RemotePlayback.disconnect_event","api.RemotePlayback.prompt","api.RemotePlayback.state","api.RemotePlayback.watchAvailability","html.elements.audio.disableremoteplayback","html.elements.video.disableremoteplayback"],"description":"The Remote Playback API initiates and controls playback of media on connected remote devices, such as smart TVs with AirPlay or Chromecast capabilities.","description_html":"The Remote Playback API initiates and controls playback of media on connected remote devices, such as smart TVs with AirPlay or Chromecast capabilities.","name":"Remote playback","spec":"https://w3c.github.io/remote-playback/","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"56","edge":"121","safari":"13.1","safari_ios":"13.4"}}},"reporting":{"compat_features":["api.Report","api.Report.body","api.Report.toJSON","api.Report.type","api.Report.url","api.ReportBody","api.ReportBody.toJSON","api.ReportingObserver","api.ReportingObserver.ReportingObserver","api.ReportingObserver.disconnect","api.ReportingObserver.observe","api.ReportingObserver.takeRecords","api.ReportingObserver.worker_support","http.headers.Reporting-Endpoints"],"description":"The Reporting API makes consistent reports about Content Security Policy violations, Permissions-Policy violations, deprecated feature usage, crashes, and other web platform features available to your server endpoints.","description_html":"The Reporting API makes consistent reports about Content Security Policy violations, Permissions-Policy violations, deprecated feature usage, crashes, and other web platform features available to your server endpoints.","name":"Reporting API","spec":"https://w3c.github.io/reporting/","status":{"baseline":false,"support":{"chrome":"96","chrome_android":"96","edge":"96"}}},"request-animation-frame":{"caniuse":"requestanimationframe","compat_features":["api.Window.cancelAnimationFrame","api.Window.requestAnimationFrame"],"description":"The requestAnimationFrame() method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.","description_html":"The <code>requestAnimationFrame()</code> method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.","name":"requestAnimationFrame()","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"24","chrome_android":"25","edge":"12","firefox":"23","firefox_android":"23","safari":"7","safari_ios":"7"}}},"request-animation-frame-workers":{"compat_features":["api.DedicatedWorkerGlobalScope.cancelAnimationFrame","api.DedicatedWorkerGlobalScope.requestAnimationFrame"],"description":"The requestAnimationFrame() method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker.","description_html":"The <code>requestAnimationFrame()</code> method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker.","name":"requestAnimationFrame() in workers","spec":"https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"99","firefox_android":"99","safari":"16.4","safari_ios":"16.4"}}},"request-video-frame-callback":{"compat_features":["api.HTMLVideoElement.cancelVideoFrameCallback","api.HTMLVideoElement.requestVideoFrameCallback"],"description":"The requestVideoFrameCallback() method for <video> schedules a function that runs with the next video frame. It is similar to requestAnimationFrame(), but for video.","description_html":"The <code>requestVideoFrameCallback()</code> method for <code>&#x3C;video></code> schedules a function that runs with the next video frame. It is similar to <code>requestAnimationFrame()</code>, but for video.","group":"media-elements","name":"requestVideoFrameCallback()","spec":"https://wicg.github.io/video-rvfc/","status":{"baseline":"low","baseline_low_date":"2024-10-29","support":{"chrome":"83","chrome_android":"83","edge":"83","firefox":"132","firefox_android":"132","safari":"15.4","safari_ios":"15.4"}}},"requestidlecallback":{"caniuse":"requestidlecallback","compat_features":["api.IdleDeadline","api.IdleDeadline.didTimeout","api.IdleDeadline.timeRemaining","api.Window.cancelIdleCallback","api.Window.requestIdleCallback"],"description":"The requestIdleCallback() API queues a function that runs in idle browser time, either at the end of a frame or when the user is inactive. Also known as the background tasks API.","description_html":"The <code>requestIdleCallback()</code> API queues a function that runs in idle browser time, either at the end of a frame or when the user is inactive. Also known as the background tasks API.","name":"requestIdleCallback()","spec":"https://w3c.github.io/requestidlecallback/","status":{"baseline":false,"support":{"chrome":"47","chrome_android":"47","edge":"79","firefox":"55","firefox_android":"55"}}},"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"}}},"resize-observer":{"caniuse":"resizeobserver","compat_features":["api.ResizeObserver","api.ResizeObserver.ResizeObserver","api.ResizeObserver.disconnect","api.ResizeObserver.observe","api.ResizeObserver.observe.options_box_parameter","api.ResizeObserver.unobserve","api.ResizeObserverEntry","api.ResizeObserverEntry.borderBoxSize","api.ResizeObserverEntry.contentBoxSize","api.ResizeObserverEntry.contentRect","api.ResizeObserverEntry.devicePixelContentBoxSize","api.ResizeObserverEntry.target","api.ResizeObserverSize","api.ResizeObserverSize.blockSize","api.ResizeObserverSize.inlineSize"],"description":"The ResizeObserver API observes and reacts to changes in the size of DOM elements.","description_html":"The <code>ResizeObserver</code> API observes and reacts to changes in the size of DOM elements.","name":"Resize observer","spec":"https://drafts.csswg.org/resize-observer-1/","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"64","chrome_android":"64","edge":"79","firefox":"69","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"resolution":{"caniuse":"css-media-resolution","compat_features":["css.at-rules.media.resolution","css.types.resolution","css.types.resolution.dpcm","css.types.resolution.dpi","css.types.resolution.dppx","css.types.resolution.x"],"description":"The resolution CSS media query sets styles based on the pixel density, or how many pixels a device uses to display a single CSS pixel.","description_html":"The <code>resolution</code> CSS media query sets styles based on the pixel density, or how many pixels a device uses to display a single CSS pixel.","group":"media-queries","name":"resolution media query","spec":"https://drafts.csswg.org/mediaqueries-5/#resolution","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"68","chrome_android":"68","edge":"79","firefox":"62","firefox_android":"62","safari":"16","safari_ios":"16"}}},"resolution-compat":{"compat_features":["css.at-rules.media.-webkit-device-pixel-ratio","css.at-rules.media.-webkit-max-device-pixel-ratio","css.at-rules.media.-webkit-min-device-pixel-ratio"],"description":"The -webkit-device-pixel-ratio, -webkit-min-device-pixel-ratio, and -webkit-max-device-pixel-ratio CSS media queries are standardized compatibility alternatives to resolution media queries.","description_html":"The <code>-webkit-device-pixel-ratio</code>, <code>-webkit-min-device-pixel-ratio</code>, and <code>-webkit-max-device-pixel-ratio</code> CSS media queries are standardized compatibility alternatives to <code>resolution</code> media queries.","group":"media-queries","name":"resolution media query (compatibility prefixes)","spec":"https://compat.spec.whatwg.org/#css-media-queries-webkit-device-pixel-ratio","status":{"baseline":"high","baseline_high_date":"2021-04-23","baseline_low_date":"2018-10-23","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"63","firefox_android":"63","safari":"3","safari_ios":"1"}}},"resource-size":{"compat_features":["api.PerformanceResourceTiming.decodedBodySize","api.PerformanceResourceTiming.encodedBodySize","api.PerformanceResourceTiming.transferSize"],"description":"The decodedBodySize, encodedBodySize, and transferSize properties of the PerformanceResourceTiming API reports the size of resources loaded.","description_html":"The <code>decodedBodySize</code>, <code>encodedBodySize</code>, and <code>transferSize</code> properties of the <code>PerformanceResourceTiming</code> API reports the size of resources loaded.","group":"performance","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.contentType","api.PerformanceResourceTiming.deliveryType","api.PerformanceResourceTiming.domainLookupEnd","api.PerformanceResourceTiming.domainLookupStart","api.PerformanceResourceTiming.fetchStart","api.PerformanceResourceTiming.firstInterimResponseStart","api.PerformanceResourceTiming.initiatorType","api.PerformanceResourceTiming.nextHopProtocol","api.PerformanceResourceTiming.redirectEnd","api.PerformanceResourceTiming.redirectStart","api.PerformanceResourceTiming.renderBlockingStatus","api.PerformanceResourceTiming.requestStart","api.PerformanceResourceTiming.responseEnd","api.PerformanceResourceTiming.responseStart","api.PerformanceResourceTiming.responseStatus","api.PerformanceResourceTiming.secureConnectionStart","api.PerformanceResourceTiming.toJSON","api.PerformanceResourceTiming.workerStart","api.PerformanceResourceTiming.worker_support"],"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":"performance","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":"29","chrome_android":"29","edge":"12","firefox":"35","firefox_android":"35","safari":"11","safari_ios":"11"}}},"revert-value":{"caniuse":"css-revert-value","compat_features":["css.types.global_keywords.revert"],"description":"The revert CSS keyword resets any property to its previous default, provided by either the user or browser stylesheets. For example, setting display: revert on a <div> will likely result in display: block, the browser default style. This is often confused with initial.","description_html":"The <code>revert</code> CSS keyword resets any property to its previous default, provided by either the user or browser stylesheets. For example, setting <code>display: revert</code> on a <code>&#x3C;div></code> will likely result in <code>display: block</code>, the browser default style. This is often confused with <code>initial</code>.","group":"explicit-defaults","name":"revert","spec":"https://drafts.csswg.org/css-cascade-4/#default","status":{"baseline":"high","baseline_high_date":"2023-01-27","baseline_low_date":"2020-07-27","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"67","firefox_android":"67","safari":"9.1","safari_ios":"9.3"}}},"rex":{"compat_features":["css.types.length.rex"],"description":"The rex CSS length unit is a font-relative length that is equal to the x-height of the root element.","description_html":"The <code>rex</code> CSS length unit is a font-relative length that is equal to the x-height of the root element.","group":"units","name":"rex unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","safari":"17.2","safari_ios":"17.2"}}},"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>, <code>rgba()</code>, and hexadecimal (as in <code>#004488ff</code>) 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"}}},"rhythmic-sizing":{"compat_features":["css.properties.line-height-step"],"description":"The line-height-step CSS property creates consistent vertical rhythm by setting the spacing between body text baselines. It rounds taller lines like headings up to the next multiple of the body text spacing.","description_html":"The <code>line-height-step</code> CSS property creates consistent vertical rhythm by setting the spacing between body text baselines. It rounds taller lines like headings up to the next multiple of the body text spacing.","group":"text","name":"Rhythmic sizing","spec":"https://drafts.csswg.org/css-rhythm-1/","status":{"baseline":false,"support":{}}},"ric":{"compat_features":["css.types.length.ric"],"description":"The ric CSS length unit, or root international character, is a font-relative length equal to the width of CJK character relative to the root element.","description_html":"The <code>ric</code> CSS length unit, or root international character, is a font-relative length equal to the width of CJK character relative to the root element.","group":"units","name":"ric unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","status":{"baseline":false,"support":{"chrome":"111","chrome_android":"111","edge":"111","safari":"17.2","safari_ios":"17.2"}}},"rlh":{"compat_features":["css.types.length.rlh"],"description":"The rlh CSS length unit is a font-relative length relative to the line height of root element.","description_html":"The <code>rlh</code> CSS length unit is a font-relative length relative to the line height of root element.","group":"units","name":"rlh unit","spec":"https://drafts.csswg.org/css-values-4/#font-relative-lengths","status":{"baseline":"low","baseline_low_date":"2023-11-21","support":{"chrome":"111","chrome_android":"111","edge":"111","firefox":"120","firefox_android":"120","safari":"16.4","safari_ios":"16.4"}}},"root":{"compat_features":["css.selectors.root"],"description":"The :root pseudo-class matches the root element of the document, usually the <html> element.","description_html":"The <code>:root</code> pseudo-class matches the root element of the document, usually the <code>&#x3C;html></code> element.","group":"selectors","name":":root","spec":"https://drafts.csswg.org/selectors-4/#the-root-pseudo","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"}}},"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>&#x3C;ruby></code> element produces small annotations that are rendered with its base text.","group":["html","ruby"],"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"}}},"ruby-align":{"compat_features":["css.properties.ruby-align","css.properties.ruby-align.center","css.properties.ruby-align.space-around","css.properties.ruby-align.space-between","css.properties.ruby-align.start"],"description":"The ruby-align CSS property sets the spacing and alignment of ruby annotation text when it does not fill its available space.","description_html":"The <code>ruby-align</code> CSS property sets the spacing and alignment of ruby annotation text when it does not fill its available space.","group":"ruby","name":"ruby-align","spec":"https://drafts.csswg.org/css-ruby-1/#ruby-align-property","status":{"baseline":"low","baseline_low_date":"2024-12-11","support":{"chrome":"128","chrome_android":"128","edge":"128","firefox":"38","firefox_android":"38","safari":"18.2","safari_ios":"18.2"}}},"ruby-overhang":{"compat_features":["css.properties.ruby-overhang","css.properties.ruby-overhang.auto","css.properties.ruby-overhang.none"],"description":"The ruby-overhang CSS property sets whether ruby annotations may overlap adjacent text.","description_html":"The <code>ruby-overhang</code> CSS property sets whether ruby annotations may overlap adjacent text.","group":"ruby","name":"ruby-overhang","spec":"https://drafts.csswg.org/css-ruby-1/#ruby-overhang","status":{"baseline":false,"support":{"safari":"18.2","safari_ios":"18.2"}}},"ruby-position":{"compat_features":["css.properties.ruby-position","css.properties.ruby-position.alternate","css.properties.ruby-position.inter-character","css.properties.ruby-position.over","css.properties.ruby-position.under"],"description":"The ruby-position CSS property sets the position of a ruby annotation in relation to its base text. Annotations can display over, under, or interleaved with the base text.","description_html":"The <code>ruby-position</code> CSS property sets the position of a ruby annotation in relation to its base text. Annotations can display over, under, or interleaved with the base text.","group":"ruby","name":"ruby-position","spec":"https://drafts.csswg.org/css-ruby-1/#rubypos","status":{"baseline":"low","baseline_low_date":"2024-12-11","support":{"chrome":"84","chrome_android":"84","edge":"84","firefox":"38","firefox_android":"38","safari":"18.2","safari_ios":"18.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>&#x3C;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 <samp> element represents a sample or quoted output from a computer program. Styled in a monospace font by default.","description_html":"The <code>&#x3C;samp></code> element represents a sample or quoted output from a computer program. Styled in a monospace font 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"}}},"savedata":{"compat_features":["api.NetworkInformation.saveData","http.headers.Save-Data"],"description":"Browsers send the Save-Data HTTP request header when the user turns on a data-saving mode. It is a hint to reduce data sent to the browser. Servers should respond with alternative content, such as smaller images and videos, or different markup and styling.","description_html":"Browsers send the <code>Save-Data</code> HTTP request header when the user turns on a data-saving mode. It is a hint to reduce data sent to the browser. Servers should respond with alternative content, such as smaller images and videos, or different markup and styling.","name":"Save-Data","spec":"https://wicg.github.io/savedata/","status":{"baseline":false,"support":{"chrome":"65","chrome_android":"65","edge":"79"}}},"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.any_static","api.TaskSignal.priority","api.TaskSignal.prioritychange_event","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"}}},"scope-pseudo":{"compat_features":["css.selectors.scope","css.selectors.scope.dom_api"],"description":"The :scope CSS pseudo-class matches the scoping root, for instance the element that querySelector() is called on, or the root of a DOM subtree specified with @scope.","description_html":"The <code>:scope</code> CSS pseudo-class matches the scoping root, for instance the element that <code>querySelector()</code> is called on, or the root of a DOM subtree specified with <code>@scope</code>.","group":"selectors","name":":scope (pseudo-class)","spec":"https://drafts.csswg.org/selectors-4/#the-scope-pseudo","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"27","chrome_android":"27","edge":"79","firefox":"32","firefox_android":"32","safari":"7","safari_ios":"7"}}},"screen":{"compat_features":["api.Screen","api.Screen.availHeight","api.Screen.availWidth","api.Screen.colorDepth","api.Screen.height","api.Screen.pixelDepth","api.Screen.width"],"description":"The window.screen property contains information about the screen of the output device that the referenced window is being rendered on.","description_html":"The <code>window.screen</code> property contains information about the screen of the output device that the referenced <code>window</code> is being rendered on.","name":"Screen","spec":"https://drafts.csswg.org/cssom-view-1/#screen","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"}}},"screen-capture":{"compat_features":["api.CaptureController","api.CaptureController.CaptureController","api.CaptureController.setFocusBehavior","api.MediaDevices.getDisplayMedia","api.MediaDevices.getDisplayMedia.audio_capture_support","api.MediaDevices.getDisplayMedia.controller_option","api.MediaDevices.getDisplayMedia.monitorTypeSurfaces_option","api.MediaDevices.getDisplayMedia.selfBrowserSurface_option","api.MediaDevices.getDisplayMedia.surfaceSwitching_option","api.MediaDevices.getDisplayMedia.systemAudio_option","api.MediaStreamTrack.applyConstraints.displaySurface_constraint","api.MediaStreamTrack.applyConstraints.logicalSurface_constraint","api.MediaStreamTrack.applyConstraints.suppressLocalAudioPlayback_constraint","html.elements.iframe.allow.display-capture","http.headers.Permissions-Policy.display-capture"],"description":"The navigator.mediaDevices.getDisplayMedia() method asks the user to choose a screen or portion of a screen (such as a window) to capture as a media stream.","description_html":"The <code>navigator.mediaDevices.getDisplayMedia()</code> method asks the user to choose a screen or portion of a screen (such as a window) to capture as a media stream.","name":"Screen capture","spec":"https://w3c.github.io/mediacapture-screen-share/","status":{"baseline":false,"support":{"chrome":"72","edge":"79","firefox":"33","safari":"13"}}},"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","html.elements.iframe.allow.screen-wake-lock","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>&#x3C;script></code> element contains or loads data or executable code. This is typically used to load JavaScript code. The <code>&#x3C;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-behavior":{"caniuse":"css-scroll-behavior","compat_features":["css.properties.scroll-behavior","css.properties.scroll-behavior.auto","css.properties.scroll-behavior.smooth"],"description":"The scroll-behavior CSS property controls whether scrolling is smooth or snaps, for scroll actions not performed by the user such as those triggered by navigation.","description_html":"The <code>scroll-behavior</code> CSS property controls whether scrolling is smooth or snaps, for scroll actions not performed by the user such as those triggered by navigation.","group":"scrolling","name":"scroll-behavior","spec":"https://drafts.csswg.org/css-overflow-3/#smooth-scrolling","status":{"baseline":"high","baseline_high_date":"2024-09-14","baseline_low_date":"2022-03-14","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"36","firefox_android":"36","safari":"15.4","safari_ios":"15.4"}}},"scroll-driven-animations":{"compat_features":["api.ScrollTimeline","api.ScrollTimeline.ScrollTimeline","api.ScrollTimeline.axis","api.ScrollTimeline.source","api.ViewTimeline","api.ViewTimeline.ViewTimeline","api.ViewTimeline.endOffset","api.ViewTimeline.startOffset","api.ViewTimeline.subject","css.properties.animation-range","css.properties.animation-range-end","css.properties.animation-range-end.normal","css.properties.animation-range-start","css.properties.animation-range-start.normal","css.properties.animation-timeline","css.properties.animation-timeline.scroll","css.properties.animation-timeline.view","css.properties.animation.animation-timeline_included","css.properties.scroll-timeline","css.properties.scroll-timeline-axis","css.properties.scroll-timeline-axis.block","css.properties.scroll-timeline-axis.inline","css.properties.scroll-timeline-axis.x","css.properties.scroll-timeline-axis.y","css.properties.scroll-timeline-name","css.properties.timeline-scope","css.properties.timeline-scope.all","css.properties.timeline-scope.none","css.properties.view-timeline","css.properties.view-timeline-axis","css.properties.view-timeline-axis.block","css.properties.view-timeline-axis.inline","css.properties.view-timeline-axis.x","css.properties.view-timeline-axis.y","css.properties.view-timeline-inset","css.properties.view-timeline-inset.auto","css.properties.view-timeline-name"],"description":"The animation-timeline, scroll-timeline, and view-timeline CSS properties advance animations based on the user's scroll position.","description_html":"The <code>animation-timeline</code>, <code>scroll-timeline</code>, and <code>view-timeline</code> CSS properties advance animations based on the user's scroll position.","group":["scrolling","animation"],"name":"Scroll-driven animations","spec":"https://drafts.csswg.org/scroll-animations-1/","status":{"baseline":false,"support":{"chrome":"115","chrome_android":"115","edge":"115"}}},"scroll-elements":{"caniuse":"element-scroll-methods","compat_features":["api.Document.scroll_event","api.Document.scrollingElement","api.Element.scroll","api.Element.scroll.options_behavior_parameter","api.Element.scroll.options_left_parameter","api.Element.scroll.options_top_parameter","api.Element.scrollBy","api.Element.scrollBy.options_behavior_parameter","api.Element.scrollBy.options_left_parameter","api.Element.scrollBy.options_top_parameter","api.Element.scrollHeight","api.Element.scrollLeft","api.Element.scrollTo","api.Element.scrollTo.options_behavior_parameter","api.Element.scrollTo.options_left_parameter","api.Element.scrollTo.options_top_parameter","api.Element.scrollTop","api.Element.scrollWidth","api.Element.scroll_event","api.Window.scroll","api.Window.scroll.options_behavior_parameter","api.Window.scroll.options_left_parameter","api.Window.scroll.options_top_parameter","api.Window.scrollBy","api.Window.scrollBy.options_behavior_parameter","api.Window.scrollBy.options_left_parameter","api.Window.scrollBy.options_top_parameter","api.Window.scrollTo","api.Window.scrollTo.options_behavior_parameter","api.Window.scrollTo.options_left_parameter","api.Window.scrollTo.options_top_parameter","api.Window.scrollX","api.Window.scrollX.subpixel_precision","api.Window.scrollY","api.Window.scrollY.subpixel_precision"],"description":"The scroll() and scrollBy() methods change the scroll position of overflow content within an element. Similar to setting scrollTop and scrollLeft properties, but with options setting whether the scroll should animate smoothly or jump. Note that scrollTo() is an alias for scroll().","description_html":"The <code>scroll()</code> and <code>scrollBy()</code> methods change the scroll position of overflow content within an element. Similar to setting <code>scrollTop</code> and <code>scrollLeft</code> properties, but with options setting whether the scroll should animate smoothly or jump. Note that <code>scrollTo()</code> is an alias for <code>scroll()</code>.","name":"Scroll methods on elements","spec":"https://drafts.csswg.org/cssom-view-1/#dom-element-scroll","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-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-end.auto","css.properties.scroll-padding-block-start","css.properties.scroll-padding-block-start.auto","css.properties.scroll-padding-block.auto","css.properties.scroll-padding-bottom","css.properties.scroll-padding-inline","css.properties.scroll-padding-inline-end","css.properties.scroll-padding-inline-end.auto","css.properties.scroll-padding-inline-start","css.properties.scroll-padding-inline-start.auto","css.properties.scroll-padding-inline.auto","css.properties.scroll-padding-left","css.properties.scroll-padding-right","css.properties.scroll-padding-top","css.properties.scroll-padding.auto","css.properties.scroll-snap-align","css.properties.scroll-snap-align.center","css.properties.scroll-snap-align.end","css.properties.scroll-snap-align.none","css.properties.scroll-snap-align.start","css.properties.scroll-snap-stop","css.properties.scroll-snap-stop.always","css.properties.scroll-snap-stop.normal","css.properties.scroll-snap-type","css.properties.scroll-snap-type.block","css.properties.scroll-snap-type.both","css.properties.scroll-snap-type.inline","css.properties.scroll-snap-type.none","css.properties.scroll-snap-type.x","css.properties.scroll-snap-type.y"],"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-2/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"68","firefox_android":"68","safari":"11","safari_ios":"11"}}},"scroll-snap-events":{"compat_features":["api.Document.scrollsnapchange_event","api.Document.scrollsnapchanging_event","api.Element.scrollsnapchange_event","api.Element.scrollsnapchanging_event","api.SnapEvent","api.SnapEvent.SnapEvent","api.SnapEvent.snapTargetBlock","api.SnapEvent.snapTargetInline","api.Window.scrollsnapchange_event","api.Window.scrollsnapchanging_event"],"description":"The scrollsnapchanging and scrollsnapchange events fire when a scroll gesture changes the selected scroll snap target.","description_html":"The <code>scrollsnapchanging</code> and <code>scrollsnapchange</code> events fire when a scroll gesture changes the selected scroll snap target.","group":"scrolling","name":"Scroll snap events","spec":"https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchange-and-scrollsnapchanging","status":{"baseline":false,"support":{"chrome":"129","chrome_android":"129","edge":"129"}}},"scroll-to-text-fragment":{"caniuse":"url-scroll-to-text-fragment","compat_features":["api.Document.fragmentDirective","api.FragmentDirective","html.elements.a.text_fragments"],"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":"low","baseline_low_date":"2024-10-01","support":{"chrome":"80","chrome_android":"80","edge":"80","firefox":"131","firefox_android":"131","safari":"16.1","safari_ios":"16.1"}}},"scrollbar-color":{"compat_features":["css.properties.scrollbar-color","css.properties.scrollbar-color.auto"],"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","css.properties.scrollbar-gutter.auto","css.properties.scrollbar-gutter.stable"],"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":"low","baseline_low_date":"2024-12-11","support":{"chrome":"94","chrome_android":"94","edge":"94","firefox":"97","firefox_android":"97","safari":"18.2","safari_ios":"18.2"}}},"scrollbar-width":{"compat_features":["css.properties.scrollbar-width","css.properties.scrollbar-width.auto","css.properties.scrollbar-width.none","css.properties.scrollbar-width.thin"],"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":"low","baseline_low_date":"2024-12-11","support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"64","firefox_android":"64","safari":"18.2","safari_ios":"18.2"}}},"scrollend":{"compat_features":["api.Document.scrollend_event","api.Element.scrollend_event"],"description":"The scrollend event fires when an element or document has finished scrolling.","description_html":"The <code>scrollend</code> event fires when an element or document has finished scrolling.","group":"scrolling","name":"scrollend","spec":"https://drafts.csswg.org/cssom-view-1/#eventdef-document-scrollend","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"109","firefox_android":"109"}}},"search":{"compat_features":["html.elements.search"],"description":"The <search> HTML element is a container that represents the parts of the web page with search functionality.","description_html":"The <code>&#x3C;search></code> HTML element is a container that represents the parts of the web page with search functionality.","group":"html-elements","name":"<search>","spec":"https://html.spec.whatwg.org/multipage/grouping-content.html#the-search-element","status":{"baseline":"low","baseline_low_date":"2023-10-13","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"118","firefox_android":"118","safari":"17","safari_ios":"17"}}},"search-input-type":{"caniuse":"input-search","compat_features":["html.elements.input.type_search"],"description":"The <input type=\"search\"> HTML element represents a text field for search queries.","description_html":"The <code>&#x3C;input type=\"search\"></code> HTML element represents a text field for search queries.","group":"forms","name":"<input type=\"search\">","spec":"https://html.spec.whatwg.org/multipage/input.html#text-(type=text)-state-and-search-state-(type=search)","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"section":{"compat_features":["html.elements.section"],"description":"The <section> element is a generic standalone section of a document, which doesn't have a more specific semantic element to represent it.","description_html":"The <code>&#x3C;section></code> element is a generic standalone section of a document, which doesn't have a more specific semantic element to represent it.","group":"html-elements","name":"<section>","spec":"https://html.spec.whatwg.org/multipage/sections.html#the-section-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"5","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5","safari_ios":"4.2"}}},"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>&#x3C;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"}}},"selection":{"caniuse":"css-selection","compat_features":["css.selectors.selection"],"description":"The ::selection CSS pseudo-element selects text a user has highlighted.","description_html":"The <code>::selection</code> CSS pseudo-element selects text a user has highlighted.","group":["selectors","selection"],"name":"::selection","spec":"https://drafts.csswg.org/css-pseudo-4/#selectordef-selection","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"62","firefox_android":"62","safari":"1.1"}}},"selection-api":{"caniuse":"selection-api","compat_features":["api.AbstractRange","api.AbstractRange.collapsed","api.AbstractRange.endContainer","api.AbstractRange.endOffset","api.AbstractRange.startContainer","api.AbstractRange.startOffset","api.Document.createRange","api.Document.getSelection","api.Document.selectionchange_event","api.HTMLInputElement.selectionchange_event","api.HTMLTextAreaElement.selectionchange_event","api.Node.selectstart_event","api.Range","api.Range.Range","api.Range.cloneContents","api.Range.cloneRange","api.Range.collapse","api.Range.collapse.toStart_parameter_optional","api.Range.collapsed","api.Range.commonAncestorContainer","api.Range.compareBoundaryPoints","api.Range.comparePoint","api.Range.createContextualFragment","api.Range.deleteContents","api.Range.detach","api.Range.endContainer","api.Range.endOffset","api.Range.extractContents","api.Range.getBoundingClientRect","api.Range.getClientRects","api.Range.insertNode","api.Range.intersectsNode","api.Range.isPointInRange","api.Range.selectNode","api.Range.selectNodeContents","api.Range.setEnd","api.Range.setEndAfter","api.Range.setEndBefore","api.Range.setStart","api.Range.setStartAfter","api.Range.setStartBefore","api.Range.startContainer","api.Range.startOffset","api.Range.surroundContents","api.Range.toString","api.Selection","api.Selection.addRange","api.Selection.anchorNode","api.Selection.anchorOffset","api.Selection.collapse","api.Selection.collapseToEnd","api.Selection.collapseToStart","api.Selection.containsNode","api.Selection.deleteFromDocument","api.Selection.direction","api.Selection.empty","api.Selection.extend","api.Selection.focusNode","api.Selection.focusOffset","api.Selection.getRangeAt","api.Selection.isCollapsed","api.Selection.modify","api.Selection.rangeCount","api.Selection.removeAllRanges","api.Selection.removeRange","api.Selection.selectAllChildren","api.Selection.setBaseAndExtent","api.Selection.setPosition","api.Selection.toString","api.Selection.type","api.StaticRange","api.StaticRange.StaticRange","api.StaticRange.collapsed","api.StaticRange.endContainer","api.StaticRange.endOffset","api.StaticRange.startContainer","api.StaticRange.startOffset","api.Window.getSelection"],"description":"The Selection API controls and modifies user text selections within the page.","description_html":"The Selection API controls and modifies user text selections within the page.","group":"selection","name":"Selection","spec":"https://w3c.github.io/selection-api/","status":{"baseline":"high","baseline_high_date":"2019-09-07","baseline_low_date":"2017-03-07","support":{"chrome":"11","chrome_android":"18","edge":"12","firefox":"52","firefox_android":"52","safari":"5.1","safari_ios":"5"}}},"selectors":{"compat_features":["css.selectors.attribute","css.selectors.child","css.selectors.class","css.selectors.descendant","css.selectors.id","css.selectors.list","css.selectors.next-sibling","css.selectors.subsequent-sibling","css.selectors.type","css.selectors.type.namespaces","css.selectors.universal","css.selectors.universal.namespaces"],"description":"CSS selectors match elements based on their type, attributes, and relationship to other elements. They define the specific elements to which a block of styles will be applied. This feature represents the oldest selectors of CSS.","description_html":"CSS selectors match elements based on their type, attributes, and relationship to other elements. They define the specific elements to which a block of styles will be applied. This feature represents the oldest selectors of CSS.","group":"selectors","name":"Selectors (core)","spec":"https://drafts.csswg.org/selectors-4/","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"}}},"serial":{"compat_features":["api.Navigator.serial","api.Serial","api.Serial.getPorts","api.Serial.requestPort","api.SerialPort","api.SerialPort.close","api.SerialPort.connect_event","api.SerialPort.connected","api.SerialPort.disconnect_event","api.SerialPort.forget","api.SerialPort.getInfo","api.SerialPort.getSignals","api.SerialPort.open","api.SerialPort.readable","api.SerialPort.setSignals","api.SerialPort.writable","api.WorkerNavigator.serial","html.elements.iframe.allow.serial","http.headers.Permissions-Policy.serial"],"description":"The navigator.serial API communicates with devices over serial ports, such as microcontrollers.","description_html":"The <code>navigator.serial</code> API communicates with devices over serial ports, such as microcontrollers.","name":"Web serial","spec":"https://wicg.github.io/serial/","status":{"baseline":false,"support":{"chrome":"89","edge":"89"}}},"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-sent-events":{"caniuse":"eventsource","compat_features":["api.EventSource","api.EventSource.EventSource","api.EventSource.EventSource.options_withCredentials_parameter","api.EventSource.close","api.EventSource.error_event","api.EventSource.message_event","api.EventSource.open_event","api.EventSource.readyState","api.EventSource.url","api.EventSource.withCredentials","api.EventSource.worker_support"],"description":"The EventSource API creates a connection to a server and listens to a stream of events sent by the server.","description_html":"The <code>EventSource</code> API creates a connection to a server and listens to a stream of events sent by the server.","group":"messaging","name":"Server-sent events","spec":"https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"6","chrome_android":"18","edge":"79","firefox":"6","firefox_android":"45","safari":"5","safari_ios":"5"}}},"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","http.headers.Server-Timing.trailer"],"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.","group":"performance","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"}}},"service-workers":{"caniuse":"serviceworkers","compat_features":["api.Cache","api.Cache.add","api.Cache.addAll","api.Cache.delete","api.Cache.keys","api.Cache.match","api.Cache.matchAll","api.Cache.put","api.Cache.worker_support","api.CacheStorage","api.CacheStorage.delete","api.CacheStorage.has","api.CacheStorage.keys","api.CacheStorage.match","api.CacheStorage.open","api.CacheStorage.secure_context_required","api.CacheStorage.worker_support","api.Client","api.Client.frameType","api.Client.id","api.Client.postMessage","api.Client.type","api.Client.url","api.Clients","api.Clients.claim","api.Clients.get","api.Clients.matchAll","api.Clients.matchAll.options_includeUncontrolled_parameter","api.Clients.openWindow","api.ExtendableEvent","api.ExtendableEvent.ExtendableEvent","api.ExtendableEvent.waitUntil","api.ExtendableEvent.waitUntil.async_waitUntil","api.ExtendableMessageEvent","api.ExtendableMessageEvent.ExtendableMessageEvent","api.ExtendableMessageEvent.data","api.ExtendableMessageEvent.lastEventId","api.ExtendableMessageEvent.origin","api.ExtendableMessageEvent.ports","api.ExtendableMessageEvent.source","api.FetchEvent","api.FetchEvent.FetchEvent","api.FetchEvent.clientId","api.FetchEvent.handled","api.FetchEvent.preloadResponse","api.FetchEvent.request","api.FetchEvent.respondWith","api.FetchEvent.respondWith.networkerror_on_same-origin_cors","api.FetchEvent.respondWith.resource_url","api.FetchEvent.resultingClientId","api.InstallEvent","api.InstallEvent.InstallEvent","api.InstallEvent.addRoutes","api.NavigationPreloadManager","api.NavigationPreloadManager.disable","api.NavigationPreloadManager.enable","api.NavigationPreloadManager.getState","api.NavigationPreloadManager.setHeaderValue","api.Navigator.serviceWorker","api.ServiceWorker","api.ServiceWorker.postMessage","api.ServiceWorker.scriptURL","api.ServiceWorker.state","api.ServiceWorker.statechange_event","api.ServiceWorkerContainer","api.ServiceWorkerContainer.controller","api.ServiceWorkerContainer.controllerchange_event","api.ServiceWorkerContainer.getRegistration","api.ServiceWorkerContainer.getRegistrations","api.ServiceWorkerContainer.message_event","api.ServiceWorkerContainer.ready","api.ServiceWorkerContainer.register","api.ServiceWorkerContainer.startMessages","api.ServiceWorkerContainer.worker_support","api.ServiceWorkerGlobalScope","api.ServiceWorkerGlobalScope.activate_event","api.ServiceWorkerGlobalScope.clients","api.ServiceWorkerGlobalScope.fetch_event","api.ServiceWorkerGlobalScope.install_event","api.ServiceWorkerGlobalScope.message_event","api.ServiceWorkerGlobalScope.messageerror_event","api.ServiceWorkerGlobalScope.registration","api.ServiceWorkerGlobalScope.serviceWorker","api.ServiceWorkerGlobalScope.skipWaiting","api.ServiceWorkerRegistration.active","api.ServiceWorkerRegistration.installing","api.ServiceWorkerRegistration.navigationPreload","api.ServiceWorkerRegistration.scope","api.ServiceWorkerRegistration.unregister","api.ServiceWorkerRegistration.update","api.ServiceWorkerRegistration.updateViaCache","api.ServiceWorkerRegistration.updatefound_event","api.ServiceWorkerRegistration.waiting","api.WindowClient","api.WindowClient.ancestorOrigins","api.WindowClient.focus","api.WindowClient.focused","api.WindowClient.navigate","api.WindowClient.visibilityState","api.WorkerNavigator.serviceWorker","api.caches","api.caches.secure_context_required","api.caches.worker_support","http.headers.Service-Worker-Navigation-Preload"],"description":"The service worker of a website is a script that runs in its own thread and which acts as local proxy that intercepts network requests from the website. Use a service worker to implement advanced caching strategies, offline support, background tasks, or push notification support on your website.","description_html":"The service worker of a website is a script that runs in its own thread and which acts as local proxy that intercepts network requests from the website. Use a service worker to implement advanced caching strategies, offline support, background tasks, or push notification support on your website.","name":"Service workers","spec":"https://w3c.github.io/ServiceWorker/","status":{"baseline":"high","baseline_high_date":"2020-10-30","baseline_low_date":"2018-04-30","support":{"chrome":"45","chrome_android":"45","edge":"17","firefox":"44","firefox_android":"44","safari":"11.1","safari_ios":"11.3"}}},"set":{"compat_features":["javascript.builtins.Set","javascript.builtins.Set.@@iterator","javascript.builtins.Set.@@species","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"}}},"setinterval":{"compat_features":["api.clearInterval","api.setInterval"],"description":"The setInterval() global function repeatedly executes provided code on a given delay, and the accompanying clearInterval() cancels the interval.","description_html":"The <code>setInterval()</code> global function repeatedly executes provided code on a given delay, and the accompanying <code>clearInterval()</code> cancels the interval.","name":"setInterval","spec":"https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers","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"}}},"settimeout":{"compat_features":["api.clearTimeout","api.setTimeout"],"description":"The setTimeout() global function executes provided code after a given duration of time, and the accompanying clearTimeout() cancels the timer.","description_html":"The <code>setTimeout()</code> global function executes provided code after a given duration of time, and the accompanying <code>clearTimeout()</code> cancels the timer.","name":"setTimeout","spec":"https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers","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":"1"}}},"shadow-dom":{"caniuse":"shadowdomv1","compat_features":["api.Element.attachShadow","api.Element.attachShadow.options_clonable_parameter","api.Element.attachShadow.options_delegatesFocus_parameter","api.Element.attachShadow.options_serializable_parameter","api.Element.shadowRoot","api.Event.composed","api.Event.composedPath","api.Node.getRootNode","api.Node.isConnected","api.ShadowRoot","api.ShadowRoot.clonable","api.ShadowRoot.delegatesFocus","api.ShadowRoot.host","api.ShadowRoot.mode","api.ShadowRoot.serializable"],"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"}}},"shadow-parts":{"compat_features":["api.Element.part","css.selectors.part","html.global_attributes.exportparts","html.global_attributes.part"],"description":"The part and exportparts HTML attributes expose elements of a shadow DOM as named parts, which can be selected by the ::part() CSS pseudo-element for styling.","description_html":"The <code>part</code> and <code>exportparts</code> HTML attributes expose elements of a shadow DOM as named parts, which can be selected by the <code>::part()</code> CSS pseudo-element for styling.","group":["selectors","web-components"],"name":"Shadow parts","spec":"https://drafts.csswg.org/css-shadow-parts-1/","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"73","chrome_android":"73","edge":"79","firefox":"72","firefox_android":"79","safari":"13.1","safari_ios":"13.4"}}},"shape-outside":{"compat_features":["css.properties.shape-image-threshold","css.properties.shape-image-threshold.percentages","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.shape","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"}}},"share":{"compat_features":["api.Navigator.canShare","api.Navigator.canShare.data_files_parameter","api.Navigator.canShare.data_text_parameter","api.Navigator.share","api.Navigator.share.data_files_parameter","api.Navigator.share.data_text_parameter","html.elements.iframe.allow.web-share","http.headers.Permissions-Policy.web-share"],"description":"The navigator.share() method invokes the device's native sharing mechanism and passes text, links, files, and other content to share targets.","description_html":"The <code>navigator.share()</code> method invokes the device's native sharing mechanism and passes text, links, files, and other content to share targets.","name":"navigator.share()","spec":"https://w3c.github.io/web-share/","status":{"baseline":false,"support":{"chrome_android":"61","edge":"93","firefox_android":"79","safari":"12.1","safari_ios":"12.2"}}},"shared-memory":{"caniuse":"sharedarraybuffer","compat_features":["javascript.builtins.Atomics","javascript.builtins.Atomics.Atomic_operations_on_non_shared_buffers","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"}}},"shared-storage":{"compat_features":["api.HTMLIFrameElement.sharedStorageWritable","api.HTMLImageElement.sharedStorageWritable","api.SharedStorage","api.SharedStorage.append","api.SharedStorage.clear","api.SharedStorage.createWorklet","api.SharedStorage.delete","api.SharedStorage.get","api.SharedStorage.run","api.SharedStorage.selectURL","api.SharedStorage.set","api.SharedStorage.worklet","api.SharedStorageWorklet","api.SharedStorageWorklet.run","api.SharedStorageWorklet.selectURL","api.SharedStorageWorkletGlobalScope","api.SharedStorageWorkletGlobalScope.register","api.SharedStorageWorkletGlobalScope.sharedStorage","api.Window.sharedStorage"],"description":"The sharedStorage API stores data to a shared space where the data can then be processed without the ability to track users across the different sites they visit. A common use case is measuring the reach of third-party ads without using user-tracking cookies.\"","description_html":"The <code>sharedStorage</code> API stores data to a shared space where the data can then be processed without the ability to track users across the different sites they visit. A common use case is measuring the reach of third-party ads without using user-tracking cookies.\"","group":"storage","name":"Shared storage","spec":"https://wicg.github.io/shared-storage/","status":{"baseline":false,"support":{"chrome":"126","chrome_android":"126","edge":"126"}}},"show-picker-input":{"compat_features":["api.HTMLInputElement.showPicker","api.HTMLInputElement.showPicker.color_input","api.HTMLInputElement.showPicker.date_input","api.HTMLInputElement.showPicker.datetime_local_input","api.HTMLInputElement.showPicker.file_input"],"description":"The showPicker() method for <input> elements shows the user interface for picking a value. For example, for <input type=\"date\"> it shows the interface for picking a date.","description_html":"The <code>showPicker()</code> method for <code>&#x3C;input></code> elements shows the user interface for picking a value. For example, for <code>&#x3C;input type=\"date\"></code> it shows the interface for picking a date.","group":"forms","name":"showPicker() for <input>","spec":"https://html.spec.whatwg.org/multipage/input.html#dom-input-showpicker","status":{"baseline":false,"support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"101","firefox_android":"101","safari":"17.4"}}},"show-picker-select":{"compat_features":["api.HTMLSelectElement.showPicker"],"description":"The showPicker() method for <select> elements shows the dropdown menu or other user interface for picking one of the options.","description_html":"The <code>showPicker()</code> method for <code>&#x3C;select></code> elements shows the dropdown menu or other user interface for picking one of the options.","group":"forms","name":"showPicker() for <select>","spec":"https://html.spec.whatwg.org/multipage/input.html#dom-select-showpicker","status":{"baseline":false,"support":{"chrome":"121","chrome_android":"121","edge":"121","firefox":"122","firefox_android":"122"}}},"slot":{"compat_features":["api.Element.assignedSlot","api.Element.slot","api.HTMLSlotElement","api.HTMLSlotElement.assignedElements","api.HTMLSlotElement.assignedNodes","api.HTMLSlotElement.name","api.HTMLSlotElement.slotchange_event","api.Text.assignedSlot","css.selectors.slotted","html.elements.slot","html.elements.slot.name","html.global_attributes.slot"],"description":"The <slot> HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.","description_html":"The <code>&#x3C;slot></code> HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.","group":["html-elements","web-components"],"name":"<slot>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-slot-element","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"53","chrome_android":"53","edge":"79","firefox":"63","firefox_android":"63","safari":"10","safari_ios":"10"}}},"slot-assign":{"compat_features":["api.HTMLSlotElement.assign","api.ShadowRoot.slotAssignment"],"description":"The assign() method for <slot> elements assigns nodes to the slot, as an alternative to using the slot and name HTML attributes. The nodes must be children of a shadow host and the shadow root must be created with the slotAssignment set to \"manual\". Also known as manual slot assignment.","description_html":"The <code>assign()</code> method for <code>&#x3C;slot></code> elements assigns nodes to the slot, as an alternative to using the <code>slot</code> and <code>name</code> HTML attributes. The nodes must be children of a shadow host and the shadow root must be created with the <code>slotAssignment</code> set to \"manual\". Also known as manual slot assignment.","group":"web-components","name":"Imperative slot assignment","spec":"https://html.spec.whatwg.org/multipage/scripting.html#dom-slot-assign","status":{"baseline":"low","baseline_low_date":"2023-03-27","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"92","firefox_android":"92","safari":"16.4","safari_ios":"16.4"}}},"small":{"compat_features":["html.elements.small"],"description":"The <small> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. Styled in a reduced font size by default.","description_html":"The <code>&#x3C;small></code> element represents side-comments and small print, like copyright and legal text, independent of its styled presentation. Styled in a reduced font size by default.","group":"html-elements","name":"<small>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-small-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"smil-svg-animations":{"caniuse":"svg-smil","compat_features":["api.SVGAnimateElement","api.SVGAnimateMotionElement","api.SVGAnimateTransformElement","api.SVGAnimatedAngle","api.SVGAnimatedAngle.animVal","api.SVGAnimatedAngle.baseVal","api.SVGAnimatedBoolean","api.SVGAnimatedBoolean.animVal","api.SVGAnimatedBoolean.baseVal","api.SVGAnimatedEnumeration","api.SVGAnimatedEnumeration.animVal","api.SVGAnimatedEnumeration.baseVal","api.SVGAnimatedInteger","api.SVGAnimatedInteger.animVal","api.SVGAnimatedInteger.baseVal","api.SVGAnimatedLength","api.SVGAnimatedLength.animVal","api.SVGAnimatedLength.baseVal","api.SVGAnimatedLengthList","api.SVGAnimatedLengthList.animVal","api.SVGAnimatedLengthList.baseVal","api.SVGAnimatedNumber","api.SVGAnimatedNumber.animVal","api.SVGAnimatedNumber.baseVal","api.SVGAnimatedNumberList","api.SVGAnimatedNumberList.animVal","api.SVGAnimatedNumberList.baseVal","api.SVGAnimatedPreserveAspectRatio","api.SVGAnimatedPreserveAspectRatio.animVal","api.SVGAnimatedPreserveAspectRatio.baseVal","api.SVGAnimatedRect","api.SVGAnimatedRect.animVal","api.SVGAnimatedRect.baseVal","api.SVGAnimatedString","api.SVGAnimatedString.animVal","api.SVGAnimatedString.baseVal","api.SVGAnimatedTransformList","api.SVGAnimatedTransformList.animVal","api.SVGAnimatedTransformList.baseVal","api.SVGAnimationElement","api.SVGAnimationElement.beginElement","api.SVGAnimationElement.beginElementAt","api.SVGAnimationElement.beginEvent_event","api.SVGAnimationElement.endElement","api.SVGAnimationElement.endElementAt","api.SVGAnimationElement.endEvent_event","api.SVGAnimationElement.getCurrentTime","api.SVGAnimationElement.getSimpleDuration","api.SVGAnimationElement.getStartTime","api.SVGAnimationElement.repeatEvent_event","api.SVGAnimationElement.requiredExtensions","api.SVGAnimationElement.systemLanguage","api.SVGAnimationElement.targetElement","api.SVGPolygonElement.animatedPoints","api.SVGPolylineElement.animatedPoints","api.SVGSVGElement.animationsPaused","api.SVGSVGElement.pauseAnimations","api.SVGSVGElement.unpauseAnimations","api.TimeEvent","api.TimeEvent.detail","api.TimeEvent.initTimeEvent","api.TimeEvent.view","svg.elements.animate","svg.elements.animate.attributeName","svg.elements.animate.attributeType","svg.elements.animate.dur","svg.elements.animate.fill","svg.elements.animate.from","svg.elements.animate.href","svg.elements.animate.repeatCount","svg.elements.animate.systemLanguage","svg.elements.animate.to","svg.elements.animateMotion","svg.elements.animateMotion.calcMode","svg.elements.animateMotion.fill","svg.elements.animateMotion.href","svg.elements.animateMotion.keyPoints","svg.elements.animateMotion.origin","svg.elements.animateMotion.path","svg.elements.animateMotion.rotate","svg.elements.animateMotion.systemLanguage","svg.elements.animateTransform","svg.elements.animateTransform.by","svg.elements.animateTransform.fill","svg.elements.animateTransform.from","svg.elements.animateTransform.href","svg.elements.animateTransform.systemLanguage","svg.elements.animateTransform.to","svg.elements.animateTransform.type","svg.global_attributes.class.animation_support"],"description":"The <animate>, <animateMotion>, and <animateTransform> SVG elements declaratively animate SVG elements. Also known as SMIL.","description_html":"The <code>&#x3C;animate></code>, <code>&#x3C;animateMotion></code>, and <code>&#x3C;animateTransform></code> SVG elements declaratively animate SVG elements. Also known as SMIL.","group":["animation","svg"],"name":"SMIL SVG animations","spec":"https://svgwg.org/specs/animations/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"19","chrome_android":"25","edge":"79","firefox":"4","firefox_android":"4","safari":"6","safari_ios":"6"}}},"smooth":{"compat_features":["css.properties.image-rendering.smooth"],"description":"The image-rendering: smooth CSS declaration scales images while retaining a gradual color blending that is useful for photos.","description_html":"The <code>image-rendering: smooth</code> CSS declaration scales images while retaining a gradual color blending that is useful for photos.","group":"image-scaling","name":"smooth","spec":"https://drafts.csswg.org/css-images-3/#the-image-rendering","status":{"baseline":false,"support":{"firefox":"93","firefox_android":"93"}}},"source":{"compat_features":["html.elements.source","html.elements.source.height","html.elements.source.media","html.elements.source.src","html.elements.source.type","html.elements.source.width"],"description":"The <source> element sets a media resource for the <picture>, <video>, and <audio> elements.","description_html":"The <code>&#x3C;source></code> element sets a media resource for the <code>&#x3C;picture></code>, <code>&#x3C;video></code>, and <code>&#x3C;audio></code> elements.","group":["media-elements","html-elements"],"name":"<source>","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"2"}}},"sourcemap-header":{"compat_features":["http.headers.SourceMap"],"description":"The Sourcemap HTTP response header links generated code to a source map, so the browser shows the original source in a debugger. This makes it easier to work with minified or transpiled code.","description_html":"The <code>Sourcemap</code> HTTP response header links generated code to a source map, so the browser shows the original source in a debugger. This makes it easier to work with minified or transpiled code.","name":"Sourcemap header","spec":"https://tc39.es/source-map/","status":{"baseline":"high","baseline_high_date":"≤2022-07-15","baseline_low_date":"≤2020-01-15","support":{"chrome":"18","chrome_android":"18","edge":"≤79","firefox":"55","firefox_android":"55","safari":"7","safari_ios":"7"}}},"span":{"compat_features":["api.HTMLSpanElement","html.elements.span"],"description":"The <span> HTML element is the generic inline container for content.","description_html":"The <code>&#x3C;span></code> HTML element is the generic inline container for content.","group":"html-elements","name":"<span>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-span-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"speak":{"compat_features":["css.properties.speak"],"description":"The speak CSS property sets whether or not text should be spoken.","description_html":"The <code>speak</code> CSS property sets whether or not text should be spoken.","group":["speech","css"],"name":"speak","spec":"https://drafts.csswg.org/css-speech-1/#speaking-props-speak","status":{"baseline":false,"support":{}}},"speak-as":{"compat_features":["css.properties.speak-as","css.properties.speak-as.digits","css.properties.speak-as.literal-punctuation","css.properties.speak-as.no-punctuation","css.properties.speak-as.normal","css.properties.speak-as.spell-out"],"description":"The speak-as CSS property sets how any element's content is spoken. Not to be confused with the speak-as descriptor of @counter-style at-rules.","description_html":"The <code>speak-as</code> CSS property sets how any element's content is spoken. Not to be confused with the <code>speak-as</code> descriptor of <code>@counter-style</code> at-rules.","group":["speech","css"],"name":"speak-as","spec":"https://drafts.csswg.org/css-speech-1/#speaking-props-speak-as","status":{"baseline":false,"support":{"safari":"11.1","safari_ios":"11.3"}}},"speculation-rules":{"compat_features":["api.Document.prerendering","api.Document.prerenderingchange_event","api.PerformanceNavigationTiming.activationStart","html.elements.script.type.speculationrules","html.elements.script.type.speculationrules.eagerness","html.elements.script.type.speculationrules.expects_no_vary_search","html.elements.script.type.speculationrules.prefetch","html.elements.script.type.speculationrules.prerender","html.elements.script.type.speculationrules.referrer_policy","html.elements.script.type.speculationrules.relative_to","html.elements.script.type.speculationrules.requires","html.elements.script.type.speculationrules.requires.anonymous-client-ip-when-cross-origin","html.elements.script.type.speculationrules.source_optional","html.elements.script.type.speculationrules.urls","html.elements.script.type.speculationrules.where","http.headers.Content-Security-Policy.script-src.inline-speculation-rules","http.headers.Sec-Purpose.speculationrules","http.headers.Speculation-Rules","http.headers.Supports-Loading-Mode","http.headers.Supports-Loading-Mode.credentialed-prerender","http.headers.Supports-Loading-Mode.fenced-frames"],"description":"Speculation rules are hints to the browser to proactively download pages in the background so they appear instantly when the user navigates to them.","description_html":"Speculation rules are hints to the browser to proactively download pages in the background so they appear instantly when the user navigates to them.","name":"Speculation rules","spec":["https://wicg.github.io/nav-speculation/speculation-rules.html","https://wicg.github.io/nav-speculation/prerendering.html"],"status":{"baseline":false,"support":{"chrome":"127","chrome_android":"127"}}},"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://webaudio.github.io/web-speech-api/#speechreco-section","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://webaudio.github.io/web-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"}}},"spellcheck":{"compat_features":["api.HTMLElement.spellcheck","html.global_attributes.spellcheck"],"description":"The spellcheck global HTML attribute sets whether the browser may check an element for spelling errors.","description_html":"The <code>spellcheck</code> global HTML attribute sets whether the browser may check an element for spelling errors.","name":"Spellcheck","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-accesskey-attribute","status":{"baseline":"high","baseline_high_date":"2020-05-28","baseline_low_date":"2017-11-28","support":{"chrome":"9","chrome_android":"47","edge":"12","firefox":"2","firefox_android":"57","safari":"5.1","safari_ios":"9.3"}}},"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"}}},"spread":{"compat_features":["javascript.operators.spread","javascript.operators.spread.spread_in_arrays","javascript.operators.spread.spread_in_function_calls","javascript.operators.spread.spread_in_object_literals"],"description":"The spread (...) syntax allows an iterable, such as an array or string, to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected.","description_html":"The spread (<code>...</code>) syntax allows an iterable, such as an array or string, to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected.","group":"javascript","name":"Spread syntax","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#prod-SpreadElement","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"55","firefox_android":"55","safari":"11.1","safari_ios":"11.3"}}},"srcset":{"caniuse":"srcset","compat_features":["api.HTMLImageElement.sizes","api.HTMLImageElement.srcset","api.HTMLSourceElement.sizes","api.HTMLSourceElement.srcset","html.elements.img.sizes","html.elements.img.srcset","html.elements.source.sizes","html.elements.source.srcset"],"description":"The srcset and sizes attributes for <img> elements set a list of possible sources for the image and a corresponding list of size conditions for choosing a source, to show a responsive image that fits the size of the display.","description_html":"The <code>srcset</code> and <code>sizes</code> attributes for <code>&#x3C;img></code> elements set a list of possible sources for the image and a corresponding list of size conditions for choosing a source, to show a responsive image that fits the size of the display.","group":"html","name":"srcset and sizes","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"38","chrome_android":"38","edge":"13","firefox":"38","firefox_android":"38","safari":"10.1","safari_ios":"10.3"}}},"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"}}},"static-positioning":{"compat_features":["css.properties.position.static"],"description":"The position: static CSS declaration positions an element in the normal flow. A statically positioned element ignores physical and logical properties such as top or inset-block-start.","description_html":"The <code>position: static</code> CSS declaration positions an element in the normal flow. A statically positioned element ignores physical and logical properties such as <code>top</code> or <code>inset-block-start</code>.","group":"positioning","name":"Static positioning","spec":"https://drafts.csswg.org/css-position-3/#position-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"}}},"steps-easing":{"compat_features":["css.types.easing-function.steps","css.types.easing-function.steps.jump"],"description":"The steps() CSS easing function divides an animation or transition into equidistant intervals, jumping from value to value. The step-start and step-end keyword values are presets with a single interval.","description_html":"The <code>steps()</code> CSS easing function divides an animation or transition into equidistant intervals, jumping from value to value. The <code>step-start</code> and <code>step-end</code> keyword values are presets with a single interval.","group":["animation","transitions"],"name":"steps() easing","spec":"https://drafts.csswg.org/css-easing-2/#step-easing-functions","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"77","chrome_android":"77","edge":"79","firefox":"65","firefox_android":"65","safari":"14","safari_ios":"14"}}},"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":"positioning","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","api.Document.requestStorageAccessFor","api.Permissions.permission_storage-access","api.Permissions.permission_top-level-storage-access","html.elements.iframe.allow.storage-access","http.headers.Permissions-Policy.storage-access"],"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.","group":"storage","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.","group":"storage","name":"Storage buckets","spec":"https://wicg.github.io/storage-buckets/","status":{"baseline":false,"support":{"chrome":"122","chrome_android":"122","edge":"122"}}},"storage-manager":{"compat_features":["api.Navigator.storage","api.Permissions.permission_persistent-storage","api.StorageManager","api.StorageManager.estimate","api.StorageManager.persist","api.StorageManager.persisted","api.WorkerNavigator.storage"],"description":"The navigator.storage API provides information about the availability and persistence of the data that a site stores on the device, by using APIs such as the Cache API or the IndexedDB API.","description_html":"The <code>navigator.storage</code> API provides information about the availability and persistence of the data that a site stores on the device, by using APIs such as the Cache API or the IndexedDB API.","group":"storage","name":"Storage manager","spec":"https://storage.spec.whatwg.org/","status":{"baseline":"low","baseline_low_date":"2023-09-18","support":{"chrome":"61","chrome_android":"61","edge":"79","firefox":"57","firefox_android":"57","safari":"17","safari_ios":"17"}}},"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.ReadableByteStreamController","api.ReadableByteStreamController.byobRequest","api.ReadableByteStreamController.close","api.ReadableByteStreamController.desiredSize","api.ReadableByteStreamController.enqueue","api.ReadableByteStreamController.error","api.ReadableStream","api.ReadableStream.ReadableStream","api.ReadableStream.cancel","api.ReadableStream.from_static","api.ReadableStream.getReader","api.ReadableStream.locked","api.ReadableStream.pipeThrough","api.ReadableStream.pipeTo","api.ReadableStream.tee","api.ReadableStream.transferable","api.ReadableStream.values","api.ReadableStreamBYOBReader","api.ReadableStreamBYOBReader.ReadableStreamBYOBReader","api.ReadableStreamBYOBReader.cancel","api.ReadableStreamBYOBReader.closed","api.ReadableStreamBYOBReader.read","api.ReadableStreamBYOBReader.read.options_min_parameter","api.ReadableStreamBYOBReader.releaseLock","api.ReadableStreamBYOBReader.releaseLock.reject_pending_read_request","api.ReadableStreamBYOBRequest","api.ReadableStreamBYOBRequest.respond","api.ReadableStreamBYOBRequest.respondWithNewView","api.ReadableStreamBYOBRequest.view","api.ReadableStreamDefaultController","api.ReadableStreamDefaultController.close","api.ReadableStreamDefaultController.desiredSize","api.ReadableStreamDefaultController.enqueue","api.ReadableStreamDefaultController.error","api.ReadableStreamDefaultReader","api.ReadableStreamDefaultReader.ReadableStreamDefaultReader","api.ReadableStreamDefaultReader.cancel","api.ReadableStreamDefaultReader.closed","api.ReadableStreamDefaultReader.read","api.ReadableStreamDefaultReader.releaseLock","api.ReadableStreamDefaultReader.releaseLock.reject_pending_read_request","api.TextDecoderStream.readable","api.TextDecoderStream.writable","api.TextEncoderStream.readable","api.TextEncoderStream.writable","api.TransformStream","api.TransformStream.TransformStream","api.TransformStream.readable","api.TransformStream.transferable","api.TransformStream.writable","api.TransformStreamDefaultController","api.TransformStreamDefaultController.desiredSize","api.TransformStreamDefaultController.enqueue","api.TransformStreamDefaultController.error","api.TransformStreamDefaultController.terminate","api.WritableStream","api.WritableStream.WritableStream","api.WritableStream.abort","api.WritableStream.close","api.WritableStream.getWriter","api.WritableStream.locked","api.WritableStream.transferable","api.WritableStreamDefaultController","api.WritableStreamDefaultController.error","api.WritableStreamDefaultController.signal","api.WritableStreamDefaultWriter","api.WritableStreamDefaultWriter.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":false,"support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"102","firefox_android":"102"}}},"stretch":{"compat_features":["css.properties.height.stretch","css.properties.max-height.stretch","css.properties.max-width.stretch","css.properties.min-height.stretch","css.properties.min-width.stretch","css.properties.width.stretch"],"description":"The stretch CSS keyword expands a box as needed to fit its contents until the maximum size is reached, without preserving the content's preferred aspect ratio.","description_html":"The <code>stretch</code> CSS keyword expands a box as needed to fit its contents until the maximum size is reached, without preserving the content's preferred aspect ratio.","group":"layout","name":"stretch","spec":"https://drafts.csswg.org/css-sizing-4/#stretch-fit-sizing","status":{"baseline":false,"support":{}}},"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>&#x3C;strong></code> HTML element brings attention to the content, styling text as bold by default.","group":"html-elements","name":"<strong>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-strong-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"structured-clone":{"compat_features":["api.structuredClone"],"description":"The structuredClone() global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.","description_html":"The <code>structuredClone()</code> global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.","name":"structuredClone()","spec":"https://html.spec.whatwg.org/multipage/structured-data.html#structured-cloning","status":{"baseline":"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>&#x3C;style></code> element embeds an inline CSS stylesheet in a document.","group":"html-elements","name":"<style>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-style-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"style-attr":{"compat_features":["html.global_attributes.style"],"description":"The style global HTML attribute applies inline CSS styling declarations to individual elements.","description_html":"The <code>style</code> global HTML attribute applies inline CSS styling declarations to individual elements.","group":["css","html"],"name":"style (attribute)","spec":"https://html.spec.whatwg.org/multipage/dom.html#the-style-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":"1","safari_ios":"1"}}},"sub-sup":{"compat_features":["html.elements.sub","html.elements.sup"],"description":"The <sub> and <sup> elements sets inline text to be displayed as subscript or superscript for solely typographical reasons.","description_html":"The <code>&#x3C;sub></code> and <code>&#x3C;sup></code> elements sets inline text to be displayed as subscript or superscript for solely typographical reasons.","group":"html-elements","name":"<sub> and <sup>","spec":["https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-sub-element","https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-sup-element"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"subgrid":{"caniuse":"css-subgrid","compat_features":["css.properties.grid-template-columns.subgrid","css.properties.grid-template-rows.subgrid"],"description":"The subgrid value for the grid-template-columns and grid-template-rows properties allows a grid item to inherit the grid definition of its parent grid container.","description_html":"The <code>subgrid</code> value for the <code>grid-template-columns</code> and <code>grid-template-rows</code> properties allows a grid item to inherit the grid definition of its parent grid container.","group":"grid","name":"Subgrid","spec":"https://drafts.csswg.org/css-grid-2/#subgrids","status":{"baseline":"low","baseline_low_date":"2023-09-15","support":{"chrome":"117","chrome_android":"117","edge":"117","firefox":"71","firefox_android":"79","safari":"16","safari_ios":"16"}}},"supports":{"caniuse":"css-featurequeries","compat_features":["api.CSSImportRule.supportsText","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"}}},"supports-compat":{"compat_features":["css.at-rules.media.-webkit-transform-3d"],"description":"The @supports (-webkit-transform-3d) CSS media query is a standardized compatibility alternative to @supports (transform-style).","description_html":"The <code>@supports (-webkit-transform-3d)</code> CSS media query is a standardized compatibility alternative to <code>@supports (transform-style)</code>.","group":"media-queries","name":"@supports (compatibility prefix)","spec":"https://compat.spec.whatwg.org/#css-media-queries-webkit-transform-3d","status":{"baseline":"high","baseline_high_date":"2019-03-20","baseline_low_date":"2016-09-20","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"49","firefox_android":"49","safari":"4","safari_ios":"3.2"}}},"svg":{"caniuse":"svg","compat_features":["api.CanvasRenderingContext2D.drawImage.SVGImageElement_source_image","api.DOMParser.parseFromString.svg","api.SVGAElement","api.SVGAElement.href","api.SVGAElement.hreflang","api.SVGAElement.referrerPolicy","api.SVGAElement.rel","api.SVGAElement.relList","api.SVGAElement.target","api.SVGAElement.type","api.SVGAngle","api.SVGAngle.convertToSpecifiedUnits","api.SVGAngle.newValueSpecifiedUnits","api.SVGAngle.unitType","api.SVGAngle.value","api.SVGAngle.valueAsString","api.SVGAngle.valueInSpecifiedUnits","api.SVGCircleElement","api.SVGCircleElement.cx","api.SVGCircleElement.cy","api.SVGCircleElement.r","api.SVGComponentTransferFunctionElement","api.SVGComponentTransferFunctionElement.amplitude","api.SVGComponentTransferFunctionElement.exponent","api.SVGComponentTransferFunctionElement.intercept","api.SVGComponentTransferFunctionElement.offset","api.SVGComponentTransferFunctionElement.slope","api.SVGComponentTransferFunctionElement.tableValues","api.SVGComponentTransferFunctionElement.type","api.SVGDefsElement","api.SVGDescElement","api.SVGElement","api.SVGElement.attributeStyleMap","api.SVGElement.blur","api.SVGElement.error_event","api.SVGElement.focus","api.SVGElement.focus.options_preventScroll_parameter","api.SVGElement.load_event","api.SVGElement.nonce","api.SVGElement.ownerSVGElement","api.SVGElement.style","api.SVGElement.tabIndex","api.SVGElement.viewportElement","api.SVGEllipseElement","api.SVGEllipseElement.cx","api.SVGEllipseElement.cy","api.SVGEllipseElement.rx","api.SVGEllipseElement.ry","api.SVGForeignObjectElement","api.SVGForeignObjectElement.height","api.SVGForeignObjectElement.width","api.SVGForeignObjectElement.x","api.SVGForeignObjectElement.y","api.SVGGElement","api.SVGGeometryElement","api.SVGGeometryElement.getPointAtLength","api.SVGGeometryElement.getTotalLength","api.SVGGeometryElement.isPointInFill","api.SVGGeometryElement.isPointInFill.point_parameter_DOMPoint","api.SVGGeometryElement.isPointInStroke","api.SVGGeometryElement.isPointInStroke.point_parameter_DOMPoint","api.SVGGeometryElement.pathLength","api.SVGGradientElement","api.SVGGradientElement.gradientTransform","api.SVGGradientElement.gradientUnits","api.SVGGradientElement.href","api.SVGGradientElement.spreadMethod","api.SVGGraphicsElement","api.SVGGraphicsElement.getBBox","api.SVGGraphicsElement.getCTM","api.SVGGraphicsElement.getScreenCTM","api.SVGGraphicsElement.requiredExtensions","api.SVGGraphicsElement.systemLanguage","api.SVGGraphicsElement.transform","api.SVGImageElement","api.SVGImageElement.crossOrigin","api.SVGImageElement.decode","api.SVGImageElement.decoding","api.SVGImageElement.height","api.SVGImageElement.href","api.SVGImageElement.preserveAspectRatio","api.SVGImageElement.width","api.SVGImageElement.x","api.SVGImageElement.y","api.SVGLength","api.SVGLength.convertToSpecifiedUnits","api.SVGLength.newValueSpecifiedUnits","api.SVGLength.unitType","api.SVGLength.value","api.SVGLength.valueAsString","api.SVGLength.valueInSpecifiedUnits","api.SVGLengthList","api.SVGLengthList.appendItem","api.SVGLengthList.clear","api.SVGLengthList.getItem","api.SVGLengthList.initialize","api.SVGLengthList.insertItemBefore","api.SVGLengthList.length","api.SVGLengthList.numberOfItems","api.SVGLengthList.removeItem","api.SVGLengthList.replaceItem","api.SVGLineElement","api.SVGLineElement.x1","api.SVGLineElement.x2","api.SVGLineElement.y1","api.SVGLineElement.y2","api.SVGLinearGradientElement","api.SVGLinearGradientElement.x1","api.SVGLinearGradientElement.x2","api.SVGLinearGradientElement.y1","api.SVGLinearGradientElement.y2","api.SVGMPathElement","api.SVGMPathElement.href","api.SVGMarkerElement","api.SVGMarkerElement.markerHeight","api.SVGMarkerElement.markerUnits","api.SVGMarkerElement.markerWidth","api.SVGMarkerElement.orient","api.SVGMarkerElement.orientAngle","api.SVGMarkerElement.orientType","api.SVGMarkerElement.preserveAspectRatio","api.SVGMarkerElement.refX","api.SVGMarkerElement.refY","api.SVGMarkerElement.setOrientToAngle","api.SVGMarkerElement.setOrientToAuto","api.SVGMarkerElement.viewBox","api.SVGMaskElement","api.SVGMaskElement.height","api.SVGMaskElement.maskContentUnits","api.SVGMaskElement.maskUnits","api.SVGMaskElement.width","api.SVGMaskElement.x","api.SVGMaskElement.y","api.SVGMetadataElement","api.SVGNumber","api.SVGNumber.value","api.SVGNumberList","api.SVGNumberList.appendItem","api.SVGNumberList.clear","api.SVGNumberList.getItem","api.SVGNumberList.initialize","api.SVGNumberList.insertItemBefore","api.SVGNumberList.length","api.SVGNumberList.numberOfItems","api.SVGNumberList.removeItem","api.SVGNumberList.replaceItem","api.SVGPathElement","api.SVGPatternElement","api.SVGPatternElement.height","api.SVGPatternElement.href","api.SVGPatternElement.patternContentUnits","api.SVGPatternElement.patternTransform","api.SVGPatternElement.patternUnits","api.SVGPatternElement.preserveAspectRatio","api.SVGPatternElement.viewBox","api.SVGPatternElement.width","api.SVGPatternElement.x","api.SVGPatternElement.y","api.SVGPointList","api.SVGPointList.appendItem","api.SVGPointList.clear","api.SVGPointList.getItem","api.SVGPointList.initialize","api.SVGPointList.insertItemBefore","api.SVGPointList.length","api.SVGPointList.numberOfItems","api.SVGPointList.removeItem","api.SVGPointList.replaceItem","api.SVGPolygonElement","api.SVGPolygonElement.points","api.SVGPolylineElement","api.SVGPolylineElement.points","api.SVGPreserveAspectRatio","api.SVGPreserveAspectRatio.align","api.SVGPreserveAspectRatio.meetOrSlice","api.SVGRadialGradientElement","api.SVGRadialGradientElement.cx","api.SVGRadialGradientElement.cy","api.SVGRadialGradientElement.fr","api.SVGRadialGradientElement.fx","api.SVGRadialGradientElement.fy","api.SVGRadialGradientElement.r","api.SVGRect","api.SVGRect.height","api.SVGRect.width","api.SVGRect.x","api.SVGRect.y","api.SVGRectElement","api.SVGRectElement.height","api.SVGRectElement.rx","api.SVGRectElement.ry","api.SVGRectElement.width","api.SVGRectElement.x","api.SVGRectElement.y","api.SVGSVGElement","api.SVGSVGElement.checkEnclosure","api.SVGSVGElement.checkIntersection","api.SVGSVGElement.createSVGAngle","api.SVGSVGElement.createSVGLength","api.SVGSVGElement.createSVGMatrix","api.SVGSVGElement.createSVGNumber","api.SVGSVGElement.createSVGPoint","api.SVGSVGElement.createSVGRect","api.SVGSVGElement.createSVGTransform","api.SVGSVGElement.createSVGTransformFromMatrix","api.SVGSVGElement.currentScale","api.SVGSVGElement.currentTranslate","api.SVGSVGElement.deselectAll","api.SVGSVGElement.getCurrentTime","api.SVGSVGElement.getElementById","api.SVGSVGElement.getEnclosureList","api.SVGSVGElement.getIntersectionList","api.SVGSVGElement.height","api.SVGSVGElement.preserveAspectRatio","api.SVGSVGElement.setCurrentTime","api.SVGSVGElement.viewBox","api.SVGSVGElement.width","api.SVGSVGElement.x","api.SVGSVGElement.y","api.SVGScriptElement","api.SVGScriptElement.async","api.SVGScriptElement.crossOrigin","api.SVGScriptElement.defer","api.SVGScriptElement.href","api.SVGScriptElement.type","api.SVGSetElement","api.SVGStopElement","api.SVGStopElement.offset","api.SVGStringList","api.SVGStringList.appendItem","api.SVGStringList.clear","api.SVGStringList.getItem","api.SVGStringList.initialize","api.SVGStringList.insertItemBefore","api.SVGStringList.length","api.SVGStringList.numberOfItems","api.SVGStringList.removeItem","api.SVGStringList.replaceItem","api.SVGStyleElement","api.SVGStyleElement.disabled","api.SVGStyleElement.media","api.SVGStyleElement.sheet","api.SVGStyleElement.title","api.SVGSwitchElement","api.SVGSymbolElement","api.SVGSymbolElement.preserveAspectRatio","api.SVGSymbolElement.viewBox","api.SVGTSpanElement","api.SVGTextContentElement","api.SVGTextContentElement.getCharNumAtPosition","api.SVGTextContentElement.getComputedTextLength","api.SVGTextContentElement.getEndPositionOfChar","api.SVGTextContentElement.getExtentOfChar","api.SVGTextContentElement.getNumberOfChars","api.SVGTextContentElement.getRotationOfChar","api.SVGTextContentElement.getStartPositionOfChar","api.SVGTextContentElement.getSubStringLength","api.SVGTextContentElement.lengthAdjust","api.SVGTextContentElement.textLength","api.SVGTextElement","api.SVGTextPathElement","api.SVGTextPathElement.href","api.SVGTextPathElement.method","api.SVGTextPathElement.spacing","api.SVGTextPathElement.startOffset","api.SVGTextPositioningElement","api.SVGTextPositioningElement.dx","api.SVGTextPositioningElement.dy","api.SVGTextPositioningElement.rotate","api.SVGTextPositioningElement.x","api.SVGTextPositioningElement.y","api.SVGTitleElement","api.SVGTransform","api.SVGTransform.angle","api.SVGTransform.matrix","api.SVGTransform.setMatrix","api.SVGTransform.setRotate","api.SVGTransform.setScale","api.SVGTransform.setSkewX","api.SVGTransform.setSkewY","api.SVGTransform.setTranslate","api.SVGTransform.type","api.SVGTransformList","api.SVGTransformList.appendItem","api.SVGTransformList.clear","api.SVGTransformList.consolidate","api.SVGTransformList.createSVGTransformFromMatrix","api.SVGTransformList.getItem","api.SVGTransformList.initialize","api.SVGTransformList.insertItemBefore","api.SVGTransformList.length","api.SVGTransformList.numberOfItems","api.SVGTransformList.removeItem","api.SVGTransformList.replaceItem","api.SVGUnitTypes","api.SVGUseElement","api.SVGUseElement.height","api.SVGUseElement.href","api.SVGUseElement.width","api.SVGUseElement.x","api.SVGUseElement.y","api.SVGViewElement","api.SVGViewElement.preserveAspectRatio","api.SVGViewElement.viewBox","css.at-rules.font-face.OpenType_SVG","css.properties.background-image.svg_images","css.properties.background.SVG_image_as_background","css.properties.clip-rule","css.properties.clip-rule.evenodd","css.properties.clip-rule.nonzero","css.properties.color-interpolation","css.properties.color-interpolation.linearGradient","css.properties.color-interpolation.sRGB","css.properties.cx","css.properties.cy","css.properties.d","css.properties.fill","css.properties.fill-rule","css.properties.fill-rule.evenodd","css.properties.fill-rule.nonzero","css.properties.letter-spacing.svg_elements","css.properties.marker","css.properties.marker-end","css.properties.marker-mid","css.properties.marker-start","css.properties.r","css.properties.rx","css.properties.ry","css.properties.shape-rendering","css.properties.stop-color","css.properties.stop-opacity","css.properties.stroke","css.properties.stroke-color","css.properties.stroke-dasharray","css.properties.stroke-dasharray.none","css.properties.stroke-dashoffset","css.properties.stroke-linecap","css.properties.stroke-linecap.butt","css.properties.stroke-linecap.round","css.properties.stroke-linecap.square","css.properties.stroke-linejoin","css.properties.stroke-linejoin.bevel","css.properties.stroke-linejoin.miter","css.properties.stroke-linejoin.round","css.properties.stroke-miterlimit","css.properties.stroke-width","css.properties.text-anchor","css.properties.text-rendering","css.properties.text-rendering.auto","css.properties.text-rendering.geometricPrecision","css.properties.transform-origin.svg_elements","css.properties.vector-effect","css.properties.word-spacing.svg_elements","css.properties.x","css.properties.y","svg.elements.a","svg.elements.a.href","svg.elements.a.hreflang","svg.elements.a.referrerpolicy","svg.elements.a.referrerpolicy.no-referrer-when-downgrade","svg.elements.a.referrerpolicy.origin-when-cross-origin","svg.elements.a.referrerpolicy.unsafe-url","svg.elements.a.rel","svg.elements.a.systemLanguage","svg.elements.a.target","svg.elements.a.type","svg.elements.circle","svg.elements.circle.cx","svg.elements.circle.cy","svg.elements.circle.fill","svg.elements.circle.r","svg.elements.circle.systemLanguage","svg.elements.defs","svg.elements.defs.systemLanguage","svg.elements.desc","svg.elements.ellipse","svg.elements.ellipse.cx","svg.elements.ellipse.cy","svg.elements.ellipse.fill","svg.elements.ellipse.rx","svg.elements.ellipse.ry","svg.elements.ellipse.systemLanguage","svg.elements.foreignObject","svg.elements.foreignObject.height","svg.elements.foreignObject.systemLanguage","svg.elements.foreignObject.width","svg.elements.foreignObject.x","svg.elements.foreignObject.y","svg.elements.g","svg.elements.g.systemLanguage","svg.elements.image","svg.elements.image.crossorigin","svg.elements.image.decoding","svg.elements.image.height","svg.elements.image.href","svg.elements.image.preserveAspectRatio","svg.elements.image.systemLanguage","svg.elements.image.width","svg.elements.image.x","svg.elements.image.y","svg.elements.line","svg.elements.line.systemLanguage","svg.elements.line.x1","svg.elements.line.x2","svg.elements.line.y1","svg.elements.line.y2","svg.elements.linearGradient","svg.elements.linearGradient.gradientTransform","svg.elements.linearGradient.gradientUnits","svg.elements.linearGradient.href","svg.elements.linearGradient.spreadMethod","svg.elements.linearGradient.x1","svg.elements.linearGradient.x2","svg.elements.linearGradient.y1","svg.elements.linearGradient.y2","svg.elements.marker","svg.elements.marker.markerHeight","svg.elements.marker.markerUnits","svg.elements.marker.markerWidth","svg.elements.marker.orient","svg.elements.marker.refX","svg.elements.marker.refY","svg.elements.marker.viewBox","svg.elements.mask","svg.elements.mask.height","svg.elements.mask.maskContentUnits","svg.elements.mask.maskUnits","svg.elements.mask.systemLanguage","svg.elements.mask.width","svg.elements.mask.x","svg.elements.mask.y","svg.elements.metadata","svg.elements.mpath","svg.elements.mpath.href","svg.elements.path","svg.elements.path.d","svg.elements.path.d.path","svg.elements.path.fill","svg.elements.path.systemLanguage","svg.elements.pattern","svg.elements.pattern.height","svg.elements.pattern.href","svg.elements.pattern.patternContentUnits","svg.elements.pattern.patternTransform","svg.elements.pattern.patternUnits","svg.elements.pattern.systemLanguage","svg.elements.pattern.width","svg.elements.pattern.x","svg.elements.pattern.y","svg.elements.polygon","svg.elements.polygon.fill","svg.elements.polygon.points","svg.elements.polygon.systemLanguage","svg.elements.polyline","svg.elements.polyline.fill","svg.elements.polyline.points","svg.elements.polyline.systemLanguage","svg.elements.radialGradient","svg.elements.radialGradient.cx","svg.elements.radialGradient.cy","svg.elements.radialGradient.fr","svg.elements.radialGradient.fx","svg.elements.radialGradient.fy","svg.elements.radialGradient.gradientTransform","svg.elements.radialGradient.gradientUnits","svg.elements.radialGradient.href","svg.elements.radialGradient.r","svg.elements.radialGradient.spreadMethod","svg.elements.rect","svg.elements.rect.fill","svg.elements.rect.height","svg.elements.rect.rx","svg.elements.rect.ry","svg.elements.rect.systemLanguage","svg.elements.rect.width","svg.elements.rect.x","svg.elements.rect.y","svg.elements.script","svg.elements.script.async","svg.elements.script.defer","svg.elements.script.href","svg.elements.script.type","svg.elements.set","svg.elements.set.fill","svg.elements.set.href","svg.elements.set.systemLanguage","svg.elements.set.to","svg.elements.stop","svg.elements.stop.offset","svg.elements.style","svg.elements.style.media","svg.elements.style.title","svg.elements.style.type","svg.elements.svg","svg.elements.svg.height","svg.elements.svg.preserveAspectRatio","svg.elements.svg.systemLanguage","svg.elements.svg.viewBox","svg.elements.svg.width","svg.elements.svg.x","svg.elements.svg.y","svg.elements.switch","svg.elements.switch.systemLanguage","svg.elements.symbol","svg.elements.symbol.preserveAspectRatio","svg.elements.symbol.viewBox","svg.elements.text","svg.elements.text.dx","svg.elements.text.dy","svg.elements.text.fill","svg.elements.text.lengthAdjust","svg.elements.text.rotate","svg.elements.text.systemLanguage","svg.elements.text.textLength","svg.elements.text.x","svg.elements.text.y","svg.elements.textPath","svg.elements.textPath.fill","svg.elements.textPath.href","svg.elements.textPath.path","svg.elements.textPath.side","svg.elements.textPath.spacing","svg.elements.textPath.startOffset","svg.elements.textPath.systemLanguage","svg.elements.textPath.textLength","svg.elements.title","svg.elements.title.tooltip_display","svg.elements.tspan","svg.elements.tspan.dx","svg.elements.tspan.dy","svg.elements.tspan.fill","svg.elements.tspan.lengthAdjust","svg.elements.tspan.rotate","svg.elements.tspan.systemLanguage","svg.elements.tspan.textLength","svg.elements.tspan.x","svg.elements.tspan.y","svg.elements.use","svg.elements.use.data_uri","svg.elements.use.external_uri","svg.elements.use.height","svg.elements.use.href","svg.elements.use.systemLanguage","svg.elements.use.width","svg.elements.use.x","svg.elements.use.y","svg.elements.view","svg.elements.view.preserveAspectRatio","svg.elements.view.viewBox","svg.global_attributes.alignment-baseline","svg.global_attributes.baseline-shift","svg.global_attributes.class","svg.global_attributes.clip-rule","svg.global_attributes.color","svg.global_attributes.color-interpolation","svg.global_attributes.color-interpolation-filters","svg.global_attributes.color-interpolation.linearGradient","svg.global_attributes.color-interpolation.sRGB","svg.global_attributes.data_attributes","svg.global_attributes.direction","svg.global_attributes.display","svg.global_attributes.dominant-baseline","svg.global_attributes.fill-rule","svg.global_attributes.id","svg.global_attributes.image-rendering","svg.global_attributes.lang","svg.global_attributes.lighting-color","svg.global_attributes.marker-end","svg.global_attributes.marker-mid","svg.global_attributes.marker-start","svg.global_attributes.mask","svg.global_attributes.overflow","svg.global_attributes.pointer-events","svg.global_attributes.requiredExtensions","svg.global_attributes.requiredExtensions.mathml","svg.global_attributes.shape-rendering","svg.global_attributes.stop-color","svg.global_attributes.stop-opacity","svg.global_attributes.stroke","svg.global_attributes.stroke-dasharray","svg.global_attributes.stroke-dashoffset","svg.global_attributes.stroke-linecap","svg.global_attributes.stroke-linejoin","svg.global_attributes.stroke-miterlimit","svg.global_attributes.stroke-width","svg.global_attributes.style","svg.global_attributes.tabindex","svg.global_attributes.text-anchor","svg.global_attributes.text-decoration","svg.global_attributes.text-rendering","svg.global_attributes.transform","svg.global_attributes.transform-origin","svg.global_attributes.unicode-bidi","svg.global_attributes.vector-effect","svg.global_attributes.visibility"],"description":"The SVG image format, represented by the <svg> element, creates two-dimensional vector graphics with declarative or scripted interaction and animation.","description_html":"The SVG image format, represented by the <code>&#x3C;svg></code> element, creates two-dimensional vector graphics with declarative or scripted interaction and animation.","group":"svg","name":"SVG","spec":"https://svgwg.org/svg2-draft/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"1","chrome_android":"18","edge":"79","firefox":"3","firefox_android":"4","safari":"3","safari_ios":"2"}}},"svg-discouraged":{"compat_features":["api.SVGAElement.text","api.SVGElement.className","api.SVGFontElement","api.SVGFontFaceElement","api.SVGFontFaceFormatElement","api.SVGFontFaceNameElement","api.SVGFontFaceSrcElement","api.SVGFontFaceUriElement","api.SVGGlyphElement","api.SVGGlyphRefElement","api.SVGGlyphRefElement.dx","api.SVGGlyphRefElement.dy","api.SVGGlyphRefElement.format","api.SVGGlyphRefElement.glyphRef","api.SVGGlyphRefElement.href","api.SVGGlyphRefElement.x","api.SVGGlyphRefElement.y","api.SVGHKernElement","api.SVGMissingGlyphElement","api.SVGPathElement.createSVGPathSegArcAbs","api.SVGPathElement.createSVGPathSegArcRel","api.SVGPathElement.createSVGPathSegClosePath","api.SVGPathElement.createSVGPathSegCurvetoCubicAbs","api.SVGPathElement.createSVGPathSegCurvetoCubicRel","api.SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs","api.SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel","api.SVGPathElement.createSVGPathSegCurvetoQuadraticAbs","api.SVGPathElement.createSVGPathSegCurvetoQuadraticRel","api.SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs","api.SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel","api.SVGPathElement.createSVGPathSegLinetoAbs","api.SVGPathElement.createSVGPathSegLinetoHorizontalAbs","api.SVGPathElement.createSVGPathSegLinetoHorizontalRel","api.SVGPathElement.createSVGPathSegLinetoRel","api.SVGPathElement.createSVGPathSegLinetoVerticalAbs","api.SVGPathElement.createSVGPathSegLinetoVerticalRel","api.SVGPathElement.createSVGPathSegMovetoAbs","api.SVGPathElement.createSVGPathSegMovetoRel","api.SVGPathElement.getPathSegAtLength","api.SVGPoint","api.SVGPoint.matrixTransform","api.SVGPoint.x","api.SVGPoint.y","api.SVGRenderingIntent","api.SVGSVGElement.currentView","api.SVGSVGElement.forceRedraw","api.SVGSVGElement.suspendRedraw","api.SVGSVGElement.unsuspendRedraw","api.SVGSVGElement.unsuspendRedrawAll","api.SVGSVGElement.useCurrentView","api.SVGStyleElement.type","api.SVGTextContentElement.selectSubString","api.SVGVKernElement","css.at-rules.font-face.SVG_fonts","svg.elements.a.xlink_actuate","svg.elements.a.xlink_href","svg.elements.a.xlink_show","svg.elements.a.xlink_title","svg.elements.cursor","svg.elements.cursor.href","svg.elements.cursor.systemLanguage","svg.elements.cursor.x","svg.elements.cursor.xlink_href","svg.elements.cursor.y","svg.elements.feImage.xlink_href","svg.elements.filter.xlink_href","svg.elements.font","svg.elements.font-face","svg.elements.font-face-format","svg.elements.font-face-format.string","svg.elements.font-face-name","svg.elements.font-face-name.name","svg.elements.font-face-src","svg.elements.font-face-uri","svg.elements.font-face-uri.xlink_href","svg.elements.font-face.accent-height","svg.elements.font-face.alphabetic","svg.elements.font-face.ascent","svg.elements.font-face.bbox","svg.elements.font-face.cap-height","svg.elements.font-face.descent","svg.elements.font-face.font-family","svg.elements.font-face.font-size","svg.elements.font-face.font-stretch","svg.elements.font-face.font-style","svg.elements.font-face.font-variant","svg.elements.font-face.font-weight","svg.elements.font-face.hanging","svg.elements.font-face.ideographic","svg.elements.font-face.mathematical","svg.elements.font-face.overline-position","svg.elements.font-face.overline-thickness","svg.elements.font-face.panose-1","svg.elements.font-face.slope","svg.elements.font-face.stemh","svg.elements.font-face.stemv","svg.elements.font-face.strikethrough-position","svg.elements.font-face.strikethrough-thickness","svg.elements.font-face.underline-position","svg.elements.font-face.underline-thickness","svg.elements.font-face.unicode-range","svg.elements.font-face.units-per-em","svg.elements.font-face.v-alphabetic","svg.elements.font-face.v-hanging","svg.elements.font-face.v-ideographic","svg.elements.font-face.v-mathematical","svg.elements.font-face.widths","svg.elements.font-face.x-height","svg.elements.font.horiz-adv-x","svg.elements.font.horiz-origin-x","svg.elements.font.horiz-origin-y","svg.elements.font.vert-adv-y","svg.elements.font.vert-origin-x","svg.elements.font.vert-origin-y","svg.elements.glyph","svg.elements.glyph.arabic-form","svg.elements.glyph.d","svg.elements.glyph.glyph-name","svg.elements.glyph.horiz-adv-x","svg.elements.glyph.lang","svg.elements.glyph.orientation","svg.elements.glyph.unicode","svg.elements.glyph.vert-adv-y","svg.elements.glyph.vert-origin-x","svg.elements.glyph.vert-origin-y","svg.elements.glyphRef","svg.elements.glyphRef.dx","svg.elements.glyphRef.dy","svg.elements.glyphRef.format","svg.elements.glyphRef.glyphRef","svg.elements.glyphRef.x","svg.elements.glyphRef.xlink_href","svg.elements.glyphRef.y","svg.elements.hkern","svg.elements.hkern.g1","svg.elements.hkern.g2","svg.elements.hkern.k","svg.elements.hkern.u1","svg.elements.hkern.u2","svg.elements.image.xlink_href","svg.elements.linearGradient.xlink_href","svg.elements.missing-glyph","svg.elements.missing-glyph.d","svg.elements.missing-glyph.horiz-adv-x","svg.elements.missing-glyph.vert-adv-y","svg.elements.missing-glyph.vert-origin-x","svg.elements.missing-glyph.vert-origin-y","svg.elements.mpath.xlink_href","svg.elements.pattern.xlink_href","svg.elements.radialGradient.xlink_href","svg.elements.script.xlink_href","svg.elements.svg.baseProfile","svg.elements.svg.version","svg.elements.svg.zoomAndPan","svg.elements.textPath.xlink_href","svg.elements.tref","svg.elements.tref.fill","svg.elements.tref.fill.context-fill","svg.elements.tref.systemLanguage","svg.elements.tref.xlink_href","svg.elements.use.xlink_href","svg.elements.view.zoomAndPan","svg.elements.vkern","svg.elements.vkern.g1","svg.elements.vkern.g2","svg.elements.vkern.k","svg.elements.vkern.u1","svg.elements.vkern.u2","svg.global_attributes.clip","svg.global_attributes.glyph-orientation-horizontal","svg.global_attributes.glyph-orientation-vertical","svg.global_attributes.xml_lang","svg.global_attributes.xml_space"],"description":"The SVG 1.1 image format has several components that were excluded from SVG 2, such as fonts, alternate glyphs, and the xlink namespace.","description_html":"The SVG 1.1 image format has several components that were excluded from SVG 2, such as fonts, alternate glyphs, and the <code>xlink</code> namespace.","discouraged":{"according_to":["https://svgwg.org/svg2-draft/changes.html#substantial"],"alternatives":["svg","font-face"]},"name":"SVG 1.1 (discouraged)","spec":"https://www.w3.org/TR/SVG11/","status":{"baseline":false,"support":{}}},"svg-filters":{"caniuse":"svg-filters","compat_features":["api.SVGFEBlendElement","api.SVGFEBlendElement.height","api.SVGFEBlendElement.in1","api.SVGFEBlendElement.in2","api.SVGFEBlendElement.mode","api.SVGFEBlendElement.result","api.SVGFEBlendElement.width","api.SVGFEBlendElement.x","api.SVGFEBlendElement.y","api.SVGFEColorMatrixElement","api.SVGFEColorMatrixElement.height","api.SVGFEColorMatrixElement.in1","api.SVGFEColorMatrixElement.result","api.SVGFEColorMatrixElement.type","api.SVGFEColorMatrixElement.values","api.SVGFEColorMatrixElement.width","api.SVGFEColorMatrixElement.x","api.SVGFEColorMatrixElement.y","api.SVGFEComponentTransferElement","api.SVGFEComponentTransferElement.height","api.SVGFEComponentTransferElement.in1","api.SVGFEComponentTransferElement.result","api.SVGFEComponentTransferElement.width","api.SVGFEComponentTransferElement.x","api.SVGFEComponentTransferElement.y","api.SVGFECompositeElement","api.SVGFECompositeElement.height","api.SVGFECompositeElement.in1","api.SVGFECompositeElement.in2","api.SVGFECompositeElement.k1","api.SVGFECompositeElement.k2","api.SVGFECompositeElement.k3","api.SVGFECompositeElement.k4","api.SVGFECompositeElement.operator","api.SVGFECompositeElement.result","api.SVGFECompositeElement.width","api.SVGFECompositeElement.x","api.SVGFECompositeElement.y","api.SVGFEConvolveMatrixElement","api.SVGFEConvolveMatrixElement.bias","api.SVGFEConvolveMatrixElement.divisor","api.SVGFEConvolveMatrixElement.edgeMode","api.SVGFEConvolveMatrixElement.height","api.SVGFEConvolveMatrixElement.in1","api.SVGFEConvolveMatrixElement.kernelMatrix","api.SVGFEConvolveMatrixElement.kernelUnitLengthX","api.SVGFEConvolveMatrixElement.kernelUnitLengthY","api.SVGFEConvolveMatrixElement.orderX","api.SVGFEConvolveMatrixElement.orderY","api.SVGFEConvolveMatrixElement.preserveAlpha","api.SVGFEConvolveMatrixElement.result","api.SVGFEConvolveMatrixElement.targetX","api.SVGFEConvolveMatrixElement.targetY","api.SVGFEConvolveMatrixElement.width","api.SVGFEConvolveMatrixElement.x","api.SVGFEConvolveMatrixElement.y","api.SVGFEDiffuseLightingElement","api.SVGFEDiffuseLightingElement.diffuseConstant","api.SVGFEDiffuseLightingElement.height","api.SVGFEDiffuseLightingElement.in1","api.SVGFEDiffuseLightingElement.kernelUnitLengthX","api.SVGFEDiffuseLightingElement.kernelUnitLengthY","api.SVGFEDiffuseLightingElement.result","api.SVGFEDiffuseLightingElement.surfaceScale","api.SVGFEDiffuseLightingElement.width","api.SVGFEDiffuseLightingElement.x","api.SVGFEDiffuseLightingElement.y","api.SVGFEDisplacementMapElement","api.SVGFEDisplacementMapElement.height","api.SVGFEDisplacementMapElement.in1","api.SVGFEDisplacementMapElement.in2","api.SVGFEDisplacementMapElement.result","api.SVGFEDisplacementMapElement.scale","api.SVGFEDisplacementMapElement.width","api.SVGFEDisplacementMapElement.x","api.SVGFEDisplacementMapElement.xChannelSelector","api.SVGFEDisplacementMapElement.y","api.SVGFEDisplacementMapElement.yChannelSelector","api.SVGFEDistantLightElement","api.SVGFEDistantLightElement.azimuth","api.SVGFEDistantLightElement.elevation","api.SVGFEDropShadowElement","api.SVGFEDropShadowElement.dx","api.SVGFEDropShadowElement.dy","api.SVGFEDropShadowElement.height","api.SVGFEDropShadowElement.in1","api.SVGFEDropShadowElement.result","api.SVGFEDropShadowElement.setStdDeviation","api.SVGFEDropShadowElement.stdDeviationX","api.SVGFEDropShadowElement.stdDeviationY","api.SVGFEDropShadowElement.width","api.SVGFEDropShadowElement.x","api.SVGFEDropShadowElement.y","api.SVGFEFloodElement","api.SVGFEFloodElement.height","api.SVGFEFloodElement.result","api.SVGFEFloodElement.width","api.SVGFEFloodElement.x","api.SVGFEFloodElement.y","api.SVGFEFuncAElement","api.SVGFEFuncBElement","api.SVGFEFuncGElement","api.SVGFEFuncRElement","api.SVGFEGaussianBlurElement","api.SVGFEGaussianBlurElement.edgeMode","api.SVGFEGaussianBlurElement.height","api.SVGFEGaussianBlurElement.in1","api.SVGFEGaussianBlurElement.result","api.SVGFEGaussianBlurElement.setStdDeviation","api.SVGFEGaussianBlurElement.stdDeviationX","api.SVGFEGaussianBlurElement.stdDeviationY","api.SVGFEGaussianBlurElement.width","api.SVGFEGaussianBlurElement.x","api.SVGFEGaussianBlurElement.y","api.SVGFEImageElement","api.SVGFEImageElement.crossOrigin","api.SVGFEImageElement.height","api.SVGFEImageElement.href","api.SVGFEImageElement.preserveAspectRatio","api.SVGFEImageElement.result","api.SVGFEImageElement.width","api.SVGFEImageElement.x","api.SVGFEImageElement.y","api.SVGFEMergeElement","api.SVGFEMergeElement.height","api.SVGFEMergeElement.result","api.SVGFEMergeElement.width","api.SVGFEMergeElement.x","api.SVGFEMergeElement.y","api.SVGFEMergeNodeElement","api.SVGFEMergeNodeElement.in1","api.SVGFEMorphologyElement","api.SVGFEMorphologyElement.height","api.SVGFEMorphologyElement.in1","api.SVGFEMorphologyElement.operator","api.SVGFEMorphologyElement.radiusX","api.SVGFEMorphologyElement.radiusY","api.SVGFEMorphologyElement.result","api.SVGFEMorphologyElement.width","api.SVGFEMorphologyElement.x","api.SVGFEMorphologyElement.y","api.SVGFEOffsetElement","api.SVGFEOffsetElement.dx","api.SVGFEOffsetElement.dy","api.SVGFEOffsetElement.height","api.SVGFEOffsetElement.in1","api.SVGFEOffsetElement.result","api.SVGFEOffsetElement.width","api.SVGFEOffsetElement.x","api.SVGFEOffsetElement.y","api.SVGFEPointLightElement","api.SVGFEPointLightElement.x","api.SVGFEPointLightElement.y","api.SVGFEPointLightElement.z","api.SVGFESpecularLightingElement","api.SVGFESpecularLightingElement.height","api.SVGFESpecularLightingElement.in1","api.SVGFESpecularLightingElement.kernelUnitLengthX","api.SVGFESpecularLightingElement.kernelUnitLengthY","api.SVGFESpecularLightingElement.result","api.SVGFESpecularLightingElement.specularConstant","api.SVGFESpecularLightingElement.specularExponent","api.SVGFESpecularLightingElement.surfaceScale","api.SVGFESpecularLightingElement.width","api.SVGFESpecularLightingElement.x","api.SVGFESpecularLightingElement.y","api.SVGFESpotLightElement","api.SVGFESpotLightElement.limitingConeAngle","api.SVGFESpotLightElement.pointsAtX","api.SVGFESpotLightElement.pointsAtY","api.SVGFESpotLightElement.pointsAtZ","api.SVGFESpotLightElement.specularExponent","api.SVGFESpotLightElement.x","api.SVGFESpotLightElement.y","api.SVGFESpotLightElement.z","api.SVGFETileElement","api.SVGFETileElement.height","api.SVGFETileElement.in1","api.SVGFETileElement.result","api.SVGFETileElement.width","api.SVGFETileElement.x","api.SVGFETileElement.y","api.SVGFETurbulenceElement","api.SVGFETurbulenceElement.baseFrequencyX","api.SVGFETurbulenceElement.baseFrequencyY","api.SVGFETurbulenceElement.height","api.SVGFETurbulenceElement.numOctaves","api.SVGFETurbulenceElement.result","api.SVGFETurbulenceElement.seed","api.SVGFETurbulenceElement.stitchTiles","api.SVGFETurbulenceElement.type","api.SVGFETurbulenceElement.width","api.SVGFETurbulenceElement.x","api.SVGFETurbulenceElement.y","api.SVGFilterElement","api.SVGFilterElement.filterUnits","api.SVGFilterElement.height","api.SVGFilterElement.href","api.SVGFilterElement.primitiveUnits","api.SVGFilterElement.width","api.SVGFilterElement.x","api.SVGFilterElement.y","css.properties.color-interpolation-filters","css.properties.color-interpolation-filters.auto","css.properties.color-interpolation-filters.linearRGB","css.properties.color-interpolation-filters.sRGB","css.properties.filter.svg_elements","css.properties.flood-color","css.properties.flood-opacity","css.properties.lighting-color","svg.elements.feBlend","svg.elements.feBlend.in","svg.elements.feBlend.in2","svg.elements.feBlend.mode","svg.elements.feColorMatrix","svg.elements.feColorMatrix.in","svg.elements.feColorMatrix.type","svg.elements.feColorMatrix.values","svg.elements.feComponentTransfer","svg.elements.feComponentTransfer.in","svg.elements.feComposite","svg.elements.feComposite.in","svg.elements.feComposite.in2","svg.elements.feComposite.k1","svg.elements.feComposite.k2","svg.elements.feComposite.k3","svg.elements.feComposite.k4","svg.elements.feComposite.operator","svg.elements.feComposite.operator.lighter_value","svg.elements.feConvolveMatrix","svg.elements.feConvolveMatrix.bias","svg.elements.feConvolveMatrix.divisor","svg.elements.feConvolveMatrix.edgeMode","svg.elements.feConvolveMatrix.in","svg.elements.feConvolveMatrix.kernelMatrix","svg.elements.feConvolveMatrix.kernelUnitLength","svg.elements.feConvolveMatrix.order","svg.elements.feConvolveMatrix.preserveAlpha","svg.elements.feConvolveMatrix.targetX","svg.elements.feConvolveMatrix.targetY","svg.elements.feDiffuseLighting","svg.elements.feDiffuseLighting.diffuseConstant","svg.elements.feDiffuseLighting.in","svg.elements.feDiffuseLighting.kernelUnitLength","svg.elements.feDiffuseLighting.surfaceScale","svg.elements.feDisplacementMap","svg.elements.feDisplacementMap.in","svg.elements.feDisplacementMap.in2","svg.elements.feDisplacementMap.scale","svg.elements.feDisplacementMap.xChannelSelector","svg.elements.feDisplacementMap.yChannelSelector","svg.elements.feDistantLight","svg.elements.feDistantLight.azimuth","svg.elements.feDistantLight.elevation","svg.elements.feDropShadow","svg.elements.feDropShadow.dx","svg.elements.feDropShadow.dy","svg.elements.feDropShadow.in","svg.elements.feDropShadow.stdDeviation","svg.elements.feFlood","svg.elements.feFuncA","svg.elements.feFuncB","svg.elements.feFuncG","svg.elements.feFuncR","svg.elements.feGaussianBlur","svg.elements.feGaussianBlur.edgeMode","svg.elements.feGaussianBlur.in","svg.elements.feGaussianBlur.stdDeviation","svg.elements.feImage","svg.elements.feImage.crossorigin","svg.elements.feImage.href","svg.elements.feImage.preserveAspectRatio","svg.elements.feMerge","svg.elements.feMergeNode","svg.elements.feMergeNode.in","svg.elements.feMorphology","svg.elements.feMorphology.in","svg.elements.feMorphology.operator","svg.elements.feMorphology.radius","svg.elements.feOffset","svg.elements.feOffset.dx","svg.elements.feOffset.dy","svg.elements.feOffset.in","svg.elements.fePointLight","svg.elements.fePointLight.x","svg.elements.fePointLight.y","svg.elements.fePointLight.z","svg.elements.feSpecularLighting","svg.elements.feSpecularLighting.in","svg.elements.feSpecularLighting.kernelUnitLength","svg.elements.feSpecularLighting.specularConstant","svg.elements.feSpecularLighting.specularExponent","svg.elements.feSpecularLighting.surfaceScale","svg.elements.feSpotLight","svg.elements.feSpotLight.limitingConeAngle","svg.elements.feSpotLight.pointsAtX","svg.elements.feSpotLight.pointsAtY","svg.elements.feSpotLight.pointsAtZ","svg.elements.feSpotLight.specularExponent","svg.elements.feSpotLight.x","svg.elements.feSpotLight.y","svg.elements.feSpotLight.z","svg.elements.feTile","svg.elements.feTile.in","svg.elements.feTurbulence","svg.elements.feTurbulence.baseFrequency","svg.elements.feTurbulence.numOctaves","svg.elements.feTurbulence.seed","svg.elements.feTurbulence.stitchTiles","svg.elements.feTurbulence.type","svg.elements.filter","svg.elements.filter.filterUnits","svg.elements.filter.height","svg.elements.filter.primitiveUnits","svg.elements.filter.width","svg.elements.filter.x","svg.elements.filter.y","svg.global_attributes.filter","svg.global_attributes.flood-color","svg.global_attributes.flood-opacity"],"description":"The <filter> SVG element applies custom effects such as color manipulation, blurring, or morphing to SVG elements.","description_html":"The <code>&#x3C;filter></code> SVG element applies custom effects such as color manipulation, blurring, or morphing to SVG elements.","group":"svg","name":"SVG filters","spec":"https://drafts.fxtf.org/filter-effects-1/","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","firefox_android":"4","safari":"6","safari_ios":"6"}}},"symbol":{"compat_features":["javascript.builtins.Symbol","javascript.builtins.Symbol.@@toPrimitive","javascript.builtins.Symbol.Symbol","javascript.builtins.Symbol.description","javascript.builtins.Symbol.for","javascript.builtins.Symbol.hasInstance","javascript.builtins.Symbol.isConcatSpreadable","javascript.builtins.Symbol.iterator","javascript.builtins.Symbol.keyFor","javascript.builtins.Symbol.match","javascript.builtins.Symbol.matchAll","javascript.builtins.Symbol.replace","javascript.builtins.Symbol.search","javascript.builtins.Symbol.species","javascript.builtins.Symbol.split","javascript.builtins.Symbol.toPrimitive","javascript.builtins.Symbol.toString","javascript.builtins.Symbol.toStringTag","javascript.builtins.Symbol.toStringTag.dom_objects","javascript.builtins.Symbol.valueOf"],"description":"A Symbol value is a unique, non-enumerable primitive value used for encapsulation or information hiding. For example, a symbol can be a key of an object that can never collide with any other key.","description_html":"A <code>Symbol</code> value is a unique, non-enumerable primitive value used for encapsulation or information hiding. For example, a symbol can be a key of an object that can never collide with any other key.","group":"primitive-types","name":"Symbol","spec":"https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-objects","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"38","chrome_android":"38","edge":"12","firefox":"36","firefox_android":"36","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","css.properties.border-collapse","css.properties.border-collapse.collapse","css.properties.border-collapse.separate","css.properties.border-spacing","css.properties.caption-side","css.properties.caption-side.bottom","css.properties.caption-side.bottom-outside","css.properties.caption-side.top","css.properties.caption-side.top-outside","css.properties.caption-side.writing-mode_relative_values","css.properties.empty-cells","css.properties.table-layout","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.td.rowspan.rowspan_zero","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.rowspan.rowspan_zero","html.elements.th.scope","html.elements.thead","html.elements.tr"],"description":"The <table> HTML element, with several related elements, represents tabular data in rows and columns of cells.","description_html":"The <code>&#x3C;table></code> HTML element, with several related elements, represents tabular data in rows and columns of cells.","group":"html-elements","name":"Tables","spec":"https://html.spec.whatwg.org/multipage/tables.html","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"target":{"compat_features":["css.selectors.target"],"description":"The :target CSS pseudo-class matches the element with an ID matching the URL fragment.","description_html":"The <code>:target</code> CSS pseudo-class matches the element with an ID matching the URL fragment.","group":"selectors","name":":target","spec":"https://drafts.csswg.org/selectors-4/#the-target-pseudo","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.3","safari_ios":"2"}}},"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":"low","baseline_low_date":"2024-12-11","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"131","firefox_android":"131","safari":"18.2","safari_ios":"18.2"}}},"target-within":{"description":"The :target-within CSS pseudo-class matches the element with an ID matching the URL fragment and its ancestors.","description_html":"The <code>:target-within</code> CSS pseudo-class matches the element with an ID matching the URL fragment and its ancestors.","group":"selectors","name":":target-within","spec":"https://drafts.csswg.org/selectors-4/#the-target-within-pseudo","status":{"baseline":false,"support":{}}},"template":{"caniuse":"template","compat_features":["api.HTMLTemplateElement","api.HTMLTemplateElement.content","html.elements.template"],"description":"The <template> HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.","description_html":"The <code>&#x3C;template></code> HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.","group":["html-elements","web-components"],"name":"<template>","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-template-element","status":{"baseline":"high","baseline_high_date":"2018-05-12","baseline_low_date":"2015-11-12","support":{"chrome":"26","chrome_android":"26","edge":"13","firefox":"22","firefox_android":"22","safari":"8","safari_ios":"8"}}},"template-literals":{"compat_features":["javascript.grammar.template_literals","javascript.grammar.template_literals.template_literal_revision"],"description":"Template literals are literals delimited with backtick (`) characters, allowing for multi-line strings, string interpolation with embedded expressions, and special constructs called tagged templates.","description_html":"Template literals are literals delimited with backtick (`) characters, allowing for multi-line strings, string interpolation with embedded expressions, and special constructs called tagged templates.","group":"javascript","name":"Template literals","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-template-literals","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"62","chrome_android":"62","edge":"79","firefox":"53","firefox_android":"53","safari":"11","safari_ios":"11"}}},"temporal":{"caniuse":"temporal","compat_features":["javascript.builtins.Date.toTemporalInstant","javascript.builtins.Temporal","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.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.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.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.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.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.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.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-align":{"compat_features":["css.properties.text-align","css.properties.text-align.center","css.properties.text-align.end","css.properties.text-align.justify","css.properties.text-align.left","css.properties.text-align.match-parent","css.properties.text-align.right","css.properties.text-align.start"],"description":"The text-align CSS property sets the horizontal placement of the inner content of a block element.","description_html":"The <code>text-align</code> CSS property sets the horizontal placement of the inner content of a block element.","group":"text","name":"text-align","spec":"https://drafts.csswg.org/css-text-4/#text-align-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-align-last":{"caniuse":"css-text-align-last","compat_features":["css.properties.text-align-last","css.properties.text-align-last.auto"],"description":"The text-align-last CSS property sets the alignment of the last line of text before a forced line break.","description_html":"The <code>text-align-last</code> CSS property sets the alignment of the last line of text before a forced line break.","group":"text","name":"text-align-last","spec":"https://drafts.csswg.org/css-text-4/#text-align-last-property","status":{"baseline":"low","baseline_low_date":"2022-09-12","support":{"chrome":"47","chrome_android":"47","edge":"12","firefox":"49","firefox_android":"49","safari":"16","safari_ios":"16"}}},"text-autospace":{"compat_features":["css.properties.text-autospace","css.properties.text-autospace.auto","css.properties.text-autospace.ideograph-alpha","css.properties.text-autospace.ideograph-numeric","css.properties.text-autospace.no-autospace","css.properties.text-autospace.normal"],"description":"The text-autospace CSS property sets whether and how to insert spaces in inter-script text (such as when mixing Latin and Chinese characters) and around punctuation.","description_html":"The <code>text-autospace</code> CSS property sets whether and how to insert spaces in inter-script text (such as when mixing Latin and Chinese characters) and around punctuation.","name":"text-autospace","spec":"https://drafts.csswg.org/css-text-4/#text-autospace-property","status":{"baseline":false,"support":{}}},"text-box":{"caniuse":"css-text-box-trim","compat_features":["css.properties.text-box","css.properties.text-box-edge","css.properties.text-box-edge.auto","css.properties.text-box-trim","css.properties.text-box-trim.none","css.properties.text-box-trim.trim-both","css.properties.text-box-trim.trim-end","css.properties.text-box-trim.trim-start","css.properties.text-box.normal","css.types.text-edge","css.types.text-edge.alphabetic","css.types.text-edge.cap","css.types.text-edge.ex","css.types.text-edge.text"],"description":"The text-box CSS property sets the spacing above and below text based on a font's typographic features. For example, text-box: trim-both ex alphabetic trims the top to the top of the letter x and the bottom to the bottom of most letters, without descenders.","description_html":"The <code>text-box</code> CSS property sets the spacing above and below text based on a font's typographic features. For example, <code>text-box: trim-both ex alphabetic</code> trims the top to the top of the letter x and the bottom to the bottom of most letters, without descenders.","group":"text","name":"text-box","spec":"https://drafts.csswg.org/css-inline-3/#leading-trim","status":{"baseline":false,"support":{"chrome":"133","chrome_android":"133","edge":"133","safari":"18.2","safari_ios":"18.2"}}},"text-combine-upright":{"compat_features":["css.properties.text-combine-upright"],"description":"The text-combine-upright CSS property displays multiple characters in the space of a single character in vertical text. This is used in East Asian documents to display Latin-based strings such as components of a date or letters of an initialism.","description_html":"The <code>text-combine-upright</code> CSS property displays multiple characters in the space of a single character in vertical text. This is used in East Asian documents to display Latin-based strings such as components of a date or letters of an initialism.","group":"text","name":"text-combine-upright","spec":"https://drafts.csswg.org/css-writing-modes-4/#text-combine-upright","status":{"baseline":"high","baseline_high_date":"2024-09-14","baseline_low_date":"2022-03-14","support":{"chrome":"48","chrome_android":"48","edge":"79","firefox":"48","firefox_android":"48","safari":"15.4","safari_ios":"15.4"}}},"text-decoration":{"caniuse":"text-decoration","compat_features":["css.properties.text-decoration","css.properties.text-decoration-color","css.properties.text-decoration-line","css.properties.text-decoration-line.grammar-error","css.properties.text-decoration-line.line-through","css.properties.text-decoration-line.none","css.properties.text-decoration-line.overline","css.properties.text-decoration-line.spelling-error","css.properties.text-decoration-line.underline","css.properties.text-decoration-skip","css.properties.text-decoration-skip-ink","css.properties.text-decoration-skip-ink.all","css.properties.text-decoration-skip-ink.auto","css.properties.text-decoration-skip-ink.none","css.properties.text-decoration-skip.auto","css.properties.text-decoration-skip.none","css.properties.text-decoration-style","css.properties.text-decoration-style.wavy","css.properties.text-decoration-thickness","css.properties.text-decoration-thickness.auto","css.properties.text-decoration-thickness.from-font","css.properties.text-decoration-thickness.percentage","css.properties.text-decoration.includes_color-and-style","css.properties.text-decoration.includes_thickness"],"description":"The text-decoration CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.","description_html":"The <code>text-decoration</code> CSS property sets the style and color of decorative lines including underline, overline, line-through, or a combination of lines.","name":"text-decoration","spec":"https://drafts.csswg.org/css-text-decor-4/#line-decoration","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-decoration-line-blink":{"compat_features":["css.properties.text-decoration-line.blink"],"description":"The text-decoration: blink CSS declaration flashes text between visible and invisible.","description_html":"The <code>text-decoration: blink</code> CSS declaration flashes text between visible and invisible.","discouraged":{"according_to":["https://drafts.csswg.org/css-text-decor-3/#valdef-text-decoration-line-blink"],"alternatives":["animations-css"]},"group":["animation","css"],"name":"text-decoration-line: blink","spec":"https://drafts.csswg.org/css-text-decor-3/#valdef-text-decoration-line-blink","status":{"baseline":false,"support":{"chrome":"57","chrome_android":"57","edge":"79","firefox":"36","firefox_android":"36","safari":"12.1","safari_ios":"12.2"}}},"text-decoration-selection":{"compat_features":["css.selectors.selection.text-decoration"],"description":"The text-decoration CSS property in a ::selection rule sets the underline and other text decoration styles on the text a user has highlighted.","description_html":"The <code>text-decoration</code> CSS property in a <code>::selection</code> rule sets the underline and other text decoration styles on the text a user has highlighted.","group":["selectors","selection"],"name":"text-decoration in ::selection","spec":"https://drafts.csswg.org/css-pseudo-4/#highlight-styling","status":{"baseline":false,"support":{"chrome":"105","chrome_android":"105","edge":"105"}}},"text-emphasis":{"caniuse":"text-emphasis","compat_features":["css.properties.text-emphasis","css.properties.text-emphasis-color","css.properties.text-emphasis-position","css.properties.text-emphasis-position.auto","css.properties.text-emphasis-position.left","css.properties.text-emphasis-position.over","css.properties.text-emphasis-position.right","css.properties.text-emphasis-position.under","css.properties.text-emphasis-style","css.properties.text-emphasis-style.circle","css.properties.text-emphasis-style.dot","css.properties.text-emphasis-style.double-circle","css.properties.text-emphasis-style.filled","css.properties.text-emphasis-style.none","css.properties.text-emphasis-style.sesame","css.properties.text-emphasis-style.triangle"],"description":"The text-emphasis CSS property sets position and style for text emphasis marks, especially for East Asian languages.","description_html":"The <code>text-emphasis</code> CSS property sets position and style for text emphasis marks, especially for East Asian languages.","name":"text-emphasis","spec":"https://drafts.csswg.org/css-text-decor-4/#text-emphasis-property","status":{"baseline":"high","baseline_high_date":"2024-09-03","baseline_low_date":"2022-03-03","support":{"chrome":"99","chrome_android":"99","edge":"99","firefox":"46","firefox_android":"46","safari":"7","safari_ios":"7"}}},"text-encoding":{"caniuse":"textencoder","compat_features":["api.TextDecoder","api.TextDecoder.TextDecoder","api.TextDecoder.decode","api.TextDecoder.encoding","api.TextDecoder.fatal","api.TextDecoder.ignoreBOM","api.TextDecoder.worker_support","api.TextDecoderStream","api.TextDecoderStream.TextDecoderStream","api.TextDecoderStream.encoding","api.TextDecoderStream.fatal","api.TextDecoderStream.ignoreBOM","api.TextEncoder","api.TextEncoder.TextEncoder","api.TextEncoder.encode","api.TextEncoder.encodeInto","api.TextEncoder.encoding","api.TextEncoder.worker_support","api.TextEncoderStream","api.TextEncoderStream.TextEncoderStream","api.TextEncoderStream.encoding"],"description":"The TextEncoder API transforms a stream of code points into a byte stream with UTF-8 encoding, and TextDecoder does the reverse.","description_html":"The <code>TextEncoder</code> API transforms a stream of code points into a byte stream with UTF-8 encoding, and <code>TextDecoder</code> does the reverse.","name":"Text encoding and decoding","spec":"https://encoding.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"38","chrome_android":"38","edge":"79","firefox":"19","firefox_android":"19","safari":"10.1","safari_ios":"10.3"}}},"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-indent-each-line":{"compat_features":["css.properties.text-indent.each-line"],"description":"The text-indent: each-line CSS declaration indents text after forced breaks as well as to the first line of a block.","description_html":"The <code>text-indent: each-line</code> CSS declaration indents text after forced breaks as well as to the first line of a block.","group":"text","name":"text-indent: each-line","spec":"https://drafts.csswg.org/css-text-4/#text-indent-property","status":{"baseline":false,"support":{"firefox":"121","firefox_android":"121","safari":"15","safari_ios":"15"}}},"text-indent-hanging":{"compat_features":["css.properties.text-indent.hanging"],"description":"The text-indent: hanging CSS declaration indents all lines except the first.","description_html":"The <code>text-indent: hanging</code> CSS declaration indents all lines except the first.","group":"text","name":"text-indent: hanging","spec":"https://drafts.csswg.org/css-text-4/#text-indent-property","status":{"baseline":false,"support":{"firefox":"121","firefox_android":"121","safari":"15","safari_ios":"15"}}},"text-justify":{"compat_features":["css.properties.text-justify","css.properties.text-justify.auto","css.properties.text-justify.inter-character","css.properties.text-justify.inter-word","css.properties.text-justify.none"],"description":"The text-justify CSS property sets the justification method of text when text-align: justify is set.","description_html":"The <code>text-justify</code> CSS property sets the justification method of text when <code>text-align: justify</code> is set.","group":"text","name":"text-justify","spec":"https://drafts.csswg.org/css-text-4/#text-justify-property","status":{"baseline":false,"support":{"firefox":"55","firefox_android":"55"}}},"text-orientation":{"caniuse":"css-text-orientation","compat_features":["css.properties.text-orientation","css.properties.text-orientation.mixed","css.properties.text-orientation.sideways","css.properties.text-orientation.upright"],"description":"The text-orientation CSS property sets the how text is typeset within a line when the writing mode is vertical.","description_html":"The <code>text-orientation</code> CSS property sets the how text is typeset within a line when the writing mode is vertical.","group":"text","name":"text-orientation","spec":"https://drafts.csswg.org/css-writing-modes-4/#text-orientation","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"48","chrome_android":"48","edge":"79","firefox":"41","firefox_android":"41","safari":"14","safari_ios":"14"}}},"text-overflow":{"caniuse":"text-overflow","compat_features":["css.properties.text-overflow","css.properties.text-overflow.clip","css.properties.text-overflow.ellipsis","css.properties.text-overflow.two_value_syntax","svg.global_attributes.text-overflow"],"description":"The text-overflow CSS property sets how hidden overflow content appears to users. The property can clip content, truncate content with an ellipsis (…), or truncate with a custom string.","description_html":"The <code>text-overflow</code> CSS property sets how hidden overflow content appears to users. The property can clip content, truncate content with an ellipsis (…), or truncate with a custom string.","group":"css","name":"Text overflow","spec":"https://drafts.csswg.org/css-overflow-4/#text-overflow","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"7","firefox_android":"7","safari":"1.3","safari_ios":"1"}}},"text-shadow":{"caniuse":"css-textshadow","compat_features":["css.properties.text-shadow"],"description":"The text-shadow CSS property sets the position and styles of shadow on text.","description_html":"The <code>text-shadow</code> CSS property sets the position and styles of shadow on text.","group":"text","name":"text-shadow","spec":"https://drafts.csswg.org/css-text-decor-4/#text-shadow-property","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"2","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"1.1","safari_ios":"1"}}},"text-size-adjust":{"caniuse":"text-size-adjust","compat_features":["css.properties.text-size-adjust","css.properties.text-size-adjust.auto","css.properties.text-size-adjust.none","css.properties.text-size-adjust.percentages"],"description":"The text-size-adjust CSS property disables or modifies the browser's default text size adjustment for small screen sizes.","description_html":"The <code>text-size-adjust</code> CSS property disables or modifies the browser's default text size adjustment for small screen sizes.","name":"text-size-adjust","spec":"https://drafts.csswg.org/css-size-adjust-1/#adjustment-control","status":{"baseline":false,"support":{"chrome":"54","chrome_android":"54","edge":"79"}}},"text-spacing-trim":{"compat_features":["css.properties.text-spacing-trim","css.properties.text-spacing-trim.normal","css.properties.text-spacing-trim.space-all","css.properties.text-spacing-trim.space-first","css.properties.text-spacing-trim.trim-start"],"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-stroke-fill":{"caniuse":"text-stroke","compat_features":["css.properties.-webkit-text-fill-color","css.properties.-webkit-text-stroke","css.properties.-webkit-text-stroke-color","css.properties.-webkit-text-stroke-width"],"description":"The -webkit-text-stroke-width and -webkit-text-stroke-color CSS properties set the thickness and color of text outlines. The -webkit-text-fill-color sets the color within text character outlines. Both default to the text color.","description_html":"The <code>-webkit-text-stroke-width</code> and <code>-webkit-text-stroke-color</code> CSS properties set the thickness and color of text outlines. The <code>-webkit-text-fill-color</code> sets the color within text character outlines. Both default to the text color.","group":"css","name":"Text stroke and fill  (compatibility prefixes)","spec":"https://compat.spec.whatwg.org/#text-fill-and-stroking","status":{"baseline":"high","baseline_high_date":"2019-10-05","baseline_low_date":"2017-04-05","support":{"chrome":"4","chrome_android":"18","edge":"15","firefox":"49","firefox_android":"49","safari":"3","safari_ios":"2"}}},"text-tracks":{"compat_features":["api.HTMLMediaElement.addTextTrack","api.HTMLTrackElement","api.HTMLTrackElement.cuechange_event","api.HTMLTrackElement.default","api.HTMLTrackElement.kind","api.HTMLTrackElement.label","api.HTMLTrackElement.readyState","api.HTMLTrackElement.src","api.HTMLTrackElement.srclang","api.HTMLTrackElement.track","api.TextTrack","api.TextTrack.activeCues","api.TextTrack.addCue","api.TextTrack.cuechange_event","api.TextTrack.cues","api.TextTrack.id","api.TextTrack.inBandMetadataTrackDispatchType","api.TextTrack.kind","api.TextTrack.label","api.TextTrack.language","api.TextTrack.mode","api.TextTrack.removeCue","api.TextTrackCue","api.TextTrackCue.endTime","api.TextTrackCue.enter_event","api.TextTrackCue.exit_event","api.TextTrackCue.id","api.TextTrackCue.pauseOnExit","api.TextTrackCue.startTime","api.TextTrackCue.track","api.TextTrackCueList","api.TextTrackCueList.getCueById","api.TextTrackCueList.length","api.TextTrackList","api.TextTrackList.addtrack_event","api.TextTrackList.change_event","api.TextTrackList.getTrackById","api.TextTrackList.length","api.TextTrackList.removetrack_event","html.elements.track","html.elements.track.default","html.elements.track.kind","html.elements.track.label","html.elements.track.src","html.elements.track.srclang"],"description":"The <track> element is used as a child of the media elements that lets you specify a timed text track to be displayed in parallel with the media element.","description_html":"The <code>&#x3C;track></code> element is used as a child of the media elements that lets you specify a timed text track to be displayed in parallel with the media element.","group":["media-elements","html-elements"],"name":"Text tracks","spec":"https://html.spec.whatwg.org/multipage/media.html#timed-text-tracks","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"23","chrome_android":"25","edge":"12","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"6"}}},"text-transform":{"compat_features":["css.properties.text-transform","css.properties.text-transform.capitalize","css.properties.text-transform.dutch_ij_digraph","css.properties.text-transform.full-size-kana","css.properties.text-transform.full-width","css.properties.text-transform.greek_accented_characters","css.properties.text-transform.lowercase","css.properties.text-transform.lowercase_sigma","css.properties.text-transform.none","css.properties.text-transform.turkic_is","css.properties.text-transform.uppercase","css.properties.text-transform.uppercase_eszett"],"description":"The text-transform CSS property sets text case and capitalization.","description_html":"The <code>text-transform</code> CSS property sets text case and capitalization.","group":"text","name":"text-transform","spec":"https://drafts.csswg.org/css-text-4/#text-transform-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-underline-offset":{"compat_features":["css.properties.text-underline-offset","css.properties.text-underline-offset.auto","css.properties.text-underline-offset.percentage"],"description":"The text-underline-offset CSS property shifts underlines on text from the initial position by a given distance. The initial position is affected by the text-underline-position property.","description_html":"The <code>text-underline-offset</code> CSS property shifts underlines on text from the initial position by a given distance. The initial position is affected by the <code>text-underline-position</code> property.","group":"text","name":"text-underline-offset","spec":"https://drafts.csswg.org/css-text-decor-4/#underline-offset","status":{"baseline":"high","baseline_high_date":"2023-05-19","baseline_low_date":"2020-11-19","support":{"chrome":"87","chrome_android":"87","edge":"87","firefox":"70","firefox_android":"79","safari":"12.1","safari_ios":"12.2"}}},"text-underline-position":{"compat_features":["css.properties.text-underline-position","css.properties.text-underline-position.from-font","css.properties.text-underline-position.left","css.properties.text-underline-position.right","css.properties.text-underline-position.under"],"description":"The text-underline-position CSS property sets the position of underlines on text. For example, text-underline-position: under places the underline below the text, avoiding crossing descenders. The underline may be further adjusted by the text-underline-offset property.","description_html":"The <code>text-underline-position</code> CSS property sets the position of underlines on text. For example, <code>text-underline-position: under</code> places the underline below the text, avoiding crossing descenders. The underline may be further adjusted by the <code>text-underline-offset</code> property.","group":"text","name":"text-underline-position","spec":"https://drafts.csswg.org/css-text-decor-4/#text-underline-position-property","status":{"baseline":"high","baseline_high_date":"2023-01-28","baseline_low_date":"2020-07-28","support":{"chrome":"33","chrome_android":"33","edge":"12","firefox":"74","firefox_android":"79","safari":"12.1","safari_ios":"12.2"}}},"text-wrap":{"compat_features":["css.properties.text-wrap","css.properties.text-wrap.wrap"],"description":"The text-wrap CSS property sets how lines break in text that overflows the container. It is a shorthand for text-wrap-style and text-wrap-mode.","description_html":"The <code>text-wrap</code> CSS property sets how lines break in text that overflows the container. It is a shorthand for <code>text-wrap-style</code> and <code>text-wrap-mode</code>.","group":"text-wrap","name":"text-wrap","spec":"https://drafts.csswg.org/css-text-4/#text-wrap-shorthand","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-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":"text-wrap","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","text-wrap"],"name":"text-wrap-mode","spec":"https://drafts.csswg.org/css-text-4/#text-wrap-mode","status":{"baseline":"low","baseline_low_date":"2024-10-17","support":{"chrome":"130","chrome_android":"130","edge":"130","firefox":"124","firefox_android":"124","safari":"17.4","safari_ios":"17.4"}}},"text-wrap-nowrap":{"compat_features":["css.properties.text-wrap.nowrap"],"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":"text-wrap","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":"text-wrap","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"}}},"text-wrap-stable":{"compat_features":["css.properties.text-wrap.stable"],"description":"The text-wrap: stable CSS declaration wraps text using the default algorithm, but does not change wrapping on earlier lines while the text is being edited.","description_html":"The <code>text-wrap: stable</code> CSS declaration wraps text using the default algorithm, but does not change wrapping on earlier lines while the text is being edited.","group":"text-wrap","name":"text-wrap: stable","spec":"https://drafts.csswg.org/css-text-4/#valdef-text-wrap-style-stable","status":{"baseline":"low","baseline_low_date":"2024-10-17","support":{"chrome":"130","chrome_android":"130","edge":"130","firefox":"121","firefox_android":"121","safari":"17.5","safari_ios":"17.5"}}},"text-wrap-style":{"compat_features":["css.properties.text-wrap-style","css.properties.text-wrap-style.auto","css.properties.text-wrap-style.balance","css.properties.text-wrap-style.pretty","css.properties.text-wrap-style.stable"],"description":"The text-wrap-style CSS property sets how lines break in text that overflows the container. It can also be set with the text-wrap shorthand.","description_html":"The <code>text-wrap-style</code> CSS property sets how lines break in text that overflows the container. It can also be set with the <code>text-wrap</code> shorthand.","group":"text-wrap","name":"text-wrap-style","spec":"https://drafts.csswg.org/css-text-4/#text-wrap-style","status":{"baseline":false,"support":{"chrome":"130","chrome_android":"130","edge":"130"}}},"textarea":{"compat_features":["api.HTMLTextAreaElement","api.HTMLTextAreaElement.autocomplete","api.HTMLTextAreaElement.cols","api.HTMLTextAreaElement.defaultValue","api.HTMLTextAreaElement.disabled","api.HTMLTextAreaElement.form","api.HTMLTextAreaElement.labels","api.HTMLTextAreaElement.maxLength","api.HTMLTextAreaElement.minLength","api.HTMLTextAreaElement.name","api.HTMLTextAreaElement.placeholder","api.HTMLTextAreaElement.readOnly","api.HTMLTextAreaElement.required","api.HTMLTextAreaElement.rows","api.HTMLTextAreaElement.select","api.HTMLTextAreaElement.select_event","api.HTMLTextAreaElement.selectionDirection","api.HTMLTextAreaElement.selectionEnd","api.HTMLTextAreaElement.selectionStart","api.HTMLTextAreaElement.setRangeText","api.HTMLTextAreaElement.setSelectionRange","api.HTMLTextAreaElement.textLength","api.HTMLTextAreaElement.type","api.HTMLTextAreaElement.value","api.HTMLTextAreaElement.wrap","html.elements.textarea","html.elements.textarea.autocomplete","html.elements.textarea.cols","html.elements.textarea.disabled","html.elements.textarea.form","html.elements.textarea.maxlength","html.elements.textarea.minlength","html.elements.textarea.name","html.elements.textarea.placeholder","html.elements.textarea.placeholder.line_breaks","html.elements.textarea.readonly","html.elements.textarea.required","html.elements.textarea.rows","html.elements.textarea.spellcheck","html.elements.textarea.wrap","html.elements.textarea.wrap.hard"],"description":"The <textarea> element represents an editing control that allows users to enter multi-line, free-form, plain text.","description_html":"The <code>&#x3C;textarea></code> element represents an editing control that allows users to enter multi-line, free-form, plain text.","group":["forms","html-elements"],"name":"<textarea>","spec":"https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3"}}},"time":{"compat_features":["api.HTMLTimeElement","api.HTMLTimeElement.dateTime","html.elements.time","html.elements.time.datetime"],"description":"The <time> HTML element represents a time, such as a calendar date, clock time, or duration. It may include the datetime attribute to translate dates into machine-readable format.","description_html":"The <code>&#x3C;time></code> HTML element represents a time, such as a calendar date, clock time, or duration. It may include the <code>datetime</code> attribute to translate dates into machine-readable format.","group":"html-elements","name":"<time>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-time-element","status":{"baseline":"high","baseline_high_date":"2020-04-24","baseline_low_date":"2017-10-24","support":{"chrome":"62","chrome_android":"62","edge":"14","firefox":"22","firefox_android":"22","safari":"10","safari_ios":"10"}}},"time-relative-selectors":{"compat_features":["css.selectors.future","css.selectors.past"],"description":"The :future and :past CSS pseudo-classes match upcoming or prior elements during media playback.","description_html":"The <code>:future</code> and <code>:past</code> CSS pseudo-classes match upcoming or prior elements during media playback.","group":"selectors","name":"Time-relative pseudo-selectors","spec":"https://drafts.csswg.org/selectors-4/#time-pseudos","status":{"baseline":false,"support":{"chrome":"23","chrome_android":"25","edge":"79","safari":"7","safari_ios":"7"}}},"title":{"compat_features":["api.HTMLTitleElement","api.HTMLTitleElement.text","html.elements.title"],"description":"The <title> element sets the title of the document and exposes it to users via the UI of the browser or app they're using and through assistive technology.","description_html":"The <code>&#x3C;title></code> element sets the title of the document and exposes it to users via the UI of the browser or app they're using and through assistive technology.","group":"html-elements","name":"<title>","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-title-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"title-attr":{"compat_features":["api.HTMLElement.title","html.global_attributes.title","html.global_attributes.title.multi-line_titles"],"description":"The title global HTML attribute sets information about an element, such as a name or description. The value is typically shown as a tooltip that appears on mouse over. Since it's not often available to touch-only, keyboard-only, or assistive technology users, it's not a substitute for other text.","description_html":"The <code>title</code> global HTML attribute sets information about an element, such as a name or description. The value is typically shown as a tooltip that appears on mouse over. Since it's not often available to touch-only, keyboard-only, or assistive technology users, it's not a substitute for other text.","name":"title (attribute)","spec":"https://html.spec.whatwg.org/multipage/dom.html#attr-title","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"}}},"top-level-await":{"compat_features":["javascript.operators.await.top_level"],"description":"The await keyword, when used at the top level of a module (outside of an async function), delays parent module execution until after a promise fulfills.","description_html":"The <code>await</code> keyword, when used at the top level of a module (outside of an async function), delays parent module execution until after a promise fulfills.","group":"javascript","name":"Top-level await","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-async-function-definitions","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"89","chrome_android":"89","edge":"89","firefox":"89","firefox_android":"89","safari":"15","safari_ios":"15"}}},"touch-action":{"caniuse":"css-touch-action","compat_features":["css.properties.touch-action","css.properties.touch-action.manipulation","css.properties.touch-action.none","css.properties.touch-action.pan-down","css.properties.touch-action.pan-left","css.properties.touch-action.pan-right","css.properties.touch-action.pan-up","css.properties.touch-action.pan-x","css.properties.touch-action.pan-y","css.properties.touch-action.pinch-zoom"],"description":"The touch-action CSS property sets whether an element on a touch screen can be panned or pinched to zoom.","description_html":"The <code>touch-action</code> CSS property sets whether an element on a touch screen can be panned or pinched to zoom.","name":"touch-action","spec":["https://w3c.github.io/pointerevents/#the-touch-action-css-property","https://compat.spec.whatwg.org/#touch-action"],"status":{"baseline":"high","baseline_high_date":"2022-03-19","baseline_low_date":"2019-09-19","support":{"chrome":"36","chrome_android":"36","edge":"12","firefox":"52","firefox_android":"52","safari":"13","safari_ios":"9.3"}}},"touch-events":{"caniuse":"touch","compat_features":["api.Element.touchcancel_event","api.Element.touchend_event","api.Element.touchmove_event","api.Element.touchstart_event","api.Touch","api.Touch.Touch","api.Touch.altitudeAngle","api.Touch.azimuthAngle","api.Touch.clientX","api.Touch.clientY","api.Touch.force","api.Touch.identifier","api.Touch.pageX","api.Touch.pageY","api.Touch.radiusX","api.Touch.radiusY","api.Touch.rotationAngle","api.Touch.screenX","api.Touch.screenY","api.Touch.target","api.Touch.touchType","api.TouchEvent","api.TouchEvent.TouchEvent","api.TouchEvent.altKey","api.TouchEvent.changedTouches","api.TouchEvent.ctrlKey","api.TouchEvent.metaKey","api.TouchEvent.shiftKey","api.TouchEvent.targetTouches","api.TouchEvent.touches","api.TouchList","api.TouchList.item","api.TouchList.length"],"description":"Touch events touchstart, touchmove, touchend, and touchcancel fire when users interact with a touch-sensitive surface, such as a screen or drawing tablet. These events are similar to mouse events.","description_html":"Touch events <code>touchstart</code>, <code>touchmove</code>, <code>touchend</code>, and <code>touchcancel</code> fire when users interact with a touch-sensitive surface, such as a screen or drawing tablet. These events are similar to mouse events.","name":"Touch events","spec":"https://w3c.github.io/touch-events/","status":{"baseline":false,"support":{"chrome":"22","chrome_android":"25","edge":"12","firefox":"52","firefox_android":"6","safari_ios":"≤3"}}},"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"}}},"transform-box":{"compat_features":["css.properties.transform-box","css.properties.transform-box.border-box","css.properties.transform-box.content-box","css.properties.transform-box.fill-box","css.properties.transform-box.stroke-box","css.properties.transform-box.view-box"],"description":"The transform-box CSS property sets the position and dimensions of the reference box relative to which an element's transformations are calculated.","description_html":"The <code>transform-box</code> CSS property sets the position and dimensions of the reference box relative to which an element's transformations are calculated.","name":"transform-box","spec":"https://drafts.csswg.org/css-transforms-1/#transform-box","status":{"baseline":"low","baseline_low_date":"2024-04-16","support":{"chrome":"118","chrome_android":"118","edge":"118","firefox":"125","firefox_android":"125","safari":"13.1","safari_ios":"13.4"}}},"transforms2d":{"caniuse":"transforms2d","compat_features":["css.properties.transform","css.properties.transform-origin","css.properties.transform-origin.bottom","css.properties.transform-origin.center","css.properties.transform-origin.left","css.properties.transform-origin.right","css.properties.transform-origin.three_value_syntax","css.properties.transform-origin.top","css.types.angle","css.types.angle-percentage","css.types.angle.deg","css.types.angle.grad","css.types.angle.rad","css.types.angle.turn","css.types.position","css.types.position.four_value_syntax","css.types.position.keyword_value_syntax","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.perspective.none","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","css.properties.transition.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":"transitions","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"}}},"transitions":{"caniuse":"css-transitions","compat_features":["api.CSSTransition","api.CSSTransition.transitionProperty","api.Element.transitioncancel_event","api.Element.transitionend_event","api.Element.transitionrun_event","api.Element.transitionstart_event","api.TransitionEvent","api.TransitionEvent.TransitionEvent","api.TransitionEvent.elapsedTime","api.TransitionEvent.propertyName","api.TransitionEvent.pseudoElement","css.properties.transition","css.properties.transition-delay","css.properties.transition-duration","css.properties.transition-property","css.properties.transition-property.IDENT_value","css.properties.transition-property.all","css.properties.transition-property.none","css.properties.transition-timing-function","css.properties.transition-timing-function.jump","css.properties.transition.gradients_can_animate"],"description":"The transition shorthand CSS property sets how changes to an element's styles may occur over time. Transitions can be applied to specific CSS properties, all properties, or none.","description_html":"The <code>transition</code> shorthand CSS property sets how changes to an element's styles may occur over time. Transitions can be applied to specific CSS properties, all properties, or none.","group":"transitions","name":"Transitions (CSS)","spec":"https://drafts.csswg.org/css-transitions-2/","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"16","firefox_android":"16","safari":"9","safari_ios":"9"}}},"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.Element.innerHTML.accepts_TrustedHTML","api.HTMLElement.innerText.scripts_accept_TrustedScript","api.HTMLScriptElement.src.accepts_TrustedScriptURL","api.HTMLScriptElement.text.accepts_TrustedScript","api.Node.textContent.scripts_accept_TrustedScript","api.ShadowRoot.innerHTML.accepts_TrustedHTML","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.setInterval.code_param_accepts_trustedScript","api.setTimeout.code_param_accepts_trustedScript","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.","group":"security","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.ArrayBuffer","javascript.builtins.ArrayBuffer.@@species","javascript.builtins.ArrayBuffer.ArrayBuffer","javascript.builtins.ArrayBuffer.byteLength","javascript.builtins.ArrayBuffer.isView","javascript.builtins.ArrayBuffer.slice","javascript.builtins.DataView","javascript.builtins.DataView.DataView","javascript.builtins.DataView.buffer","javascript.builtins.DataView.byteLength","javascript.builtins.DataView.byteOffset","javascript.builtins.DataView.getFloat32","javascript.builtins.DataView.getFloat64","javascript.builtins.DataView.getInt16","javascript.builtins.DataView.getInt32","javascript.builtins.DataView.getInt8","javascript.builtins.DataView.getUint16","javascript.builtins.DataView.getUint32","javascript.builtins.DataView.getUint8","javascript.builtins.DataView.setFloat32","javascript.builtins.DataView.setFloat64","javascript.builtins.DataView.setInt16","javascript.builtins.DataView.setInt32","javascript.builtins.DataView.setInt8","javascript.builtins.DataView.setUint16","javascript.builtins.DataView.setUint32","javascript.builtins.DataView.setUint8","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.Int16Array.Int16Array.iterable_allowed","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.@@species","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.index_properties_not_consulting_prototype","javascript.builtins.TypedArray.iterable_in_constructor","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.constructor_without_parameters","javascript.builtins.Uint8ClampedArray.Uint8ClampedArray.iterable_allowed"],"description":"Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.","description_html":"Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.","group":"typed-arrays","name":"Typed arrays (initial support)","snapshot":"ecmascript-2015","spec":["https://tc39.es/ecma262/multipage/indexed-collections.html#table-49","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-constructors","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray-objects","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-typedarray.bytes_per_element","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.buffer","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.bytelength","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.byteoffset","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.join","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-get-%25typedarray%25.prototype.length","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-properties-of-the-typedarray-constructors","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.reverse","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.set","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.slice","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.sort","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.subarray","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tolocalestring","https://tc39.es/ecma262/multipage/indexed-collections.html#sec-%25typedarray%25.prototype.tostring"],"status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"7","chrome_android":"18","edge":"12","firefox":"4","firefox_android":"4","safari":"5.1","safari_ios":"4.2"}}},"u":{"compat_features":["html.elements.u"],"description":"The <u> HTML element makes non-textual annotations, styling text as underlined by default.","description_html":"The <code>&#x3C;u></code> HTML element makes non-textual annotations, styling text as underlined by default.","group":"html-elements","name":"<u>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-u-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"1","safari_ios":"1"}}},"ua-client-hints":{"compat_features":["api.Navigator.userAgentData","api.Navigator.userAgentData.secure_context_required","api.NavigatorUAData","api.NavigatorUAData.brands","api.NavigatorUAData.getHighEntropyValues","api.NavigatorUAData.mobile","api.NavigatorUAData.platform","api.NavigatorUAData.toJSON","api.WorkerNavigator.userAgentData","http.headers.Accept-CH.Sec-CH-UA","http.headers.Accept-CH.Sec-CH-UA-Arch","http.headers.Accept-CH.Sec-CH-UA-Full-Version","http.headers.Accept-CH.Sec-CH-UA-Mobile","http.headers.Accept-CH.Sec-CH-UA-Model","http.headers.Accept-CH.Sec-CH-UA-Platform","http.headers.Accept-CH.Sec-CH-UA-Platform-Version","http.headers.Sec-CH-UA","http.headers.Sec-CH-UA-Arch","http.headers.Sec-CH-UA-Bitness","http.headers.Sec-CH-UA-Full-Version-List","http.headers.Sec-CH-UA-Mobile","http.headers.Sec-CH-UA-Model","http.headers.Sec-CH-UA-Platform","http.headers.Sec-CH-UA-Platform-Version"],"description":"The Sec-CH-UA HTTP request header and the navigator.userAgentData API expose browser and platform information used to vary responses and application logic. User agent client hints are similar to user agent strings but more privacy-preserving and safer to parse.","description_html":"The <code>Sec-CH-UA</code> HTTP request header and the <code>navigator.userAgentData</code> API expose browser and platform information used to vary responses and application logic. User agent client hints are similar to user agent strings but more privacy-preserving and safer to parse.","name":"User agent client hints","spec":"https://wicg.github.io/ua-client-hints/","status":{"baseline":false,"support":{"chrome":"98","chrome_android":"98","edge":"98"}}},"uint8array-base64-hex":{"compat_features":["javascript.builtins.Uint8Array.fromBase64","javascript.builtins.Uint8Array.fromHex","javascript.builtins.Uint8Array.setFromBase64","javascript.builtins.Uint8Array.setFromHex","javascript.builtins.Uint8Array.toBase64","javascript.builtins.Uint8Array.toHex"],"description":"The Uint8Array object methods fromBase64(), toBase64(), and setFromBase64() convert to and from base64 strings. The fromHex(), toHex(), and setFromHex() methods convert to and from hex strings.","description_html":"The <code>Uint8Array</code> object methods <code>fromBase64()</code>, <code>toBase64()</code>, and <code>setFromBase64()</code> convert to and from base64 strings. The <code>fromHex()</code>, <code>toHex()</code>, and <code>setFromHex()</code> methods convert to and from hex strings.","group":"typed-arrays","name":"Uint8Array base64 and hex conversion","spec":"https://tc39.es/proposal-arraybuffer-base64/spec/","status":{"baseline":false,"support":{"firefox":"133","firefox_android":"133","safari":"18.2","safari_ios":"18.2"}}},"unicode-point-escapes":{"compat_features":["javascript.grammar.unicode_point_escapes"],"description":"Unicode point escapes (\\\\u{}) represent Unicode characters within strings.","description_html":"Unicode point escapes (<code>\\\\u{}</code>) represent Unicode characters within strings.","group":"javascript","name":"Unicode point escapes","snapshot":"ecmascript-2015","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#prod-UnicodeEscapeSequence","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"44","chrome_android":"44","edge":"12","firefox":"40","firefox_android":"40","safari":"9","safari_ios":"9"}}},"unset-value":{"caniuse":"css-unset-value","compat_features":["css.types.global_keywords.unset"],"description":"The unset keyword resets any CSS property, removing any values previously set by the author, user, or browser. Inherited properties (like color) reset to the parent element's computed value. Non-inherited properties (like display) reset to the specified initial value (inline).","description_html":"The <code>unset</code> keyword resets any CSS property, removing any values previously set by the author, user, or browser. Inherited properties (like <code>color</code>) reset to the parent element's computed value. Non-inherited properties (like <code>display</code>) reset to the specified initial value (<code>inline</code>).","group":"explicit-defaults","name":"unset","spec":"https://drafts.csswg.org/css-cascade-3/#inherit-initial","status":{"baseline":"high","baseline_high_date":"2018-09-21","baseline_low_date":"2016-03-21","support":{"chrome":"41","chrome_android":"41","edge":"13","firefox":"27","firefox_android":"27","safari":"9.1","safari_ios":"9.3"}}},"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"}}},"upgrade-insecure-requests":{"compat_features":["http.headers.Content-Security-Policy.upgrade-insecure-requests","http.headers.Upgrade-Insecure-Requests"],"description":"The Upgrade-Insecure-Requests HTTP request header tells the server that the response should redirect to a secure (HTTPS) resource.","description_html":"The <code>Upgrade-Insecure-Requests</code> HTTP request header tells the server that the response should redirect to a secure (HTTPS) resource.","group":"security","name":"Upgrade insecure requests","spec":"https://w3c.github.io/webappsec-upgrade-insecure-requests/","status":{"baseline":"high","baseline_high_date":"2020-10-30","baseline_low_date":"2018-04-30","support":{"chrome":"44","chrome_android":"44","edge":"17","firefox":"48","firefox_android":"48","safari":"10.1","safari_ios":"10.3"}}},"url":{"caniuse":"url","compat_features":["api.URL","api.URL.URL","api.URL.hash","api.URL.host","api.URL.hostname","api.URL.href","api.URL.origin","api.URL.parse_static","api.URL.password","api.URL.pathname","api.URL.port","api.URL.protocol","api.URL.search","api.URL.searchParams","api.URL.toJSON","api.URL.toString","api.URL.username","api.URLSearchParams","api.URLSearchParams.@@iterator","api.URLSearchParams.URLSearchParams","api.URLSearchParams.URLSearchParams.USVString","api.URLSearchParams.URLSearchParams.record","api.URLSearchParams.URLSearchParams.sequence","api.URLSearchParams.append","api.URLSearchParams.delete","api.URLSearchParams.delete.value_parameter","api.URLSearchParams.entries","api.URLSearchParams.forEach","api.URLSearchParams.get","api.URLSearchParams.getAll","api.URLSearchParams.has","api.URLSearchParams.has.value_parameter","api.URLSearchParams.keys","api.URLSearchParams.set","api.URLSearchParams.size","api.URLSearchParams.sort","api.URLSearchParams.toString","api.URLSearchParams.values"],"description":"A URL object represents a web address, like https://example.com/, and parts of the address, such as the domain, path, and query string (as URLSearchParams).","description_html":"A <code>URL</code> object represents a web address, like <code>https://example.com/</code>, and parts of the address, such as the domain, path, and query string (as <code>URLSearchParams</code>).","name":"URL","spec":"https://url.spec.whatwg.org/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"32","chrome_android":"32","edge":"12","firefox":"19","firefox_android":"19","safari":"7","safari_ios":"7"}}},"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-action-pseudos":{"compat_features":["css.selectors.active","css.selectors.active.non_a_elements","css.selectors.focus","css.selectors.hover"],"description":"The :active, :focus, and :hover CSS pseudo-classes match elements based on how users are interacting with them.","description_html":"The <code>:active</code>, <code>:focus</code>, and <code>:hover</code> CSS pseudo-classes match elements based on how users are interacting with them.","group":"selectors","name":"User action pseudo-classes","spec":["https://drafts.csswg.org/selectors-4/#the-hover-pseudo","https://drafts.csswg.org/selectors-4/#the-active-pseudo","https://drafts.csswg.org/selectors-4/#the-focus-pseudo"],"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"}}},"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.","group":"security","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-agent-sniffing":{"compat_features":["api.Navigator.userAgent","api.WorkerNavigator.userAgent"],"description":"The navigator.userAgent read-only property returns the user agent string for the current browser. Selectively showing content based on the user agent string is unreliable. Consider using feature detection instead.","description_html":"The <code>navigator.userAgent</code> read-only property returns the user agent string for the current browser. Selectively showing content based on the user agent string is unreliable. Consider using feature detection instead.","name":"User agent sniffing","spec":"https://html.spec.whatwg.org/multipage/system-state.html#the-navigator-object","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":"4","safari_ios":"5"}}},"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>&#x3C;var></code> element represents the name of a variable in a mathematical expression or a programming context.","group":"html-elements","name":"<var>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-var-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"≤4","safari_ios":"≤3.2"}}},"vertical-align":{"compat_features":["css.properties.vertical-align","css.properties.vertical-align.baseline","css.properties.vertical-align.bottom","css.properties.vertical-align.middle","css.properties.vertical-align.sub","css.properties.vertical-align.super","css.properties.vertical-align.text-bottom","css.properties.vertical-align.text-top","css.properties.vertical-align.top"],"description":"The vertical-align CSS property sets the vertical alignment of inline, inline-block, and table cell elements. It has no effect on block-level elements.","description_html":"The <code>vertical-align</code> CSS property sets the vertical alignment of inline, inline-block, and table cell elements. It has no effect on block-level elements.","group":"css","name":"vertical-align","spec":"https://drafts.csswg.org/css2/#propdef-vertical-align","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"}}},"vertical-form-controls":{"compat_features":["css.properties.direction.vertical_slider_direction","css.properties.writing-mode.vertical_oriented_form_controls"],"description":"The writing-mode CSS property orients form elements (such as radio buttons, progress bars, or select menus) vertically when the writing mode is vertical-lr or vertical-rl. The direction CSS property sets whether inputs flow from top to bottom or bottom to top.","description_html":"The <code>writing-mode</code> CSS property orients form elements (such as radio buttons, progress bars, or select menus) vertically when the writing mode is <code>vertical-lr</code> or <code>vertical-rl</code>. The <code>direction</code> CSS property sets whether inputs flow from top to bottom or bottom to top.","group":"css","name":"Vertical form controls","spec":"https://drafts.csswg.org/css-writing-modes-4/#vertical-modes","status":{"baseline":"low","baseline_low_date":"2024-04-18","support":{"chrome":"124","chrome_android":"124","edge":"124","firefox":"120","firefox_android":"120","safari":"17.4","safari_ios":"17.4"}}},"vibration":{"compat_features":["api.Navigator.vibrate"],"description":"The navigator.vibrate() method makes a tactile alert, if the device is equipped with a haptic motor.","description_html":"The <code>navigator.vibrate()</code> method makes a tactile alert, if the device is equipped with a haptic motor.","name":"Vibration","spec":"https://w3c.github.io/vibration/","status":{"baseline":false,"support":{"chrome":"32","chrome_android":"32","edge":"79"}}},"video":{"caniuse":"video","compat_features":["api.HTMLMediaElement","api.HTMLMediaElement.abort_event","api.HTMLMediaElement.autoplay","api.HTMLMediaElement.buffered","api.HTMLMediaElement.canPlayType","api.HTMLMediaElement.canplay_event","api.HTMLMediaElement.canplaythrough_event","api.HTMLMediaElement.controls","api.HTMLMediaElement.crossOrigin","api.HTMLMediaElement.currentSrc","api.HTMLMediaElement.currentTime","api.HTMLMediaElement.defaultMuted","api.HTMLMediaElement.defaultPlaybackRate","api.HTMLMediaElement.duration","api.HTMLMediaElement.durationchange_event","api.HTMLMediaElement.emptied_event","api.HTMLMediaElement.ended","api.HTMLMediaElement.ended_event","api.HTMLMediaElement.error","api.HTMLMediaElement.error_event","api.HTMLMediaElement.load","api.HTMLMediaElement.loadeddata_event","api.HTMLMediaElement.loadedmetadata_event","api.HTMLMediaElement.loadstart_event","api.HTMLMediaElement.loop","api.HTMLMediaElement.muted","api.HTMLMediaElement.networkState","api.HTMLMediaElement.pause","api.HTMLMediaElement.pause_event","api.HTMLMediaElement.paused","api.HTMLMediaElement.play","api.HTMLMediaElement.play.returns_promise","api.HTMLMediaElement.play_event","api.HTMLMediaElement.playbackRate","api.HTMLMediaElement.played","api.HTMLMediaElement.playing_event","api.HTMLMediaElement.preload","api.HTMLMediaElement.progress_event","api.HTMLMediaElement.ratechange_event","api.HTMLMediaElement.readyState","api.HTMLMediaElement.seekable","api.HTMLMediaElement.seeked_event","api.HTMLMediaElement.seeking","api.HTMLMediaElement.seeking_event","api.HTMLMediaElement.src","api.HTMLMediaElement.stalled_event","api.HTMLMediaElement.suspend_event","api.HTMLMediaElement.timeupdate_event","api.HTMLMediaElement.volume","api.HTMLMediaElement.volumechange_event","api.HTMLMediaElement.waiting_event","api.HTMLVideoElement","api.HTMLVideoElement.height","api.HTMLVideoElement.poster","api.HTMLVideoElement.resize_event","api.HTMLVideoElement.videoHeight","api.HTMLVideoElement.videoWidth","api.HTMLVideoElement.width","html.elements.video","html.elements.video.autoplay","html.elements.video.controls","html.elements.video.crossorigin","html.elements.video.height","html.elements.video.loop","html.elements.video.muted","html.elements.video.poster","html.elements.video.preload","html.elements.video.src","html.elements.video.width"],"description":"The <video> element plays videos or movies, optionally with controls provided by the browser.","description_html":"The <code>&#x3C;video></code> element plays videos or movies, optionally with controls provided by the browser.","group":["media-elements","html-elements"],"name":"<video>","spec":"https://html.spec.whatwg.org/multipage/media.html#video","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"3","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"3.1","safari_ios":"3"}}},"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-transition-class":{"compat_features":["css.properties.view-transition-class","css.properties.view-transition-class.none"],"description":"The view-transition-class CSS property sets a name that can be used to apply styles to multiple named view transition pseudo-elements.","description_html":"The <code>view-transition-class</code> CSS property sets a name that can be used to apply styles to multiple named view transition pseudo-elements.","group":"view-transitions","name":"view-transition-class","spec":"https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-class","status":{"baseline":false,"support":{"chrome":"125","chrome_android":"125","edge":"125","safari":"18.2","safari_ios":"18.2"}}},"view-transitions":{"caniuse":"view-transitions","compat_features":["api.Document.startViewTransition","api.PageRevealEvent","api.PageRevealEvent.PageRevealEvent","api.PageRevealEvent.viewTransition","api.PageSwapEvent","api.PageSwapEvent.PageSwapEvent","api.PageSwapEvent.activation","api.PageSwapEvent.viewTransition","api.ViewTransition","api.ViewTransition.finished","api.ViewTransition.ready","api.ViewTransition.skipTransition","api.ViewTransition.updateCallbackDone","api.Window.pagereveal_event","api.Window.pageswap_event","css.properties.view-transition-name","css.properties.view-transition-name.none","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.","description_html":"View transitions allow you to create animated visual transitions between different states of a document.","group":"view-transitions","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"}}},"virtual-keyboard":{"compat_features":["api.HTMLElement.virtualKeyboardPolicy","api.Navigator.virtualKeyboard","api.VirtualKeyboard","api.VirtualKeyboard.boundingRect","api.VirtualKeyboard.geometrychange_event","api.VirtualKeyboard.hide","api.VirtualKeyboard.overlaysContent","api.VirtualKeyboard.show","html.global_attributes.virtualkeyboardpolicy"],"description":"The navigator.virtualKeyboard API inspects and controls on-screen virtual keyboards. You can use it to programmatically hide or show a virtual keyboard or respond to the keyboard disappearing or appearing.","description_html":"The <code>navigator.virtualKeyboard</code> API inspects and controls on-screen virtual keyboards. You can use it to programmatically hide or show a virtual keyboard or respond to the keyboard disappearing or appearing.","name":"Virtual keyboard","spec":"https://w3c.github.io/virtual-keyboard/","status":{"baseline":false,"support":{"chrome":"94","chrome_android":"94","edge":"94"}}},"virtual-pressure-sources":{"compat_features":["webdriver.commands.CreateVirtualPressureSource","webdriver.commands.DeleteVirtualPressureSource","webdriver.commands.UpdateVirtualPressureSource"],"description":"The CreateVirtualPressureSource WebDriver command creates artificial sources of compute pressure for testing without the need real device sources of compute pressure.","description_html":"The <code>CreateVirtualPressureSource</code> WebDriver command creates artificial sources of compute pressure for testing without the need real device sources of compute pressure.","group":["compute-pressure","webdriver"],"name":"Virtual pressure sources","spec":"https://w3c.github.io/compute-pressure/","status":{"baseline":false,"support":{"chrome":"129","chrome_android":"129","edge":"129"}}},"virtual-sensors":{"compat_features":["webdriver.commands.CreateVirtualSensor","webdriver.commands.DeleteVirtualSensor","webdriver.commands.GetVirtualSensorInformation","webdriver.commands.UpdateVirtualSensorReading"],"description":"The CreateVirtualSensor WebDriver command creates a virtual sensor for testing applications that use sensor APIs, without the need for real device sensors.","description_html":"The <code>CreateVirtualSensor</code> WebDriver command creates a virtual sensor for testing applications that use sensor APIs, without the need for real device sensors.","group":["sensors","webdriver"],"name":"Virtual sensors","spec":"https://w3c.github.io/sensors/#automation","status":{"baseline":false,"support":{"chrome":"120","chrome_android":"120","edge":"120"}}},"visibility":{"compat_features":["css.properties.visibility","css.properties.visibility.collapse","css.properties.visibility.hidden","css.properties.visibility.visible"],"description":"The visibility CSS property sets whether an element is shown. Invisible elements still affect the document layout.","description_html":"The <code>visibility</code> CSS property sets whether an element is shown. Invisible elements still affect the document layout.","group":"css","name":"visibility","spec":"https://drafts.csswg.org/css-display-3/#visibility","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.3","safari_ios":"1"}}},"visual-viewport":{"compat_features":["api.VisualViewport","api.VisualViewport.height","api.VisualViewport.offsetLeft","api.VisualViewport.offsetTop","api.VisualViewport.pageLeft","api.VisualViewport.pageTop","api.VisualViewport.resize_event","api.VisualViewport.scale","api.VisualViewport.scroll_event","api.VisualViewport.scrollend_event","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":{"caniuse":"wasm","compat_features":["webassembly.api","webassembly.api.CompileError","webassembly.api.CompileError.CompileError","webassembly.api.Global","webassembly.api.Global.Global","webassembly.api.Global.value","webassembly.api.Global.valueOf","webassembly.api.Instance","webassembly.api.Instance.Instance","webassembly.api.Instance.exports","webassembly.api.LinkError","webassembly.api.LinkError.LinkError","webassembly.api.Memory","webassembly.api.Memory.Memory","webassembly.api.Memory.buffer","webassembly.api.Memory.grow","webassembly.api.Module","webassembly.api.Module.Module","webassembly.api.Module.customSections_static","webassembly.api.Module.exports_static","webassembly.api.Module.imports_static","webassembly.api.RuntimeError","webassembly.api.RuntimeError.RuntimeError","webassembly.api.Table","webassembly.api.Table.Table","webassembly.api.Table.get","webassembly.api.Table.grow","webassembly.api.Table.length","webassembly.api.Table.set","webassembly.api.compileStreaming_static","webassembly.api.compile_static","webassembly.api.instantiateStreaming_static","webassembly.api.instantiate_static","webassembly.api.validate_static"],"description":"The WebAssembly.instantiate() and WebAssembly.instantiateStreaming() global static methods load WebAssembly code (also known as Wasm), a portable binary instruction format.","description_html":"The <code>WebAssembly.instantiate()</code> and <code>WebAssembly.instantiateStreaming()</code> global static methods load WebAssembly code (also known as Wasm), a portable binary instruction format.","group":"webassembly","name":"WebAssembly","spec":"https://webassembly.github.io/gc/core/bikeshed/","status":{"baseline":"high","baseline_high_date":"2020-04-17","baseline_low_date":"2017-10-17","support":{"chrome":"57","chrome_android":"57","edge":"16","firefox":"52","firefox_android":"52","safari":"11","safari_ios":"11"}}},"wasm-bigint":{"caniuse":"wasm-bigint","compat_features":["webassembly.BigInt-to-i64-integration"],"description":"Integer values pass bidirectionally between JavaScript and WebAssembly, converted to i64 values in WebAssembly or BigInt values in JavaScript.","description_html":"Integer values pass bidirectionally between JavaScript and WebAssembly, converted to i64 values in WebAssembly or BigInt values in JavaScript.","group":"webassembly","name":"BigInt to i64 conversion (WebAssembly)","spec":"https://webassembly.github.io/spec/js-api/#ref-for-syntax-numtype①⓪","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"85","chrome_android":"85","edge":"85","firefox":"78","firefox_android":"79","safari":"14.1","safari_ios":"14.5"}}},"wasm-bulk-memory":{"caniuse":"wasm-bulk-memory","compat_features":["webassembly.bulk-memory-operations"],"description":"Bulk memory operations, such as copy and init, mirror the efficiency of native memcpy and memmove operations.","description_html":"Bulk memory operations, such as <code>copy</code> and <code>init</code>, mirror the efficiency of native <code>memcpy</code> and <code>memmove</code> operations.","group":"webassembly","name":"Bulk memory operations (WebAssembly)","spec":"https://github.com/WebAssembly/spec/blob/main/proposals/bulk-memory-operations/Overview.md","status":{"baseline":"high","baseline_high_date":"2024-04-25","baseline_low_date":"2021-10-25","support":{"chrome":"75","chrome_android":"75","edge":"79","firefox":"78","firefox_android":"79","safari":"15.1","safari_ios":"15.1"}}},"wasm-exception-handling":{"compat_features":["webassembly.api.Exception","webassembly.api.Exception.Exception","webassembly.api.Exception.Exception.options_parameter_traceStack","webassembly.api.Exception.getArg","webassembly.api.Exception.is","webassembly.api.Exception.stack","webassembly.api.Tag","webassembly.api.Tag.Tag","webassembly.api.Tag.type","webassembly.exception-handling"],"description":"Exceptions break the normal control flow of execution to represent exceptional behavior, such as an error. You can respond to the exception in JavaScript code.","description_html":"Exceptions break the normal control flow of execution to represent exceptional behavior, such as an error. You can respond to the exception in JavaScript code.","group":"webassembly","name":"Exception handling (WebAssembly)","spec":"https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/legacy/Exceptions.md","status":{"baseline":"high","baseline_high_date":"2024-11-03","baseline_low_date":"2022-05-03","support":{"chrome":"95","chrome_android":"95","edge":"95","firefox":"100","firefox_android":"100","safari":"15.2","safari_ios":"15.2"}}},"wasm-exnref-exceptions":{"compat_features":["webassembly.exceptionsFinal"],"description":"When caught, an exception is reified into an exception reference, a value of the new type exnref.","description_html":"When caught, an exception is reified into an exception reference, a value of the new type <code>exnref</code>.","group":"webassembly","name":"Exception references with exnref (WebAssembly)","spec":"https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/Exceptions.md","status":{"baseline":false,"support":{"firefox":"131","firefox_android":"131"}}},"wasm-extended-constant-expressions":{"compat_features":["webassembly.extended-constant-expressions"],"description":"The i32.add, i32.sub, i32.mul, i64.add, i64.sub, and i64.mul operations extend constant expressions to include arithmetic.","description_html":"The <code>i32.add</code>, <code>i32.sub</code>, <code>i32.mul</code>, <code>i64.add</code>, <code>i64.sub</code>, and <code>i64.mul</code> operations extend constant expressions to include arithmetic.","group":"webassembly","name":"Extended constant expressions (WebAssembly)","spec":"https://github.com/WebAssembly/extended-const/blob/main/proposals/extended-const/Overview.md","status":{"baseline":"low","baseline_low_date":"2024-03-05","support":{"chrome":"114","chrome_android":"114","edge":"114","firefox":"112","firefox_android":"112","safari":"17.4","safari_ios":"17.4"}}},"wasm-garbage-collection":{"compat_features":["webassembly.garbage-collection"],"description":"Garbage collection tracks references for better memory management with garbage-collected languages running in WebAssmbly.","description_html":"Garbage collection tracks references for better memory management with garbage-collected languages running in WebAssmbly.","group":"webassembly","name":"Garbage collection (WebAssembly)","spec":"https://webassembly.github.io/gc/core/bikeshed/#garbage-collection①","status":{"baseline":"low","baseline_low_date":"2024-12-11","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"120","firefox_android":"120","safari":"18.2","safari_ios":"18.2"}}},"wasm-memory64":{"compat_features":["webassembly.memory64"],"description":"Instructions accept 64-bit memory indexes.","description_html":"Instructions accept 64-bit memory indexes.","group":"webassembly","name":"Memory64 (WebAssembly)","spec":"https://github.com/WebAssembly/memory64/blob/main/proposals/memory64/Overview.md","status":{"baseline":false,"support":{"chrome":"133","chrome_android":"133","edge":"133","firefox":"134","firefox_android":"134"}}},"wasm-multi-memory":{"compat_features":["webassembly.multiMemory"],"description":"A single module in WebAssembly can have multiple memories.","description_html":"A single module in WebAssembly can have multiple memories.","group":"webassembly","name":"Multi-memory (WebAssembly)","spec":"https://github.com/WebAssembly/multi-memory/blob/main/proposals/multi-memory/Overview.md","status":{"baseline":false,"support":{"chrome":"120","chrome_android":"120","edge":"120","firefox":"125","firefox_android":"125"}}},"wasm-multi-value":{"caniuse":"wasm-multi-value","compat_features":["webassembly.multi-value"],"description":"Instructions and blocks can produce multiple result values.","description_html":"Instructions and blocks can produce multiple result values.","group":"webassembly","name":"Multi-value (WebAssembly)","spec":"https://github.com/WebAssembly/spec/blob/main/proposals/multi-value/Overview.md","status":{"baseline":"high","baseline_high_date":"2023-04-20","baseline_low_date":"2020-10-20","support":{"chrome":"86","chrome_android":"86","edge":"86","firefox":"78","firefox_android":"79","safari":"≤13.1","safari_ios":"≤13.4"}}},"wasm-mutable-globals":{"caniuse":"wasm-mutable-globals","compat_features":["webassembly.mutable-globals"],"description":"Mutable global variables are importable and exportable.","description_html":"Mutable global variables are importable and exportable.","group":"webassembly","name":"Import and export of mutable globals (WebAssembly)","spec":"https://webassembly.github.io/spec/js-api/#dom-globaldescriptor-mutable","status":{"baseline":"high","baseline_high_date":"≤2022-09-24","baseline_low_date":"≤2020-03-24","support":{"chrome":"69","chrome_android":"69","edge":"79","firefox":"62","firefox_android":"62","safari":"≤13.1","safari_ios":"≤13.4"}}},"wasm-non-trapping-float-to-int":{"caniuse":"wasm-nontrapping-fptoint","compat_features":["webassembly.non-trapping-float-to-int-conversions"],"description":"Saturating floating-point to integer conversion operators return the maximum or minimum integer value on overflow instead of trapping.","description_html":"Saturating floating-point to integer conversion operators return the maximum or minimum integer value on overflow instead of trapping.","group":"webassembly","name":"Non-trapping float-to-int conversion (WebAssembly)","spec":"https://github.com/WebAssembly/spec/blob/main/proposals/nontrapping-float-to-int-conversion/Overview.md","status":{"baseline":"high","baseline_high_date":"2024-04-25","baseline_low_date":"2021-10-25","support":{"chrome":"75","chrome_android":"75","edge":"18","firefox":"64","firefox_android":"64","safari":"15.1","safari_ios":"15.1"}}},"wasm-reference-types":{"caniuse":"wasm-reference-types","compat_features":["webassembly.reference-types"],"description":"The externref type can be both a value type and a table element type, while funcref can be a value type.","description_html":"The <code>externref</code> type can be both a value type and a table element type, while <code>funcref</code> can be a value type.","group":"webassembly","name":"Reference types (WebAssembly)","spec":"https://github.com/WebAssembly/spec/blob/main/proposals/reference-types/Overview.md","status":{"baseline":"high","baseline_high_date":"2024-05-19","baseline_low_date":"2021-11-19","support":{"chrome":"96","chrome_android":"96","edge":"96","firefox":"79","firefox_android":"79","safari":"15.1","safari_ios":"15.1"}}},"wasm-sign-extension-operators":{"caniuse":"wasm-signext","compat_features":["webassembly.sign-extension-operations"],"description":"Sign-extension operator instructions extend the width of 8-bit, 16-bit, and 32-bit values to 32-bit and 64-bit values.","description_html":"Sign-extension operator instructions extend the width of 8-bit, 16-bit, and 32-bit values to 32-bit and 64-bit values.","group":"webassembly","name":"Sign extension operators (WebAssembly)","spec":"https://github.com/WebAssembly/spec/blob/main/proposals/sign-extension-ops/Overview.md","status":{"baseline":"high","baseline_high_date":"2023-10-26","baseline_low_date":"2021-04-26","support":{"chrome":"69","chrome_android":"69","edge":"18","firefox":"62","firefox_android":"62","safari":"14.1","safari_ios":"14.5"}}},"wasm-simd":{"caniuse":"wasm-simd","compat_features":["webassembly.fixed-width-SIMD"],"description":"128-bit SIMD (Single Instruction Multiple Data) performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.","description_html":"128-bit SIMD (Single Instruction Multiple Data) performs one instruction on multiple units of data, when running on hardware that supports such instructions. Also known as vector instructions.","group":"webassembly","name":"Fixed-width SIMD (WebAssembly)","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"}}},"wasm-simd-relaxed":{"compat_features":["webassembly.relaxed-SIMD"],"description":"Relaxed SIMD (Single Instruction Multiple Data) introduces local non-determinism, where the results of the instructions may vary based on hardware support.","description_html":"Relaxed SIMD (Single Instruction Multiple Data) introduces local non-determinism, where the results of the instructions may vary based on hardware support.","group":"webassembly","name":"Relaxed-width SIMD (WebAssembly)","spec":"https://github.com/WebAssembly/relaxed-simd/blob/main/proposals/relaxed-simd/Overview.md","status":{"baseline":false,"support":{"chrome":"114","chrome_android":"114","edge":"114"}}},"wasm-string-builtins":{"compat_features":["webassembly.api.Module.Module.compile_options","webassembly.api.compileStreaming_static.compile_options","webassembly.api.compile_static.compile_options","webassembly.api.instantiateStreaming_static.compile_options","webassembly.api.instantiate_static.compile_options","webassembly.api.validate_static.compile_options","webassembly.jsStringBuiltins"],"description":"The WebAssembly builtin string functions mirror a subset of the JavaScript String API and adapt it to be efficiently callable without JavaScript glue code.","description_html":"The WebAssembly builtin string functions mirror a subset of the JavaScript <code>String</code> API and adapt it to be efficiently callable without JavaScript glue code.","group":"webassembly","name":"String builtins (WebAssembly)","spec":"https://github.com/WebAssembly/js-string-builtins/blob/main/proposals/js-string-builtins/Overview.md","status":{"baseline":false,"support":{"chrome":"130","chrome_android":"130","edge":"130","firefox":"134","firefox_android":"134"}}},"wasm-tail-call-optimization":{"compat_features":["webassembly.tail-calls"],"description":"Tail call optimization discards a caller frame and replaces the call with a jump instruction.","description_html":"Tail call optimization discards a caller frame and replaces the call with a jump instruction.","group":"webassembly","name":"Tail call optimization (WebAssembly)","spec":"https://github.com/WebAssembly/tail-call/blob/main/proposals/tail-call/Overview.md","status":{"baseline":"low","baseline_low_date":"2024-12-11","support":{"chrome":"112","chrome_android":"112","edge":"112","firefox":"121","firefox_android":"121","safari":"18.2","safari_ios":"18.2"}}},"wasm-threads":{"caniuse":"wasm-threads","compat_features":["webassembly.api.Memory.Memory.shared","webassembly.threads-and-atomics"],"description":"Threads in WebAssembly run code in parallel, while atomic memory instructions can guarantee that no two threads can read or write to shared memory at the same time.","description_html":"Threads in WebAssembly run code in parallel, while atomic memory instructions can guarantee that no two threads can read or write to shared memory at the same time.","group":"webassembly","name":"Threads and atomics (WebAssembly)","spec":"https://github.com/WebAssembly/threads/blob/main/proposals/threads/Overview.md","status":{"baseline":"high","baseline_high_date":"2024-06-13","baseline_low_date":"2021-12-13","support":{"chrome":"74","chrome_android":"88","edge":"79","firefox":"79","firefox_android":"79","safari":"15.2","safari_ios":"15.2"}}},"wasm-typed-fun-refs":{"compat_features":["webassembly.typedFunctionReferences"],"description":"A typed function reference can be called directly.","description_html":"A typed function reference can be called directly.","group":"webassembly","name":"Typed function references (WebAssembly)","spec":"https://github.com/WebAssembly/function-references/blob/main/proposals/function-references/Overview.md","status":{"baseline":"low","baseline_low_date":"2024-09-16","support":{"chrome":"119","chrome_android":"119","edge":"119","firefox":"120","firefox_android":"120","safari":"18","safari_ios":"18"}}},"wbr":{"caniuse":"wbr-element","compat_features":["html.elements.wbr"],"description":"The <wbr> HTML element represents a word break opportunity, to explicitly mark a place within a word where a line might be broken.","description_html":"The <code>&#x3C;wbr></code> HTML element represents a word break opportunity, to explicitly mark a place within a word where a line might be broken.","group":"html-elements","name":"<wbr>","spec":"https://html.spec.whatwg.org/multipage/text-level-semantics.html#the-wbr-element","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"1","firefox_android":"4","safari":"4","safari_ios":"3.2"}}},"weak-references":{"compat_features":["javascript.builtins.FinalizationRegistry","javascript.builtins.FinalizationRegistry.FinalizationRegistry","javascript.builtins.FinalizationRegistry.register","javascript.builtins.FinalizationRegistry.symbol_as_target","javascript.builtins.FinalizationRegistry.unregister","javascript.builtins.WeakRef","javascript.builtins.WeakRef.WeakRef","javascript.builtins.WeakRef.deref","javascript.builtins.WeakRef.symbol_as_target"],"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.remove_filling_animation","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.AnimationTimeline.duration","api.Document.getAnimations","api.Document.timeline","api.DocumentTimeline","api.DocumentTimeline.DocumentTimeline","api.Element.animate","api.Element.animate.implicit_tofrom","api.Element.animate.options_composite_parameter","api.Element.animate.options_id_parameter","api.Element.animate.options_iterationComposite_parameter","api.Element.animate.options_pseudoElement_parameter","api.Element.animate.options_rangeEnd_parameter","api.Element.animate.options_rangeStart_parameter","api.Element.animate.options_timeline_parameter","api.Element.animationcancel_event","api.Element.animationend_event","api.Element.animationiteration_event","api.Element.animationstart_event","api.Element.getAnimations","api.KeyframeEffect","api.KeyframeEffect.KeyframeEffect","api.KeyframeEffect.composite","api.KeyframeEffect.getKeyframes","api.KeyframeEffect.iterationComposite","api.KeyframeEffect.pseudoElement","api.KeyframeEffect.setKeyframes","api.KeyframeEffect.target","api.ShadowRoot.getAnimations"],"description":"The animate() method of Element objects programmatically animates elements over time and can synchronize the animations of multiple elements.","description_html":"The <code>animate()</code> method of <code>Element</code> objects programmatically animates elements over time and can synchronize the animations of multiple elements.","group":"animation","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.AudioContext.options_latencyHint_parameter","api.AudioContext.AudioContext.options_sampleRate_parameter","api.AudioContext.AudioContext.options_sinkId_parameter","api.AudioContext.baseLatency","api.AudioContext.close","api.AudioContext.createMediaElementSource","api.AudioContext.createMediaStreamDestination","api.AudioContext.createMediaStreamSource","api.AudioContext.createMediaStreamTrackSource","api.AudioContext.error_event","api.AudioContext.getOutputTimestamp","api.AudioContext.outputLatency","api.AudioContext.resume","api.AudioContext.setSinkId","api.AudioContext.sinkId","api.AudioContext.sinkchange_event","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.disconnect.destination_parameter","api.AudioNode.disconnect.input_parameter","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.AudioParamMap.@@iterator","api.AudioParamMap.entries","api.AudioParamMap.forEach","api.AudioParamMap.get","api.AudioParamMap.has","api.AudioParamMap.keys","api.AudioParamMap.size","api.AudioParamMap.values","api.AudioScheduledSourceNode","api.AudioScheduledSourceNode.ended_event","api.AudioScheduledSourceNode.start","api.AudioScheduledSourceNode.stop","api.AudioSinkInfo","api.AudioSinkInfo.type","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.createPeriodicWave.constraints_disableNormalization_parameter","api.BaseAudioContext.createStereoPanner","api.BaseAudioContext.createWaveShaper","api.BaseAudioContext.currentTime","api.BaseAudioContext.decodeAudioData","api.BaseAudioContext.decodeAudioData.returns_promise","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.Bluetooth.requestDevice.options_exclusionFilters_parameter","api.Bluetooth.requestDevice.options_filter_manufacturerData_parameter","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","html.elements.iframe.allow.bluetooth","http.headers.Permissions-Policy.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.Crypto.subtle.secure_context_required","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.secure_context_required","api.SubtleCrypto.sign","api.SubtleCrypto.sign.ed25519","api.SubtleCrypto.unwrapKey","api.SubtleCrypto.verify","api.SubtleCrypto.verify.ed25519","api.SubtleCrypto.worker_support","api.SubtleCrypto.wrapKey","api.crypto","api.crypto.worker_support"],"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.","group":"security","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.clear","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","api.Navigator.requestMIDIAccess.secure_context_required","api.Permissions.permission_midi","html.elements.iframe.allow.midi","http.headers.Permissions-Policy.midi"],"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.makeReadOnly","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":"100"}}},"web-otp":{"compat_features":["api.CredentialsContainer.get.otp_option","api.OTPCredential","api.OTPCredential.code","html.elements.iframe.allow.otp-credentials","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.attestation","api.CredentialsContainer.create.publicKey_option.attestation.direct","api.CredentialsContainer.create.publicKey_option.attestation.enterprise","api.CredentialsContainer.create.publicKey_option.attestation.indirect","api.CredentialsContainer.create.publicKey_option.attestation.none","api.CredentialsContainer.create.publicKey_option.extensions","api.CredentialsContainer.create.publicKey_option.extensions.appidExclude","api.CredentialsContainer.create.publicKey_option.extensions.credProps","api.CredentialsContainer.create.publicKey_option.extensions.credProtect","api.CredentialsContainer.create.publicKey_option.extensions.largeBlob","api.CredentialsContainer.create.publicKey_option.extensions.minPinLength","api.CredentialsContainer.create.publicKey_option.extensions.payment","api.CredentialsContainer.create.publicKey_option.requireResidentKey","api.CredentialsContainer.create.publicKey_option.residentKey","api.CredentialsContainer.get.publicKey_option","api.CredentialsContainer.get.publicKey_option.extensions","api.CredentialsContainer.get.publicKey_option.extensions.appid","api.CredentialsContainer.get.publicKey_option.extensions.largeBlob","api.PublicKeyCredential","api.PublicKeyCredential.authenticatorAttachment","api.PublicKeyCredential.getClientCapabilities_static","api.PublicKeyCredential.getClientExtensionResults","api.PublicKeyCredential.isConditionalMediationAvailable_static","api.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable_static","api.PublicKeyCredential.parseCreationOptionsFromJSON_static","api.PublicKeyCredential.parseRequestOptionsFromJSON_static","api.PublicKeyCredential.rawId","api.PublicKeyCredential.response","api.PublicKeyCredential.toJSON","html.elements.iframe.allow.publickey-credentials-create","html.elements.iframe.allow.publickey-credentials-get","http.headers.Permissions-Policy.publickey-credentials-create","http.headers.Permissions-Policy.publickey-credentials-get"],"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.WebGLActiveInfo","api.WebGLActiveInfo.name","api.WebGLActiveInfo.size","api.WebGLActiveInfo.type","api.WebGLActiveInfo.worker_support","api.WebGLBuffer","api.WebGLBuffer.worker_support","api.WebGLContextEvent","api.WebGLContextEvent.WebGLContextEvent","api.WebGLContextEvent.statusMessage","api.WebGLContextEvent.worker_support","api.WebGLFramebuffer","api.WebGLFramebuffer.worker_support","api.WebGLObject","api.WebGLProgram","api.WebGLProgram.worker_support","api.WebGLRenderbuffer","api.WebGLRenderbuffer.worker_support","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.WebGLRenderingContext.worker_support","api.WebGLShader","api.WebGLShader.worker_support","api.WebGLShaderPrecisionFormat","api.WebGLShaderPrecisionFormat.precision","api.WebGLShaderPrecisionFormat.rangeMax","api.WebGLShaderPrecisionFormat.rangeMin","api.WebGLShaderPrecisionFormat.worker_support","api.WebGLTexture","api.WebGLTexture.worker_support","api.WebGLUniformLocation","api.WebGLUniformLocation.worker_support"],"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>&#x3C;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-buffer-float":{"compat_features":["api.WEBGL_color_buffer_float"],"description":"The WEBGL_color_buffer_float extension for WebGL 1.0 contexts adds the 32-bit floating-point type RGBA32F as a color-renderable format.","description_html":"The <code>WEBGL_color_buffer_float</code> extension for WebGL 1.0 contexts adds the 32-bit floating-point type <code>RGBA32F</code> as a color-renderable format.","group":"webgl-extensions","name":"WEBGL_color_buffer_float WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_color_buffer_float/","status":{"baseline":"high","baseline_high_date":"2024-03-20","baseline_low_date":"2021-09-20","support":{"chrome":"63","chrome_android":"63","edge":"17","firefox":"30","firefox_android":"30","safari":"14","safari_ios":"15"}}},"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":"low","baseline_low_date":"2024-10-29","support":{"chrome":"104","chrome_android":"104","edge":"104","firefox":"132","firefox_android":"132","safari":"16.4","safari_ios":"16.4"}}},"webgl-compressed-texture-astc":{"compat_features":["api.WEBGL_compressed_texture_astc","api.WEBGL_compressed_texture_astc.getSupportedProfiles"],"description":"The WEBGL_compressed_texture_astc extension for WebGL 1.0 and 2.0 contexts adds the Adaptive Scalable Texture Compression format to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>WEBGL_compressed_texture_astc</code> extension for WebGL 1.0 and 2.0 contexts adds the Adaptive Scalable Texture Compression format to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"WEBGL_compressed_texture_astc WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"47","chrome_android":"47","edge":"79","firefox":"53","firefox_android":"53","safari":"12","safari_ios":"12"}}},"webgl-compressed-texture-etc":{"compat_features":["api.WEBGL_compressed_texture_etc"],"description":"The WEBGL_compressed_texture_etc extension for WebGL 1.0 and 2.0 contexts adds many ETC2 and EAC compressed texture formats to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>WEBGL_compressed_texture_etc</code> extension for WebGL 1.0 and 2.0 contexts adds many ETC2 and EAC compressed texture formats to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"WEBGL_compressed_texture_etc WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/","status":{"baseline":false,"support":{"chrome":"63","chrome_android":"63","edge":"79","firefox_android":"51","safari":"13.1","safari_ios":"13.4"}}},"webgl-compressed-texture-etc1":{"compat_features":["api.WEBGL_compressed_texture_etc1"],"description":"The WEBGL_compressed_texture_etc1 extension for WebGL 1.0 and 2.0 contexts adds the ETC1 compressed texture format to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>WEBGL_compressed_texture_etc1</code> extension for WebGL 1.0 and 2.0 contexts adds the ETC1 compressed texture format to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"WEBGL_compressed_texture_etc1 WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc1/","status":{"baseline":false,"support":{"chrome":"49","chrome_android":"49","edge":"79","firefox_android":"30","safari":"13.1","safari_ios":"13.4"}}},"webgl-compressed-texture-pvrtc":{"compat_features":["api.WEBGL_compressed_texture_pvrtc"],"description":"The WEBGL_compressed_texture_pvrtc extension for WebGL 1.0 and 2.0 contexts adds PVRTC compressed texture formats to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>WEBGL_compressed_texture_pvrtc</code> extension for WebGL 1.0 and 2.0 contexts adds PVRTC compressed texture formats to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"WEBGL_compressed_texture_pvrtc WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/","status":{"baseline":false,"support":{"chrome":"128","chrome_android":"28","edge":"128","safari":"7","safari_ios":"7"}}},"webgl-compressed-texture-s3tc":{"compat_features":["api.WEBGL_compressed_texture_s3tc"],"description":"The WEBGL_compressed_texture_s3tc extension for WebGL 1.0 and 2.0 contexts adds S3TC compressed texture formats to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>WEBGL_compressed_texture_s3tc</code> extension for WebGL 1.0 and 2.0 contexts adds S3TC compressed texture formats to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"WEBGL_compressed_texture_s3tc WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc/","status":{"baseline":false,"support":{"chrome":"26","edge":"12","firefox":"22","safari":"8"}}},"webgl-compressed-texture-s3tc-srgb":{"compat_features":["api.WEBGL_compressed_texture_s3tc_srgb"],"description":"The WEBGL_compressed_texture_s3tc_srgb extension for WebGL 1.0 and 2.0 contexts adds S3TC compressed texture formats for the sRGB colorspace to compressedTexImage2D() and compressedTexSubImage2D().","description_html":"The <code>WEBGL_compressed_texture_s3tc_srgb</code> extension for WebGL 1.0 and 2.0 contexts adds S3TC compressed texture formats for the sRGB colorspace to <code>compressedTexImage2D()</code> and <code>compressedTexSubImage2D()</code>.","group":"webgl-extensions","name":"WEBGL_compressed_texture_s3tc_srgb WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/","status":{"baseline":false,"support":{"chrome":"60","chrome_android":"60","edge":"80","firefox":"55","safari":"14.1","safari_ios":"14.5"}}},"webgl-debug-renderer-info":{"compat_features":["api.WEBGL_debug_renderer_info"],"description":"The WEBGL_debug_renderer_info extension for WebGL 1.0 and 2.0 contexts exposes information about the graphics driver for debugging purposes.","description_html":"The <code>WEBGL_debug_renderer_info</code> extension for WebGL 1.0 and 2.0 contexts exposes information about the graphics driver for debugging purposes.","group":"webgl-extensions","name":"WEBGL_debug_renderer_info WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_debug_renderer_info/","status":{"baseline":"high","baseline_high_date":"2019-10-19","baseline_low_date":"2017-04-19","support":{"chrome":"33","chrome_android":"33","edge":"12","firefox":"53","firefox_android":"53","safari":"9.1","safari_ios":"9.3"}}},"webgl-debug-shaders":{"compat_features":["api.WEBGL_debug_shaders","api.WEBGL_debug_shaders.getTranslatedShaderSource"],"description":"The WEBGL_debug_shaders extension for WebGL 1.0 and 2.0 contexts adds the getTranslatedShaderSource() method to debug shaders from privileged contexts.","description_html":"The <code>WEBGL_debug_shaders</code> extension for WebGL 1.0 and 2.0 contexts adds the <code>getTranslatedShaderSource()</code> method to debug shaders from privileged contexts.","group":"webgl-extensions","name":"WEBGL_debug_shaders WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_debug_shaders/","status":{"baseline":"high","baseline_high_date":"2023-03-16","baseline_low_date":"2020-09-16","support":{"chrome":"47","chrome_android":"47","edge":"79","firefox":"56","firefox_android":"56","safari":"14","safari_ios":"14"}}},"webgl-depth-texture":{"compat_features":["api.WEBGL_depth_texture"],"description":"The WEBGL_depth_texture extension for WebGL 1.0 contexts defines 2D depth and depth-stencil textures.","description_html":"The <code>WEBGL_depth_texture</code> extension for WebGL 1.0 contexts defines 2D depth and depth-stencil textures.","group":"webgl-extensions","name":"WEBGL_depth_texture WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_depth_texture/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"26","chrome_android":"26","edge":"12","firefox":"22","firefox_android":"22","safari":"8","safari_ios":"8"}}},"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-draw-buffers":{"compat_features":["api.WEBGL_draw_buffers","api.WEBGL_draw_buffers.drawBuffersWEBGL"],"description":"The WEBGL_draw_buffers extension for WebGL 1.0 contexts enables a fragment shader to write to several textures, which is useful for deferred shading, for example.","description_html":"The <code>WEBGL_draw_buffers</code> extension for WebGL 1.0 contexts enables a fragment shader to write to several textures, which is useful for deferred shading, for example.","group":"webgl-extensions","name":"WEBGL_draw_buffers WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_draw_buffers/","status":{"baseline":false,"support":{"chrome":"36","edge":"17","firefox":"28","safari":"9","safari_ios":"15"}}},"webgl-lose-context":{"compat_features":["api.WEBGL_lose_context","api.WEBGL_lose_context.loseContext","api.WEBGL_lose_context.restoreContext"],"description":"The WEBGL_lose_context extension for WebGL 1.0 and 2.0 contexts simulates losing and restoring a WebGLRenderingContext or WebGL2RenderingContext.","description_html":"The <code>WEBGL_lose_context</code> extension for WebGL 1.0 and 2.0 contexts simulates losing and restoring a <code>WebGLRenderingContext</code> or <code>WebGL2RenderingContext</code>.","group":"webgl-extensions","name":"WEBGL_lose_context WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_lose_context/","status":{"baseline":"high","baseline_high_date":"2020-10-30","baseline_low_date":"2018-04-30","support":{"chrome":"26","chrome_android":"26","edge":"17","firefox":"22","firefox_android":"22","safari":"8","safari_ios":"8"}}},"webgl-multi-draw":{"compat_features":["api.WEBGL_multi_draw","api.WEBGL_multi_draw.multiDrawArraysInstancedWEBGL","api.WEBGL_multi_draw.multiDrawArraysWEBGL","api.WEBGL_multi_draw.multiDrawElementsInstancedWEBGL","api.WEBGL_multi_draw.multiDrawElementsWEBGL"],"description":"The WEBGL_multi_draw extension for WebGL 1.0 and 2.0 contexts renders more than one primitive with a single function call.","description_html":"The <code>WEBGL_multi_draw</code> extension for WebGL 1.0 and 2.0 contexts renders more than one primitive with a single function call.","group":"webgl-extensions","name":"WEBGL_multi_draw WebGL extension","spec":"https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw/","status":{"baseline":false,"support":{"chrome":"86","chrome_android":"86","edge":"86","safari":"15","safari_ios":"15"}}},"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 for WebGL 2.0 contexts 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 for WebGL 2.0 contexts allows you to control blending on a per-color basis when writing to multiple color buffers simultaneously.","group":"webgl-extensions","name":"OES_draw_buffers_indexed WebGL 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"}}},"webgl-sab":{"compat_features":["api.WebGL2RenderingContext.bufferData.srcData_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.bufferSubData.srcData_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.clearBufferfv.values_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.clearBufferiv.values_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.clearBufferuiv.values_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.compressedTexImage2D.pixels_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.compressedTexImage3D.pixels_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.compressedTexSubImage2D.srcData_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.getBufferSubData.dstData_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.readPixels.pixels_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.texImage3D.srcData_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.texSubImage3D.srcData_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix2fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix2x3fv.data_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix2x4fv.data_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix3fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix3x2fv.data_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix3x4fv.data_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix4fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix4x2fv.data_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.uniformMatrix4x3fv.data_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.vertexAttrib1fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.vertexAttrib2fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.vertexAttrib3fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.vertexAttrib4fv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.vertexAttribI4iv.value_param_accepts_SharedArrayBuffer","api.WebGL2RenderingContext.vertexAttribI4uiv.value_param_accepts_SharedArrayBuffer","api.WebGLRenderingContext.compressedTexImage2D.pixels_param_accepts_SharedArrayBuffer","api.WebGLRenderingContext.vertexAttrib1fv.value_param_accepts_SharedArrayBuffer","api.WebGLRenderingContext.vertexAttrib2fv.value_param_accepts_SharedArrayBuffer","api.WebGLRenderingContext.vertexAttrib3fv.value_param_accepts_SharedArrayBuffer","api.WebGLRenderingContext.vertexAttrib4fv.value_param_accepts_SharedArrayBuffer"],"description":"SharedArrayBuffer objects can be used in WebGL APIs that previously only worked with ArrayBuffer objects.","description_html":"<code>SharedArrayBuffer</code> objects can be used in WebGL APIs that previously only worked with <code>ArrayBuffer</code> objects.","group":"webgl","name":"SharedArrayBuffer in WebGL","spec":["https://registry.khronos.org/webgl/specs/latest/1.0/","https://registry.khronos.org/webgl/specs/latest/2.0/"],"status":{"baseline":false,"support":{"chrome":"60","chrome_android":"60","edge":"79","firefox":"79","firefox_android":"79"}}},"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>&#x3C;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":"low","baseline_low_date":"2024-10-29","support":{"chrome":"104","chrome_android":"104","edge":"104","firefox":"132","firefox_android":"132","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"}}},"webgpu":{"caniuse":"webgpu","compat_features":["api.GPU","api.GPU.getPreferredCanvasFormat","api.GPU.requestAdapter","api.GPU.requestAdapter.discrete_adapter_default_ac","api.GPU.wgslLanguageFeatures","api.GPUAdapter","api.GPUAdapter.features","api.GPUAdapter.info","api.GPUAdapter.isFallbackAdapter","api.GPUAdapter.limits","api.GPUAdapter.requestDevice","api.GPUAdapter.requestDevice.lost_device_on_duplicate","api.GPUAdapterInfo","api.GPUAdapterInfo.architecture","api.GPUAdapterInfo.description","api.GPUAdapterInfo.device","api.GPUAdapterInfo.subgroupMaxSize","api.GPUAdapterInfo.subgroupMinSize","api.GPUAdapterInfo.vendor","api.GPUBindGroup","api.GPUBindGroup.label","api.GPUBindGroupLayout","api.GPUBindGroupLayout.label","api.GPUBuffer","api.GPUBuffer.destroy","api.GPUBuffer.getMappedRange","api.GPUBuffer.label","api.GPUBuffer.mapAsync","api.GPUBuffer.mapState","api.GPUBuffer.size","api.GPUBuffer.unmap","api.GPUBuffer.usage","api.GPUCanvasContext","api.GPUCanvasContext.canvas","api.GPUCanvasContext.configure","api.GPUCanvasContext.configure.toneMapping","api.GPUCanvasContext.getConfiguration","api.GPUCanvasContext.getCurrentTexture","api.GPUCanvasContext.unconfigure","api.GPUCommandBuffer","api.GPUCommandBuffer.label","api.GPUCommandEncoder","api.GPUCommandEncoder.beginComputePass","api.GPUCommandEncoder.beginComputePass.timestampWrites","api.GPUCommandEncoder.beginRenderPass","api.GPUCommandEncoder.beginRenderPass.depthSlice_option","api.GPUCommandEncoder.beginRenderPass.separate_depth_stencil_read-only","api.GPUCommandEncoder.beginRenderPass.timestampWrites","api.GPUCommandEncoder.clearBuffer","api.GPUCommandEncoder.copyBufferToBuffer","api.GPUCommandEncoder.copyBufferToTexture","api.GPUCommandEncoder.copyTextureToBuffer","api.GPUCommandEncoder.copyTextureToTexture","api.GPUCommandEncoder.finish","api.GPUCommandEncoder.insertDebugMarker","api.GPUCommandEncoder.label","api.GPUCommandEncoder.popDebugGroup","api.GPUCommandEncoder.pushDebugGroup","api.GPUCommandEncoder.resolveQuerySet","api.GPUCompilationInfo","api.GPUCompilationInfo.messages","api.GPUCompilationMessage","api.GPUCompilationMessage.length","api.GPUCompilationMessage.lineNum","api.GPUCompilationMessage.linePos","api.GPUCompilationMessage.message","api.GPUCompilationMessage.offset","api.GPUCompilationMessage.type","api.GPUComputePassEncoder","api.GPUComputePassEncoder.dispatchWorkgroups","api.GPUComputePassEncoder.dispatchWorkgroupsIndirect","api.GPUComputePassEncoder.end","api.GPUComputePassEncoder.insertDebugMarker","api.GPUComputePassEncoder.label","api.GPUComputePassEncoder.popDebugGroup","api.GPUComputePassEncoder.pushDebugGroup","api.GPUComputePassEncoder.setBindGroup","api.GPUComputePassEncoder.setBindGroup.unset_bind_group","api.GPUComputePassEncoder.setPipeline","api.GPUComputePipeline","api.GPUComputePipeline.getBindGroupLayout","api.GPUComputePipeline.label","api.GPUDevice","api.GPUDevice.adapterInfo","api.GPUDevice.createBindGroup","api.GPUDevice.createBindGroupLayout","api.GPUDevice.createBindGroupLayout.storageTexture_access_read-write_read-only","api.GPUDevice.createBindGroupLayout.texture_rgb10a2uint","api.GPUDevice.createBuffer","api.GPUDevice.createCommandEncoder","api.GPUDevice.createComputePipeline","api.GPUDevice.createComputePipeline.optional_entryPoint","api.GPUDevice.createComputePipelineAsync","api.GPUDevice.createComputePipelineAsync.optional_entryPoint","api.GPUDevice.createPipelineLayout","api.GPUDevice.createQuerySet","api.GPUDevice.createQuerySet.timestamp","api.GPUDevice.createRenderBundleEncoder","api.GPUDevice.createRenderPipeline","api.GPUDevice.createRenderPipeline.dual-source-blending","api.GPUDevice.createRenderPipeline.optional_depthcompare_depthwriteenabled","api.GPUDevice.createRenderPipeline.optional_entryPoint","api.GPUDevice.createRenderPipeline.texture_rgb10a2uint","api.GPUDevice.createRenderPipeline.validates_depth_bias_for_line_and_point_topologies","api.GPUDevice.createRenderPipeline.vertex_unorm10-10-10-2","api.GPUDevice.createRenderPipelineAsync","api.GPUDevice.createRenderPipelineAsync.dual-source-blending","api.GPUDevice.createRenderPipelineAsync.optional_depthcompare_depthwriteenabled","api.GPUDevice.createRenderPipelineAsync.optional_entryPoint","api.GPUDevice.createRenderPipelineAsync.texture_rgb10a2uint","api.GPUDevice.createRenderPipelineAsync.validates_depth_bias_for_line_and_point_topologies","api.GPUDevice.createRenderPipelineAsync.vertex_unorm10-10-10-2","api.GPUDevice.createSampler","api.GPUDevice.createShaderModule","api.GPUDevice.createTexture","api.GPUDevice.createTexture.texture_rgb10a2uint","api.GPUDevice.destroy","api.GPUDevice.features","api.GPUDevice.importExternalTexture","api.GPUDevice.importExternalTexture.color_space_display-p3","api.GPUDevice.importExternalTexture.videoframe_source","api.GPUDevice.label","api.GPUDevice.limits","api.GPUDevice.lost","api.GPUDevice.popErrorScope","api.GPUDevice.pushErrorScope","api.GPUDevice.queue","api.GPUDevice.uncapturederror_event","api.GPUDeviceLostInfo","api.GPUDeviceLostInfo.message","api.GPUDeviceLostInfo.reason","api.GPUError","api.GPUError.message","api.GPUExternalTexture","api.GPUExternalTexture.label","api.GPUInternalError","api.GPUInternalError.GPUInternalError","api.GPUOutOfMemoryError","api.GPUOutOfMemoryError.GPUOutOfMemoryError","api.GPUPipelineError","api.GPUPipelineError.GPUPipelineError","api.GPUPipelineError.GPUPipelineError.message_optional","api.GPUPipelineError.reason","api.GPUPipelineLayout","api.GPUPipelineLayout.label","api.GPUQuerySet","api.GPUQuerySet.count","api.GPUQuerySet.destroy","api.GPUQuerySet.label","api.GPUQuerySet.type","api.GPUQuerySet.type.timestamp","api.GPUQueue","api.GPUQueue.copyExternalImageToTexture","api.GPUQueue.copyExternalImageToTexture.htmlimageelement_imagedata_source","api.GPUQueue.copyExternalImageToTexture.videoframe_source","api.GPUQueue.label","api.GPUQueue.onSubmittedWorkDone","api.GPUQueue.submit","api.GPUQueue.submit.validates_command_buffer_uniqueness","api.GPUQueue.writeBuffer","api.GPUQueue.writeTexture","api.GPURenderBundle","api.GPURenderBundle.label","api.GPURenderBundleEncoder","api.GPURenderBundleEncoder.draw","api.GPURenderBundleEncoder.drawIndexed","api.GPURenderBundleEncoder.drawIndexedIndirect","api.GPURenderBundleEncoder.drawIndirect","api.GPURenderBundleEncoder.finish","api.GPURenderBundleEncoder.insertDebugMarker","api.GPURenderBundleEncoder.label","api.GPURenderBundleEncoder.popDebugGroup","api.GPURenderBundleEncoder.pushDebugGroup","api.GPURenderBundleEncoder.setBindGroup","api.GPURenderBundleEncoder.setBindGroup.unset_bind_group","api.GPURenderBundleEncoder.setIndexBuffer","api.GPURenderBundleEncoder.setPipeline","api.GPURenderBundleEncoder.setVertexBuffer","api.GPURenderBundleEncoder.setVertexBuffer.unset_vertex_buffer","api.GPURenderPassEncoder","api.GPURenderPassEncoder.beginOcclusionQuery","api.GPURenderPassEncoder.draw","api.GPURenderPassEncoder.drawIndexed","api.GPURenderPassEncoder.drawIndexedIndirect","api.GPURenderPassEncoder.drawIndirect","api.GPURenderPassEncoder.end","api.GPURenderPassEncoder.endOcclusionQuery","api.GPURenderPassEncoder.executeBundles","api.GPURenderPassEncoder.insertDebugMarker","api.GPURenderPassEncoder.label","api.GPURenderPassEncoder.popDebugGroup","api.GPURenderPassEncoder.pushDebugGroup","api.GPURenderPassEncoder.setBindGroup","api.GPURenderPassEncoder.setBindGroup.unset_bind_group","api.GPURenderPassEncoder.setBlendConstant","api.GPURenderPassEncoder.setIndexBuffer","api.GPURenderPassEncoder.setPipeline","api.GPURenderPassEncoder.setScissorRect","api.GPURenderPassEncoder.setStencilReference","api.GPURenderPassEncoder.setVertexBuffer","api.GPURenderPassEncoder.setVertexBuffer.unset_vertex_buffer","api.GPURenderPassEncoder.setViewport","api.GPURenderPipeline","api.GPURenderPipeline.getBindGroupLayout","api.GPURenderPipeline.label","api.GPUSampler","api.GPUSampler.label","api.GPUShaderModule","api.GPUShaderModule.getCompilationInfo","api.GPUShaderModule.label","api.GPUSupportedFeatures","api.GPUSupportedFeatures.@@iterator","api.GPUSupportedFeatures.entries","api.GPUSupportedFeatures.feature_bgra8unorm-storage","api.GPUSupportedFeatures.feature_clip-distances","api.GPUSupportedFeatures.feature_depth-clip-control","api.GPUSupportedFeatures.feature_depth32float-stencil8","api.GPUSupportedFeatures.feature_dual-source-blending","api.GPUSupportedFeatures.feature_float32-blendable","api.GPUSupportedFeatures.feature_float32-filterable","api.GPUSupportedFeatures.feature_indirect-first-instance","api.GPUSupportedFeatures.feature_rg11b10ufloat-renderable","api.GPUSupportedFeatures.feature_shader-f16","api.GPUSupportedFeatures.feature_texture-compression-astc","api.GPUSupportedFeatures.feature_texture-compression-bc","api.GPUSupportedFeatures.feature_texture-compression-etc2","api.GPUSupportedFeatures.feature_timestamp-query","api.GPUSupportedFeatures.forEach","api.GPUSupportedFeatures.has","api.GPUSupportedFeatures.keys","api.GPUSupportedFeatures.size","api.GPUSupportedFeatures.values","api.GPUSupportedLimits","api.GPUSupportedLimits.maxBindGroups","api.GPUSupportedLimits.maxBindGroupsPlusVertexBuffers","api.GPUSupportedLimits.maxBindingsPerBindGroup","api.GPUSupportedLimits.maxBufferSize","api.GPUSupportedLimits.maxColorAttachmentBytesPerSample","api.GPUSupportedLimits.maxColorAttachments","api.GPUSupportedLimits.maxComputeInvocationsPerWorkgroup","api.GPUSupportedLimits.maxComputeWorkgroupSizeX","api.GPUSupportedLimits.maxComputeWorkgroupSizeY","api.GPUSupportedLimits.maxComputeWorkgroupSizeZ","api.GPUSupportedLimits.maxComputeWorkgroupStorageSize","api.GPUSupportedLimits.maxComputeWorkgroupsPerDimension","api.GPUSupportedLimits.maxDynamicStorageBuffersPerPipelineLayout","api.GPUSupportedLimits.maxDynamicUniformBuffersPerPipelineLayout","api.GPUSupportedLimits.maxInterStageShaderComponents","api.GPUSupportedLimits.maxInterStageShaderVariables","api.GPUSupportedLimits.maxSampledTexturesPerShaderStage","api.GPUSupportedLimits.maxSamplersPerShaderStage","api.GPUSupportedLimits.maxStorageBufferBindingSize","api.GPUSupportedLimits.maxStorageBuffersPerShaderStage","api.GPUSupportedLimits.maxStorageTexturesPerShaderStage","api.GPUSupportedLimits.maxTextureArrayLayers","api.GPUSupportedLimits.maxTextureDimension1D","api.GPUSupportedLimits.maxTextureDimension2D","api.GPUSupportedLimits.maxTextureDimension3D","api.GPUSupportedLimits.maxUniformBufferBindingSize","api.GPUSupportedLimits.maxUniformBuffersPerShaderStage","api.GPUSupportedLimits.maxVertexAttributes","api.GPUSupportedLimits.maxVertexBufferArrayStride","api.GPUSupportedLimits.maxVertexBuffers","api.GPUSupportedLimits.minStorageBufferOffsetAlignment","api.GPUSupportedLimits.minUniformBufferOffsetAlignment","api.GPUTexture","api.GPUTexture.createView","api.GPUTexture.createView.texture_rgb10a2uint","api.GPUTexture.depthOrArrayLayers","api.GPUTexture.destroy","api.GPUTexture.dimension","api.GPUTexture.format","api.GPUTexture.format.texture_rgb10a2uint","api.GPUTexture.height","api.GPUTexture.label","api.GPUTexture.mipLevelCount","api.GPUTexture.sampleCount","api.GPUTexture.usage","api.GPUTexture.width","api.GPUTextureView","api.GPUTextureView.label","api.GPUUncapturedErrorEvent","api.GPUUncapturedErrorEvent.GPUUncapturedErrorEvent","api.GPUUncapturedErrorEvent.error","api.GPUValidationError","api.GPUValidationError.GPUValidationError","api.HTMLCanvasElement.getContext.webgpu_context","api.Navigator.gpu","api.OffscreenCanvas.getContext.webgpu_context","api.WGSLLanguageFeatures","api.WGSLLanguageFeatures.@@iterator","api.WGSLLanguageFeatures.entries","api.WGSLLanguageFeatures.extension_packed_4x8_integer_dot_product","api.WGSLLanguageFeatures.extension_readonly_and_readwrite_storage_textures","api.WGSLLanguageFeatures.extension_unrestricted_pointer_parameters","api.WGSLLanguageFeatures.forEach","api.WGSLLanguageFeatures.has","api.WGSLLanguageFeatures.keys","api.WGSLLanguageFeatures.size","api.WGSLLanguageFeatures.values","api.WorkerNavigator.gpu"],"description":"The navigator.gpu API performs operations such as rendering and computation on dedicated graphics hardware (also known as a Graphics Processing Unit).","description_html":"The <code>navigator.gpu</code> API performs operations such as rendering and computation on dedicated graphics hardware (also known as a Graphics Processing Unit).","name":"WebGPU","spec":"https://gpuweb.github.io/gpuweb/","status":{"baseline":false,"support":{"chrome":"113","chrome_android":"121","edge":"113"}}},"webhid":{"caniuse":"webhid","compat_features":["api.HID","api.HID.connect_event","api.HID.disconnect_event","api.HID.getDevices","api.HID.requestDevice","api.HID.worker_support","api.HIDConnectionEvent","api.HIDConnectionEvent.HIDConnectionEvent","api.HIDConnectionEvent.device","api.HIDConnectionEvent.worker_support","api.HIDDevice","api.HIDDevice.close","api.HIDDevice.collections","api.HIDDevice.forget","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.HIDDevice.worker_support","api.HIDInputReportEvent","api.HIDInputReportEvent.data","api.HIDInputReportEvent.device","api.HIDInputReportEvent.reportId","api.HIDInputReportEvent.worker_support","api.Navigator.hid","api.WorkerNavigator.hid","html.elements.iframe.allow.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.dispatch","api.MLContext.opSupportLimits","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.cumulativeSum","api.MLGraphBuilder.dequantizeLinear","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.gatherElements","api.MLGraphBuilder.gatherND","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.logicalAnd","api.MLGraphBuilder.logicalNot","api.MLGraphBuilder.logicalOr","api.MLGraphBuilder.logicalXor","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.quantizeLinear","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.scatterElements","api.MLGraphBuilder.scatterND","api.MLGraphBuilder.sigmoid","api.MLGraphBuilder.sign","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.tile","api.MLGraphBuilder.transpose","api.MLGraphBuilder.triangular","api.MLGraphBuilder.where","api.MLOperand","api.MLOperand.MLNumber","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.rfc-editor.org/rfc/rfc9649","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.RTCCertificate","api.RTCCertificate.expires","api.RTCCertificate.getFingerprints","api.RTCDTMFSender","api.RTCDTMFSender.canInsertDTMF","api.RTCDTMFSender.insertDTMF","api.RTCDTMFSender.toneBuffer","api.RTCDTMFSender.tonechange_event","api.RTCDTMFToneChangeEvent","api.RTCDTMFToneChangeEvent.RTCDTMFToneChangeEvent","api.RTCDTMFToneChangeEvent.tone","api.RTCDataChannel","api.RTCDataChannel.binaryType","api.RTCDataChannel.binaryType.arraybuffer_value","api.RTCDataChannel.binaryType.blob_value","api.RTCDataChannel.bufferedAmount","api.RTCDataChannel.bufferedAmountLowThreshold","api.RTCDataChannel.bufferedamountlow_event","api.RTCDataChannel.close","api.RTCDataChannel.close_event","api.RTCDataChannel.closing_event","api.RTCDataChannel.error_event","api.RTCDataChannel.id","api.RTCDataChannel.label","api.RTCDataChannel.maxPacketLifeTime","api.RTCDataChannel.maxRetransmits","api.RTCDataChannel.message_event","api.RTCDataChannel.negotiated","api.RTCDataChannel.open_event","api.RTCDataChannel.ordered","api.RTCDataChannel.protocol","api.RTCDataChannel.readyState","api.RTCDataChannel.sctp_sdp_21","api.RTCDataChannel.send","api.RTCDataChannel.transferable","api.RTCDataChannelEvent","api.RTCDataChannelEvent.RTCDataChannelEvent","api.RTCDataChannelEvent.channel","api.RTCDtlsTransport","api.RTCDtlsTransport.error_event","api.RTCDtlsTransport.getRemoteCertificates","api.RTCDtlsTransport.iceTransport","api.RTCDtlsTransport.state","api.RTCDtlsTransport.statechange_event","api.RTCError","api.RTCError.RTCError","api.RTCError.errorDetail","api.RTCError.receivedAlert","api.RTCError.sctpCauseCode","api.RTCError.sdpLineNumber","api.RTCError.sentAlert","api.RTCErrorEvent","api.RTCErrorEvent.RTCErrorEvent","api.RTCErrorEvent.error","api.RTCIceCandidate","api.RTCIceCandidate.RTCIceCandidate","api.RTCIceCandidate.address","api.RTCIceCandidate.candidate","api.RTCIceCandidate.component","api.RTCIceCandidate.foundation","api.RTCIceCandidate.port","api.RTCIceCandidate.priority","api.RTCIceCandidate.protocol","api.RTCIceCandidate.relatedAddress","api.RTCIceCandidate.relatedPort","api.RTCIceCandidate.relayProtocol","api.RTCIceCandidate.sdpMLineIndex","api.RTCIceCandidate.sdpMid","api.RTCIceCandidate.tcpType","api.RTCIceCandidate.toJSON","api.RTCIceCandidate.type","api.RTCIceCandidate.url","api.RTCIceCandidate.usernameFragment","api.RTCIceTransport","api.RTCIceTransport.gatheringState","api.RTCIceTransport.gatheringstatechange_event","api.RTCIceTransport.getLocalCandidates","api.RTCIceTransport.getLocalParameters","api.RTCIceTransport.getRemoteCandidates","api.RTCIceTransport.getRemoteParameters","api.RTCIceTransport.getSelectedCandidatePair","api.RTCIceTransport.role","api.RTCIceTransport.selectedcandidatepairchange_event","api.RTCIceTransport.state","api.RTCIceTransport.statechange_event","api.RTCPeerConnection","api.RTCPeerConnection.RTCPeerConnection","api.RTCPeerConnection.RTCPeerConnection.configuration_bundlePolicy_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_certificates_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_iceCandidatePoolSize_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.credential_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.urls_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_iceServers_parameter.username_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_iceTransportPolicy_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_peerIdentity_parameter","api.RTCPeerConnection.RTCPeerConnection.configuration_rtcpMuxPolicy_parameter","api.RTCPeerConnection.addIceCandidate","api.RTCPeerConnection.addIceCandidate.returns_promise","api.RTCPeerConnection.addTrack","api.RTCPeerConnection.addTransceiver","api.RTCPeerConnection.addTransceiver.init_direction_parameter","api.RTCPeerConnection.addTransceiver.init_sendEncodings_parameter","api.RTCPeerConnection.addTransceiver.init_streams_parameter","api.RTCPeerConnection.canTrickleIceCandidates","api.RTCPeerConnection.close","api.RTCPeerConnection.connectionState","api.RTCPeerConnection.connectionstatechange_event","api.RTCPeerConnection.createAnswer","api.RTCPeerConnection.createAnswer.returns_promise","api.RTCPeerConnection.createDataChannel","api.RTCPeerConnection.createOffer","api.RTCPeerConnection.createOffer.returns_promise","api.RTCPeerConnection.currentLocalDescription","api.RTCPeerConnection.currentRemoteDescription","api.RTCPeerConnection.datachannel_event","api.RTCPeerConnection.generateCertificate_static","api.RTCPeerConnection.getConfiguration","api.RTCPeerConnection.getReceivers","api.RTCPeerConnection.getReceivers.stopped_transceivers_removed","api.RTCPeerConnection.getSenders","api.RTCPeerConnection.getSenders.stopped_transceivers_removed","api.RTCPeerConnection.getTransceivers","api.RTCPeerConnection.getTransceivers.stopped_transceivers_removed","api.RTCPeerConnection.iceConnectionState","api.RTCPeerConnection.iceGatheringState","api.RTCPeerConnection.icecandidate_event","api.RTCPeerConnection.icecandidateerror_event","api.RTCPeerConnection.iceconnectionstatechange_event","api.RTCPeerConnection.icegatheringstatechange_event","api.RTCPeerConnection.localDescription","api.RTCPeerConnection.negotiationneeded_event","api.RTCPeerConnection.pendingLocalDescription","api.RTCPeerConnection.pendingRemoteDescription","api.RTCPeerConnection.remoteDescription","api.RTCPeerConnection.removeTrack","api.RTCPeerConnection.restartIce","api.RTCPeerConnection.setConfiguration","api.RTCPeerConnection.setLocalDescription","api.RTCPeerConnection.setLocalDescription.description_parameter_optional","api.RTCPeerConnection.setLocalDescription.returns_promise","api.RTCPeerConnection.setRemoteDescription","api.RTCPeerConnection.setRemoteDescription.implicit_rollback","api.RTCPeerConnection.setRemoteDescription.returns_promise","api.RTCPeerConnection.signalingState","api.RTCPeerConnection.signalingstatechange_event","api.RTCPeerConnection.track_event","api.RTCPeerConnectionIceErrorEvent","api.RTCPeerConnectionIceErrorEvent.RTCPeerConnectionIceErrorEvent","api.RTCPeerConnectionIceErrorEvent.address","api.RTCPeerConnectionIceErrorEvent.errorCode","api.RTCPeerConnectionIceErrorEvent.errorText","api.RTCPeerConnectionIceErrorEvent.port","api.RTCPeerConnectionIceErrorEvent.url","api.RTCPeerConnectionIceEvent","api.RTCPeerConnectionIceEvent.RTCPeerConnectionIceEvent","api.RTCPeerConnectionIceEvent.candidate","api.RTCPeerConnectionIceEvent.url","api.RTCRtpReceiver","api.RTCRtpReceiver.createEncodedStreams","api.RTCRtpReceiver.getCapabilities_static","api.RTCRtpReceiver.getContributingSources","api.RTCRtpReceiver.getContributingSources.audioLevel","api.RTCRtpReceiver.getContributingSources.audio_tracks_supported","api.RTCRtpReceiver.getContributingSources.rtpTimestamp","api.RTCRtpReceiver.getContributingSources.source","api.RTCRtpReceiver.getContributingSources.timestamp","api.RTCRtpReceiver.getContributingSources.video_tracks_supported","api.RTCRtpReceiver.getParameters","api.RTCRtpReceiver.getParameters.return_object_property_codecs","api.RTCRtpReceiver.getParameters.return_object_property_headerExtensions","api.RTCRtpReceiver.getParameters.return_object_property_rtcp","api.RTCRtpReceiver.getSynchronizationSources","api.RTCRtpReceiver.getSynchronizationSources.audio_tracks_supported","api.RTCRtpReceiver.getSynchronizationSources.video_tracks_supported","api.RTCRtpReceiver.jitterBufferTarget","api.RTCRtpReceiver.track","api.RTCRtpReceiver.transport","api.RTCRtpSender","api.RTCRtpSender.createEncodedStreams","api.RTCRtpSender.dtmf","api.RTCRtpSender.getCapabilities_static","api.RTCRtpSender.getParameters","api.RTCRtpSender.getParameters.return_object_property_codecs","api.RTCRtpSender.getParameters.return_object_property_encodings","api.RTCRtpSender.getParameters.return_object_property_headerExtensions","api.RTCRtpSender.getParameters.return_object_property_rtcp","api.RTCRtpSender.getParameters.return_object_property_transactionId","api.RTCRtpSender.replaceTrack","api.RTCRtpSender.setParameters","api.RTCRtpSender.setParameters.parameters_codecs_parameter","api.RTCRtpSender.setParameters.parameters_encodings_parameter","api.RTCRtpSender.setParameters.parameters_encodings_parameter.active","api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxBitrate","api.RTCRtpSender.setParameters.parameters_encodings_parameter.maxFramerate","api.RTCRtpSender.setParameters.parameters_encodings_parameter.rid","api.RTCRtpSender.setParameters.parameters_encodings_parameter.scaleResolutionDownBy","api.RTCRtpSender.setParameters.parameters_headerExtensions_parameter","api.RTCRtpSender.setParameters.parameters_rtcp_parameter","api.RTCRtpSender.setParameters.parameters_transactionId_parameter","api.RTCRtpSender.setStreams","api.RTCRtpSender.track","api.RTCRtpSender.transport","api.RTCRtpTransceiver","api.RTCRtpTransceiver.currentDirection","api.RTCRtpTransceiver.currentDirection.stopped_value","api.RTCRtpTransceiver.direction","api.RTCRtpTransceiver.direction.value_stopped","api.RTCRtpTransceiver.getHeaderExtensionsToNegotiate","api.RTCRtpTransceiver.getNegotiatedHeaderExtensions","api.RTCRtpTransceiver.mid","api.RTCRtpTransceiver.receiver","api.RTCRtpTransceiver.sender","api.RTCRtpTransceiver.setCodecPreferences","api.RTCRtpTransceiver.setHeaderExtensionsToNegotiate","api.RTCRtpTransceiver.stop","api.RTCSessionDescription","api.RTCSessionDescription.sdp","api.RTCSessionDescription.toJSON","api.RTCSessionDescription.type","api.RTCTrackEvent","api.RTCTrackEvent.RTCTrackEvent","api.RTCTrackEvent.receiver","api.RTCTrackEvent.streams","api.RTCTrackEvent.track","api.RTCTrackEvent.transceiver"],"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":"22","firefox_android":"24","safari":"11","safari_ios":"11"}}},"webrtc-encoded-transform":{"compat_features":["api.DedicatedWorkerGlobalScope.rtctransform_event","api.RTCEncodedAudioFrame","api.RTCEncodedAudioFrame.RTCEncodedAudioFrame","api.RTCEncodedAudioFrame.data","api.RTCEncodedAudioFrame.getMetadata","api.RTCEncodedVideoFrame","api.RTCEncodedVideoFrame.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"}}},"webrtc-stats":{"compat_features":["api.RTCPeerConnection.getStats","api.RTCPeerConnection.getStats.returns_promise","api.RTCPeerConnection.getStats.selector_parameter","api.RTCRtpReceiver.getStats","api.RTCRtpSender.getStats","api.RTCStatsReport","api.RTCStatsReport.@@iterator","api.RTCStatsReport.entries","api.RTCStatsReport.forEach","api.RTCStatsReport.get","api.RTCStatsReport.has","api.RTCStatsReport.keys","api.RTCStatsReport.size","api.RTCStatsReport.type_candidate-pair","api.RTCStatsReport.type_candidate-pair.availableOutgoingBitrate","api.RTCStatsReport.type_candidate-pair.bytesDiscardedOnSend","api.RTCStatsReport.type_candidate-pair.bytesReceived","api.RTCStatsReport.type_candidate-pair.bytesSent","api.RTCStatsReport.type_candidate-pair.consentRequestsSent","api.RTCStatsReport.type_candidate-pair.currentRoundTripTime","api.RTCStatsReport.type_candidate-pair.id","api.RTCStatsReport.type_candidate-pair.lastPacketReceivedTimestamp","api.RTCStatsReport.type_candidate-pair.lastPacketSentTimestamp","api.RTCStatsReport.type_candidate-pair.localCandidateId","api.RTCStatsReport.type_candidate-pair.nominated","api.RTCStatsReport.type_candidate-pair.packetsDiscardedOnSend","api.RTCStatsReport.type_candidate-pair.packetsReceived","api.RTCStatsReport.type_candidate-pair.packetsSent","api.RTCStatsReport.type_candidate-pair.remoteCandidateId","api.RTCStatsReport.type_candidate-pair.requestsReceived","api.RTCStatsReport.type_candidate-pair.requestsSent","api.RTCStatsReport.type_candidate-pair.responsesReceived","api.RTCStatsReport.type_candidate-pair.responsesSent","api.RTCStatsReport.type_candidate-pair.state","api.RTCStatsReport.type_candidate-pair.timestamp","api.RTCStatsReport.type_candidate-pair.totalRoundTripTime","api.RTCStatsReport.type_candidate-pair.transportId","api.RTCStatsReport.type_candidate-pair.type","api.RTCStatsReport.type_certificate","api.RTCStatsReport.type_certificate.base64Certificate","api.RTCStatsReport.type_certificate.fingerprint","api.RTCStatsReport.type_certificate.fingerprintAlgorithm","api.RTCStatsReport.type_certificate.id","api.RTCStatsReport.type_certificate.timestamp","api.RTCStatsReport.type_certificate.type","api.RTCStatsReport.type_codec","api.RTCStatsReport.type_codec.channels","api.RTCStatsReport.type_codec.clockRate","api.RTCStatsReport.type_codec.id","api.RTCStatsReport.type_codec.mimeType","api.RTCStatsReport.type_codec.payloadType","api.RTCStatsReport.type_codec.sdpFmtpLine","api.RTCStatsReport.type_codec.timestamp","api.RTCStatsReport.type_codec.transportId","api.RTCStatsReport.type_codec.type","api.RTCStatsReport.type_data-channel","api.RTCStatsReport.type_data-channel.bytesReceived","api.RTCStatsReport.type_data-channel.bytesSent","api.RTCStatsReport.type_data-channel.dataChannelIdentifier","api.RTCStatsReport.type_data-channel.id","api.RTCStatsReport.type_data-channel.label","api.RTCStatsReport.type_data-channel.messagesReceived","api.RTCStatsReport.type_data-channel.messagesSent","api.RTCStatsReport.type_data-channel.protocol","api.RTCStatsReport.type_data-channel.state","api.RTCStatsReport.type_data-channel.timestamp","api.RTCStatsReport.type_data-channel.type","api.RTCStatsReport.type_inbound-rtp","api.RTCStatsReport.type_inbound-rtp.audioLevel","api.RTCStatsReport.type_inbound-rtp.bytesReceived","api.RTCStatsReport.type_inbound-rtp.codecId","api.RTCStatsReport.type_inbound-rtp.concealedSamples","api.RTCStatsReport.type_inbound-rtp.concealmentEvents","api.RTCStatsReport.type_inbound-rtp.fecPacketsDiscarded","api.RTCStatsReport.type_inbound-rtp.fecPacketsReceived","api.RTCStatsReport.type_inbound-rtp.frameHeight","api.RTCStatsReport.type_inbound-rtp.frameWidth","api.RTCStatsReport.type_inbound-rtp.framesDecoded","api.RTCStatsReport.type_inbound-rtp.framesPerSecond","api.RTCStatsReport.type_inbound-rtp.framesReceived","api.RTCStatsReport.type_inbound-rtp.headerBytesReceived","api.RTCStatsReport.type_inbound-rtp.id","api.RTCStatsReport.type_inbound-rtp.insertedSamplesForDeceleration","api.RTCStatsReport.type_inbound-rtp.jitter","api.RTCStatsReport.type_inbound-rtp.jitterBufferDelay","api.RTCStatsReport.type_inbound-rtp.jitterBufferEmittedCount","api.RTCStatsReport.type_inbound-rtp.jitterBufferMinimumDelay","api.RTCStatsReport.type_inbound-rtp.jitterBufferTargetDelay","api.RTCStatsReport.type_inbound-rtp.keyFramesDecoded","api.RTCStatsReport.type_inbound-rtp.kind","api.RTCStatsReport.type_inbound-rtp.lastPacketReceivedTimestamp","api.RTCStatsReport.type_inbound-rtp.mid","api.RTCStatsReport.type_inbound-rtp.nackCount","api.RTCStatsReport.type_inbound-rtp.packetsDiscarded","api.RTCStatsReport.type_inbound-rtp.packetsLost","api.RTCStatsReport.type_inbound-rtp.packetsReceived","api.RTCStatsReport.type_inbound-rtp.playoutId","api.RTCStatsReport.type_inbound-rtp.qpSum","api.RTCStatsReport.type_inbound-rtp.remoteId","api.RTCStatsReport.type_inbound-rtp.removedSamplesForAcceleration","api.RTCStatsReport.type_inbound-rtp.silentConcealedSamples","api.RTCStatsReport.type_inbound-rtp.ssrc","api.RTCStatsReport.type_inbound-rtp.timestamp","api.RTCStatsReport.type_inbound-rtp.totalAudioEnergy","api.RTCStatsReport.type_inbound-rtp.totalDecodeTime","api.RTCStatsReport.type_inbound-rtp.totalInterFrameDelay","api.RTCStatsReport.type_inbound-rtp.totalProcessingDelay","api.RTCStatsReport.type_inbound-rtp.totalSamplesDuration","api.RTCStatsReport.type_inbound-rtp.totalSamplesReceived","api.RTCStatsReport.type_inbound-rtp.totalSquaredInterFrameDelay","api.RTCStatsReport.type_inbound-rtp.trackIdentifier","api.RTCStatsReport.type_inbound-rtp.transportId","api.RTCStatsReport.type_inbound-rtp.type","api.RTCStatsReport.type_local-candidate","api.RTCStatsReport.type_local-candidate.address","api.RTCStatsReport.type_local-candidate.candidateType","api.RTCStatsReport.type_local-candidate.foundation","api.RTCStatsReport.type_local-candidate.id","api.RTCStatsReport.type_local-candidate.port","api.RTCStatsReport.type_local-candidate.priority","api.RTCStatsReport.type_local-candidate.protocol","api.RTCStatsReport.type_local-candidate.timestamp","api.RTCStatsReport.type_local-candidate.transportId","api.RTCStatsReport.type_local-candidate.type","api.RTCStatsReport.type_local-candidate.usernameFragment","api.RTCStatsReport.type_media-playout","api.RTCStatsReport.type_media-playout.id","api.RTCStatsReport.type_media-playout.kind","api.RTCStatsReport.type_media-playout.synthesizedSamplesDuration","api.RTCStatsReport.type_media-playout.synthesizedSamplesEvents","api.RTCStatsReport.type_media-playout.timestamp","api.RTCStatsReport.type_media-playout.totalPlayoutDelay","api.RTCStatsReport.type_media-playout.totalSamplesCount","api.RTCStatsReport.type_media-playout.totalSamplesDuration","api.RTCStatsReport.type_media-playout.type","api.RTCStatsReport.type_media-source","api.RTCStatsReport.type_media-source.audioLevel","api.RTCStatsReport.type_media-source.frames","api.RTCStatsReport.type_media-source.framesPerSecond","api.RTCStatsReport.type_media-source.height","api.RTCStatsReport.type_media-source.id","api.RTCStatsReport.type_media-source.kind","api.RTCStatsReport.type_media-source.timestamp","api.RTCStatsReport.type_media-source.totalAudioEnergy","api.RTCStatsReport.type_media-source.totalSamplesDuration","api.RTCStatsReport.type_media-source.trackIdentifier","api.RTCStatsReport.type_media-source.type","api.RTCStatsReport.type_media-source.width","api.RTCStatsReport.type_outbound-rtp","api.RTCStatsReport.type_outbound-rtp.active","api.RTCStatsReport.type_outbound-rtp.bytesSent","api.RTCStatsReport.type_outbound-rtp.codecId","api.RTCStatsReport.type_outbound-rtp.frameHeight","api.RTCStatsReport.type_outbound-rtp.frameWidth","api.RTCStatsReport.type_outbound-rtp.framesEncoded","api.RTCStatsReport.type_outbound-rtp.framesPerSecond","api.RTCStatsReport.type_outbound-rtp.framesSent","api.RTCStatsReport.type_outbound-rtp.headerBytesSent","api.RTCStatsReport.type_outbound-rtp.id","api.RTCStatsReport.type_outbound-rtp.keyFramesEncoded","api.RTCStatsReport.type_outbound-rtp.kind","api.RTCStatsReport.type_outbound-rtp.mediaSourceId","api.RTCStatsReport.type_outbound-rtp.mid","api.RTCStatsReport.type_outbound-rtp.nackCount","api.RTCStatsReport.type_outbound-rtp.packetsSent","api.RTCStatsReport.type_outbound-rtp.qpSum","api.RTCStatsReport.type_outbound-rtp.qualityLimitationDurations","api.RTCStatsReport.type_outbound-rtp.qualityLimitationReason","api.RTCStatsReport.type_outbound-rtp.remoteId","api.RTCStatsReport.type_outbound-rtp.retransmittedBytesSent","api.RTCStatsReport.type_outbound-rtp.retransmittedPacketsSent","api.RTCStatsReport.type_outbound-rtp.scalabilityMode","api.RTCStatsReport.type_outbound-rtp.ssrc","api.RTCStatsReport.type_outbound-rtp.targetBitrate","api.RTCStatsReport.type_outbound-rtp.timestamp","api.RTCStatsReport.type_outbound-rtp.totalEncodeTime","api.RTCStatsReport.type_outbound-rtp.totalEncodedBytesTarget","api.RTCStatsReport.type_outbound-rtp.totalPacketSendDelay","api.RTCStatsReport.type_outbound-rtp.transportId","api.RTCStatsReport.type_outbound-rtp.type","api.RTCStatsReport.type_peer-connection","api.RTCStatsReport.type_peer-connection.dataChannelsClosed","api.RTCStatsReport.type_peer-connection.dataChannelsOpened","api.RTCStatsReport.type_peer-connection.id","api.RTCStatsReport.type_peer-connection.timestamp","api.RTCStatsReport.type_peer-connection.type","api.RTCStatsReport.type_remote-candidate","api.RTCStatsReport.type_remote-candidate.address","api.RTCStatsReport.type_remote-candidate.candidateType","api.RTCStatsReport.type_remote-candidate.foundation","api.RTCStatsReport.type_remote-candidate.id","api.RTCStatsReport.type_remote-candidate.port","api.RTCStatsReport.type_remote-candidate.priority","api.RTCStatsReport.type_remote-candidate.protocol","api.RTCStatsReport.type_remote-candidate.timestamp","api.RTCStatsReport.type_remote-candidate.transportId","api.RTCStatsReport.type_remote-candidate.type","api.RTCStatsReport.type_remote-candidate.usernameFragment","api.RTCStatsReport.type_remote-inbound-rtp","api.RTCStatsReport.type_remote-inbound-rtp.codecId","api.RTCStatsReport.type_remote-inbound-rtp.fractionLost","api.RTCStatsReport.type_remote-inbound-rtp.id","api.RTCStatsReport.type_remote-inbound-rtp.jitter","api.RTCStatsReport.type_remote-inbound-rtp.kind","api.RTCStatsReport.type_remote-inbound-rtp.localId","api.RTCStatsReport.type_remote-inbound-rtp.packetsLost","api.RTCStatsReport.type_remote-inbound-rtp.packetsReceived","api.RTCStatsReport.type_remote-inbound-rtp.roundTripTime","api.RTCStatsReport.type_remote-inbound-rtp.roundTripTimeMeasurements","api.RTCStatsReport.type_remote-inbound-rtp.ssrc","api.RTCStatsReport.type_remote-inbound-rtp.timestamp","api.RTCStatsReport.type_remote-inbound-rtp.totalRoundTripTime","api.RTCStatsReport.type_remote-inbound-rtp.transportId","api.RTCStatsReport.type_remote-inbound-rtp.type","api.RTCStatsReport.type_remote-outbound-rtp","api.RTCStatsReport.type_remote-outbound-rtp.bytesSent","api.RTCStatsReport.type_remote-outbound-rtp.codecId","api.RTCStatsReport.type_remote-outbound-rtp.id","api.RTCStatsReport.type_remote-outbound-rtp.kind","api.RTCStatsReport.type_remote-outbound-rtp.localId","api.RTCStatsReport.type_remote-outbound-rtp.packetsSent","api.RTCStatsReport.type_remote-outbound-rtp.remoteTimestamp","api.RTCStatsReport.type_remote-outbound-rtp.reportsSent","api.RTCStatsReport.type_remote-outbound-rtp.roundTripTimeMeasurements","api.RTCStatsReport.type_remote-outbound-rtp.ssrc","api.RTCStatsReport.type_remote-outbound-rtp.timestamp","api.RTCStatsReport.type_remote-outbound-rtp.totalRoundTripTime","api.RTCStatsReport.type_remote-outbound-rtp.transportId","api.RTCStatsReport.type_remote-outbound-rtp.type","api.RTCStatsReport.type_transport","api.RTCStatsReport.type_transport.bytesReceived","api.RTCStatsReport.type_transport.bytesSent","api.RTCStatsReport.type_transport.dtlsCipher","api.RTCStatsReport.type_transport.dtlsRole","api.RTCStatsReport.type_transport.dtlsState","api.RTCStatsReport.type_transport.iceLocalUsernameFragment","api.RTCStatsReport.type_transport.iceRole","api.RTCStatsReport.type_transport.iceState","api.RTCStatsReport.type_transport.id","api.RTCStatsReport.type_transport.localCertificateId","api.RTCStatsReport.type_transport.packetsReceived","api.RTCStatsReport.type_transport.packetsSent","api.RTCStatsReport.type_transport.remoteCertificateId","api.RTCStatsReport.type_transport.selectedCandidatePairChanges","api.RTCStatsReport.type_transport.selectedCandidatePairId","api.RTCStatsReport.type_transport.srtpCipher","api.RTCStatsReport.type_transport.timestamp","api.RTCStatsReport.type_transport.tlsVersion","api.RTCStatsReport.type_transport.type","api.RTCStatsReport.values"],"description":"The RTCPeerConnection.getStats(), RTCRtpSender.getStats(), and RTCRtpReceiver.getStats() methods return detailed information about the status, performance, network, and media for a given WebRTC connection.","description_html":"The <code>RTCPeerConnection.getStats()</code>, <code>RTCRtpSender.getStats()</code>, and <code>RTCRtpReceiver.getStats()</code> methods return detailed information about the status, performance, network, and media for a given WebRTC connection.","group":"webrtc","name":"WebRTC statistics","spec":"https://w3c.github.io/webrtc-stats/","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"58","chrome_android":"58","edge":"79","firefox":"44","firefox_android":"44","safari":"11","safari_ios":"11"}}},"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.WebSocket.url_parameter_http_https_relative","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.protocol_rfc_6455","api.WebSocket.readyState","api.WebSocket.send","api.WebSocket.url","api.WebSocket.worker_support","api.WebSocketError","api.WebSocketError.WebSocketError","api.WebSocketError.closeCode","api.WebSocketError.reason","http.headers.Sec-WebSocket-Accept","http.headers.Sec-WebSocket-Extensions","http.headers.Sec-WebSocket-Key","http.headers.Sec-WebSocket-Protocol","http.headers.Sec-WebSocket-Version"],"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.WebTransport.options_allowPooling_parameter","api.WebTransport.WebTransport.options_congestionControl_parameter","api.WebTransport.WebTransport.options_requireUnreliable_parameter","api.WebTransport.WebTransport.options_serverCertificateHashes_parameter","api.WebTransport.byob_readers","api.WebTransport.close","api.WebTransport.closed","api.WebTransport.congestionControl","api.WebTransport.createBidirectionalStream","api.WebTransport.createBidirectionalStream.options_sendOrder_parameter","api.WebTransport.createUnidirectionalStream","api.WebTransport.createUnidirectionalStream.byob_readers","api.WebTransport.createUnidirectionalStream.options_sendOrder_parameter","api.WebTransport.datagrams","api.WebTransport.getStats","api.WebTransport.incomingBidirectionalStreams","api.WebTransport.incomingUnidirectionalStreams","api.WebTransport.ready","api.WebTransport.reliability","api.WebTransportBidirectionalStream","api.WebTransportBidirectionalStream.readable","api.WebTransportBidirectionalStream.readable.returns_WebTransportReceiveStream","api.WebTransportBidirectionalStream.writable","api.WebTransportBidirectionalStream.writable.returns_WebTransportSendStream","api.WebTransportDatagramDuplexStream","api.WebTransportDatagramDuplexStream.byob_readers","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","api.WebTransportReceiveStream","api.WebTransportReceiveStream.getStats","api.WebTransportSendStream","api.WebTransportSendStream.getStats","api.WebTransportSendStream.getWriter","api.WebTransportSendStream.sendOrder"],"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.USB.worker_support","api.USBAlternateInterface","api.USBAlternateInterface.USBAlternateInterface","api.USBAlternateInterface.alternateSetting","api.USBAlternateInterface.endpoints","api.USBAlternateInterface.interfaceClass","api.USBAlternateInterface.interfaceName","api.USBAlternateInterface.interfaceProtocol","api.USBAlternateInterface.interfaceSubclass","api.USBAlternateInterface.worker_support","api.USBConfiguration","api.USBConfiguration.USBConfiguration","api.USBConfiguration.configurationName","api.USBConfiguration.configurationValue","api.USBConfiguration.interfaces","api.USBConfiguration.worker_support","api.USBConnectionEvent","api.USBConnectionEvent.USBConnectionEvent","api.USBConnectionEvent.device","api.USBConnectionEvent.worker_support","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.forget","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.USBDevice.worker_support","api.USBEndpoint","api.USBEndpoint.USBEndpoint","api.USBEndpoint.direction","api.USBEndpoint.endpointNumber","api.USBEndpoint.packetSize","api.USBEndpoint.type","api.USBEndpoint.worker_support","api.USBInTransferResult","api.USBInTransferResult.USBInTransferResult","api.USBInTransferResult.data","api.USBInTransferResult.status","api.USBInTransferResult.worker_support","api.USBInterface","api.USBInterface.USBInterface","api.USBInterface.alternate","api.USBInterface.alternates","api.USBInterface.claimed","api.USBInterface.interfaceNumber","api.USBInterface.worker_support","api.USBIsochronousInTransferPacket","api.USBIsochronousInTransferPacket.USBIsochronousInTransferPacket","api.USBIsochronousInTransferPacket.data","api.USBIsochronousInTransferPacket.status","api.USBIsochronousInTransferPacket.worker_support","api.USBIsochronousInTransferResult","api.USBIsochronousInTransferResult.USBIsochronousInTransferResult","api.USBIsochronousInTransferResult.data","api.USBIsochronousInTransferResult.packets","api.USBIsochronousInTransferResult.worker_support","api.USBIsochronousOutTransferPacket","api.USBIsochronousOutTransferPacket.USBIsochronousOutTransferPacket","api.USBIsochronousOutTransferPacket.bytesWritten","api.USBIsochronousOutTransferPacket.status","api.USBIsochronousOutTransferPacket.worker_support","api.USBIsochronousOutTransferResult","api.USBIsochronousOutTransferResult.USBIsochronousOutTransferResult","api.USBIsochronousOutTransferResult.packets","api.USBIsochronousOutTransferResult.worker_support","api.USBOutTransferResult","api.USBOutTransferResult.USBOutTransferResult","api.USBOutTransferResult.bytesWritten","api.USBOutTransferResult.status","api.USBOutTransferResult.worker_support","api.WorkerNavigator.usb","html.elements.iframe.allow.usb","http.headers.Permissions-Policy.usb"],"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"}}},"webvr":{"caniuse":"webvr","compat_features":["api.Gamepad.displayId","api.Navigator.activeVRDisplays","api.Navigator.activeVRDisplays.secure_context_required","api.Navigator.getVRDisplays","api.PositionSensorVRDevice","api.PositionSensorVRDevice.getImmediateState","api.PositionSensorVRDevice.getState","api.PositionSensorVRDevice.resetSensor","api.VRDisplay","api.VRDisplay.cancelAnimationFrame","api.VRDisplay.capabilities","api.VRDisplay.depthFar","api.VRDisplay.depthNear","api.VRDisplay.displayId","api.VRDisplay.displayName","api.VRDisplay.exitPresent","api.VRDisplay.getEyeParameters","api.VRDisplay.getFrameData","api.VRDisplay.getImmediatePose","api.VRDisplay.getLayers","api.VRDisplay.getPose","api.VRDisplay.isConnected","api.VRDisplay.isPresenting","api.VRDisplay.requestAnimationFrame","api.VRDisplay.requestPresent","api.VRDisplay.resetPose","api.VRDisplay.stageParameters","api.VRDisplay.submitFrame","api.VRDisplayCapabilities","api.VRDisplayCapabilities.canPresent","api.VRDisplayCapabilities.hasExternalDisplay","api.VRDisplayCapabilities.hasOrientation","api.VRDisplayCapabilities.hasPosition","api.VRDisplayCapabilities.maxLayers","api.VRDisplayEvent","api.VRDisplayEvent.VRDisplayEvent","api.VRDisplayEvent.display","api.VRDisplayEvent.reason","api.VREyeParameters","api.VREyeParameters.fieldOfView","api.VREyeParameters.maximumFieldOfView","api.VREyeParameters.minimumFieldOfView","api.VREyeParameters.offset","api.VREyeParameters.renderHeight","api.VREyeParameters.renderWidth","api.VRFieldOfView","api.VRFieldOfView.downDegrees","api.VRFieldOfView.leftDegrees","api.VRFieldOfView.rightDegrees","api.VRFieldOfView.upDegrees","api.VRFrameData","api.VRFrameData.VRFrameData","api.VRFrameData.leftProjectionMatrix","api.VRFrameData.leftViewMatrix","api.VRFrameData.pose","api.VRFrameData.rightProjectionMatrix","api.VRFrameData.rightViewMatrix","api.VRFrameData.timestamp","api.VRPose","api.VRPose.angularAcceleration","api.VRPose.angularVelocity","api.VRPose.linearAcceleration","api.VRPose.linearVelocity","api.VRPose.orientation","api.VRPose.position","api.VRStageParameters","api.VRStageParameters.sittingToStandingTransform","api.VRStageParameters.sizeX","api.VRStageParameters.sizeY","api.Window.vrdisplayactivate_event","api.Window.vrdisplayconnect_event","api.Window.vrdisplaydeactivate_event","api.Window.vrdisplaydisconnect_event","api.Window.vrdisplaypresentchange_event"],"description":"The navigator.getVRDisplays() API represents virtual reality (VR) devices, including sensors and head-mounted displays.","description_html":"The <code>navigator.getVRDisplays()</code> API represents virtual reality (VR) devices, including sensors and head-mounted displays.","discouraged":{"according_to":["https://immersive-web.github.io/webvr/spec/1.1/#abstract"],"alternatives":["webxr-device"]},"name":"WebVR","spec":"https://immersive-web.github.io/webvr/spec/1.1/","status":{"baseline":false,"support":{}}},"webvtt":{"caniuse":"webvtt","compat_features":["api.VTTCue","api.VTTCue.VTTCue","api.VTTCue.getCueAsHTML","api.VTTCue.text","api.VTTCue.text.all_html_character_references"],"description":"WebVTT is a captions and subtitles format. WebVTT files are loaded using the <track> element, and the VTTCue API can be used to create or update cues dynamically.","description_html":"WebVTT is a captions and subtitles format. WebVTT files are loaded using the <code>&#x3C;track></code> element, and the <code>VTTCue</code> API can be used to create or update cues dynamically.","name":"WebVTT","spec":"https://w3c.github.io/webvtt/","status":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"23","chrome_android":"25","edge":"12","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"8"}}},"webvtt-cue-alignment":{"compat_features":["api.VTTCue.lineAlign","api.VTTCue.positionAlign"],"description":"The WebVTT cue alignment settings control which part of the cue is aligned with the given line and position. Cue alignment is set using line and position settings in WebVTT files or the lineAlign and positionAlign properties of VTTCue using JavaScript.","description_html":"The WebVTT cue alignment settings control which part of the cue is aligned with the given line and position. Cue alignment is set using <code>line</code> and <code>position</code> settings in WebVTT files or the <code>lineAlign</code> and <code>positionAlign</code> properties of <code>VTTCue</code> using JavaScript.","name":"WebVTT cue alignment","spec":["https://w3c.github.io/webvtt/#dom-vttcue-linealign","https://w3c.github.io/webvtt/#dom-vttcue-positionalign"],"status":{"baseline":false,"support":{"firefox":"31","firefox_android":"31","safari":"14.1","safari_ios":"14.5"}}},"webvtt-cue-settings":{"compat_features":["api.VTTCue.align","api.VTTCue.line","api.VTTCue.position","api.VTTCue.size","api.VTTCue.snapToLines","api.VTTCue.vertical","css.selectors.cue","css.selectors.cue.selector_argument"],"description":"The VTTCue API updates various aspects of cues dynamically, such as alignment, size and position.","description_html":"The <code>VTTCue</code> API updates various aspects of cues dynamically, such as alignment, size and position.","name":"WebVTT cue settings","spec":"https://w3c.github.io/webvtt/#the-vttcue-interface","status":{"baseline":"high","baseline_high_date":"2022-07-15","baseline_low_date":"2020-01-15","support":{"chrome":"23","chrome_android":"25","edge":"79","firefox":"31","firefox_android":"31","safari":"6","safari_ios":"8"}}},"webvtt-regions":{"compat_features":["api.VTTCue.region","api.VTTRegion","api.VTTRegion.VTTRegion","api.VTTRegion.id","api.VTTRegion.lines","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":"14.1","safari_ios":"14.5"}}},"webxr-anchors":{"compat_features":["api.XRAnchor","api.XRAnchor.anchorSpace","api.XRAnchor.delete","api.XRAnchorSet","api.XRAnchorSet.@@iterator","api.XRAnchorSet.entries","api.XRAnchorSet.forEach","api.XRAnchorSet.has","api.XRAnchorSet.keys","api.XRAnchorSet.size","api.XRAnchorSet.values","api.XRFrame.createAnchor","api.XRFrame.trackedAnchors","api.XRHitTestResult.createAnchor"],"description":"An XRAnchor object keeps track of a pose that is fixed relative to the real world. Anchors build an illusion that the placed objects are really present in the user's environment.","description_html":"An <code>XRAnchor</code> object keeps track of a pose that is fixed relative to the real world. Anchors build an illusion that the placed objects are really present in the user's environment.","group":"webxr","name":"Anchors (WebXR)","spec":"https://immersive-web.github.io/anchors/","status":{"baseline":false,"support":{"chrome":"85","chrome_android":"85","edge":"85"}}},"webxr-ar":{"compat_features":["api.XRSession.environmentBlendMode","api.XRSession.interactionMode","api.XRView.isFirstPersonObserver"],"description":"The \"immersive-ar\" value for navigator.xr.requestSession() starts an augmented reality WebXR session that renders content aligned with the visible environment.","description_html":"The <code>\"immersive-ar\"</code> value for <code>navigator.xr.requestSession()</code> starts an augmented reality WebXR session that renders content aligned with the visible environment.","group":"webxr","name":"Augmented reality","spec":"https://immersive-web.github.io/webxr-ar-module/","status":{"baseline":false,"support":{"chrome":"86","chrome_android":"86","edge":"86"}}},"webxr-camera":{"compat_features":["api.XRCamera","api.XRCamera.height","api.XRCamera.width","api.XRView.camera","api.XRWebGLBinding.getCameraImage"],"description":"The XRView.camera property provides direct access to pose-synchronized camera images within a WebXR session.","description_html":"The <code>XRView.camera</code> property provides direct access to pose-synchronized camera images within a WebXR session.","group":"webxr","name":"Raw camera access for WebXR","spec":"https://immersive-web.github.io/raw-camera-access/","status":{"baseline":false,"support":{"chrome":"107","chrome_android":"107","edge":"107"}}},"webxr-depth-sensing":{"compat_features":["api.XRCPUDepthInformation","api.XRCPUDepthInformation.data","api.XRCPUDepthInformation.getDepthInMeters","api.XRDepthInformation","api.XRDepthInformation.height","api.XRDepthInformation.normDepthBufferFromNormView","api.XRDepthInformation.rawValueToMeters","api.XRDepthInformation.width","api.XRFrame.getDepthInformation","api.XRSession.depthDataFormat","api.XRSession.depthUsage","api.XRWebGLBinding.getDepthInformation","api.XRWebGLDepthInformation","api.XRWebGLDepthInformation.texture"],"description":"An XRDepthInformation object represents a measurement of the distance from the user's device to the real-world geometry in the user's environment.","description_html":"An <code>XRDepthInformation</code> object represents a measurement of the distance from the user's device to the real-world geometry in the user's environment.","group":"webxr","name":"Depth sensing","spec":"https://immersive-web.github.io/depth-sensing/","status":{"baseline":false,"support":{"chrome":"90","chrome_android":"90","edge":"90"}}},"webxr-device":{"compat_features":["api.Navigator.xr","api.WebGL2RenderingContext.makeXRCompatible","api.WebGLRenderingContext.makeXRCompatible","api.XRBoundedReferenceSpace","api.XRBoundedReferenceSpace.boundsGeometry","api.XRFrame","api.XRFrame.getPose","api.XRFrame.getViewerPose","api.XRFrame.session","api.XRInputSource","api.XRInputSource.gripSpace","api.XRInputSource.handedness","api.XRInputSource.profiles","api.XRInputSource.targetRayMode","api.XRInputSource.targetRaySpace","api.XRInputSourceArray","api.XRInputSourceArray.@@iterator","api.XRInputSourceArray.entries","api.XRInputSourceArray.forEach","api.XRInputSourceArray.keys","api.XRInputSourceArray.length","api.XRInputSourceArray.values","api.XRInputSourceEvent","api.XRInputSourceEvent.XRInputSourceEvent","api.XRInputSourceEvent.frame","api.XRInputSourceEvent.inputSource","api.XRInputSourcesChangeEvent","api.XRInputSourcesChangeEvent.XRInputSourcesChangeEvent","api.XRInputSourcesChangeEvent.added","api.XRInputSourcesChangeEvent.removed","api.XRInputSourcesChangeEvent.session","api.XRLayer","api.XRPose","api.XRPose.angularVelocity","api.XRPose.emulatedPosition","api.XRPose.linearVelocity","api.XRPose.transform","api.XRReferenceSpace","api.XRReferenceSpace.getOffsetReferenceSpace","api.XRReferenceSpace.reset_event","api.XRReferenceSpaceEvent","api.XRReferenceSpaceEvent.XRReferenceSpaceEvent","api.XRReferenceSpaceEvent.referenceSpace","api.XRReferenceSpaceEvent.transform","api.XRRenderState","api.XRRenderState.baseLayer","api.XRRenderState.depthFar","api.XRRenderState.depthNear","api.XRRenderState.inlineVerticalFieldOfView","api.XRRigidTransform","api.XRRigidTransform.XRRigidTransform","api.XRRigidTransform.inverse","api.XRRigidTransform.matrix","api.XRRigidTransform.orientation","api.XRRigidTransform.position","api.XRSession","api.XRSession.cancelAnimationFrame","api.XRSession.enabledFeatures","api.XRSession.end","api.XRSession.end_event","api.XRSession.inputSources","api.XRSession.inputsourceschange_event","api.XRSession.renderState","api.XRSession.requestAnimationFrame","api.XRSession.requestReferenceSpace","api.XRSession.select_event","api.XRSession.selectend_event","api.XRSession.selectstart_event","api.XRSession.squeeze_event","api.XRSession.squeezeend_event","api.XRSession.squeezestart_event","api.XRSession.updateRenderState","api.XRSession.visibilityState","api.XRSession.visibilitychange_event","api.XRSessionEvent","api.XRSessionEvent.XRSessionEvent","api.XRSessionEvent.session","api.XRSpace","api.XRSystem","api.XRSystem.devicechange_event","api.XRSystem.isSessionSupported","api.XRSystem.requestSession","api.XRView","api.XRView.eye","api.XRView.projectionMatrix","api.XRView.recommendedViewportScale","api.XRView.requestViewportScale","api.XRView.transform","api.XRViewerPose","api.XRViewerPose.views","api.XRViewport","api.XRViewport.height","api.XRViewport.width","api.XRViewport.x","api.XRViewport.y","api.XRWebGLLayer","api.XRWebGLLayer.XRWebGLLayer","api.XRWebGLLayer.antialias","api.XRWebGLLayer.fixedFoveation","api.XRWebGLLayer.framebuffer","api.XRWebGLLayer.framebufferHeight","api.XRWebGLLayer.framebufferWidth","api.XRWebGLLayer.getNativeFramebufferScaleFactor_static","api.XRWebGLLayer.getViewport","api.XRWebGLLayer.ignoreDepthValues","html.elements.iframe.allow.xr-spatial-tracking","http.headers.Permissions-Policy.xr-spatial-tracking"],"description":"The navigator.xr API represents the browser's virtual reality or augmented reality system. You can use to request a WebXR session.","description_html":"The <code>navigator.xr</code> API represents the browser's virtual reality or augmented reality system. You can use to request a WebXR session.","group":"webxr","name":"WebXR","spec":"https://immersive-web.github.io/webxr/","status":{"baseline":false,"support":{"chrome":"79","chrome_android":"79","edge":"79"}}},"webxr-dom-overlays":{"compat_features":["api.Element.beforexrselect_event","api.XRSession.domOverlayState","css.selectors.xr-overlay"],"description":"A DOM overlay shows 2D DOM content as an interactive, transparent layer on top of a WebXR application's WebGL content and camera image.","description_html":"A DOM overlay shows 2D DOM content as an interactive, transparent layer on top of a WebXR application's WebGL content and camera image.","group":"webxr","name":"DOM overlays for WebXR","spec":"https://immersive-web.github.io/dom-overlays/","status":{"baseline":false,"support":{"chrome":"83","chrome_android":"83","edge":"83"}}},"webxr-gamepads":{"compat_features":["api.XRInputSource.gamepad"],"description":"The gamepad attribute of an XRInputSource represents an XR input device, such as a motion controller, that reports data from physical inputs (such as buttons, touch pads, and triggers).","description_html":"The <code>gamepad</code> attribute of an <code>XRInputSource</code> represents an XR input device, such as a motion controller, that reports data from physical inputs (such as buttons, touch pads, and triggers).","group":"webxr","name":"Gamepad (WebXR)","spec":"https://immersive-web.github.io/webxr-gamepads-module/","status":{"baseline":false,"support":{"chrome":"79","chrome_android":"79","edge":"79"}}},"webxr-hand-input":{"compat_features":["api.XRFrame.fillJointRadii","api.XRFrame.fillPoses","api.XRFrame.getJointPose","api.XRHand","api.XRHand.@@iterator","api.XRHand.entries","api.XRHand.forEach","api.XRHand.get","api.XRHand.keys","api.XRHand.size","api.XRHand.values","api.XRInputSource.hand","api.XRJointPose","api.XRJointPose.radius","api.XRJointSpace","api.XRJointSpace.jointName"],"description":"An XRHand object, from the hand attribute of an XRInputSource object, represents a WebXR session's fully-articulated hand tracking model.","description_html":"An <code>XRHand</code> object, from the <code>hand</code> attribute of an <code>XRInputSource</code> object, represents a WebXR session's fully-articulated hand tracking model.","group":"webxr","name":"Hand input","spec":"https://immersive-web.github.io/webxr-hand-input/","status":{"baseline":false,"support":{"chrome":"131","chrome_android":"131"}}},"webxr-hit-test":{"compat_features":["api.XRFrame.getHitTestResults","api.XRFrame.getHitTestResultsForTransientInput","api.XRHitTestResult","api.XRHitTestResult.getPose","api.XRHitTestSource","api.XRHitTestSource.cancel","api.XRRay","api.XRRay.XRRay","api.XRRay.direction","api.XRRay.matrix","api.XRRay.origin","api.XRSession.requestHitTestSource","api.XRSession.requestHitTestSourceForTransientInput","api.XRTransientInputHitTestResult","api.XRTransientInputHitTestResult.inputSource","api.XRTransientInputHitTestResult.results","api.XRTransientInputHitTestSource","api.XRTransientInputHitTestSource.cancel"],"description":"The getHitTestResults() method of an XRFrame object helps place objects in an augmented reality session by finding where cast rays intersect with real-world geometry.","description_html":"The <code>getHitTestResults()</code> method of an <code>XRFrame</code> object helps place objects in an augmented reality session by finding where cast rays intersect with real-world geometry.","group":"webxr","name":"Hit test","spec":"https://immersive-web.github.io/hit-test/","status":{"baseline":false,"support":{"chrome":"81","chrome_android":"81","edge":"81"}}},"webxr-layers":{"compat_features":["api.XRCompositionLayer","api.XRCompositionLayer.blendTextureSourceAlpha","api.XRCompositionLayer.destroy","api.XRCompositionLayer.layout","api.XRCompositionLayer.mipLevels","api.XRCompositionLayer.needsRedraw","api.XRCubeLayer","api.XRCubeLayer.orientation","api.XRCubeLayer.redraw_event","api.XRCubeLayer.space","api.XRCylinderLayer","api.XRCylinderLayer.aspectRatio","api.XRCylinderLayer.centralAngle","api.XRCylinderLayer.radius","api.XRCylinderLayer.redraw_event","api.XRCylinderLayer.space","api.XRCylinderLayer.transform","api.XREquirectLayer","api.XREquirectLayer.centralHorizontalAngle","api.XREquirectLayer.lowerVerticalAngle","api.XREquirectLayer.radius","api.XREquirectLayer.redraw_event","api.XREquirectLayer.space","api.XREquirectLayer.transform","api.XREquirectLayer.upperVerticalAngle","api.XRLayerEvent","api.XRLayerEvent.XRLayerEvent","api.XRLayerEvent.layer","api.XRMediaBinding","api.XRMediaBinding.XRMediaBinding","api.XRMediaBinding.createCylinderLayer","api.XRMediaBinding.createEquirectLayer","api.XRMediaBinding.createQuadLayer","api.XRProjectionLayer","api.XRProjectionLayer.fixedFoveation","api.XRProjectionLayer.ignoreDepthValues","api.XRProjectionLayer.textureArrayLength","api.XRProjectionLayer.textureHeight","api.XRProjectionLayer.textureWidth","api.XRQuadLayer","api.XRQuadLayer.height","api.XRQuadLayer.redraw_event","api.XRQuadLayer.space","api.XRQuadLayer.transform","api.XRQuadLayer.width","api.XRRenderState.layers","api.XRSubImage","api.XRSubImage.viewport","api.XRWebGLBinding","api.XRWebGLBinding.XRWebGLBinding","api.XRWebGLBinding.createCubeLayer","api.XRWebGLBinding.createCylinderLayer","api.XRWebGLBinding.createEquirectLayer","api.XRWebGLBinding.createProjectionLayer","api.XRWebGLBinding.createQuadLayer","api.XRWebGLBinding.getSubImage","api.XRWebGLBinding.getViewSubImage","api.XRWebGLBinding.nativeProjectionScaleFactor","api.XRWebGLSubImage","api.XRWebGLSubImage.colorTexture","api.XRWebGLSubImage.colorTextureHeight","api.XRWebGLSubImage.colorTextureWidth","api.XRWebGLSubImage.depthStencilTexture","api.XRWebGLSubImage.imageIndex"],"description":"WebXR layer types, such as XRCylinderLayer, XRCylinderLayer, XREquirectLayer, XRProjectionLayer or XRQuadLayer, are managed by the system compositor, to reduce latency or resampling.","description_html":"WebXR layer types, such as <code>XRCylinderLayer</code>, <code>XRCylinderLayer</code>, <code>XREquirectLayer</code>, <code>XRProjectionLayer</code> or <code>XRQuadLayer</code>, are managed by the system compositor, to reduce latency or resampling.","group":"webxr","name":"Layers (WebXR)","spec":"https://immersive-web.github.io/layers/","status":{"baseline":false,"support":{}}},"webxr-lighting-estimation":{"compat_features":["api.XRFrame.getLightEstimate","api.XRLightEstimate","api.XRLightEstimate.primaryLightDirection","api.XRLightEstimate.primaryLightIntensity","api.XRLightEstimate.sphericalHarmonicsCoefficients","api.XRLightProbe","api.XRLightProbe.probeSpace","api.XRLightProbe.reflectionchange_event","api.XRSession.preferredReflectionFormat","api.XRSession.requestLightProbe","api.XRWebGLBinding.getReflectionCubeMap"],"description":"The XRLightProbe and XRLightEstimate objects represent real-world environmental lighting conditions during a WebXR session.","description_html":"The <code>XRLightProbe</code> and <code>XRLightEstimate</code> objects represent real-world environmental lighting conditions during a WebXR session.","group":"webxr","name":"Lighting estimation","spec":"https://immersive-web.github.io/lighting-estimation/","status":{"baseline":false,"support":{"chrome":"90","chrome_android":"90","edge":"90"}}},"wheel-events":{"compat_features":["api.Element.wheel_event","api.WheelEvent","api.WheelEvent.WheelEvent","api.WheelEvent.deltaMode","api.WheelEvent.deltaX","api.WheelEvent.deltaY","api.WheelEvent.deltaZ","api.WheelEvent.pinch_to_zoom_support"],"description":"The wheel event fires when the user moves a mouse wheel or similar spatially rotating input device.","description_html":"The <code>wheel</code> event fires when the user moves a mouse wheel or similar spatially rotating input device.","name":"Wheel events","spec":"https://w3c.github.io/uievents/#events-wheelevents","status":{"baseline":false,"support":{"chrome":"31","chrome_android":"31","edge":"12","firefox":"17","firefox_android":"17","safari":"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","css.properties.white-space-collapse.preserve-spaces"],"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"}}},"widows-orphans":{"caniuse":"css-widows-orphans","compat_features":["css.properties.orphans","css.properties.widows"],"description":"The widows and orphans CSS properties set the minimum lines included in a text fragment created by page, column, or region breaks.","description_html":"The <code>widows</code> and <code>orphans</code> CSS properties set the minimum lines included in a text fragment created by page, column, or region breaks.","group":"layout","name":"Widows and orphans","spec":"https://drafts.csswg.org/css-break-4/#widows-orphans","status":{"baseline":false,"support":{"chrome":"25","chrome_android":"25","edge":"12","safari":"1.3","safari_ios":"1"}}},"width-height":{"compat_features":["css.properties.height","css.properties.height.auto","css.properties.width","css.properties.width.auto","css.properties.width.is_animatable","css.types.dimension","css.types.length","css.types.length-percentage","css.types.percentage"],"description":"The width and height CSS properties set the preferred physical size of an element.","description_html":"The <code>width</code> and <code>height</code> CSS properties set the preferred physical size of an element.","group":"layout","name":"Width and height","spec":"https://drafts.csswg.org/css-sizing-3/#preferred-size-properties","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"}}},"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":{"compat_features":["api.Window","api.Window.DOMContentLoaded_event","api.Window.blur_event","api.Window.close","api.Window.closed","api.Window.error_event","api.Window.focus","api.Window.focus_event","api.Window.frameElement","api.Window.frames","api.Window.innerHeight","api.Window.innerWidth","api.Window.length","api.Window.load_event","api.Window.moveBy","api.Window.moveTo","api.Window.name","api.Window.open","api.Window.open.features_parameter_popup","api.Window.open.once_per_event","api.Window.opener","api.Window.outerHeight","api.Window.outerWidth","api.Window.parent","api.Window.resizeBy","api.Window.resizeTo","api.Window.resize_event","api.Window.screen","api.Window.screenLeft","api.Window.screenTop","api.Window.screenX","api.Window.screenY","api.Window.self","api.Window.stop","api.Window.top","api.Window.window"],"description":"The window global object represents a browser tab or iframe and its relationship to the document and other tabs. It's also a generic global object, under which many other APIs are located.","description_html":"The <code>window</code> global object represents a browser tab or iframe and its relationship to the document and other tabs. It's also a generic global object, under which many other APIs are located.","name":"Window","spec":"https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-window-object","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"}}},"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"}}},"window-management":{"compat_features":["api.Element.requestFullscreen.options_screen_parameter","api.Permissions.permission_window-management","api.Screen.change_event","api.Screen.isExtended","api.ScreenDetailed","api.ScreenDetailed.availLeft","api.ScreenDetailed.availTop","api.ScreenDetailed.devicePixelRatio","api.ScreenDetailed.isInternal","api.ScreenDetailed.isPrimary","api.ScreenDetailed.label","api.ScreenDetailed.left","api.ScreenDetailed.top","api.ScreenDetails","api.ScreenDetails.currentScreen","api.ScreenDetails.currentscreenchange_event","api.ScreenDetails.screens","api.ScreenDetails.screenschange_event","api.Window.getScreenDetails","api.Window.moveTo.relative-multi-screen","api.Window.open.relative-multi-screen","api.Window.screenLeft.relative-multi-screen","api.Window.screenTop.relative-multi-screen","api.Window.screenX.relative-multi-screen","api.Window.screenY.relative-multi-screen","html.elements.iframe.allow.window-management","http.headers.Permissions-Policy.window-management"],"description":"The window.getScreenDetails() method gets information about the screens on a device, which you can use to place new windows on a specific screen with window.open().","description_html":"The <code>window.getScreenDetails()</code> method gets information about the screens on a device, which you can use to place new windows on a specific screen with <code>window.open()</code>.","name":"Window management","spec":"https://w3c.github.io/window-management/","status":{"baseline":false,"support":{"chrome":"111","edge":"111"}}},"with":{"compat_features":["javascript.builtins.Array.@@unscopables","javascript.builtins.Symbol.unscopables","javascript.statements.with"],"description":"The with JavaScript statement adds a given object to the chain of scopes used to evaluate names.","description_html":"The <code>with</code> JavaScript statement adds a given object to the chain of scopes used to evaluate names.","discouraged":{"according_to":["https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-with-statement"],"alternatives":["destructuring"]},"group":"javascript","name":"with","spec":"https://tc39.es/ecma262/multipage/ecmascript-language-statements-and-declarations.html#sec-with-statement","status":{"baseline":false,"support":{"chrome":"38","chrome_android":"38","edge":"12","firefox":"48","firefox_android":"48","safari":"10","safari_ios":"10"}}},"word-break":{"caniuse":"word-break","compat_features":["css.properties.word-break","css.properties.word-break.break-all","css.properties.word-break.keep-all","css.properties.word-break.normal"],"description":"The word-break CSS property sets how lines break within words.","description_html":"The <code>word-break</code> CSS property sets how lines break within words.","group":"text-wrap","name":"word-break","spec":"https://drafts.csswg.org/css-text-4/#word-break-property","status":{"baseline":"high","baseline_high_date":"2018-03-30","baseline_low_date":"2015-09-30","support":{"chrome":"44","chrome_android":"44","edge":"12","firefox":"15","firefox_android":"15","safari":"9","safari_ios":"9"}}},"word-break-auto-phrase":{"compat_features":["css.properties.word-break.auto-phrase"],"description":"The word-break: auto-phrase CSS declaration specifies that wrapping should occur at natural phrase boundaries, especially in CJK languages.","description_html":"The <code>word-break: auto-phrase</code> CSS declaration specifies that wrapping should occur at natural phrase boundaries, especially in CJK languages.","group":"text-wrap","name":"word-break: auto-phrase","spec":"https://drafts.csswg.org/css-text-4/#valdef-word-break-auto-phrase","status":{"baseline":false,"support":{"chrome":"119","chrome_android":"119","edge":"119"}}},"word-break-break-word":{"compat_features":["css.properties.word-break.break-word"],"description":"The word-break: break-word CSS declaration sets word breaks to occur according to their customary rules. Superseded by overflow-wrap: anywhere.","description_html":"The <code>word-break: break-word</code> CSS declaration sets word breaks to occur according to their customary rules. Superseded by <code>overflow-wrap: anywhere</code>.","discouraged":{"according_to":["https://drafts.csswg.org/css-text/#valdef-word-break-break-word"],"alternatives":["overflow-wrap"]},"group":"css","name":"word-break: break-word","spec":"https://drafts.csswg.org/css-text-3/#word-break-property","status":{"baseline":false,"support":{"chrome":"1","chrome_android":"18","edge":"12","firefox":"67","firefox_android":"67","safari":"3","safari_ios":"2"}}},"word-spacing":{"compat_features":["css.properties.word-spacing","css.properties.word-spacing.normal","svg.global_attributes.word-spacing"],"description":"The word-spacing CSS property sets the amount of white space between words.","description_html":"The <code>word-spacing</code> CSS property sets the amount of white space between words.","group":"text","name":"word-spacing","spec":"https://drafts.csswg.org/css-text-4/#word-spacing-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"}}},"writing-mode":{"caniuse":"css-writing-mode","compat_features":["css.properties.writing-mode","css.properties.writing-mode.horizontal-tb","css.properties.writing-mode.sideways-lr","css.properties.writing-mode.sideways-rl","css.properties.writing-mode.vertical-lr","css.properties.writing-mode.vertical-rl","svg.global_attributes.writing-mode"],"description":"The writing-mode CSS property sets whether text is laid out horizontally or vertically, and left to right, or right to left.","description_html":"The <code>writing-mode</code> CSS property sets whether text is laid out horizontally or vertically, and left to right, or right to left.","group":"css","name":"writing-mode","spec":"https://drafts.csswg.org/css-writing-modes-4/#block-flow","status":{"baseline":"high","baseline_high_date":"2019-09-27","baseline_low_date":"2017-03-27","support":{"chrome":"48","chrome_android":"48","edge":"12","firefox":"41","firefox_android":"41","safari":"10.1","safari_ios":"10.3"}}},"writing-mode-svg-values":{"compat_features":["css.properties.writing-mode.lr","css.properties.writing-mode.lr-tb","css.properties.writing-mode.rl","css.properties.writing-mode.rl-tb","css.properties.writing-mode.tb","css.properties.writing-mode.tb-rl"],"description":"The lr, lr-tb, rl, rl-tb, tb, and tb-rl keyword values for the writing-mode CSS property set the text direction for elements in SVG 1.1 documents.","description_html":"The <code>lr</code>, <code>lr-tb</code>, <code>rl</code>, <code>rl-tb</code>, <code>tb</code>, and <code>tb-rl</code> keyword values for the <code>writing-mode</code> CSS property set the text direction for elements in SVG 1.1 documents.","discouraged":{"according_to":["https://drafts.csswg.org/css-writing-modes-4/#svg-writing-mode"],"alternatives":["writing-mode"]},"group":"css","name":"writing-mode SVG 1.1 values","spec":"https://drafts.csswg.org/css-writing-modes-4/#block-flow","status":{"baseline":false,"support":{"chrome":"48","chrome_android":"48","edge":"12","firefox":"43","firefox_android":"43","safari":"10.1","safari_ios":"10.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","safari":"18","safari_ios":"18"}}},"xhr":{"compat_features":["api.FormData","api.FormData.@@iterator","api.FormData.FormData","api.FormData.FormData.submitter","api.FormData.append","api.FormData.append.filename_parameter","api.FormData.delete","api.FormData.entries","api.FormData.forEach","api.FormData.get","api.FormData.getAll","api.FormData.has","api.FormData.keys","api.FormData.set","api.FormData.values","api.FormData.worker_support","api.ProgressEvent","api.ProgressEvent.ProgressEvent","api.ProgressEvent.lengthComputable","api.ProgressEvent.loaded","api.ProgressEvent.total","api.ProgressEvent.worker_support","api.XMLHttpRequest","api.XMLHttpRequest.XMLHttpRequest","api.XMLHttpRequest.abort","api.XMLHttpRequest.abort_event","api.XMLHttpRequest.authorization_removed_cross_origin","api.XMLHttpRequest.error_event","api.XMLHttpRequest.getAllResponseHeaders","api.XMLHttpRequest.getAllResponseHeaders.header_names_lowercase","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.responseType","api.XMLHttpRequest.responseType.arraybuffer_value","api.XMLHttpRequest.responseType.blob_value","api.XMLHttpRequest.responseType.document_value","api.XMLHttpRequest.responseType.json_value","api.XMLHttpRequest.responseURL","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.send.body_URLSearchParams_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.","group":["parsing-and-serialization","xml"],"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"}}},"xpath":{"caniuse":"document-evaluate-xpath","compat_features":["api.Document.createExpression","api.Document.evaluate","api.XPathEvaluator","api.XPathEvaluator.XPathEvaluator","api.XPathEvaluator.createExpression","api.XPathEvaluator.evaluate","api.XPathExpression","api.XPathExpression.evaluate","api.XPathResult","api.XPathResult.booleanValue","api.XPathResult.invalidIteratorState","api.XPathResult.iterateNext","api.XPathResult.numberValue","api.XPathResult.resultType","api.XPathResult.singleNodeValue","api.XPathResult.snapshotItem","api.XPathResult.snapshotLength","api.XPathResult.stringValue"],"description":"The document.evaluate() method selects elements in an HTML or XML document based on an expression of XPath, a domain specific language for querying XML documents. Also known as XML Path Language.","description_html":"The <code>document.evaluate()</code> method selects elements in an HTML or XML document based on an expression of XPath, a domain specific language for querying XML documents. Also known as XML Path Language.","group":"xml","name":"XPath","spec":"https://dom.spec.whatwg.org/#xpath","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"}}},"xslt":{"compat_features":["api.XSLTProcessor","api.XSLTProcessor.XSLTProcessor","api.XSLTProcessor.clearParameters","api.XSLTProcessor.getParameter","api.XSLTProcessor.importStylesheet","api.XSLTProcessor.removeParameter","api.XSLTProcessor.reset","api.XSLTProcessor.setParameter","api.XSLTProcessor.transformToDocument","api.XSLTProcessor.transformToFragment"],"description":"The XSLTProcessor API transforms XML documents into new XML or HTML documents, using XSLT stylesheets. You can use XSLT to convert data between different XML schemas or to convert XML data into web pages or PDF documents. Also known as Extensible Stylesheet Language Transformations.","description_html":"The <code>XSLTProcessor</code> API transforms XML documents into new XML or HTML documents, using XSLT stylesheets. You can use XSLT to convert data between different XML schemas or to convert XML data into web pages or PDF documents. Also known as Extensible Stylesheet Language Transformations.","group":"xml","name":"XSLT","spec":"https://dom.spec.whatwg.org/#xslt","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.1","safari_ios":"2"}}},"z-index":{"compat_features":["css.properties.z-index","css.properties.z-index.auto","css.properties.z-index.negative_values","css.types.integer"],"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"}}},"zstd":{"caniuse":"zstd","compat_features":["http.headers.Content-Encoding.zstd"],"description":"Zstandard or zstd is fast lossless compression algorithm. When used as a content encoding, it is often faster and offers better compression than brotli.","description_html":"Zstandard or <code>zstd</code> is fast lossless compression algorithm. When used as a content encoding, it is often faster and offers better compression than brotli.","name":"Zstandard compression","spec":"https://www.rfc-editor.org/rfc/rfc8878","status":{"baseline":false,"support":{"chrome":"123","chrome_android":"123","edge":"123","firefox":"126","firefox_android":"126"}}}},"groups":{"animation":{"name":"Animation"},"arrays":{"name":"Arrays","parent":"collections"},"background":{"name":"Background","parent":"css"},"blend-mode":{"name":"Blend mode","parent":"css"},"borders-outlines":{"name":"Borders and outlines","parent":"css"},"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"},"compute-pressure":{"name":"Compute pressure"},"container-queries":{"name":"Container queries","parent":"css"},"containment":{"name":"Containment","parent":"css"},"counters":{"name":"Counters","parent":"css"},"credential-management":{"name":"Credential management"},"css":{"name":"CSS"},"cssom":{"name":"CSS object models","parent":"css"},"custom-elements":{"name":"Custom elements","parent":"html"},"environment-variables":{"name":"CSS environment variables","parent":"css"},"explicit-defaults":{"name":"Explicit defaults","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"},"gamepad":{"name":"Gamepad"},"gradients":{"name":"Gradients","parent":"css"},"grid":{"name":"Grid","parent":"layout"},"html":{"name":"HTML"},"html-elements":{"name":"HTML elements","parent":"html"},"image-scaling":{"name":"Image scaling","parent":"images"},"images":{"name":"Images"},"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"},"lists":{"name":"Lists","parent":"css"},"maps":{"name":"Maps","parent":"collections"},"media-elements":{"name":"Media elements","parent":"html"},"media-queries":{"name":"Media queries","parent":"css"},"messaging":{"name":"Messaging"},"multi-column":{"name":"multi-column","parent":"layout"},"parsing-and-serialization":{"name":"Parsing and serialization"},"payments":{"name":"Payments"},"performance":{"name":"Performance"},"positioning":{"name":"Positioning","parent":"layout"},"primitive-types":{"name":"Primitive types","parent":"javascript"},"print":{"name":"Print media"},"progressive-web-app":{"name":"Progressive web app"},"promises":{"name":"Promises","parent":"javascript"},"ruby":{"name":"Ruby"},"scrolling":{"name":"Scrolling"},"security":{"name":"Security"},"selection":{"name":"Selection"},"selectors":{"name":"Selectors","parent":"css"},"sensors":{"name":"Sensors"},"sets":{"name":"Sets","parent":"collections"},"speech":{"name":"Speech"},"storage":{"name":"Storage"},"streams":{"name":"Streams"},"string":{"name":"Strings","parent":"primitive-types"},"svg":{"name":"SVG"},"text":{"name":"Text","parent":"css"},"text-fragments":{"name":"Text fragments"},"text-wrap":{"name":"Text wrap","parent":"text"},"transforms":{"name":"Transforms","parent":"css"},"transitions":{"name":"Transitions (CSS)","parent":"css"},"typed-arrays":{"name":"Typed arrays","parent":"collections"},"units":{"name":"Units","parent":"css"},"view-transitions":{"name":"View Transitions"},"web-audio":{"name":"Web Audio"},"web-components":{"name":"Web Components"},"webassembly":{"name":"WebAssembly"},"webdriver":{"name":"WebDriver"},"webgl":{"name":"WebGL"},"webgl-extensions":{"name":"WebGL extensions","parent":"webgl"},"webrtc":{"name":"WebRTC"},"webxr":{"name":"WebXR"},"white-space":{"name":"White space","parent":"css"},"xml":{"name":"XML"}},"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/"}}}