<titledata-rh="true">Configuration | Puppeteer</title><metadata-rh="true"name="viewport"content="width=device-width,initial-scale=1"><metadata-rh="true"name="twitter:card"content="summary_large_image"><metadata-rh="true"property="og:url"content="https://pptr.dev/guides/configuration"><metadata-rh="true"name="docusaurus_locale"content="en"><metadata-rh="true"name="docsearch:language"content="en"><metadata-rh="true"name="docusaurus_version"content="19.3.0"><metadata-rh="true"name="docusaurus_tag"content="docs-default-19.3.0"><metadata-rh="true"name="docsearch:version"content="19.3.0"><metadata-rh="true"name="docsearch:docusaurus_tag"content="docs-default-19.3.0"><metadata-rh="true"property="og:title"content="Configuration | Puppeteer"><metadata-rh="true"name="description"content="All defaults in Puppeteer can be customized in two ways:"><metadata-rh="true"property="og:description"content="All defaults in Puppeteer can be customized in two ways:"><linkdata-rh="true"rel="icon"href="/img/favicon.ico"><linkdata-rh="true"rel="canonical"href="https://pptr.dev/guides/configuration"><linkdata-rh="true"rel="alternate"href="https://pptr.dev/guides/configuration"hreflang="en"><linkdata-rh="true"rel="alternate"href="https://pptr.dev/guides/configuration"hreflang="x-default"><linkdata-rh="true"rel="preconnect"href="https://DVKY664LG7-dsn.algolia.net"crossorigin="anonymous"><linkrel="search"type="application/opensearchdescription+xml"title="Puppeteer"href="/opensearch.xml"><linkrel="stylesheet"href="/assets/css/styles.b357ffad.css">
as <code>HTTPS_PROXY</code>).</p></div></div><h2class="anchor anchorWithStickyNavbar_LWe7"id="configuration-files">Configuration files<aclass="hash-link"href="#configuration-files"title="Direct link to heading"></a></h2><p>Configuration files are the <strong>recommended</strong> choice for configuring Puppeteer.
Puppeteer will look up the file tree for any of the following formats:</p><ul><li><code>.puppeteerrc.cjs</code>,</li><li><code>.puppeteerrc.js</code>,</li><li><code>.puppeteerrc</code> (YAML/JSON),</li><li><code>.puppeteerrc.json</code>,</li><li><code>.puppeteerrc.yaml</code>,</li><li><code>puppeteer.config.js</code>, and</li><li><code>puppeteer.config.cjs</code></li></ul><p>Puppeteer will also read a <code>puppeteer</code> key from your application's
<code>puppeteer</code> for it to take effect if the changes affect installation.</p></div></div><h3class="anchor anchorWithStickyNavbar_LWe7"id="examples">Examples<aclass="hash-link"href="#examples"title="Direct link to heading"></a></h3><h4class="anchor anchorWithStickyNavbar_LWe7"id="changing-the-default-cache-directory">Changing the default cache directory<aclass="hash-link"href="#changing-the-default-cache-directory"title="Direct link to heading"></a></h4><p>Starting in v19.0.0, Puppeteer stores browsers in <code>~/.cache/puppeteer</code> to
globally cache browsers between installation. This can cause problems if
<code>puppeteer</code> is packed during some build step and moved to a fresh location. The
following configuration can solve this issue (reinstall <code>puppeteer</code> to take
about the ambient environment is needed (in this case, <code>__dirname</code>).</p></div></div><h4class="anchor anchorWithStickyNavbar_LWe7"id="enabling-experiments">Enabling experiments<aclass="hash-link"href="#enabling-experiments"title="Direct link to heading"></a></h4><p>By default, experiments are turned off, but they can be individually turned on
using the <ahref="/api/puppeteer.configuration.experiments"><code>experiments</code></a> key.</p><p>For example, if you want to enable ARM-native macOS chromium, you can use</p><divclass="tabs-container tabList__CuJ"><ulrole="tablist"aria-orientation="horizontal"class="tabs"><lirole="tab"tabindex="0"aria-selected="true"class="tabs__item tabItem_LNqP tabs__item--active">CommonJS</li><lirole="tab"tabindex="-1"aria-selected="false"class="tabs__item tabItem_LNqP">JSON</li><lirole="tab"tabindex="-1"aria-selected="false"class="tabs__item tabItem_LNqP">YAML</li></ul><divclass="margin-top--md"><divrole="tabpanel"class="tabItem_Ymn6"><divclass="language-js codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockTitle_Ktv7">.puppeteerrc.cjs</div><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-js codeBlock_bY9V thin-scrollbar"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#393A34"><spanclass="token comment"style="color:#999988;font-style:italic">/**</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token comment"style="color:#999988;font-style:italic"> * @type {import("puppeteer").Configuration}</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token comment"style="color:#999988;font-style:italic"> */</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain">module</span><spanclass="token punctuation"style="color:#393A34">.</span><spanclass="token property-access">exports</span><spanclass="token plain"></span><spanclass="token operator"style="color:#393A34">=</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token literal-property property"style="color:#36acaa">experiments</span><spanclass="token operator"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token literal-property property"style="color:#36acaa">macArmChromiumEnabled</span><spanclass="token operator"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token boolean"style="color:#36acaa">true</span><spanclass="token punctuation"style="color:#393A34">,</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">,</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">;</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgclass="copyButtonIcon_y97N"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_LjdS"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><divrole="tabpanel"class="tabItem_Ymn6"hidden=""><divclass="language-json codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockTitle_Ktv7">.puppeteerrc.json</div><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-codelanguage-jsoncodeBlock_bY9Vthin-scrollb
<ahref="https://en.wikipedia.org/wiki/Environment_variable"target="_blank"rel="noopener noreferrer">environment variables</a> for
customizing behavior. Environment variables will always override configuration
file options when applicable.</p><p>The following options are <em>environment-only</em> options</p><ul><li><code>HTTP_PROXY</code>, <code>HTTPS_PROXY</code>, <code>NO_PROXY</code> - defines HTTP proxy settings that are