<titledata-rh="true">Configuring Puppeteer | 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/configuring-puppeteer"><metadata-rh="true"name="docusaurus_locale"content="en"><metadata-rh="true"name="docsearch:language"content="en"><metadata-rh="true"name="docusaurus_version"content="19.2.0"><metadata-rh="true"name="docusaurus_tag"content="docs-default-19.2.0"><metadata-rh="true"name="docsearch:version"content="19.2.0"><metadata-rh="true"name="docsearch:docusaurus_tag"content="docs-default-19.2.0"><metadata-rh="true"property="og:title"content="Configuring Puppeteer | 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/configuring-puppeteer"><linkdata-rh="true"rel="alternate"href="https://pptr.dev/guides/configuring-puppeteer"hreflang="en"><linkdata-rh="true"rel="alternate"href="https://pptr.dev/guides/configuring-puppeteer"hreflang="x-default"><linkrel="stylesheet"href="/assets/css/styles.3247e0f2.css">
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>package.json</code>.</p><p>See the <ahref="/api/puppeteer.configuration"><code>Configuration</code></a>
interface for possible options.</p><divclass="theme-admonition theme-admonition-caution alert alert--warning admonition_LlT9"><divclass="admonitionHeading_tbUL"><spanclass="admonitionIcon_kALy"><svgviewBox="0 0 16 16"><pathfill-rule="evenodd"d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><divclass="admonitionContent_S0QG"><p>After adding a configuration file, you may need to remove and reinstall
<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
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
used to download and run the browser.</li></ul><p>All other options can be found in the documentation for the