<!DOCTYPE html>
<!-- saved from url=(0064)https://developer.chrome.com/blog/autoplay/#/developers-switches -->
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="width=device-width,initial-scale=1.0" name="viewport"><meta content="AhaT7AdLUbVk3M0VorYLzXSY8Km9PJZlzg3Xkv6KT2QMZ4zyqA5BfdTJLCj1TVnGhryWtQH66HWQEsIbZDUrsAwAAABseyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tOjQ0MyIsImZlYXR1cmUiOiJTcGVjdWxhdGlvblJ1bGVzUHJlZmV0Y2hGdXR1cmUiLCJleHBpcnkiOjE2OTQxMzExOTl9" http-equiv="origin-trial"><title>Autoplay policy in Chrome - Chrome for Developers</title><link href="https://developer.chrome.com/blog/autoplay/" rel="canonical"><meta content="Chrome for Developers" property="og:site_name"><meta content="Autoplay policy in Chrome - Chrome for Developers" property="og:title"><meta content="website" property="og:type"><meta content="https://developer.chrome.com/blog/autoplay/" property="og:url"><meta content="summary_large_image" name="twitter:card"><meta content="https://wd.imgix.net/image/fuiz5I8Iv7bV8YbrK2PKiY3Vask2/iGPiWTtoy7iF932Xday1.png?auto=format&w=1521" property="og:image"><meta content="https://wd.imgix.net/image/fuiz5I8Iv7bV8YbrK2PKiY3Vask2/iGPiWTtoy7iF932Xday1.png?auto=format&w=1521" name="twitter:image"><meta content="Learn best practices for good user experiences with the new autoplay policies in Chrome.
" name="description"><meta content="Learn best practices for good user experiences with the new autoplay policies in Chrome.
" name="twitter:description"><meta content="Learn best practices for good user experiences with the new autoplay policies in Chrome.
" property="og:description"><meta content="beaufortfrancois" name="authors"><meta content="autoplay,media" name="tags"><link href="https://developer.chrome.com/images/meta/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"><link href="https://developer.chrome.com/images/meta/favicon-32x32.png" rel="icon" type="image/png" sizes="32x32"><link href="https://developer.chrome.com/images/meta/favicon-16x16.png" rel="icon" type="image/png" sizes="16x16"><meta content="#ffffff" name="theme-color"><link href="https://developer.chrome.com/feeds/all.xml" rel="alternate" type="application/rss+xml" title="Chrome for Developers"><link href="https://developer.chrome.com/feeds/blog.xml" rel="alternate" type="application/rss+xml" title="Chrome for Developers - Blog"><link href="https://developer.chrome.com/feeds/articles.xml" rel="alternate" type="application/rss+xml" title="Chrome for Developers - Articles"><link href="https://developer.chrome.com/fonts/google-sans-v2003/regular/latin.woff2" rel="preload" crossorigin="" as="font"><link href="https://developer.chrome.com/fonts/google-sans-v2003/medium/latin.woff2" rel="preload" crossorigin="" as="font"><script type="text/javascript" async="" src="./Autoplay policy in Chrome - Chrome for Developers_files/analytics.js.下载"></script><script type="text/javascript" async="" src="./Autoplay policy in Chrome - Chrome for Developers_files/js"></script><script type="module" src="./Autoplay policy in Chrome - Chrome for Developers_files/main.js.下载"></script><script src="./Autoplay policy in Chrome - Chrome for Developers_files/gtm.js.下载" async=""></script><script type="module" src="./Autoplay policy in Chrome - Chrome for Developers_files/private-aggregation-test.js.下载" defer=""></script><script type="speculationrules">{"prerender":[{"eagerness":"moderate","source":"document","where":{"and":[{"href_matches":"/*\\?*#*"},{"not":{"href_matches":"/articles/*\\?*#*"}}]}}]}</script><script>(function(){try{let e=localStorage.getItem("user-cookies");if("accepts"===e||"rejects"===e){document.documentElement.setAttribute("data-cookies-answered","")}}catch(t){}try{let c="",a=localStorage.getItem("user-banner");if(a===c){document.documentElement.setAttribute("data-banner-dismissed","")}}catch(n){}})();</script><style>@charset "UTF-8";@keyframes rainbow{0%,to{background:violet}25%{background:orange}50%{background:#ff0}75%{background:#00f}}.align-start{align-items:start}.align-center{align-items:center}.decoration-none{text-decoration:none}.direction-column{flex-direction:column}.display-block{display:block}.display-flex{display:flex}.display-inline-flex{display:inline-flex}.display-grid{display:grid}.display-none,announcement-banner[hidden],top-nav[data-search-active] search-box[active]+.dcc-top-menu::before{display:none}.flow-space-200,.type--caption+pre[class*=language-]{--flow-space:0.5rem}.flow-space-300{--flow-space:1rem}.flex-1{flex:1}.flex-shrink-none{flex-shrink:0}announcement-banner p,body,figure,h1,h2,h3,p,pre,top-nav[data-search-active] search-box[active] .search-box__inner{margin:0}.gap-top-300{margin-top:1rem}.gap-top-500{margin-top:2rem}.gap-top-1000{margin-top:4.5rem}.gap-bottom-0{margin-bottom:0}.gap-bottom-100{margin-bottom:.25rem}.gap-bottom-300{margin-bottom:1rem}.gap-left-200{margin-left:.5rem}.gap-left-300{margin-left:1rem}.gap-left-400{margin-left:1.5rem}.height-600{height:2.5rem}.height-700{height:3rem}.justify-content-between{justify-content:space-between}.justify-content-center{justify-content:center}.measure-long{max-width:748px}.overflow-hidden{overflow:hidden}.pad-0{padding:0}.pad-200{padding:.5rem}.pad-top-300{padding-top:1rem}.pad-top-600{padding-top:2.5rem}.pad-right-200{padding-right:.5rem}.pad-right-400{padding-right:1.5rem}.pad-bottom-300{padding-bottom:1rem}.pad-bottom-600{padding-bottom:2.5rem}.pad-left-200{padding-left:.5rem}.pad-left-400,top-nav[data-search-active] .search-box__btn input[type=text]{padding-left:1.5rem}.rounded-lg{border-radius:.75rem}.user-select-none{user-select:none}.visibility-hidden{visibility:hidden}.weight-regular{font-weight:400}.width-600{width:2.5rem}.width-700{width:3rem}.width-full,side-nav navigation-tree,video{width:100%}@media screen and (min-width:992px){.lg\:align-center{align-items:center}.lg\:direction-row{flex-direction:row}.lg\:display-flex{display:flex}.lg\:display-none{display:none}.lg\:flow-space-500{--flow-space:2rem}.lg\:gap-top-0{margin-top:0}.lg\:gap-top-400{margin-top:1.5rem}.lg\:gap-left-400{margin-left:1.5rem}.lg\:gap-left-500{margin-left:2rem}.lg\:pad-right-0{padding-right:0}.lg\:pad-right-200{padding-right:.5rem}.lg\:pad-right-600{padding-right:2.5rem}.lg\:pad-left-0{padding-left:0}.lg\:pad-left-200{padding-left:.5rem}.lg\:pad-left-600{padding-left:2.5rem}}@media screen and (min-width:1440px){.xl\:display-block{display:block}.xl\:display-none{display:none}}.navigation-rail__link{border-radius:0 100px 100px 0;display:flex;padding:.375rem .5rem .375rem 0;text-align:left;text-decoration:none;user-select:none}.navigation-rail__link{align-items:center}.navigation-rail__link:hover{background:var(--color-side-nav-hover)}.navigation-rail__link:focus{z-index:1}.navigation-rail__icon{align-items:center;display:flex;justify-content:center;position:absolute}.navigation-rail__icon::before{content:""}.navigation-rail__icon>svg{min-width:24px;transition:transform .2s}[data-state=active].navigation-rail__link{background:var(--color-secondary);color:var(--color-side-nav-active)}.footer__link,.material-button,.search-box__link,.skip-link,.surface{overflow:hidden;position:relative}.footer__link::before,.material-button::before,.search-box__link::before,.skip-link::before,.surface::before{background-color:var(--overlay-background-color, currentColor);border-radius:2px;content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:.2s opacity;width:100%}.footer__link:hover::before,.material-button:hover::before,.search-box__link:hover::before,.skip-link:hover::before,.surface:hover::before{opacity:.08}.footer__link:focus-within::before,.material-button:focus-within::before,.search-box__link:focus-within::before,.skip-link:focus-within::before,.surface:focus-within::before{opacity:.12}.footer__link:active::before,.material-button:active::before,.search-box__link:active::before,.skip-link:active::before,.surface:active::before{opacity:.16}.link,a:not([class]){color:var(--link-color, var(--color-primary))}.link:not(.no-visited):visited,a:not(.no-visited):visited:not([class]){color:var(--link-visited-color, var(--color-link-default-visited))}.link:hover,a:hover:not([class]){background-color:rgba(var(--link-rgb-background, var(--rgb-primary)),.08)}.link:not(.no-visited):visited:hover,a:not(.no-visited):visited:hover:not([class]){background-color:rgba(var(--link-rgb-background, var(--rgb-link-default-visited)),.08)}.link:focus,.link:focus-within,a:focus-within:not([class]),a:focus:not([class]){background-color:rgba(var(--link-rgb-background, var(--rgb-primary)),.12)}.link:active,a:active:not([class]){background-color:rgba(var(--link-rgb-background, var(--rgb-primary)),.16)}.aside__label>span{font-weight:400}.aside__label>span{font-family:"Google Sans",sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeSpeed}.type--footer{font-weight:400}.type--footer,.type--h6{font-family:"Google Sans",sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeSpeed}.type h1:not([class^=type--var]),.type h2:not([class^=type--var]),.type h3:not([class^=type--var]),.type--h2,.type--h5{font-family:"Google Sans",sans-serif;font-weight:400;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeSpeed}.type h1:not([class^=type--var]),.type--h2{font-size:2.5rem;line-height:1.2}@supports (font-size:clamp(1.75em,4.6875vw,3em)){.type h1:not([class^=type--var]),.type--h2{font-size:clamp(1.75em,4.6875vw,3em);line-height:1.1666666667}}.type h2:not([class^=type--var]){font-size:2rem;line-height:1.25}@supports (font-size:clamp(1.5em,3.515625vw,2.25em)){.type h2:not([class^=type--var]){font-size:clamp(1.5em,3.515625vw,2.25em);line-height:1.2222222222}}.type h3:not([class^=type--var]){font-size:1.75rem;line-height:1.2857142857}@supports (font-size:clamp(1.125em,2.734375vw,1.75em)){.type h3:not([class^=type--var]){font-size:clamp(1.125em,2.734375vw,1.75em);line-height:1.2857142857}}.type--h5{font-size:1.25rem;line-height:1.4}@supports (font-size:clamp(1em,1.953125vw,1.25em)){.type--h5{font-size:clamp(1em,1.953125vw,1.25em);line-height:1.4}}.type--h6{font-weight:500;font-size:1rem;line-height:1.75}@supports (font-size:clamp(.875em,1.5625vw,1em)){.type--h6{font-size:clamp(.875em,1.5625vw,1em);line-height:1.75}}.aside__label>span,.type--footer{font-weight:500;font-size:1rem;line-height:1.75}.banner,.material-button,.skip-link,.toc__wrapper a,.type,.type figcaption,.type ol:not([class])>li::before,.type--caption,.type--label,.type--small,:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",sans-serif;font-weight:400;font-size:1rem;line-height:1.75;text-rendering:optimizeSpeed}.banner,.material-button,.skip-link,.toc__wrapper a,.type--small{font-size:.875rem;line-height:1.4285714286}.type figcaption,.type ol:not([class])>li::before,.type--caption{font-size:.875rem;line-height:1.7142857143}.type--label{font-weight:500;font-size:.75rem;line-height:1.3333333333}.type ul:not([class]){list-style:none;margin-left:3rem;padding:0;position:relative}@media (min-width:992px){.type ul:not([class]){max-width:calc(100% - 6rem)}}.type ul:not([class])>li{margin-top:.5em}.type ol:not([class])>li:first-of-type,.type ul:not([class])>li:first-of-type{margin-top:0}.type ul:not([class])>li::before{background:#5f6368;border-radius:50%;content:"";display:inline-flex;height:.5rem;margin-left:-1.5rem;margin-right:1rem;position:absolute;transform:translateY(.625rem);width:.5rem}.type ol:not([class]){list-style:none;margin-left:3.5rem;padding:0;position:relative;counter-reset:ol-step-counter}@media (min-width:992px){.type ol:not([class]){max-width:calc(100% - 7rem)}}.type ol:not([class])>li{counter-increment:ol-step-counter;margin-top:.5em}.type ol:not([class])>li::before{background:#f1f3f4;border-radius:50%;content:counter(ol-step-counter);display:inline-flex;flex-shrink:0;height:1.5rem;justify-content:center;margin-left:-2.5rem;margin-right:1rem;position:absolute;transform:translateY(.1875rem);width:1.5rem}.type dt:not([class]){font-weight:600;margin-left:1em}.type code,.type pre{font-family:ui-monospace,Menlo,Consolas,Monaco,"Roboto Mono","Source Code Pro","Liberation Mono","Lucida Console",monospace;font-size:.9375em;line-height:1.7333333333}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:400;src:url(/fonts/google-sans-v2003/regular/cyrillic.woff2)format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:400;src:url(/fonts/google-sans-v2003/regular/greek.woff2)format("woff2");unicode-range:U+0370-03FF}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:400;src:url(/fonts/google-sans-v2003/regular/vietnamese.woff2)format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+1EA0-1EF9,U+20AB}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:400;src:url(/fonts/google-sans-v2003/regular/latin-ext.woff2)format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:400;src:url(/fonts/google-sans-v2003/regular/latin.woff2)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:500;src:url(/fonts/google-sans-v2003/medium/cyrillic.woff2)format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:500;src:url(/fonts/google-sans-v2003/medium/greek.woff2)format("woff2");unicode-range:U+0370-03FF}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:500;src:url(/fonts/google-sans-v2003/medium/vietnamese.woff2)format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:500;src:url(/fonts/google-sans-v2003/medium/latin-ext.woff2)format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-display:swap;font-family:"Google Sans";font-style:normal;font-weight:500;src:url(/fonts/google-sans-v2003/medium/latin.woff2)format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}::backdrop,:root{--color-mode:"light";--color-bg:#fff;--color-inverse:#000;--color-bg-shade:#f1f3f4;--color-text:#202124;--color-secondary-text:#3c4043;--color-primary:#1a73e8;--rgb-primary:26, 115, 232;--color-primary-shade:#1967d2;--color-secondary:#e8f0fe;--color-hairline:#dadce0;--color-footer-bg:#f8f9fa;--color-side-nav-hover:#f1f3f4;--color-side-nav-active:#1a73e8;--color-link-default-visited:#681da8;--rgb-link-default-visited:103, 29, 168;--rgb-button-overlay:60, 64, 67;--color-code-bg:#f8f9fa;--color-code-comment:#174ea6;--color-code-string:#174ea6;--color-code-tag:#1e8e3e;--color-code-number:#1967d2;--color-code-attr:#d01884;--color-code-highlight:#fde293;--color-code-add:#a8dab5;--color-code-remove:#f6aea9;--color-project-default:#1967d2;--color-project-handbook:#c5221f;--color-project-workbox:#fa903e;--color-project-lighthouse:#06f;--color-meettheteam-bg:#fef7e0;--color-grey-medium:#5f6368;--color-blue-lightest:rgba(232, 240, 254, 0.4);--color-blue-lighter:#d2e3fc;--color-blue-medium:#1967d2;--color-blue-darkest:#174ea6;--rgb-blue-darkest:23, 78, 166;--color-yellow-lightest:rgba(254, 247, 224, 0.3);--color-yellow-lighter:#feefc3;--color-yellow-medium:#f29900;--color-yellow-darkest:#de7100;--rgb-yellow-darkest:227, 117, 0;--color-red-lightest:rgba(252, 232, 230, 0.4);--color-red-lighter:rgba(252, 232, 230, 0.5);--color-red-medium:#c5221f;--color-red-darkest:#9f0e0e;--rgb-red-darkest:165, 14, 14;--color-green-lightest:rgba(230, 244, 234, 0.4);--color-green-lighter:#ceead6;--color-green-medium:#188038;--color-green-darkest:#0d652d;--rgb-green-darkest:13, 101, 45;--color-purple-lightest:rgba(243, 232, 253, 0.4);--color-purple-lighter:rgba(243, 232, 253, 0.5);--color-purple-medium:#8430ce;--color-purple-darkest:#681da8;--rgb-purple-darkest:104, 29, 168;--color-pink-lightest:rgba(253, 231, 243, 0.4);--color-pink-lighter:rgba(253, 231, 243, 0.5);--color-pink-medium:#d01884;--color-pink-darkest:#9c166b;--rgb-pink-darkest:156, 22, 107;--color-cyan-lightest:rgba(228, 247, 251, 0.4);--color-cyan-lighter:rgba(228, 247, 251, 0.5);--color-cyan-medium:#129eaf;--color-cyan-darkest:#007b83;--rgb-cyan-darkest:0, 122, 131}*,::after,::before{box-sizing:border-box}body{min-height:100vh;background-color:var(--color-bg);color:var(--color-text);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;overflow-wrap:break-word;transition:background 500ms ease-in-out,color 200ms ease}ol[role=list],ul[role=list]{list-style:none}ol,ul{list-style-position:inside}a:not([class]){text-decoration-skip-ink:auto}img{display:block;height:auto;max-width:100%}li img,p img{display:inline-block;vertical-align:sub}button,input,select{font:inherit;letter-spacing:inherit;word-spacing:inherit}announcement-banner[active] [data-banner-close-btn]:hover,iframe{border:0}img:not([alt]){filter:blur(10px)}@media (prefers-reduced-motion:reduce){*{animation-duration:.01s!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01s!important}}:root{font-size:100%}.type,search-box{position:relative}.type pre code{font-size:inherit}.type figcaption{text-align:center}.search-box__results,.stack{display:flex;flex-direction:column;justify-content:flex-start;min-width:0}.search-box__results>*,.stack>*{margin-bottom:0;margin-top:0}.search-box__results>*+*,.stack>*+*{margin-top:var(--flow-space)}.stack--block,announcement-banner,search-box[active] .search-box__input{display:block}.footer__stack ul{margin-top:1.5rem}.stack-exception-600,.stack-exception-600+*{margin-top:2.5rem}.stack-recursive *+*,web-tab>*+*{margin-top:var(--flow-space)}search-box{min-height:2.75rem;min-width:20rem;order:1}search-box input[type=text]{background-color:#f1f3f4;border:1px solid #e8eaed;border-radius:0;color:#5f6368;font-family:"Google Sans",sans-serif;font-size:1rem;height:40px;padding-left:3rem}search-box[active]{z-index:20;background-color:var(--color-bg)}.search-box__inner{align-items:center;display:grid;height:100%}.search-box__inner>*{grid-column:1;grid-row:1}.search-box__btn{z-index:10;align-items:center;color:#5f6368;display:inline-block;font-family:"Google Sans",sans-serif;height:100%;justify-content:center;line-height:1.5rem;margin-top:0;padding:0;width:3rem}.search-box__btn>svg{fill:currentColor}.search-box__btn:hover{border:0;color:#5f6368}.search-box__btn:active,.search-box__btn:focus{background-color:transparent;border:0;box-shadow:none}@media (max-width:1280px){.search-box__btn{width:3.5rem}}.search-box__input{background:var(--color-bg-shade);border:0;border-radius:6.25rem;display:none;font:inherit;margin:0;padding:.5rem 1rem .5rem 3rem}@media (min-width:992px){.search-box__input{display:block;width:100%}}.search-box__input::placeholder{color:var(--color-secondary-text)}.search-box__results{--flow-space:1.5rem;height:calc(100vh - 2.75rem);max-width:100%;overflow-x:hidden;padding-bottom:4.5rem;position:absolute;top:calc(2.75rem + .5rem + 1.5rem);word-break:break-word}.search-box__results strong{color:var(--color-primary)}.search-box__result-heading{color:var(--color-secondary-text)}.search-box__result-heading~.search-box__result-heading{border-top:1px solid var(--color-hairline);padding-top:1.5rem}.search-box__link{--overlay-background-color:var(--color-primary);align-items:center;display:inline-flex;text-decoration:none}.search-box__link[aria-selected=true]::before{opacity:.1}.search-box__title{color:var(--color-text)}.search-box__snippet{color:var(--color-secondary-text)}.search-box__thumbnail{margin-left:.5rem}@media (min-width:592px){.search-box__thumbnail{margin-left:1rem}}top-nav{padding:.5rem 1rem}@media (min-width:992px){top-nav{padding:.5rem 1.5rem}}top-nav nav{gap:1rem;grid-template-columns:min-content auto min-content;position:relative}@media (max-width:1280px){top-nav nav{gap:1rem}}@media (min-width:992px){top-nav nav{gap:3.5rem}}top-nav>nav[role=search]{gap:4.5rem;grid-template-columns:1fr 6fr 2fr;position:relative}@media (max-width:1280px){top-nav>nav[role=search]{gap:2.5rem}}@media (max-width:991px){top-nav>nav[role=search]{gap:0;grid-template-columns:1fr 1fr}}top-nav .top-nav__logo{align-items:center;height:44px}@media (max-width:991px){top-nav[data-search-active] nav{padding:0 1.5rem}top-nav[data-search-active] .top-nav__hamburger,top-nav[data-search-active] .top-nav__logo{display:none}}top-nav[data-search-active]>nav[role=search]{gap:4.5rem;grid-template-columns:1fr 2fr 1fr}@media (max-width:1280px){top-nav[data-search-active]>nav[role=search]{grid-template-columns:1fr 3fr 1fr}}@media (max-width:991px){top-nav[data-search-active]>nav[role=search]{grid-template-columns:1fr}}top-nav[data-search-active] .dcc-top-menu,top-nav[data-search-active] .top-nav__hamburger,top-nav[data-search-active] .top-nav__logo{height:0;opacity:0}top-nav[data-search-active] nav::before{z-index:20;margin-left:calc(50% - 50vw);width:100vw;background-color:var(--color-hairline);content:"";display:block;height:1px;position:absolute;top:calc(2.75rem + .5rem)}top-nav[data-search-active] nav::after{z-index:10;margin-left:calc(50% - 50vw);width:100vw;background:var(--color-bg);content:"";height:100vh;left:0;position:absolute;top:0}top-nav[data-search-active] search-box[active]{order:0}@media (max-width:992px){top-nav[data-search-active] search-box[active] .search-box__inner{margin-top:.3125rem}}search-box .search-box__btn{color:#5f6368;display:inline-block;margin-top:0;padding:0}search-box .search-box__btn:hover{border:0;color:#5f6368}search-box .search-box__btn:active,search-box .search-box__btn:focus{background-color:transparent;border:0;box-shadow:none}@media (max-width:840px){search-box{font-size:1.125rem;font-weight:400;line-height:1.875rem;min-width:auto}}@media (max-width:991px){search-box:not([active]) .search-box__btn{position:absolute;right:0}}@media (max-width:480px){search-box{min-width:auto}}.dcc-hamburger.button{border:0;color:#5f6368;display:none;line-height:1;margin:0 1.375rem 0 0;padding:0;width:2.325rem}.dcc-hamburger.button:active,.dcc-hamburger.button:focus,.dcc-hamburger.button:hover{border:0;color:#5f6368}@media (max-width:840px){.dcc-hamburger.button{display:block}}.dcc-top-menu{display:flex;flex:1;justify-content:flex-start;margin-top:.05rem}.dcc-top-menu a{color:#5f6368;font-family:"Google Sans",sans-serif;font-size:.9375em;font-weight:500;letter-spacing:.25px;line-height:1.25rem;text-decoration:none}.dcc-top-menu a:active,.dcc-top-menu a:focus,.dcc-top-menu a:hover{color:#3982f7;text-decoration:none}@media (max-width:1280px){top-nav nav{gap:2.5rem}}@media (max-width:991px){top-nav{padding:.125rem .75rem}top-nav .dcc-hamburger.button{display:block;position:absolute}top-nav .top-nav__logo{margin-left:3.5rem}}@media (max-width:991px) and (max-width:480px){top-nav .top-nav__logo{margin-left:3rem}}@media (max-width:991px){top-nav .dcc-top-menu{display:none}.scaffold{display:block}}@media (max-width:840px){top-nav nav{gap:0}}footer{--flow-space:0.75rem;background-color:var(--color-footer-bg)}.footer__stack .footer__heading{color:#5f6368;font-size:1.25rem;line-height:1.25rem}.footer__stack+.footer__stack{margin-top:2rem}@media (min-width:992px){.footer__stack+.footer__stack{margin-top:0}}.footer__link{color:var(--color-secondary-text)}.scaffold{display:grid;height:100vh;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:"header""main""footer"}.scaffold>*{min-width:0}.scaffold>top-nav{grid-area:header}.scaffold>navigation-rail,.scaffold>side-nav{grid-area:sidebar}.scaffold>main{grid-area:main}.scaffold>footer{grid-area:footer}navigation-rail{display:none;outline:0}@media (min-width:992px){navigation-rail{border-right:1px solid var(--color-hairline);display:block}.navigation-rail__links{position:sticky;top:0}}.navigation-rail__link{font-size:.875rem;line-height:2;color:var(--color-secondary-text);padding-bottom:.75rem;padding-top:.75rem}@media (min-width:992px){.navigation-rail__link{flex-direction:column;padding:0;position:relative}.navigation-rail__link .navigation-rail__icon{position:static}.navigation-rail__link+.navigation-rail__link{--flow-space:1.5rem;margin-top:var(--flow-space)}.navigation-rail__link:hover{background:0 0;z-index:0}.navigation-rail__link:hover::before{background:var(--color-side-nav-hover);border-radius:50%;content:"";height:40px;position:absolute;top:-6px;width:40px;z-index:-1}}.navigation-rail__link[data-state=active]{color:var(--color-side-nav-active)}@media (min-width:992px){.navigation-rail__link[data-state=active]{background:0 0}}.navigation-rail__link>:last-child{margin-left:4rem}@media (min-width:992px){.navigation-rail__link>:last-child{margin-left:0}}.navigation-rail__icon{width:4rem}announcement-banner:not(.cookie-banner) [data-banner-close-btn]{line-height:1.125rem;margin:-.5rem 1rem -.4rem 0;opacity:0;padding:0 .5rem;pointer-events:none}announcement-banner[active] [data-banner-close-btn]{opacity:1;pointer-events:auto}[data-banner-dismissed] .banner,[data-cookies-answered] .cookie-banner{display:none}.cookie-banner{z-index:40;background-color:var(--color-bg);bottom:0;display:flex;flex-direction:column;padding:1.5rem;position:fixed;width:100%}@media (min-width:592px){.cookie-banner{align-items:center;flex-direction:row}}.cookie-banner__controls{margin-top:1rem}@media (min-width:592px){.cookie-banner__controls{margin-left:1rem;margin-top:0}}.cookie-banner__controls>button{margin:.25rem 1rem .25rem 0;min-width:8rem}.banner{background:var(--color-bg-shade);display:flex;justify-content:center;padding:1rem}.button,.material-button,.search-box__btn,.skip-link{background:0 0;border:0;cursor:pointer;text-decoration:none}.button svg,.material-button svg,.search-box__btn svg,.skip-link svg{vertical-align:middle}.button:disabled,.button[disabled],.material-button:disabled,.material-button[disabled],.search-box__btn:disabled,.skip-link:disabled,[disabled].material-button,[disabled].search-box__btn,[disabled].skip-link{opacity:.6;pointer-events:none}.material-button,.skip-link{font-family:"Google Sans",sans-serif;border-radius:.25rem;color:var(--button-color, inherit);padding:.5rem 1.5rem;white-space:nowrap}.button-text{margin-left:-.5rem;margin-top:-.5rem;padding:.5rem}.button-text+.button-text{margin-left:1rem}.button-filled{position:relative;transition:box-shadow .1s;z-index:1}.button-filled::before{background:rgba(var(--rgb-button-overlay),1);border-radius:inherit;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .1s;z-index:-1}.button-filled:hover{box-shadow:rgba(var(--rgb-button-overlay),.3)0 1px 2px 0,rgba(var(--rgb-button-overlay),.15)0 1px 3px 1px}.button-filled:active{box-shadow:rgba(var(--rgb-button-overlay),.3)0 1px 2px 0,rgba(var(--rgb-button-overlay),.15)0 2px 6px 2px}.button-filled:hover::before{opacity:.16}.button-filled:focus::before{opacity:.24}.button-filled:active::before{opacity:.36}.aside__label>svg,.icon{fill:currentColor}.cluster{overflow:hidden}.cluster>*{display:flex;flex-wrap:wrap;margin:calc(var(--flow-space)/2*-1)}.cluster>*>*{margin:calc(var(--flow-space)/2)}select{-webkit-appearance:none;appearance:none;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7 10L12 15L17 10H7Z' fill='%235F6368'/%3E%3C/svg%3E%0A");background-position:right .5em top 50%;background-repeat:no-repeat;background-size:1.5em;border:1px solid var(--color-hairline);border-radius:1px;box-sizing:border-box;display:block;font-size:1em;line-height:1.5;margin:0;max-width:100%;padding:.6em 3em .5em .8em}select::-ms-expand{display:none}select:hover{border-color:var(--color-text)}side-nav,side-nav::before{height:100%;left:0;top:0;width:100%}side-nav{z-index:40;pointer-events:none;position:fixed;visibility:hidden}@media (min-width:992px){side-nav{display:none}}side-nav::before{background:rgba(0,0,0,.4);content:"";display:block;opacity:0;position:absolute;transition:opacity .2s cubic-bezier(.4,0,.2,1)}@media (min-width:992px){side-nav::before{display:none}}side-nav navigation-rail,side-nav navigation-tree{display:block;height:100%}side-nav[expanded]{pointer-events:auto;visibility:visible}side-nav[expanded]::before{opacity:1}side-nav[expanded] .side-nav__container{transform:translate(0,0)}.side-nav__container{box-shadow:0 1px 2px 0 rgba(60,64,67,.3),0 2px 6px 2px rgba(60,64,67,.15);background:var(--color-bg);height:100%;max-width:22.5rem;overflow:hidden;transform:translate(-102%,0);transition:none;width:85vw}.side-nav__container>*{transition:none}side-nav[animating]{visibility:visible}side-nav[animating] .side-nav__container{transition:transform .2s cubic-bezier(.4,0,.2,1)}side-nav[animating] .side-nav__container>*{transition:transform .2s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1);visibility:visible}side-nav .navigation-rail__close,side-nav[view=site] navigation-rail__close{border:0;color:var(--color-secondary-text);margin:0;padding:0}side-nav .navigation-rail__link,side-nav[view=site] navigation-rail__link{color:var(--color-secondary-text);font-weight:500}side-nav .navigation-rail__link[data-state=active],side-nav[view=site] navigation-rail__link[data-state=active]{color:#3982f7}side-nav[view=project] navigation-rail{opacity:0;transform:translate(100%,0);visibility:hidden}side-nav[view=project] navigation-tree{opacity:1;transform:translate(0,-100%)}side-nav[view=site] navigation-rail{opacity:1;transform:translate(0,0)}side-nav[view=site] navigation-tree{opacity:0;transform:translate(-100%,-100%);visibility:hidden}.skip-link{background-color:var(--color-bg)}.skip-link:focus{clip:auto;padding:inherit;width:auto;z-index:1}:root{--flow-space:2rem}html{scroll-behavior:smooth}body:has(dialog[open]){overflow:hidden}.details>summary:focus,main:focus,navigation-tree:focus{outline:0}video[width][height]{height:auto}[hidden]{display:none!important}.aside{--link-color:var(--color-blue-darkest);--link-visited-color:var(--color-blue-darkest);--link-rgb-background:var(--rgb-blue-darkest);background-color:var(--color-blue-lightest);border-radius:6px;color:var(--color-blue-darkest);padding:1.5rem}.aside>*+*{margin-top:1rem}.aside--caution{--link-color:var(--color-yellow-darkest);--link-visited-color:var(--color-yellow-darkest);--link-rgb-background:var(--rgb-yellow-darkest);background-color:var(--color-yellow-lightest);color:var(--color-yellow-darkest)}.aside--warning{--link-color:var(--color-red-darkest);--link-visited-color:var(--color-red-darkest);--link-rgb-background:var(--rgb-red-darkest);background-color:var(--color-red-lightest);color:var(--color-red-darkest)}.aside--important{--link-color:var(--color-purple-darkest);--link-visited-color:var(--color-purple-darkest);--link-rgb-background:var(--rgb-purple-darkest);background-color:var(--color-purple-lightest);color:var(--color-purple-darkest)}.aside__label{align-items:center;display:flex}.aside__label>*+*{margin-left:.75rem}.card-authors__image>img{border:2px solid var(--color-bg);border-radius:100%;box-sizing:content-box;height:40px;max-width:40px;width:40px}.card-authors__image:not(:first-of-type){margin-left:-.5rem}code,pre,pre[class*=language-]{background:var(--color-code-bg);border:1px solid var(--color-hairline);border-radius:3px}pre,pre[class*=language-]{color:var(--color-text);overflow:auto;padding:.5em}code{padding:.125em .25em}pre>code{background:initial;border:initial;border-radius:initial;padding:initial}.token.comment{color:var(--color-code-comment)}.token.attr-value,.token.punctuation,.token.string{color:var(--color-code-string)}.token.property,.token.tag{color:var(--color-code-tag)}.token.boolean{color:var(--color-code-number)}.token.attr-name,.token.attr-value .punctuation:first-child,.token.important,.token.keyword,.token.operator,.token.regex,.token.url{color:var(--color-code-attr)}.namespace{opacity:.7}.columns{display:grid;gap:1rem;grid-auto-flow:row}@media (min-width:592px){.columns{grid-auto-columns:1fr;grid-auto-flow:column}}.details{border:1px solid var(--color-hairline);border-width:1px 0;padding:calc(var(--flow-space)/2)0;position:relative}.details>summary{cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent}.details>summary::-webkit-details-marker,.details>summary::marker{display:none}.details .heading-link,.toc__wrapper li::before{display:none}figure{display:block;width:100%}figure>:not(figcaption){display:block;margin-left:auto;margin-right:auto}figure>figcaption{display:block;max-width:100%;text-align:center}.heading-link{color:transparent;float:left;margin-left:-1.5rem;opacity:.4;position:relative;text-align:center;text-decoration:none;width:1.5rem}.heading-link:hover{opacity:1}.heading-link::after{bottom:0;color:var(--color-secondary-text);content:"#";left:0;position:absolute;right:0;top:0;transform:scale(.666);transform-origin:75% 50%}@media (min-width:992px){.heading-link::after{transform-origin:25% 50%}}navigation-tree{display:none;width:15.625rem}@media (min-width:992px){navigation-tree{display:block}}navigation-tree .toc-container{margin-left:1.5rem;margin-top:2rem;position:sticky;top:1rem}.post-authors{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(13.75rem,1fr))}.post-authors-social>a{margin-inline-end:.25rem}.post-navigation{border-bottom:1px solid var(--color-hairline);border-top:1px solid var(--color-hairline);display:flex;font-family:"Google Sans";justify-content:space-between;margin-bottom:-4.5rem;margin-top:5rem;width:100%}@media (max-width:591px){.post-navigation{flex-direction:column}}.post-navigation__link{display:block;font-size:1.25rem;height:100%;line-height:1.75rem;padding:2.5rem;text-decoration:none}@media (max-width:591px){.post-navigation__link{width:100%}}@media (max-width:991px){.post-navigation__link{padding:2.5rem 1.5rem}}.post-navigation__link:hover{background-color:var(--color-blue-lightest);height:100%}.post-navigation__prev{border-right:1px solid var(--color-hairline)}@media (max-width:591px){.post-navigation__prev{border-bottom:1px solid var(--color-hairline);border-top:unset}}.post-navigation__next,.post-navigation__prev{width:50%}@media (max-width:591px){.post-navigation__next,.post-navigation__prev{width:100%}}.post-navigation__label{color:var(--color-primary);display:inline-block;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem}.post-navigation__label::before{background-position:center center;background-repeat:no-repeat no-repeat;background-size:cover;content:"";display:inline-block;height:1rem;margin-right:1.25rem;margin-top:-.125rem;vertical-align:middle;width:1rem;background-image:url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8 0L6.59 1.41L12.17 7H0V9H12.17L6.59 14.59L8 16L16 8L8 0Z' fill='%231A73E8'/%3E%3C/svg%3E%0A")}.post-navigation__prev .post-navigation__label::before{transform:scaleX(-1)}.post-navigation__title{color:var(--color-text);display:block;max-width:70ch;text-decoration:none}web-tabs{display:block;margin-top:var(--flow-space)0;width:100%}web-tabs [role=tablist]{align-items:flex-end;border-bottom:1px solid var(--color-hairline);display:flex;min-height:50px;overflow-x:auto;scroll-behavior:smooth;width:100%}web-tabs [role=tab]{background:0 0;border:0;flex:1 0 auto;height:3rem;margin:0;min-width:fit-content;opacity:.6;position:relative;transition:background .2s,opacity .2s,color .2s}web-tabs [aria-selected=true]{color:var(--color-primary);opacity:1}web-tabs [role=tab]::after{background:0 0;bottom:0;content:"";display:block;height:2px;left:0;opacity:1;position:absolute;right:0;transition:background .2s}web-tabs [aria-selected=true]::after{background:var(--color-primary)}.tag-pill{margin-bottom:.5rem;padding:.25rem .75rem}.tag-pill[title]{cursor:help}.toc-container{max-width:18.75rem}.toc>summary{list-style:none}.toc>summary::-webkit-details-marker{display:none}.toc__icon{display:inline-flex;margin-left:.5rem}.toc__icon>svg{display:flex;transform:rotate(90deg)}.toc[open] .toc__icon>svg{transform:rotate(270deg)}toc-active{display:block;max-height:calc(100vh - .5rem*2);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;position:sticky;top:.5rem}toc-active [toc--active]{font-weight:600;letter-spacing:-.35px}.toc__wrapper a{text-decoration:none}.toc__wrapper li{line-height:1.2}.toc__wrapper li+li{margin-top:.5rem}.toc__wrapper ol,.toc__wrapper ul{list-style-type:none;margin:.5rem 0;padding:0}.toc__wrapper ol ol,.toc__wrapper ol ul,.toc__wrapper ul ol,.toc__wrapper ul ul{border-left:1px solid var(--color-hairline);padding-left:1rem}.youtube{padding-top:56.25%;position:relative;width:100%}lite-youtube{height:100%;left:50%;position:absolute;text-align:initial;top:50%;transform:translate(-50%,-50%);width:100%}.center-images img{margin-left:auto;margin-right:auto}.hairline{border:1px solid var(--color-hairline)}.hairline-top{border-top:1px solid var(--color-hairline)}.hairline-bottom{border-bottom:1px solid var(--color-hairline)}.color-blue-medium{color:var(--color-blue-medium)}.color-red-medium{color:var(--color-red-medium)}.color-bg{color:var(--color-bg)}.color-text{color:var(--color-text)}.color-secondary-text{color:var(--color-secondary-text)}.color-primary{color:var(--color-primary)}.bg-primary{background-color:var(--color-primary)}.scrollbar{scrollbar-color:#9aa0a6 transparent;scrollbar-width:thin}.scrollbar::-webkit-scrollbar{height:10px;width:10px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa0a6;background-clip:padding-box;border:2.5px solid transparent;border-radius:5px}.scrollbar::-webkit-scrollbar-thumb:hover{background-color:#798189}.scrollbar::-webkit-scrollbar-thumb:active{background-color:#61686e}.scrollbar::-webkit-scrollbar-track{background:0 0}.footer__link,.surface{text-decoration:none}.footer__link:focus,.footer__link:hover,.surface:focus,.surface:hover{text-decoration:underline}.visually-hidden,.w-visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.wrapper{margin-left:auto;margin-right:auto;max-width:70rem;padding:0 2rem;position:relative}</style></head><body><div class="scaffold"><top-nav class="display-block hairline-bottom" role="banner" data-side-nav-inert="" data-resolved=""><a class="color-primary skip-link visually-hidden" href="https://developer.chrome.com/blog/autoplay/#main-content">Skip to content</a><nav class="align-center display-grid" role="navigation" aria-label="Chrome Developers"><button class="align-center button dcc-hamburger display-flex height-700 justify-content-center lg:display-none top-nav__hamburger width-700" aria-label="menu"><svg class="icon" width="24" height="24" aria-hidden="true" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"></path><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path></svg></button><div class="display-flex justify-content-start top-nav__logo"><a class="display-inline-flex" href="https://developer.chrome.com/" aria-label="developer.chrome.com"> <svg class="icon" fill="none" width="200" height="36" aria-hidden="true" viewBox="0 0 184 26" id="devsiteChromeLogo"><g clip-path="url(#clip0_399_87642b5ec81b59)"><path fill="#606367" d="M36.0427 16.8959C35.2246 16.4198 34.5814 15.7644 34.1155 14.9319C33.6496 14.0994 33.4155 13.1726 33.4155 12.1493C33.4155 11.1259 33.6496 10.1991 34.1155 9.36665C34.5814 8.53416 35.2246 7.87874 36.0427 7.40271C36.8609 6.92667 37.77 6.6875 38.7723 6.6875C39.5427 6.6875 40.2472 6.83698 40.8881 7.13364C41.529 7.4303 42.0836 7.85115 42.5563 8.39617L41.6768 9.25856C41.2813 8.78252 40.8518 8.43067 40.3836 8.2076C39.9177 7.98453 39.3813 7.87184 38.7745 7.87184C38.0245 7.87184 37.3359 8.04892 36.7109 8.40537C36.0859 8.76183 35.5882 9.26316 35.2177 9.90937C34.8473 10.5579 34.6609 11.3053 34.6609 12.1516C34.6609 12.9979 34.8473 13.7453 35.2177 14.3938C35.5882 15.0423 36.0859 15.5436 36.7109 15.8978C37.3359 16.2542 38.0245 16.4313 38.7745 16.4313C40.0245 16.4313 41.0881 15.9093 41.9654 14.8675L42.8608 15.7437C42.379 16.3186 41.7881 16.774 41.0859 17.1097C40.3836 17.4455 39.6131 17.6134 38.7768 17.6134C37.7745 17.6134 36.8655 17.3742 36.0473 16.8982L36.0427 16.8959Z"></path> <path fill="#606367" d="M44.229 6.91699H45.4563V9.99859L45.3994 11.022H45.4563C45.6585 10.6425 45.979 10.3251 46.4153 10.0722C46.854 9.81921 47.3312 9.69273 47.8517 9.69273C48.7471 9.69273 49.4289 9.95719 49.9017 10.4884C50.3721 11.0197 50.6085 11.7234 50.6085 12.5995V17.376H49.3812V12.7881C49.3812 12.1166 49.213 11.6199 48.8767 11.2979C48.5403 10.976 48.1017 10.815 47.5631 10.815C47.179 10.815 46.8244 10.9323 46.5017 11.1645C46.179 11.3968 45.9244 11.7004 45.7358 12.0706C45.5472 12.4409 45.454 12.8249 45.454 13.2251V17.3737H44.2267V6.91699H44.229Z"></path> <path fill="#606367" d="M52.3698 9.92745H53.5403V11.1256H53.5971C53.7403 10.7163 54.0198 10.3782 54.4334 10.1114C54.8471 9.84467 55.2811 9.70898 55.7334 9.70898C56.0698 9.70898 56.3584 9.75728 56.5993 9.85616V11.1992C56.2902 11.0428 55.9448 10.9646 55.5607 10.9646C55.2039 10.9646 54.8766 11.0658 54.5789 11.2705C54.2812 11.4752 54.0425 11.7511 53.8652 12.0961C53.688 12.441 53.5971 12.8136 53.5971 13.2137V17.3762H52.3698V9.92516V9.92745Z"></path> <path fill="#606367" d="M58.7947 17.0842C58.2175 16.7347 57.7675 16.2563 57.4447 15.6538C57.122 15.049 56.9607 14.3821 56.9607 13.6531C56.9607 12.9241 57.122 12.2549 57.4447 11.6524C57.7675 11.0475 58.2175 10.5715 58.7947 10.2219C59.372 9.87239 60.022 9.69531 60.7447 9.69531C61.4674 9.69531 62.1151 9.87009 62.6924 10.2219C63.2697 10.5715 63.7197 11.0498 64.0424 11.6524C64.3651 12.2572 64.5265 12.9241 64.5265 13.6531C64.5265 14.3821 64.3651 15.0513 64.0424 15.6538C63.7197 16.2586 63.2697 16.7347 62.6924 17.0842C62.1151 17.4338 61.4652 17.6109 60.7447 17.6109C60.0243 17.6109 59.3743 17.4361 58.7947 17.0842ZM62.0061 16.1414C62.3947 15.9137 62.7083 15.5848 62.9447 15.1548C63.181 14.727 63.2992 14.2257 63.2992 13.6508C63.2992 13.0759 63.181 12.5745 62.9447 12.1468C62.7083 11.719 62.397 11.3902 62.0061 11.1602C61.6151 10.9325 61.1947 10.8176 60.7424 10.8176C60.2902 10.8176 59.8674 10.9325 59.472 11.1602C59.0765 11.3902 58.7629 11.719 58.5265 12.1468C58.2902 12.5745 58.172 13.0759 58.172 13.6508C58.172 14.2257 58.2902 14.727 58.5265 15.1548C58.7629 15.5825 59.0765 15.9114 59.472 16.1414C59.8674 16.3713 60.2902 16.484 60.7424 16.484C61.1947 16.484 61.6151 16.369 62.0061 16.1414Z"></path> <path fill="#606367" d="M65.8105 9.92793H66.981V11.0226H67.0378C67.2492 10.6431 67.5673 10.3258 67.9901 10.0728C68.4128 9.81984 68.8605 9.69336 69.3332 9.69336C69.8719 9.69336 70.3423 9.82444 70.74 10.0866C71.14 10.3488 71.4264 10.7006 71.5991 11.1376C71.8582 10.6983 72.2036 10.3488 72.6309 10.0866C73.0582 9.82444 73.5559 9.69336 74.1241 9.69336C74.9718 9.69336 75.6082 9.95322 76.0377 10.4753C76.465 10.9973 76.6809 11.7056 76.6809 12.6002V17.3766H75.4672V12.7888C75.4672 12.0965 75.3263 11.5952 75.0491 11.2847C74.7695 10.9743 74.3559 10.8179 73.8082 10.8179C73.4423 10.8179 73.1105 10.926 72.8127 11.1399C72.515 11.3537 72.2809 11.6412 72.1127 12.0023C71.9446 12.3633 71.8605 12.752 71.8605 13.1705V17.3766H70.6332V12.8048C70.6332 12.1034 70.4946 11.5975 70.215 11.2847C69.9355 10.9743 69.5264 10.8179 68.9878 10.8179C68.6219 10.8179 68.2901 10.9283 67.9923 11.1468C67.6946 11.3652 67.4605 11.6573 67.2923 12.023C67.1242 12.3886 67.0401 12.7796 67.0401 13.1981V17.3766H65.8128V9.92563L65.8105 9.92793Z"></path> <path fill="#606367" d="M79.8286 17.1007C79.2695 16.7603 78.8354 16.2889 78.5218 15.691C78.2081 15.093 78.0536 14.4169 78.0536 13.6672C78.0536 12.9175 78.2013 12.2851 78.4945 11.6803C78.7877 11.0755 79.2036 10.5948 79.7422 10.2338C80.2808 9.87274 80.9058 9.69336 81.6195 9.69336C82.3331 9.69336 82.9672 9.85664 83.4967 10.1832C84.0262 10.5098 84.4331 10.9605 84.7171 11.5354C85.0012 12.1103 85.1421 12.7681 85.1421 13.5086C85.1421 13.6534 85.1285 13.7822 85.099 13.888H79.2808C79.3104 14.4537 79.4445 14.9298 79.6854 15.3184C79.9263 15.7071 80.2308 15.9991 80.6013 16.1946C80.9717 16.3901 81.3581 16.4867 81.7626 16.4867C82.7058 16.4867 83.4331 16.0382 83.9422 15.1436L84.9808 15.6542C84.6626 16.259 84.2331 16.735 83.6899 17.0846C83.1467 17.4341 82.4899 17.6112 81.7195 17.6112C81.0172 17.6112 80.3854 17.441 79.8286 17.1007ZM83.8422 12.8646C83.8217 12.5542 83.7353 12.2414 83.5831 11.9287C83.4285 11.6182 83.1853 11.3537 82.8535 11.1399C82.5217 10.926 82.1058 10.8179 81.6058 10.8179C81.0286 10.8179 80.5399 11.0065 80.1399 11.3813C79.7399 11.7562 79.4786 12.2506 79.3536 12.8646H83.8422Z"></path> <path fill="#606367" d="M90.483 11.0519H89.1262V9.92739H90.483V9.1248C90.483 8.65796 90.5898 8.24861 90.8012 7.89676C91.0125 7.54721 91.2966 7.27584 91.6534 7.08497C92.0102 6.89409 92.4034 6.7998 92.8375 6.7998C93.2716 6.7998 93.6125 6.8573 93.9193 6.97458V8.18652C93.7466 8.11753 93.5829 8.06234 93.4284 8.01864C93.2738 7.97495 93.092 7.95195 92.8807 7.95195C92.5625 7.95195 92.2898 8.06694 92.058 8.29461C91.8261 8.52458 91.7125 8.84194 91.7125 9.25128V9.92279H93.6034V11.0473H91.7125V17.3715H90.4853V11.0473L90.483 11.0519Z"></path> <path fill="#606367" d="M96.0988 17.0842C95.5215 16.7347 95.0715 16.2563 94.7488 15.6538C94.4261 15.049 94.2647 14.3821 94.2647 13.6531C94.2647 12.9241 94.4261 12.2549 94.7488 11.6524C95.0715 11.0475 95.5215 10.5715 96.0988 10.2219C96.6761 9.87239 97.3261 9.69531 98.0488 9.69531C98.7715 9.69531 99.4192 9.87009 99.9965 10.2219C100.574 10.5715 101.024 11.0498 101.346 11.6524C101.669 12.2572 101.831 12.9241 101.831 13.6531C101.831 14.3821 101.669 15.0513 101.346 15.6538C101.024 16.2586 100.574 16.7347 99.9965 17.0842C99.4192 17.4338 98.7692 17.6109 98.0488 17.6109C97.3283 17.6109 96.6783 17.4361 96.0988 17.0842ZM99.3101 16.1414C99.6988 15.9137 100.012 15.5848 100.249 15.1548C100.485 14.727 100.603 14.2257 100.603 13.6508C100.603 13.0759 100.485 12.5745 100.249 12.1468C100.012 11.719 99.701 11.3902 99.3101 11.1602C98.9192 10.9325 98.4988 10.8176 98.0465 10.8176C97.5942 10.8176 97.1715 10.9325 96.7761 11.1602C96.3806 11.3902 96.067 11.719 95.8306 12.1468C95.5943 12.5745 95.4761 13.0759 95.4761 13.6508C95.4761 14.2257 95.5943 14.727 95.8306 15.1548C96.067 15.5825 96.3806 15.9114 96.7761 16.1414C97.1715 16.3713 97.5942 16.484 98.0465 16.484C98.4988 16.484 98.9192 16.369 99.3101 16.1414Z"></path> <path fill="#606367" d="M103.115 9.92745H104.285V11.1256H104.342C104.485 10.7163 104.765 10.3782 105.178 10.1114C105.592 9.84467 106.026 9.70898 106.478 9.70898C106.815 9.70898 107.103 9.75728 107.344 9.85616V11.1992C107.035 11.0428 106.69 10.9646 106.305 10.9646C105.949 10.9646 105.621 11.0658 105.324 11.2705C105.026 11.4752 104.787 11.7511 104.61 12.0961C104.433 12.441 104.342 12.8136 104.342 13.2137V17.3762H103.115V9.92516V9.92745Z"></path> <path fill="#606367" d="M112.124 6.91699H115.242C116.301 6.91699 117.224 7.13776 118.014 7.5816C118.803 8.02545 119.41 8.64176 119.833 9.43056C120.255 10.2194 120.467 11.1254 120.467 12.1465C120.467 13.1676 120.255 14.0736 119.833 14.8624C119.41 15.6512 118.803 16.2676 118.014 16.7114C117.226 17.1552 116.301 17.376 115.242 17.376H112.124V6.91699ZM115.242 16.194C116.464 16.194 117.433 15.8375 118.151 15.1269C118.867 14.4163 119.226 13.4228 119.226 12.1465C119.226 10.8702 118.867 9.8767 118.151 9.1661C117.433 8.45549 116.464 8.09904 115.242 8.09904H113.337V16.1917H115.242V16.194Z"></path> <path fill="#606367" d="M123.196 17.1007C122.637 16.7603 122.203 16.2889 121.889 15.691C121.576 15.093 121.421 14.4169 121.421 13.6672C121.421 12.9175 121.569 12.2851 121.862 11.6803C122.155 11.0755 122.571 10.5948 123.11 10.2338C123.648 9.87274 124.273 9.69336 124.987 9.69336C125.701 9.69336 126.335 9.85664 126.864 10.1832C127.394 10.5098 127.801 10.9605 128.085 11.5354C128.369 12.1103 128.51 12.7681 128.51 13.5086C128.51 13.6534 128.496 13.7822 128.467 13.888H122.648C122.678 14.4537 122.812 14.9298 123.053 15.3184C123.294 15.7071 123.598 15.9991 123.969 16.1946C124.339 16.3901 124.726 16.4867 125.13 16.4867C126.073 16.4867 126.801 16.0382 127.31 15.1436L128.348 15.6542C128.03 16.259 127.601 16.735 127.058 17.0846C126.514 17.4341 125.858 17.6112 125.087 17.6112C124.385 17.6112 123.753 17.441 123.196 17.1007ZM127.21 12.8646C127.189 12.5542 127.103 12.2414 126.951 11.9287C126.796 11.6182 126.553 11.3537 126.221 11.1399C125.889 10.926 125.473 10.8179 124.973 10.8179C124.396 10.8179 123.908 11.0065 123.508 11.3813C123.108 11.7562 122.846 12.2506 122.721 12.8646H127.21Z"></path> <path fill="#606367" d="M128.985 9.92773H130.298L132.58 15.9161H132.61L134.919 9.92773H136.203L133.201 17.3788H131.96L128.985 9.92773Z"></path> <path fill="#606367" d="M138.382 17.1007C137.823 16.7603 137.389 16.2889 137.076 15.691C136.762 15.093 136.607 14.4169 136.607 13.6672C136.607 12.9175 136.755 12.2851 137.048 11.6803C137.342 11.0755 137.757 10.5948 138.296 10.2338C138.835 9.87274 139.46 9.69336 140.173 9.69336C140.887 9.69336 141.521 9.85664 142.051 10.1832C142.58 10.5098 142.987 10.9605 143.271 11.5354C143.555 12.1103 143.696 12.7681 143.696 13.5086C143.696 13.6534 143.682 13.7822 143.653 13.888H137.835C137.864 14.4537 137.998 14.9298 138.239 15.3184C138.48 15.7071 138.785 15.9991 139.155 16.1946C139.526 16.3901 139.912 16.4867 140.316 16.4867C141.26 16.4867 141.987 16.0382 142.496 15.1436L143.535 15.6542C143.216 16.259 142.787 16.735 142.244 17.0846C141.701 17.4341 141.044 17.6112 140.273 17.6112C139.571 17.6112 138.939 17.441 138.382 17.1007ZM142.396 12.8646C142.376 12.5542 142.289 12.2414 142.137 11.9287C141.982 11.6182 141.739 11.3537 141.407 11.1399C141.076 10.926 140.66 10.8179 140.16 10.8179C139.582 10.8179 139.094 11.0065 138.694 11.3813C138.294 11.7562 138.032 12.2506 137.907 12.8646H142.396Z"></path> <path fill="#606367" d="M145.123 6.91699H146.35V17.376H145.123V6.91699Z"></path> <path fill="#606367" d="M149.541 17.0842C148.964 16.7347 148.514 16.2563 148.191 15.6538C147.869 15.049 147.707 14.3821 147.707 13.6531C147.707 12.9241 147.869 12.2549 148.191 11.6524C148.514 11.0475 148.964 10.5715 149.541 10.2219C150.119 9.87239 150.769 9.69531 151.491 9.69531C152.214 9.69531 152.862 9.87009 153.439 10.2219C154.016 10.5715 154.466 11.0498 154.789 11.6524C155.112 12.2572 155.273 12.9241 155.273 13.6531C155.273 14.3821 155.112 15.0513 154.789 15.6538C154.466 16.2586 154.016 16.7347 153.439 17.0842C152.862 17.4338 152.212 17.6109 151.491 17.6109C150.771 17.6109 150.121 17.4361 149.541 17.0842ZM152.753 16.1414C153.141 15.9137 153.455 15.5848 153.691 15.1548C153.928 14.727 154.046 14.2257 154.046 13.6508C154.046 13.0759 153.928 12.5745 153.691 12.1468C153.455 11.719 153.144 11.3902 152.753 11.1602C152.362 10.9325 151.941 10.8176 151.489 10.8176C151.037 10.8176 150.614 10.9325 150.219 11.1602C149.823 11.3902 149.51 11.719 149.273 12.1468C149.037 12.5745 148.919 13.0759 148.919 13.6508C148.919 14.2257 149.037 14.727 149.273 15.1548C149.51 15.5825 149.823 15.9114 150.219 16.1414C150.614 16.3713 151.037 16.484 151.489 16.484C151.941 16.484 152.362 16.369 152.753 16.1414Z"></path> <path fill="#606367" d="M156.571 9.92758H157.741V11.0383H157.798C158.019 10.6589 158.355 10.3392 158.8 10.0817C159.248 9.8241 159.75 9.69531 160.309 9.69531C160.964 9.69531 161.559 9.86549 162.1 10.2058C162.639 10.5462 163.062 11.0199 163.371 11.6225C163.678 12.2273 163.832 12.9034 163.832 13.6531C163.832 14.4028 163.678 15.0927 163.371 15.6906C163.062 16.2885 162.639 16.76 162.1 17.1003C161.562 17.4407 160.964 17.6109 160.309 17.6109C159.75 17.6109 159.248 17.4821 158.8 17.2245C158.353 16.967 158.019 16.6519 157.798 16.2816H157.741L157.798 17.305V20.5338H156.571V9.92758ZM161.364 16.1368C161.739 15.9022 162.039 15.5687 162.266 15.1364C162.491 14.7041 162.605 14.2096 162.605 13.6531C162.605 13.0966 162.491 12.6044 162.266 12.1698C162.039 11.7374 161.739 11.404 161.364 11.1694C160.989 10.9348 160.589 10.8199 160.166 10.8199C159.743 10.8199 159.343 10.9371 158.968 11.1694C158.594 11.4017 158.296 11.7351 158.073 12.1629C157.853 12.5906 157.741 13.0874 157.741 13.6531C157.741 14.2188 157.853 14.7155 158.073 15.1433C158.294 15.571 158.594 15.9022 158.968 16.1368C159.343 16.3713 159.743 16.4863 160.166 16.4863C160.589 16.4863 160.989 16.369 161.364 16.1368Z"></path> <path fill="#606367" d="M166.648 17.1007C166.089 16.7603 165.655 16.2889 165.341 15.691C165.028 15.093 164.873 14.4169 164.873 13.6672C164.873 12.9175 165.021 12.2851 165.314 11.6803C165.607 11.0755 166.023 10.5948 166.562 10.2338C167.1 9.87274 167.725 9.69336 168.439 9.69336C169.152 9.69336 169.787 9.85664 170.316 10.1832C170.846 10.5098 171.252 10.9605 171.537 11.5354C171.821 12.1103 171.962 12.7681 171.962 13.5086C171.962 13.6534 171.948 13.7822 171.918 13.888H166.1C166.13 14.4537 166.264 14.9298 166.505 15.3184C166.746 15.7071 167.05 15.9991 167.421 16.1946C167.791 16.3901 168.177 16.4867 168.582 16.4867C169.525 16.4867 170.252 16.0382 170.762 15.1436L171.8 15.6542C171.482 16.259 171.052 16.735 170.509 17.0846C169.966 17.4341 169.309 17.6112 168.539 17.6112C167.837 17.6112 167.205 17.441 166.648 17.1007ZM170.662 12.8646C170.641 12.5542 170.555 12.2414 170.402 11.9287C170.248 11.6182 170.005 11.3537 169.673 11.1399C169.341 10.926 168.925 10.8179 168.425 10.8179C167.848 10.8179 167.359 11.0065 166.959 11.3813C166.559 11.7562 166.298 12.2506 166.173 12.8646H170.662Z"></path> <path fill="#606367" d="M173.389 9.92745H174.559V11.1256H174.616C174.759 10.7163 175.039 10.3782 175.452 10.1114C175.866 9.84467 176.3 9.70898 176.752 9.70898C177.089 9.70898 177.377 9.75728 177.618 9.85616V11.1992C177.309 11.0428 176.964 10.9646 176.58 10.9646C176.223 10.9646 175.896 11.0658 175.598 11.2705C175.3 11.4752 175.061 11.7511 174.884 12.0961C174.707 12.441 174.616 12.8136 174.616 13.2137V17.3762H173.389V9.92516V9.92745Z"></path> <path fill="#606367" d="M179.107 17.0501C178.577 16.6752 178.202 16.1946 177.982 15.6105L179.08 15.1137C179.261 15.5622 179.534 15.9071 179.895 16.1509C180.257 16.3947 180.652 16.5166 181.086 16.5166C181.548 16.5166 181.943 16.4223 182.27 16.2314C182.598 16.0405 182.761 15.7715 182.761 15.4196C182.761 15.1091 182.632 14.8562 182.37 14.6676C182.111 14.4767 181.702 14.3157 181.143 14.1778L180.248 13.9432C179.661 13.7983 179.18 13.5499 178.805 13.1981C178.43 12.8485 178.241 12.3955 178.241 11.839C178.241 11.4112 178.368 11.0341 178.623 10.7075C178.877 10.381 179.218 10.1303 179.641 9.95552C180.064 9.78075 180.52 9.69336 181.011 9.69336C181.657 9.69336 182.232 9.83364 182.736 10.1165C183.241 10.3994 183.6 10.7926 183.811 11.3008L182.743 11.7976C182.416 11.1353 181.834 10.8041 180.995 10.8041C180.591 10.8041 180.239 10.8984 179.934 11.0893C179.632 11.2801 179.48 11.5193 179.48 11.8114C179.48 12.085 179.586 12.3058 179.798 12.476C180.009 12.6462 180.327 12.7842 180.75 12.8922L181.818 13.1705C182.541 13.3568 183.084 13.6304 183.45 13.9961C183.816 14.3617 183.998 14.8079 183.998 15.3322C183.998 15.7899 183.868 16.1923 183.609 16.5373C183.35 16.8822 182.998 17.149 182.555 17.333C182.111 17.5169 181.62 17.6112 181.082 17.6112C180.293 17.6112 179.634 17.4226 179.105 17.0478L179.107 17.0501Z"></path> <path fill="#E84436" d="M23.0475 6.25082C19.6361 0.273913 12.0817 -1.77512 6.17494 1.67673C4.29769 2.77368 2.73862 4.35127 1.65454 6.25082L2.39544 19.75L23.0475 6.25082Z"></path> <path fill="#34A653" d="M7.00446 15.6245L1.6568 6.25098C-1.75452 12.2302 0.270453 19.8744 6.1772 23.3239C8.05445 24.4209 10.184 24.9981 12.3521 24.9981L24.4565 12.4993L7.00219 15.6245H7.00446Z"></path> <path fill="url(#paint0_linear_399_87642b5ec81b59)" d="M17.7021 15.6245L12.3544 24.9981C19.177 24.9981 24.7042 19.3983 24.7042 12.497C24.7042 10.303 24.1338 8.15053 23.0497 6.25098H12.3544L17.7021 15.6245Z"></path> <path fill="white" d="M12.3544 18.7495C15.7657 18.7495 18.5293 15.9507 18.5293 12.5012C18.5293 9.05166 15.7634 6.25293 12.3544 6.25293C8.94535 6.25293 6.17947 9.05166 6.17947 12.5012C6.17947 15.9507 8.94535 18.7495 12.3544 18.7495Z"></path> <path fill="#4383F2" d="M12.3544 17.45C15.0566 17.45 17.2452 15.2354 17.2475 12.5011C17.2475 9.76671 15.0589 7.5521 12.3567 7.5498C9.65443 7.5498 7.46582 9.76671 7.46582 12.5011C7.46582 15.2331 9.6567 17.45 12.3567 17.45H12.3544Z"></path> </g><defs><lineargradient id="paint0_linear_399_87642b5ec81b59" y2="6.39923" y1="25.0027" x2="21.4447" x1="10.5567" gradientUnits="userSpaceOnUse"><stop stop-color="#FAC735"></stop><stop stop-color="#F8BA07" offset="1"></stop></lineargradient><clippath id="clip0_399_87642b5ec81b59"><rect fill="white" width="184" height="25"></rect></clippath></defs></svg></a></div><search-box class="align-center display-grid" role="combobox" placeholder="Search docs, blogs and more" locale="en" docslabel="Documentation" buttonlabel="open search" bloglabel="Blog" articleslabel="Articles" aria-owns="search-box__results" aria-haspopup="listbox" aria-expanded="false"><!---->
<div class="search-box__inner" role="presentation">
<button class="search-box__btn" aria-label="open search">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.76 13.27L20.49 19 19 20.49l-5.73-5.73C12.2 15.53 10.91 16 9.5 16A6.5 6.5 0 1116 9.5c0 1.41-.47 2.7-1.24 3.77zM9.5 5C7.01 5 5 7.01 5 9.5S7.01 14 9.5 14 14 11.99 14 9.5 11.99 5 9.5 5z"></path></svg>
</button>
<input type="text" class="search-box__input" aria-autocomplete="list" placeholder="Search docs, blogs and more" aria-label="Search docs, blogs and more">
</div>
<!----></search-box><nav class="dcc-top-menu"><a class="no-visited" href="https://developer.chrome.com/tags/case-study/">Get Inspired</a> <a class="no-visited" href="https://developer.chrome.com/docs/">Docs</a> <a class="no-visited" href="https://developer.chrome.com/blog/">Blog</a> <a class="no-visited" href="https://developer.chrome.com/articles/">Articles</a></nav></nav></top-nav> <side-nav type="site" view="site" data-resolved=""><div class="lg:display-flex side-nav__container"><navigation-rail class="lg:pad-left-200 lg:pad-right-200" role="navigation" aria-label="primary" tabindex="-1"><div class="align-center display-flex hairline-bottom lg:display-none pad-200"><button class="align-center button display-flex height-700 justify-content-center navigation-rail__close width-700" aria-label="Close"><svg class="icon" fill="none" width="24" height="24" aria-hidden="true" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg></button><div class="display-flex pad-left-200 pad-right-200"><svg width="220" height="36" aria-hidden="true"> <use href="#devsiteChromeLogo"></use> </svg></div></div><div class="direction-column display-flex lg:pad-right-0 navigation-rail__links pad-right-200 pad-top-300"><a class="navigation-rail__link" href="https://developer.chrome.com/tags/case-study/"><div class="navigation-rail__icon"><svg class="icon" fill="none" width="24" height="23" aria-hidden="true" viewBox="0 0 22 23"> <path d="M1.67939 1.6707V9.8293V9.74576V20.6053V1.6707ZM4.45038 12.8087H9.6285C9.83562 12.4913 10.0595 12.1961 10.3003 11.9177C10.541 11.6392 10.8153 11.3775 11.112 11.138H4.45038V12.8087ZM4.45038 17.5424H8.81679C8.76081 17.2639 8.71603 16.9855 8.68804 16.707C8.66005 16.4286 8.65445 16.1501 8.67125 15.8717H4.44478V17.5424H4.45038ZM1.67939 22.276C1.23155 22.276 0.839695 22.109 0.503817 21.7748C0.167939 21.4407 0 21.0508 0 20.6053V1.6707C0 1.22518 0.167939 0.835351 0.503817 0.501211C0.839695 0.16707 1.23155 0 1.67939 0H11.7837L17.9135 6.09806V10.3862C17.6504 10.2581 17.3817 10.1467 17.1018 10.0521C16.8219 9.95739 16.5308 9.88499 16.2341 9.8293V6.84988H10.944V1.6707H1.67939V20.6053H10.4962C10.8712 20.9952 11.2855 21.3293 11.7445 21.6077C12.2036 21.8862 12.7018 22.109 13.2448 22.276H1.67939ZM15.1145 19.2131C15.9934 19.2131 16.7267 18.9179 17.3145 18.3332C17.9023 17.7484 18.199 17.0189 18.199 16.1446C18.199 15.2702 17.9023 14.5407 17.3145 13.9559C16.7267 13.3712 15.9934 13.076 15.1145 13.076C14.2356 13.076 13.5023 13.3712 12.9145 13.9559C12.3267 14.5407 12.03 15.2702 12.03 16.1446C12.03 17.0189 12.3267 17.7484 12.9145 18.3332C13.5023 18.9179 14.2356 19.2131 15.1145 19.2131ZM20.8244 23L17.8239 20.0206C17.4377 20.2823 17.0122 20.4884 16.5532 20.6499C16.0941 20.8114 15.6127 20.8893 15.1089 20.8893C13.7878 20.8893 12.6626 20.4271 11.7389 19.5082C10.8153 18.5893 10.3506 17.47 10.3506 16.1501C10.3506 14.8303 10.8153 13.7165 11.7389 12.7976C12.6626 11.8787 13.7878 11.4165 15.1145 11.4165C16.4412 11.4165 17.5608 11.8787 18.4845 12.7976C19.4081 13.7165 19.8728 14.8358 19.8728 16.1501C19.8728 16.6513 19.7944 17.1303 19.6321 17.5869C19.4753 18.0436 19.2626 18.4613 18.9995 18.8511L21.9944 21.8361L20.8188 23.0056L20.8244 23Z" fill-rule="evenodd" clip-rule="evenodd"></path> </svg></div><span>Get Inspired</span> </a><a class="navigation-rail__link" href="https://developer.chrome.com/docs/"><div class="navigation-rail__icon"><svg class="icon" fill="none" width="24" height="24" aria-hidden="true" viewBox="0 0 24 24"><path d="M17 2H7v2h10V2zm3 3H4v2h16V5zm0 3H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM4 20h16V10H4v10z" fill-rule="evenodd" clip-rule="evenodd"></path></svg></div><span>Docs</span> </a><a class="navigation-rail__link" href="https://developer.chrome.com/blog/" data-state="active"><div class="navigation-rail__icon"><svg class="icon" fill="none" width="24" height="24" aria-hidden="true" viewBox="0 0 24 24"><path d="M22 5a3 3 0 00-3-3H5a3 3 0 00-3 3v10a3 3 0 003 3h4.33L12 22l2.67-4H19a3 3 0 003-3V5zM6 7v2h12V7H6zm9 4H6v2h9v-2z" fill-rule="evenodd" clip-rule="evenodd"></path></svg></div><span>Blog</span> </a><a class="navigation-rail__link" href="https://developer.chrome.com/articles/"><div class="navigation-rail__icon"><svg class="icon" fill="none" width="24" height="24" aria-hidden="true"> <path d="m14.411 4.222 5.367 5.367v10.189H4.222V4.222h10.19Zm0-2.222H4.222C3 2 2 3 2 4.222v15.556C2 21 3 22 4.222 22h15.556C21 22 22 21 22 19.778V9.588c0-.588-.233-1.155-.656-1.566l-5.366-5.366A2.184 2.184 0 0 0 14.41 2ZM6.444 15.333h11.112v2.223H6.444v-2.223Zm0-4.444h11.112v2.222H6.444V10.89Zm0-4.445h7.778v2.223H6.444V6.444Z"></path> </svg></div><span>Articles</span> </a></div></navigation-rail></div></side-nav><main id="main-content" tabindex="-1" data-side-nav-inert="" data-search-inert=""><div class="align-center display-flex justify-content-between pad-bottom-300 pad-left-400 pad-right-400 pad-top-300 title-bar"><nav class="breadcrumbs flow-space-200" aria-label="breadcrumbs"><a class="decoration-none link no-visited type--h6" href="https://developer.chrome.com/blog/">Blog</a></nav><share-button message="Autoplay policy in Chrome"> <a class="share-button__link" href="https://twitter.com/share?url=https://developer.chrome.com/blog/autoplay/&text=Autoplay%20policy%20in%20Chrome" target="_blank"><svg fill="none" width="18" height="20" aria-hidden="true" viewBox="0 0 18 20"><path fill="#5F6368" d="M12.97 14.81C13.5 14.31 14.21 14 15 14C16.66 14 18 15.34 18 17C18 18.66 16.66 20 15 20C13.34 20 12 18.66 12 17C12 16.76 12.04 16.53 12.09 16.31L5.04 12.19C4.5 12.69 3.79 13 3 13C1.34 13 0 11.66 0 10C0 8.34 1.34 7 3 7C3.79 7 4.5 7.31 5.04 7.81L12.09 3.7C12.04 3.48 12 3.24 12 3C12 1.34 13.34 0 15 0C16.66 0 18 1.34 18 3C18 4.66 16.66 6 15 6C14.21 6 13.49 5.69 12.96 5.19L5.91 9.3C5.96 9.53 6 9.76 6 10C6 10.24 5.96 10.47 5.91 10.7L12.97 14.81ZM16 3C16 2.45 15.55 2 15 2C14.45 2 14 2.45 14 3C14 3.55 14.45 4 15 4C15.55 4 16 3.55 16 3ZM3 11C2.45 11 2 10.55 2 10C2 9.45 2.45 9 3 9C3.55 9 4 9.45 4 10C4 10.55 3.55 11 3 11ZM14 17C14 17.55 14.45 18 15 18C15.55 18 16 17.55 16 17C16 16.45 15.55 16 15 16C14.45 16 14 16.45 14 17Z" fill-rule="evenodd" clip-rule="evenodd"></path> </svg></a></share-button></div><div class="display-flex gap-top-300 lg:gap-top-400"><div class="display-flex justify-content-center width-full"><article class="measure-long pad-left-400 pad-right-400 post stack width-full"><div class="flow-space-200 stack"><h1 class="type--h2"><p>Autoplay policy in Chrome</p></h1><p class="type--h5">Improved user experience, minimized incentives to install ad blockers, and reduced data consumption</p><p class="color-secondary-text type--caption">Published on <time datetime="2017-09-13">Wednesday, September 13, 2017 </time><span>•</span> Updated on <time datetime="2021-05-25">Tuesday, May 25, 2021 </time></p></div><div class="lg:stack-exception-700 stack-exception-600"><div class="post-authors"><div class="align-start display-flex"><a class="card-authors__image" href="https://developer.chrome.com/authors/beaufortfrancois/" translate="no"> <img class="flex-shrink-none height-600 width-600" width="40" height="40" src="./Autoplay policy in Chrome - Chrome for Developers_files/8SV7KI2QNVXph2L5Cga2.jpeg" sizes="(min-width:40px) 40px,calc(100vw - 48px)" srcset="https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=40 40w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=46 46w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=52 52w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=59 59w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=68 68w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=77 77w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=88 88w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=100 100w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=114 114w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/8SV7KI2QNVXph2L5Cga2.jpeg?auto=format&w=120 120w" loading="lazy" decoding="async" alt="François Beaufort"> </a><div class="align-start direction-column display-flex gap-left-300 type--small"><a class="color-text display-inline-flex surface" href="https://developer.chrome.com/authors/beaufortfrancois/" translate="no">François Beaufort</a><p class="color-secondary-text">Dives into Chromium source code</p><div class="post-authors-social"><a class="link" href="https://github.com/beaufortfrancois" rel="me">GitHub</a></div></div></div></div></div><div class="display-block toc-container xl:display-none"><details class="toc" role="navigation" aria-label="Table of contents"><summary class="color-secondary-text surface user-select-none"><div class="align-center display-inline-flex"><div class="type--h6">Table of contents</div><span class="toc__icon"> <svg class="icon" width="24" height="24" role="img" aria-label="arrow-right"><path d="M10 17l5-5-5-5v10z"></path><path fill="none" d="M0 24V0h24v24H0z"></path></svg> </span></div></summary><div class="toc__wrapper"><ul><li><a href="https://developer.chrome.com/blog/autoplay/#new-behaviors">New behaviors</a><ul><li><a href="https://developer.chrome.com/blog/autoplay/#media-engagement-index">Media Engagement Index</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#developer-switches">Developer switches</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#iframe-delegation">Iframe delegation</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#examples">Examples</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies">Chrome enterprise policies</a></li></ul></li><li><a href="https://developer.chrome.com/blog/autoplay/#best-practices-for-web-developers">Best practices for web developers</a><ul><li><a href="https://developer.chrome.com/blog/autoplay/#audiovideo-elements">Audio/Video elements</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#web-audio">Web Audio</a></li></ul></li></ul></div></details></div><div class="center-images stack stack--block type"><div class="aside aside--note"><p>The Autoplay Policy launched in Chrome 66 for audio and video elements and is effectively blocking roughly half of unwanted media autoplays in Chrome. For the Web Audio API, the autoplay policy launched in Chrome 71. This affects web games, some WebRTC applications, and other web pages using audio features. More details can be found in the <a href="https://developer.chrome.com/blog/autoplay/#web-audio">Web Audio API</a> section below.</p></div><p>Chrome's autoplay policies changed in April of 2018 and I'm here to tell you why and how this affects video playback with sound. Spoiler alert: users are going to love it!</p><figure class="w-figure"><div class="columns"><div class="columns__column"><img width="398" height="374" src="./Autoplay policy in Chrome - Chrome for Developers_files/iEG2wgEqo8Sx40QqfS8E.jpeg" sizes="(min-width:398px) 398px,calc(100vw - 48px)" srcset="https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=200 200w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=228 228w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=260 260w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=296 296w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=338 338w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=385 385w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=439 439w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=500 500w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=571 571w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=650 650w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=741 741w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/iEG2wgEqo8Sx40QqfS8E.jpeg?auto=format&w=796 796w" loading="lazy" decoding="async" alt="Liam Neeson: I will find you and I will pause you."></div><div class="columns__column"><img width="335" height="335" src="./Autoplay policy in Chrome - Chrome for Developers_files/pl6fnOXI5RWtyXXsfYPg.jpeg" sizes="(min-width:335px) 335px,calc(100vw - 48px)" srcset="https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=200 200w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=228 228w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=260 260w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=296 296w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=338 338w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=385 385w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=439 439w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=500 500w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=571 571w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=650 650w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/pl6fnOXI5RWtyXXsfYPg.jpeg?auto=format&w=670 670w" loading="lazy" decoding="async" alt="Sean Bean: One does not simply autoplay videoas."></div></div><figcaption class="w-figcaption">Internet memes tagged "autoplay" found on <a href="https://imgflip.com/i/ngd6c">Imgflip</a> and <a href="https://imgur.com/a/p1ZjC">Imgur</a>.</figcaption></figure><h2 id="new-behaviors" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#new-behaviors" aria-hidden="true">#</a> New behaviors</h2><p>As you may have <a href="https://webkit.org/blog/7734/auto-play-policy-changes-for-macos/">noticed</a>, web browsers are moving towards stricter autoplay policies in order to improve the user experience, minimize incentives to install ad blockers, and reduce data consumption on expensive and/or constrained networks. These changes are intended to give greater control of playback to users and to benefit publishers with legitimate use cases.</p><p>Chrome's autoplay policies are simple:</p><ul><li>Muted autoplay is always allowed.</li><li>Autoplay with sound is allowed if:<ul><li>The user has interacted with the domain (click, tap, etc.).</li><li>On desktop, the user's <a href="https://developer.chrome.com/blog/autoplay/#media-engagement-index">Media Engagement Index</a> threshold has been crossed, meaning the user has previously played video with sound.</li><li>The user has <a href="https://web.dev/customize-install/">added the site to their home screen</a> on mobile or <a href="https://web.dev/progressive-web-apps/">installed the PWA</a> on desktop.</li></ul></li><li>Top frames can <a href="https://developer.chrome.com/blog/autoplay/#iframe-delegation">delegate autoplay permission</a> to their iframes to allow autoplay with sound.</li></ul><h3 id="media-engagement-index" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#media-engagement-index" aria-hidden="true">#</a> Media Engagement Index</h3><p>The Media Engagement Index (MEI) measures an individual's propensity to consume media on a site. Chrome's approach is a ratio of visits to significant media playback events per origin:</p><ul><li>Consumption of the media (audio/video) must be greater than seven seconds.</li><li>Audio must be present and unmuted.</li><li>The tab with the video is active.</li><li>Size of the video (in px) must be greater than <a href="https://chromium.googlesource.com/chromium/src/+/1c63b1b71d28851fc495fdee9a2c724ea148e827/chrome/browser/media/media_engagement_contents_observer.cc#38">200x140</a>.</li></ul><p>From that, Chrome calculates a media engagement score, which is highest on sites where media is played on a regular basis. When it is high enough, media is allowed to autoplay on desktop only.</p><p>A user's MEI is available at the <code>about://media-engagement</code> internal page.</p><figure class="w-figure"><img width="800" height="280" src="./Autoplay policy in Chrome - Chrome for Developers_files/x0XKHYcLKjmDzjfxQxFg.png" sizes="(min-width:800px) 800px,calc(100vw - 48px)" srcset="https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=200 200w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=228 228w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=260 260w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=296 296w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=338 338w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=385 385w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=439 439w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=500 500w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=571 571w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=650 650w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=741 741w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=845 845w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=964 964w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=1098 1098w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=1252 1252w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=1428 1428w,https://wd.imgix.net/image/sQ51XsLqKMgSQMCZjIN0B7hlBO02/x0XKHYcLKjmDzjfxQxFg.png?auto=format&w=1600 1600w" loading="lazy" decoding="async" alt="Screenshot of about://media-engagement internal page."><figcaption class="w-figcaption">Screenshot of the <code>about://media-engagement</code> internal page in Chrome.</figcaption></figure><h3 id="developer-switches" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#developer-switches" aria-hidden="true">#</a> Developer switches</h3><p>As a developer, you may want to change Chrome autoplay policy behavior locally to test your website for different levels of user engagement.</p><ul><li><p>You can disable the autoplay policy entirely by using a <a href="https://www.chromium.org/developers/how-tos/run-chromium-with-flags">command line flag</a>: <code>chrome.exe --autoplay-policy=no-user-gesture-required</code>. This allows you to test your website as if user were strongly engaged with your site and playback autoplay would be always allowed.</p></li><li><p>You can also decide to make sure autoplay is never allowed by disabling MEI and whether sites with the highest overall MEI get autoplay by default for new users. <a href="https://www.chromium.org/developers/how-tos/run-chromium-with-flags">Do this with flags</a>: <code>chrome.exe --disable-features=PreloadMediaEngagementData, MediaEngagementBypassAutoplayPolicies</code>.</p></li></ul><h3 id="iframe-delegation" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#iframe-delegation" aria-hidden="true">#</a> Iframe delegation</h3><p>A <a href="https://developer.chrome.com/docs/privacy-sandbox/permissions-policy/">permissions policy</a> allows developers to selectively enable and disable browser features and APIs. Once an origin has received autoplay permission, it can delegate that permission to cross-origin iframes with the <a href="https://github.com/WICG/feature-policy/blob/main/features.md">permissions policy for autoplay</a>. Note that autoplay is allowed by default on same-origin iframes.</p><pre class="language-html"><code class="language-html"><span class="comment token"><!-- Autoplay is allowed. --></span><br><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>iframe</span> <span class="attr-name token">src</span><span class="attr-value token"><span class="attr-equals punctuation token">=</span><span class="punctuation token">"</span>https://cross-origin.com/myvideo.html<span class="punctuation token">"</span></span> <span class="attr-name token">allow</span><span class="attr-value token"><span class="attr-equals punctuation token">=</span><span class="punctuation token">"</span>autoplay<span class="punctuation token">"</span></span><span class="punctuation token">></span></span><br><br><span class="comment token"><!-- Autoplay and Fullscreen are allowed. --></span><br><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>iframe</span> <span class="attr-name token">src</span><span class="attr-value token"><span class="attr-equals punctuation token">=</span><span class="punctuation token">"</span>https://cross-origin.com/myvideo.html<span class="punctuation token">"</span></span> <span class="attr-name token">allow</span><span class="attr-value token"><span class="attr-equals punctuation token">=</span><span class="punctuation token">"</span>autoplay; fullscreen<span class="punctuation token">"</span></span><span class="punctuation token">></span></span></code></pre><p>When the permissions policy for autoplay is disabled, calls to <code>play()</code> without a user gesture will reject the promise with a <code>NotAllowedError</code> DOMException. And the autoplay attribute will also be ignored.</p><div class="aside aside--warning"><div class="aside__label gap-bottom-300"><svg fill="none" width="24" height="24" viewBox="0 0 24 24"><path d="M23 21L12 2 1 21h22zm-12-3v-2h2v2h-2zm0-4h2v-4h-2v4z" fill-rule="evenodd" clip-rule="evenodd"></path></svg><span>Warning</span></div><p>Older articles incorrectly recommend using the attribute <code>gesture=media</code> which is not supported.</p></div><h3 id="examples" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#examples" aria-hidden="true">#</a> Examples</h3><p><strong>Example 1:</strong> Every time a user visits <code>VideoSubscriptionSite.com</code> on their laptop they watch a TV show or a movie. As their media engagement score is high, autoplay is allowed.</p><p><strong>Example 2:</strong> <code>GlobalNewsSite.com</code> has both text and video content. Most users go to the site for text content and watch videos only occasionally. Users' media engagement score is low, so autoplay wouldn't be allowed if a user navigates directly from a social media page or search.</p><p><strong>Example 3:</strong> <code>LocalNewsSite.com</code> has both text and video content. Most people enter the site through the homepage and then click on the news articles. Autoplay on the news article pages would be allowed because of user interaction with the domain. However, care should be taken to make sure users aren't surprised by autoplaying content.</p><p><strong>Example 4:</strong> <code>MyMovieReviewBlog.com</code> embeds an iframe with a movie trailer to go with a review. Users interacted with the domain to get to the blog, so autoplay is allowed. However, the blog needs to explicitly delegate that privilege to the iframe in order for the content to autoplay.</p><h3 id="chrome-enterprise-policies" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies" aria-hidden="true">#</a> Chrome enterprise policies</h3><p>It is possible to change the autoplay behavior with Chrome enterprise policies for use cases such as kiosks or unattended systems. Check out the <a href="https://chromeenterprise.google/policies/">Policy List</a> help page to learn how to set the autoplay related enterprise policies:</p><ul><li>The <code><a href="https://chromeenterprise.google/policies/#AutoplayAllowed">AutoplayAllowed</a></code> policy controls whether autoplay is allowed or not.</li><li>The <code><a href="https://chromeenterprise.google/policies/#AutoplayAllowlist">AutoplayAllowlist</a></code> policy allows you to specify an allowlist of URL patterns where autoplay will always be enabled.</li></ul><h2 id="best-practices-for-web-developers" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#best-practices-for-web-developers" aria-hidden="true">#</a> Best practices for web developers</h2><h3 id="audiovideo-elements" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#audiovideo-elements" aria-hidden="true">#</a> Audio/Video elements</h3><p>Here's the one thing to remember: Don't ever assume a video will play, and don't show a pause button when the video is not actually playing. It is so important that I'm going to write it one more time below for those who simply skim through that post.</p><div class="aside aside--important"><div class="aside__label gap-bottom-300"><svg fill="none" width="24" height="24" viewBox="0 0 24 24"><path d="M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z"></path></svg><span>Important</span></div><p>Don't assume a video will play, and don't show a pause button when the video is not actually playing.</p></div><p>You should always look at the <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a> returned by the play function to see if it was <a href="https://developer.chrome.com/blog/play-request-was-interrupted/">rejected</a>:</p><pre class="language-js"><code class="language-js"><span class="keyword token">var</span> promise <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">'video'</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">play</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br><br><span class="keyword token">if</span> <span class="punctuation token">(</span>promise <span class="operator token">!==</span> <span class="keyword token">undefined</span><span class="punctuation token">)</span> <span class="punctuation token">{</span><br> promise<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="parameter token">_</span> <span class="operator token">=></span> <span class="punctuation token">{</span><br> <span class="comment token">// Autoplay started!</span><br> <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">catch</span><span class="punctuation token">(</span><span class="parameter token">error</span> <span class="operator token">=></span> <span class="punctuation token">{</span><br> <span class="comment token">// Autoplay was prevented.</span><br> <span class="comment token">// Show a "Play" button so that user can start playback.</span><br> <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br><span class="punctuation token">}</span></code></pre><div class="aside aside--caution"><div class="aside__label gap-bottom-300"><svg fill="none" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 15v-2h2v2h-2zm0-10v6h2V7h-2z" fill-rule="evenodd" clip-rule="evenodd"></path></svg><span>Caution</span></div><p>Don't play interstitial ads without showing any media controls as they may not autoplay and users will have no way of starting playback.</p></div><p>One cool way to engage users is to use muted autoplay and let them chose to unmute. (See the example below.) Some websites already do this effectively, including Facebook, Instagram, Twitter, and YouTube.</p><pre class="language-html"><code class="language-html"><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>video</span> <span class="attr-name token">id</span><span class="attr-value token"><span class="attr-equals punctuation token">=</span><span class="punctuation token">"</span>video<span class="punctuation token">"</span></span> <span class="attr-name token">muted</span> <span class="attr-name token">autoplay</span><span class="punctuation token">></span></span><br><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>button</span> <span class="attr-name token">id</span><span class="attr-value token"><span class="attr-equals punctuation token">=</span><span class="punctuation token">"</span>unmuteButton<span class="punctuation token">"</span></span><span class="punctuation token">></span></span><span class="tag token"><span class="tag token"><span class="punctuation token"></</span>button</span><span class="punctuation token">></span></span><br><br><span class="tag token"><span class="tag token"><span class="punctuation token"><</span>script</span><span class="punctuation token">></span></span><span class="script token"><span class="language-javascript token"><br> unmuteButton<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">'click'</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span><br> video<span class="punctuation token">.</span>muted <span class="operator token">=</span> <span class="boolean token">false</span><span class="punctuation token">;</span><br> <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br></span></span><span class="tag token"><span class="tag token"><span class="punctuation token"></</span>script</span><span class="punctuation token">></span></span></code></pre><p>Events that trigger user activation are still to be defined consistently across browsers. I'd recommend you stick to <code>"click"</code> for the time being then. See <a href="https://github.com/whatwg/html/issues/3849">GitHub issue whatwg/html#3849</a>.</p><h3 id="web-audio" tabindex="-1"><a class="heading-link" href="https://developer.chrome.com/blog/autoplay/#web-audio" aria-hidden="true">#</a> Web Audio</h3><p>The <a href="https://developer.mozilla.org/docs/Web/API/Web_Audio_API">Web Audio API</a> has been covered by autoplay since Chrome 71. There are a few things to know about it. First, it is good practice to wait for a user interaction before starting audio playback so that users are aware of something happening. Think of a "play" button or "on/off" switch for instance. You can also add an "unmute" button depending on the flow of the app.</p><div class="aside aside--note"><p>If an <code>AudioContext</code> is created before the document receives a user gesture, it will be created in the "suspended" state, and you will need to call <code>resume()</code> after the user gesture.</p></div><p>If you create your <code>AudioContext</code> on page load, you'll have to call <code>resume()</code> at some time after the user interacted with the page (e.g., after a user clicks a button). Alternatively, the <code>AudioContext</code> will be resumed after a user gesture if <code>start()</code> is called on any attached node.</p><pre class="language-js"><code class="language-js"><span class="comment token">// Existing code unchanged.</span><br>window<span class="punctuation token">.</span><span class="function function-variable token">onload</span> <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span><br> <span class="keyword token">var</span> context <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">AudioContext</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br> <span class="comment token">// Setup all nodes</span><br> <span class="comment token">// ...</span><br><span class="punctuation token">}</span><br><br><span class="comment token">// One-liner to resume playback when user interacted with the page.</span><br>document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">'button'</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">'click'</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span><br> context<span class="punctuation token">.</span><span class="function token">resume</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">=></span> <span class="punctuation token">{</span><br> console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">'Playback resumed successfully'</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br> <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre><p>You may also create the <code>AudioContext</code> only when the user interacts with the page.</p><pre class="language-js"><code class="language-js">document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">'button'</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">'click'</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span><br> <span class="keyword token">var</span> context <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">AudioContext</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span><br> <span class="comment token">// Setup all nodes</span><br> <span class="comment token">// ...</span><br><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre><p>To detect whether the browser requires a user interaction to play audio, check <code>AudioContext.state</code> after you've created it. If playing is allowed, it should immediately switch to <code>running</code>. Otherwise it will be <code>suspended</code>. If you listen to the <code>statechange</code> event, you can detect changes asynchronously.</p><p>To see an example, check out the small <a href="https://github.com/GoogleChromeLabs/airhorn/pull/37">Pull Request</a> that fixes Web Audio playback for these autoplay policy rules for <a href="https://airhorner.com/progressive-web-apps/">https://airhorner.com</a>.</p><div class="aside aside--note"><p>You can find a summary of <a href="https://sites.google.com/a/chromium.org/dev/audio-video/autoplay">Chrome's autoplay feature</a> on the Chromium site.</p></div></div><div><div class="cluster flow-space-200 gap-top-300"><div><a class="color-secondary-text decoration-none hairline rounded-lg surface tag-pill type--label weight-regular" href="https://developer.chrome.com/tags/autoplay/">Autoplay</a> <a class="color-secondary-text decoration-none hairline rounded-lg surface tag-pill type--label weight-regular" href="https://developer.chrome.com/tags/media/">Media</a></div></div></div><p class="color-secondary-text type--caption">Updated on <time datetime="2021-05-25">Tuesday, May 25, 2021</time> <span>•</span> <a href="https://github.com/GoogleChrome/developer.chrome.com/blob/main/site/en/blog/autoplay/index.md">Improve article </a></p></article><div class="display-none pad-right-400 toc-container xl:display-block"><toc-active class="scrollbar" data-resolved=""><div class="color-secondary-text type--h6">Table of contents</div><div class="toc__wrapper"><ul><li><a href="https://developer.chrome.com/blog/autoplay/#new-behaviors" toc--active="">New behaviors</a><ul><li><a href="https://developer.chrome.com/blog/autoplay/#media-engagement-index">Media Engagement Index</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#developer-switches">Developer switches</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#iframe-delegation">Iframe delegation</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#examples">Examples</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#chrome-enterprise-policies">Chrome enterprise policies</a></li></ul></li><li><a href="https://developer.chrome.com/blog/autoplay/#best-practices-for-web-developers">Best practices for web developers</a><ul><li><a href="https://developer.chrome.com/blog/autoplay/#audiovideo-elements">Audio/Video elements</a></li><li><a href="https://developer.chrome.com/blog/autoplay/#web-audio">Web Audio</a></li></ul></li></ul></div></toc-active></div></div></div><div class="post-navigation"><div class="post-navigation__prev"><a class="post-navigation__link" href="https://developer.chrome.com/blog/chrome-62-deprecations/"> <span class="post-navigation__label">Back</span><p class="post-navigation__title">Deprecations and removals in Chrome 62</p></a></div><div class="post-navigation__next"><a class="post-navigation__link" href="https://developer.chrome.com/blog/back-forward-cache/"> <span class="post-navigation__label">Next</span><p class="post-navigation__title">Exploring a back/forward cache for Chrome</p></a></div></div></main><footer class="gap-top-1000 lg:pad-left-600 lg:pad-right-600 type--footer" data-side-nav-inert="" data-search-inert=""><div class="hairline-bottom lg:pad-left-0 lg:pad-right-0 pad-bottom-600 pad-left-400 pad-right-400 pad-top-600"><div class="direction-column display-flex lg:align-center lg:direction-row"><div class="footer__heading">Follow us</div><div class="color-secondary-text display-flex gap-top-300 lg:gap-top-0"><a class="color-secondary-text display-inline-flex lg:gap-left-400" href="https://www.youtube.com/user/ChromeDevelopers" aria-label="YouTube"> <svg class="icon" fill="none" width="24" height="24" aria-hidden="true" viewBox="0 0 24 24"><path d="M21.58 7.19c-.23-.86-.91-1.54-1.77-1.77C18.25 5 12 5 12 5s-6.25 0-7.81.42c-.86.23-1.54.91-1.77 1.77C2 8.75 2 12 2 12s0 3.25.42 4.81c.23.86.91 1.54 1.77 1.77C5.75 19 12 19 12 19s6.25 0 7.81-.42c.86-.23 1.54-.91 1.77-1.77C22 15.25 22 12 22 12s0-3.25-.42-4.81zM10 15V9l5.2 3-5.2 3z"></path></svg> </a><a class="color-secondary-text display-inline-flex gap-left-400" href="https://twitter.com/ChromiumDev" aria-label="Twitter"> <svg class="icon" width="20px" height="20px" aria-hidden="true" viewBox="0 0 16 16"><path d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"></path></svg> </a></div></div></div><div class="hairline-bottom lg:pad-left-0 lg:pad-right-0 pad-bottom-600 pad-left-400 pad-right-400 pad-top-600"><div class="direction-column display-flex justify-content-between lg:direction-row"><div class="flex-1 footer__stack stack-recursive"><div class="footer__heading">Contribute</div><ul class="gap-bottom-0 pad-0" role="list"><li><a class="footer__link" href="https://github.com/GoogleChrome/developer.chrome.com/issues/new?assignees=&labels=bug&template=bug_report.md&title="> File a bug </a></li><li><a class="footer__link" href="https://github.com/GoogleChrome/developer.chrome.com/"> View source </a></li></ul></div><div class="flex-1 footer__stack stack-recursive"><div class="footer__heading">Related content</div><ul class="gap-bottom-0 pad-0" role="list"><li><a class="footer__link" href="https://web.dev/"> web.dev </a></li><li><a class="footer__link" href="https://web.dev/tags/case-study/"> Case studies </a></li><li><a class="footer__link" href="https://web.dev/podcasts/"> Podcasts </a></li></ul></div><div class="flex-1 footer__stack stack-recursive"><div class="footer__heading">Connect</div><ul class="gap-bottom-0 pad-0" role="list"><li><a class="footer__link" href="https://twitter.com/chromiumdev/"> Twitter </a></li><li><a class="footer__link" href="https://www.youtube.com/user/ChromeDevelopers"> YouTube </a></li><li><a class="footer__link" href="https://github.com/googlechrome"> GitHub </a></li></ul></div></div></div><div class="lg:pad-left-0 lg:pad-right-0 pad-bottom-600 pad-left-400 pad-right-400 pad-top-600"><div class="align-start direction-column display-flex lg:align-center lg:direction-row"><svg width="180" height="20" viewBox="0 0 886 96" aria-label="Google for Developers"> <path fill="#5f6368" d="M342.32 6.41c3.07 0 5.58.52 7.54 1.56l-2.3 7.45a10.9 10.9 0 0 0-4.97-1.1c-2.09 0-3.79.72-5.11 2.16-1.32 1.44-1.98 3.36-1.98 5.75v5.7h11.78v7.73H335.5v37.35h-8.46V35.66h-8.46v-7.73h8.46V21.4c0-4.48 1.43-8.1 4.28-10.86 2.85-2.76 6.52-4.14 10.99-4.14ZM349.29 50.48c0-6.93 2.18-12.66 6.53-17.2 4.42-4.54 9.97-6.81 16.65-6.81s12.21 2.27 16.56 6.81c4.42 4.54 6.62 10.27 6.62 17.2s-2.21 12.73-6.62 17.2c-4.36 4.54-9.88 6.81-16.56 6.81s-12.24-2.27-16.65-6.81c-4.36-4.54-6.53-10.27-6.53-17.2Zm8.46 0c0 4.85 1.41 8.77 4.23 11.78 2.82 3.01 6.32 4.51 10.49 4.51s7.67-1.5 10.49-4.51c2.82-3 4.23-6.93 4.23-11.78s-1.41-8.68-4.23-11.68c-2.88-3.07-6.38-4.6-10.49-4.6s-7.61 1.53-10.49 4.6c-2.82 3.01-4.23 6.9-4.23 11.68ZM410.13 73.02h-8.46V27.94h8.1v7.36h.37c.86-2.39 2.62-4.43 5.29-6.12 2.67-1.69 5.29-2.53 7.87-2.53s4.54.37 6.26 1.1l-2.58 8.19c-1.04-.43-2.7-.64-4.97-.64-3.19 0-5.97 1.29-8.33 3.86a12.93 12.93 0 0 0-3.54 9.02v24.84ZM456.77 73.02V7.15h20.15c10.06 0 18.14 3.04 24.24 9.11 6.1 6.07 9.15 14.02 9.15 23.83s-3.05 17.83-9.15 23.87c-6.1 6.04-14.18 9.06-24.24 9.06h-20.15Zm8.46-57.78v49.68h11.68c7.67 0 13.71-2.19 18.12-6.58 4.42-4.38 6.62-10.47 6.62-18.26s-2.21-13.8-6.62-18.22c-4.42-4.42-10.46-6.62-18.12-6.62h-11.68ZM537.78 74.49c-6.62 0-12.08-2.27-16.38-6.81-4.29-4.54-6.44-10.27-6.44-17.2s2.08-12.59 6.26-17.16c4.17-4.57 9.51-6.85 16.01-6.85s12.01 2.16 15.96 6.49c3.96 4.32 5.93 10.38 5.93 18.17l-.09.92h-35.42c.12 4.42 1.59 7.97 4.42 10.67a14.11 14.11 0 0 0 10.12 4.05c5.4 0 9.63-2.7 12.7-8.1l7.54 3.68c-2.02 3.8-4.83 6.78-8.42 8.92s-7.65 3.22-12.19 3.22Zm-13.52-29.44h25.85a11.22 11.22 0 0 0-3.82-7.77c-2.3-2.05-5.38-3.08-9.25-3.08-3.19 0-5.93.98-8.23 2.94a14.01 14.01 0 0 0-4.55 7.91ZM585.33 73.02h-8.46l-18.22-45.08h9.2L581.1 62.9h.18l13.43-34.96h9.02l-18.4 45.08ZM625.96 74.49c-6.62 0-12.08-2.27-16.38-6.81-4.29-4.54-6.44-10.27-6.44-17.2s2.08-12.59 6.26-17.16c4.17-4.57 9.51-6.85 16.01-6.85s12.01 2.16 15.96 6.49c3.96 4.32 5.93 10.38 5.93 18.17l-.09.92h-35.42c.12 4.42 1.59 7.97 4.42 10.67a14.11 14.11 0 0 0 10.12 4.05c5.4 0 9.63-2.7 12.7-8.1l7.54 3.68c-2.02 3.8-4.83 6.78-8.42 8.92s-7.65 3.22-12.19 3.22Zm-13.52-29.44h25.85a11.22 11.22 0 0 0-3.82-7.77c-2.3-2.05-5.38-3.08-9.25-3.08-3.19 0-5.93.98-8.23 2.94a14.01 14.01 0 0 0-4.55 7.91ZM661.78 7.15v65.87h-8.46V7.15h8.46ZM667.9 50.48c0-6.93 2.18-12.66 6.53-17.2 4.42-4.54 9.97-6.81 16.65-6.81s12.21 2.27 16.56 6.81c4.42 4.54 6.62 10.27 6.62 17.2s-2.21 12.73-6.62 17.2c-4.36 4.54-9.88 6.81-16.56 6.81s-12.24-2.27-16.65-6.81c-4.36-4.54-6.53-10.27-6.53-17.2Zm8.46 0c0 4.85 1.41 8.77 4.23 11.78 2.82 3.01 6.32 4.51 10.49 4.51s7.67-1.5 10.49-4.51c2.82-3 4.23-6.93 4.23-11.78s-1.41-8.68-4.23-11.68c-2.88-3.07-6.38-4.6-10.49-4.6s-7.61 1.53-10.49 4.6c-2.82 3.01-4.23 6.9-4.23 11.68ZM743.93 74.49c-3.31 0-6.33-.71-9.06-2.12a15.83 15.83 0 0 1-6.3-5.61h-.37l.37 6.26v19.87h-8.46V27.94h8.1v6.26h.37a15.83 15.83 0 0 1 6.3-5.61 19.45 19.45 0 0 1 9.06-2.12c5.95 0 10.98 2.33 15.09 6.99 4.23 4.72 6.35 10.4 6.35 17.02s-2.12 12.36-6.35 17.02c-4.11 4.66-9.14 6.99-15.09 6.99Zm-1.38-7.73c4.05 0 7.45-1.53 10.21-4.6 2.76-3 4.14-6.9 4.14-11.68s-1.38-8.62-4.14-11.68c-2.76-3.07-6.16-4.6-10.21-4.6s-7.54 1.53-10.3 4.6c-2.7 3.07-4.05 6.96-4.05 11.68s1.35 8.71 4.05 11.78a13.4 13.4 0 0 0 10.3 4.51ZM791.88 74.49c-6.62 0-12.08-2.27-16.38-6.81-4.29-4.54-6.44-10.27-6.44-17.2s2.08-12.59 6.26-17.16c4.17-4.57 9.51-6.85 16.01-6.85s12.01 2.16 15.96 6.49c3.96 4.32 5.93 10.38 5.93 18.17l-.09.92h-35.42c.12 4.42 1.59 7.97 4.42 10.67a14.11 14.11 0 0 0 10.12 4.05c5.4 0 9.63-2.7 12.7-8.1l7.54 3.68c-2.02 3.8-4.83 6.78-8.42 8.92s-7.65 3.22-12.19 3.22Zm-13.52-29.44h25.85a11.22 11.22 0 0 0-3.82-7.77c-2.3-2.05-5.38-3.08-9.25-3.08-3.19 0-5.93.98-8.23 2.94a14.01 14.01 0 0 0-4.55 7.91ZM827.75 73.02h-8.46V27.94h8.1v7.36h.37c.86-2.39 2.62-4.43 5.29-6.12 2.67-1.69 5.29-2.53 7.87-2.53s4.54.37 6.26 1.1l-2.58 8.19c-1.04-.43-2.7-.64-4.97-.64-3.19 0-5.97 1.29-8.33 3.86a12.93 12.93 0 0 0-3.54 9.02v24.84ZM885.03 60.51c0 3.93-1.72 7.24-5.15 9.94-3.44 2.7-7.76 4.05-12.97 4.05-4.54 0-8.53-1.18-11.96-3.54a19.46 19.46 0 0 1-7.36-9.34l7.54-3.22c1.1 2.7 2.71 4.8 4.83 6.3a11.76 11.76 0 0 0 6.95 2.25c2.7 0 4.95-.58 6.76-1.75 1.81-1.16 2.71-2.54 2.71-4.14 0-2.88-2.21-5-6.62-6.35l-7.73-1.93c-8.77-2.21-13.16-6.44-13.16-12.7 0-4.11 1.67-7.41 5.01-9.89 3.34-2.48 7.62-3.73 12.83-3.73 3.99 0 7.59.95 10.81 2.85a15.5 15.5 0 0 1 6.76 7.64l-7.54 3.13a9.46 9.46 0 0 0-4.19-4.46 13.15 13.15 0 0 0-6.49-1.61c-2.21 0-4.19.55-5.93 1.66s-2.62 2.45-2.62 4.05c0 2.58 2.42 4.42 7.27 5.52l6.81 1.75c8.95 2.21 13.43 6.72 13.43 13.52Z"></path> <path fill="#4285f4" d="M37.76 74.48C17.24 74.48 0 57.76 0 37.24S17.24 0 37.76 0c11.35 0 19.42 4.45 25.5 10.26l-7.17 7.17a25.91 25.91 0 0 0-18.33-7.27c-14.97 0-26.68 12.08-26.68 27.07s11.71 27.06 26.68 27.06c9.71 0 15.25-3.9 18.79-7.45 2.9-2.91 4.81-7.08 5.54-12.81H37.5V33.86h34.48c.36 1.82.54 4 .54 6.36 0 7.63-2.09 17.08-8.8 23.8-6.53 6.81-14.88 10.44-25.96 10.44Z"></path> <path fill="#ea4335" d="M124.16 50.5c0 13.81-10.79 23.98-24.02 23.98S76.12 64.31 76.12 50.5s10.79-23.98 24.02-23.98 24.02 10.08 24.02 23.98Zm-10.52 0c0-8.63-6.26-14.53-13.51-14.53s-13.51 5.9-13.51 14.53 6.26 14.53 13.51 14.53 13.51-5.99 13.51-14.53Z"></path> <path fill="#fbbc04" d="M176.45 50.5c0 13.81-10.79 23.98-24.02 23.98s-24.02-10.17-24.02-23.98 10.79-23.98 24.02-23.98 24.02 10.08 24.02 23.98Zm-10.52 0c0-8.63-6.26-14.53-13.51-14.53s-13.51 5.9-13.51 14.53 6.26 14.53 13.51 14.53 13.51-5.99 13.51-14.53Z"></path> <path fill="#4285f4" d="M226.47 27.97v43.05c0 17.71-10.44 24.98-22.78 24.98-11.62 0-18.61-7.81-21.24-14.17l9.17-3.81c1.63 3.91 5.63 8.54 12.07 8.54 7.9 0 12.8-4.9 12.8-14.08v-3.45h-.36c-2.36 2.91-6.9 5.45-12.62 5.45-11.98 0-22.96-10.44-22.96-23.89s10.98-24.07 22.96-24.07c5.72 0 10.26 2.54 12.62 5.36h.36v-3.91h9.98Zm-9.26 22.62c0-8.45-5.63-14.62-12.8-14.62s-13.34 6.18-13.34 14.62 6.08 14.44 13.34 14.44 12.8-6.09 12.8-14.44Z"></path> <path fill="#34a853" d="M244.57 2.54v70.48h-10.53V2.54h10.53Z"></path> <path fill="#ea4335" d="m285.38 58.4 8.17 5.45a23.83 23.83 0 0 1-19.97 10.63c-13.61 0-23.78-10.54-23.78-23.98 0-14.26 10.26-23.98 22.6-23.98s18.51 9.9 20.51 15.26L294 44.5l-32.04 13.26c2.45 4.81 6.26 7.27 11.62 7.27s9.08-2.63 11.8-6.63Zm-25.14-8.63 21.42-8.9c-1.18-3-4.72-5.09-8.89-5.09-5.35 0-12.8 4.72-12.52 13.99Z"></path> </svg><div class="cluster flex-1 flow-space-300 footer__cluster gap-top-300 lg:flow-space-500 lg:gap-left-500 lg:gap-top-0"><ul role="list"><li role="listitem"><a class="footer__link" href="https://www.google.com/chrome/">Chrome</a></li><li role="listitem"><a class="footer__link" href="https://firebase.google.com/">Firebase</a></li><li role="listitem"><a class="footer__link" href="https://developers.generativeai.google/">Generative AI</a></li><li role="listitem"><a class="footer__link" href="https://developers.google.com/products">All products</a></li><li role="listitem"><a class="footer__link" href="https://policies.google.com/privacy">Privacy</a></li><li role="listitem"><a class="footer__link" href="https://policies.google.com/terms">Terms</a></li></ul></div><language-select supported="en,es,pt,ko,zh,ru,ja,fr,de" current="en"><!---->
<div class="language-select">
<label class="w-visually-hidden" for="preferred-language">
Choose language
</label>
<select id="preferred-language">
<!---->
<option selected="" value="en">
ENGLISH (en)
</option>
<!---->
</select>
</div>
<!----></language-select></div><div class="color-secondary-text gap-top-500 type--caption">Content available under the CC-BY-SA-4.0 license</div></div></footer></div><announcement-banner class="cookie-banner hairline-top" storage-key="user-cookies" active="" hidden="true"><div class="type--small">This site uses cookies to deliver and enhance the quality of its services and to analyze traffic. If you agree, cookies are also used to serve advertising and to personalize the content and advertisements that you see. <a class="align-center button-text color-blue-medium display-inline-flex material-button" href="https://policies.google.com/technologies/cookies">Learn more about our use of cookies. <svg class="gap-left-200 icon" fill="black" width="18px" height="18px" role="img" viewBox="0 0 24 24" aria-label="External link"><path fill="none" d="M0 0h24v24H0z"></path><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"></path></svg> </a></div><div class="cookie-banner__controls"><button class="bg-primary button-filled color-bg material-button" storage-value="accepts" data-banner-close-btn="">Agree</button> <button class="bg-primary button-filled color-bg material-button" storage-value="rejects" data-banner-close-btn="">No Thanks</button></div></announcement-banner><iframe title="Private Aggregation API Test" src="./Autoplay policy in Chrome - Chrome for Developers_files/private-aggregation-test.html" style="height: 0px; width: 0px; top: 0px; position: absolute;"></iframe></body></html>