Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A Firebase Puppeteer PDF timeout has two possible layers: the browser may be missing or incompatible, or the function may simply need more execution time and memory. Check the deployed error, Puppeteer version, browser revision, executable path, Node runtime and trigger limits before changing timeout settings. A longer timeout cannot install Chrome or repair a protocol mismatch.

Start with the deployed error, not the timeout value

Read the complete Cloud Functions log from the failing deployment and invocation. Classify the first meaningful failure:

  • Download or installation failure: Puppeteer cannot obtain its browser during installation or deployment.
  • Launch failure: Chrome or Chromium is absent, the path is wrong, permissions are insufficient, or required Linux packages are unavailable.
  • Protocol or revision error: Puppeteer is communicating with a browser release it does not support.
  • Navigation or rendering delay: the browser launches, but the page, assets, scripts or PDF rendering takes too long.
  • Function deadline: the operation is still running when Firebase terminates the invocation.

Do not treat every PDF timeout as proof of a Chrome revision mismatch. A historical Firebase issue from May 2020 reported a failed Chromium revision download with Puppeteer 2.1.1; those versions are obsolete and the report is evidence that installation can fail, not current compatibility guidance.

Verify the versions that actually run in Firebase

Local success is not proof that the deployed function has the same browser. Record these values from the lockfile, deployment configuration and runtime logs:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
Epson EcoTank ET-2800 Wireless Color All-in-One Supertank Printer - Black
  • INNOVATIVE CARTRIDGE-FREE PRINTING — No more dealing with lots of tiny ink cartridges; With this wireless document and photo printer each ink bottle set is equivalent to about 90 individual cartridges²
  • LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; When you choose this combination printer, scanner and copier you can print up to 4,500 pages black/7,500 color³
  • COLOR PRINTING — Up to 2 years of ink in the box4 (and with every replacement ink set) for fewer out-of-ink frustrations
  • ZERO CARTRIDGE WASTE — By using an Epson EcoTank printer you can help reduce the amount of cartridge waste ending up in landfills
  • HOME PRINTER DESIGNED FOR RELIABILITY — The Epson EcoTank ET-2800 All-in-One Supertank Color Printer creates vivid, detailed prints and documents thanks to Micro Piezo Heat-Free Technology; Fire off 10 ISO pages per minute1 to easily finish large jobs
  • The exact Puppeteer package and resolved version.
  • The Firebase Node.js runtime selected for the function.
  • Whether Puppeteer downloaded its associated browser or you supplied another Chrome/Chromium binary.
  • The browser binary’s deployed path and reported version.
  • The trigger type: HTTP/callable, scheduled or task queue, or another event-driven trigger.

Puppeteer releases are tightly bundled with specific browser releases so that Chrome DevTools Protocol and WebDriver BiDi calls remain compatible. Its default configuration downloads and uses the browser version associated with the installed package. If you replace that browser, you own the compatibility check.

Choose one browser ownership strategy

Let Puppeteer use its associated browser

This is the least complicated approach when your deployment can include Puppeteer’s downloaded browser and its Linux dependencies. Keep Puppeteer and its lockfile together, deploy from a clean install, and do not point executablePath at a workstation browser. The function environment must contain the downloaded browser, not merely your development machine.

Manage a separate Chrome or Chromium binary

If your build supplies a browser separately, make that binary part of the deployment artifact or otherwise available in the function environment. Pass its real deployed path:

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({
  executablePath: process.env.CHROME_BIN,
  args: ['--no-sandbox', '--disable-setuid-sandbox']
});

CHROME_BIN is only an example environment variable; set it to the path that exists in your deployed function. Do not copy a path from macOS, Windows or a local Linux installation and assume it exists in Firebase. The separate browser’s release must be compatible with the Puppeteer version you installed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not mix strategies accidentally

Common mistakes include installing one Puppeteer version while reusing a cached browser from another version, excluding the downloaded browser from the deployment, or setting an executablePath that silently selects an unrelated system Chrome. Remove stale build caches, redeploy the lockfile-selected dependencies, and log the selected path and browser version during diagnosis.

Rank #2
Sale
Epson EcoTank Photo ET-8550 Wireless Wide-Format All-in-One Tank Printer
  • CARTRIDGE-FREE PRINTING — Print lab-quality photos, graphics and creative projects; Get vibrant colors and sharp text with Epson's high-accuracy printhead and Claria ET Premium 6-color inks
  • INK BOTTLES — Save on photos1 and creative projects with affordable in-house printing; All-in-one printer allows you to print 4" x 6" photos for about 4 cents each vs. 40 cents with traditional ink cartridges1
  • LESS FREQUENT INK REPLACEMENT — Replacement ink bottles don't have to be changed nearly as often as ink cartridges¹; Printer, scanner and copier lets you print up to 6,200 color pages³
  • PRINT FOR LONGER — Up to 2 years of ink in the box² (and with every replacement ink set) for fewer out-of-ink frustrations with this wireless printer
  • ZERO CARTRIDGE WASTE — Epson EcoTank printer helps reduce the amount of cartridge waste ending up in landfills; Cartridge-free printer uses high-yield ink bottles; Each replacement ink bottle set is equivalent to about 100 individual ink cartridges⁴

Check Node.js and operating-system requirements

Firebase currently documents Node.js 20 and 22 as supported Cloud Functions runtimes; Node.js 14 and 16 were decommissioned in early 2025. Select a runtime that is supported by Firebase and by the Puppeteer release you actually use.

Puppeteer’s current system-requirements listing (shown as version 25.12.0) specifies Node 22.12 or newer and documents Chrome for Testing support for Windows x64, macOS x64/arm64, Debian/Ubuntu Linux x64/arm64, and openSUSE/Fedora Linux x64/arm64. It also lists required Linux system packages. Those requirements are version-specific: do not assume that the latest Puppeteer is suitable for every Firebase runtime. Check the requirements for the package in your lockfile, then confirm the deployed architecture and libraries satisfy them.

  • Pin dependencies in package.json and commit the lockfile.
  • Use the same Node major version in local verification and Firebase.
  • Confirm the browser architecture matches the function environment.
  • Ensure required shared libraries are available; a missing library can look like a generic launch timeout.

Give PDF rendering an appropriate Firebase budget

Only after browser launch and compatibility are sound should you increase resources. Set runtime options in function source; Firebase treats code as the source of truth unless you deliberately use preserveExternalChanges. A representative configuration is:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
const { onRequest } = require('firebase-functions/v2/https');

exports.renderPdf = onRequest(
  {
    timeoutSeconds: 300,
    memory: '1GiB'
  },
  async (req, res) => {
    // launch browser, load the page, create the PDF, and respond
  }
);

The exact option syntax depends on the Firebase Functions generation and trigger API in your project. The important points are to set the options in deployed source, redeploy, and verify them in deployment logs.

Trigger class Documented maximum duration What it means
HTTP and callable 3,600 seconds Upper limit for these request-driven functions; choose a practical value for your workload.
Scheduled and task queue 1,800 seconds Long jobs can use this ceiling when the trigger and configuration support it.
Other event-driven functions 540 seconds The lower ceiling applies to this trigger class.

More memory can help Chrome start and render large pages, but it does not fix an absent executable or incompatible protocol. Increasing the deadline also does not make a failed navigation succeed; it only allows a functioning operation to run longer.

Rank #3
HP Smart Tank 5000 Ink Tank Printer | 2 Years of Ink Included | All-in-One
  • SET IT UP ONCE AND PRINT WITH CONFIDENCE. No complicated maintenance. Just easy, reliable printing you can count on.
  • INK FOR YEARS. NOT MONTHS. Up to 2 years of ink included. Get thousands of pages of cartridge-free printing. More pages, less hassle
  • KEEPS PRINTING WELL AFTER COMPETITORS HAVE QUIT. No complex maintenance. Sharper text, richer colors.[2] Only with HP Smart Tank
  • PREMIUM SUPPORT - Strong technical expertise to solve issues faster
  • THE LAST PRINTER YOU'LL EVER NEED. Enjoy years of refillable, cartridge-free printing.

Instrument the PDF path so the failure is visible

Log each phase rather than reporting only “PDF timed out.” Capture a timestamp before launch, after launch, after navigation, before PDF generation and after the response. Log the configured executable path (without secrets), the Node runtime, Puppeteer version and browser version. Always close the browser in a finally block:

const puppeteer = require('puppeteer');

async function makePdf(url) {
  const started = Date.now();
  let browser;
  try {
    console.log('launch-start', { executablePath: process.env.CHROME_BIN || 'bundled' });
    browser = await puppeteer.launch({
      executablePath: process.env.CHROME_BIN || undefined,
      args: ['--no-sandbox', '--disable-setuid-sandbox']
    });
    console.log('launch-done', Date.now() - started);

    const page = await browser.newPage();
    await page.goto(url, { waitUntil: 'networkidle2', timeout: 120000 });
    console.log('navigation-done', Date.now() - started);

    const pdf = await page.pdf({ format: 'A4', printBackground: true });
    console.log('pdf-done', Date.now() - started);
    return pdf;
  } finally {
    if (browser) await browser.close();
  }
}

A navigation timeout is different from a Firebase deadline. Set page-level limits that leave time for cleanup and the HTTP response; do not make every internal timeout equal to the function’s maximum.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Redeploy and verify the deployed artifact

  1. Update the dependency versions, browser packaging and runtime options in source.
  2. Perform a clean dependency installation from the committed lockfile.
  3. Deploy the function and inspect deployment output for the selected Node runtime.
  4. Invoke the deployed endpoint, then inspect logs for the executable path, browser version and phase timings.
  5. Confirm the configured memory and timeout are present on the deployed revision, not only in the console.
  6. Repeat with a small, known URL before testing the full PDF workload.

If the browser launches and reaches navigation, investigate page behavior, external requests, authentication, infinite loading and PDF size. If it never launches, return to packaging, path, platform libraries and version compatibility rather than adding more seconds.

Common symptoms and fixes

Symptom Likely layer Action
“Could not find Chromium” or failed revision download Installation or packaging Use Puppeteer’s associated browser and include it in deployment, or package a separate binary and set its actual path.
Browser starts locally but not in Firebase Environment difference Check deployed architecture, Linux libraries, permissions and the path logged by the function.
Protocol or target-closed errors immediately after launch Revision mismatch or browser crash Compare Puppeteer with the actual browser release; then inspect memory and required packages.
Navigation timeout while Chrome remains healthy Page workload Check URL responsiveness, redirects, scripts and wait conditions; use a bounded page timeout.
Firebase deadline exceeded after successful navigation Function budget or PDF workload Increase memory and timeout within the trigger ceiling, reduce page/PDF work, and leave response time for cleanup.
Changing the console setting has no effect Configuration precedence Set runtime options in source and redeploy; source overrides external settings by default.

Or skip the browser setup

If your goal is a website screenshot or PDF rather than maintaining Chrome inside Firebase, ScreenshotNeo provides a website screenshot API and MCP server. One request handles browser capture without packaging Puppeteer into your function:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. Cookie and consent banners are accepted and 60-plus known consent platforms, newsletter popups and chat widgets are removed before capture; each step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and whether it was billed. Its MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When to keep Puppeteer

Keep the Firebase implementation when you need application-owned authentication, custom browser code, in-process data access or a workflow that must run inside your own project. Use the compatibility-first process above: one browser strategy, a verified deployed path, a supported Node/runtime combination, and trigger-appropriate resources. Move the capture to an API when maintaining browser binaries is the part creating operational risk.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
NDYIN Portable Printers Wireless for Travel, N80 Bluetooth Thermal Printer
  • Wireless Bluetooth Printer: Portable thermal printer compatible with iPhone, Android phones, iPad and tablet computers via Bluetooth. For smartphones, please download the "Nada Print" App. You can also connect to laptops and computers for printing using a USB-C cable. (Note: Laptops and computers can only be connected via USB and require the installation of a driver first. Bluetooth connection is not supported.)
  • No-ink printing: Only supports US Letter and A4 size thermal paper.(Doesn't support regular paper) The no-ink portable thermal printer uses direct thermal technology, requiring no ink, toner or ribbons, making it environmentally friendly, cost-effective and time-saving. The thermal printer package comes with a roll of US Letter thermal printing paper. Note: When installing the paper, remember to switch the paper size switch on APP
  • Clear Print: NDYIN N80 portable thermal printer adopts high-definition printing technology, with a 203DPI resolution to provide you with clear printing results. This mobile printer is compatible with roll paper, folded paper and tattoo transfer paper, supporting printing from your mobile phone PDF, Word, pictures and web pages anytime and anywhere. It is recommended to use our NDYIN thermal paper to achieve good printing quality
  • Portable wireless printer for travel: The thermal printer is equipped with a built-in 1500mAh rechargeable battery, which can print 160 sheets of 8.5" x 11" thermal paper after being fully charged. It weighs only 1.5 pounds and is compact in size. This ink-free portable printer can be easily carried in a backpack or briefcase! It is perfect for business travel, cars, small offices, construction sites, schools and homes. You can print documents, contracts, invoices and boarding passes anytime and anywhere
  • The N80 thermal printer has a wide range of uses. The package includes the N80 printer, a roll of US Letter paper(7m/roll), a user manual, a guide card, a type-C soft cable and a type C adapter. Note: The charging adapter is not included. Special thermal paper is required for use; ordinary paper cannot be used. This ink-free portable thermal printer is suitable for various scenarios such as home, school, travel, office, and outdoor, meeting the printing needs of different groups of people. This tattoo template printer is also compatible with tattoo transfer paper, making it an ideal choice for tattoo art

Final diagnostic checklist

  • Have you identified whether the first failure is installation, launch, protocol, navigation or the Firebase deadline?
  • Does the deployed function contain the browser you intend to run?
  • Does the browser release match the installed Puppeteer package?
  • Does the Firebase Node runtime meet both Firebase and your Puppeteer version’s requirements?
  • Are Linux packages and architecture appropriate for the browser?
  • Are timeoutSeconds and memory set in source and visible after redeployment?
  • Is the value within the trigger’s documented maximum?
  • Do logs show phase timings and a clean browser shutdown?

Frequently Asked Questions

Can increasing timeoutSeconds fix a Chrome revision mismatch?

No. It only increases the execution budget. The browser must be present, launchable and compatible with Puppeteer first.

Should I use the Chrome installed on my laptop?

No. Firebase needs a browser packaged in or available to the deployed function, referenced by its deployed path.

Why does a PDF work locally but fail after deployment?

The deployed environment may have a different Node runtime, architecture, browser path, browser revision or required Linux libraries.

Which Firebase timeout ceiling applies to my function?

HTTP and callable functions allow up to 3,600 seconds, scheduled and task queue functions up to 1,800 seconds, and other event-driven functions up to 540 seconds. The trigger class determines the applicable ceiling.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Bestseller No. 3
HP Smart Tank 5000 Ink Tank Printer | 2 Years of Ink Included | All-in-One
HP Smart Tank 5000 Ink Tank Printer | 2 Years of Ink Included | All-in-One
PREMIUM SUPPORT - Strong technical expertise to solve issues faster; THE LAST PRINTER YOU'LL EVER NEED. Enjoy years of refillable, cartridge-free printing.
$189.99

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.