Comparison · Run your own browser, or use a managed template renderer

thirds.ai vs self-hosted Puppeteer or Playwright

Puppeteer and Playwright are code libraries that drive a browser. Both can load HTML or a page and print it to a PDF, and your code controls every step. thirds.ai runs that browser work for you, with fixed limits, to make branded PDFs and images again and again.

We aren't connected to Puppeteer, Playwright, Google, or Microsoft. Their names are trademarks of their owners. We checked the project docs, licences, and operating guides on 12 September 2026. Facts about the libraries come from the projects. Where we say which one fits or what it costs, that's our opinion.

1 credit
makes 1 PDF or image
50 credits
free every month, no card
$29
a month for Starter, with 2,500 credits
4 formats
PDF, PNG, JPEG, and WebP

Try it yourself

Test the same job in both tools

Use one real design and details that look like production. Measure good files, peak memory and CPU, cold and warm starts, failed jobs, retries, storage, transfer, upgrades, alerts, and support time. Running your own browser fits when your team already runs browser services and accepts the security, scaling, and upgrade work. thirds.ai fits when people who don't code must edit the designs. It also fits when HTML from your customers needs a safe, limited place to run.

Make a sample report
A portrait A4 campaign report with a near-black diagonal header, a round amber-framed portrait, a bold amber metric card reading +31%, and a white next-step panel with an orange edge stripe.
Campaign results report

Feature by feature

Side by side

What you needthirds.aiSelf-hosted Puppeteer or Playwright
InputA description for the AI, your own HTML, a picture that becomes a design you can edit, or plain HTML from your code. It can't load a page URL.Your code can set page content or navigate to a URL before it prints or takes a screenshot (project-reported).
OutputPDF, PNG, JPEG, and WebP.Chromium can print a page to PDF. Browser pages can produce screenshots; Playwright documents PNG, JPEG, and WebP types (project-reported).
Template workA visual editor and an AI chat work on the same HTML design. Saved versions never change, and brand kits hold your logo, colours, and fonts.The libraries do not provide a hosted template library, customer editor, brand kit, or saved template-version contract (our reading). Your app can build any of these.
Browser controlYou set PDF and image options. You can't drive the browser step by step.Your code controls navigation, page content, JavaScript, media mode, headers, footers, screenshots, and PDF options (project-reported).
API and deliveryREST and MCP endpoints, queued jobs, idempotency, polling, signed webhooks, and expiring downloads.These libraries expose programming APIs. Your team builds any network API, authentication, queue, retry rule, idempotency key, webhook, storage, and download flow (our reading).
LimitsA PDF has fixed page, asset, time, memory, and output limits. Images have pixel and output limits.The library APIs do not set a hosted-plan quota (our reading). Your machine, process limits, timeouts, browser stability, and application rules set practical limits.
Security workThe service isolates untrusted renders, blocks private and reserved destinations, rechecks redirects, and applies hard resource limits.Your team configures browser users, sandboxing, containers, network access, resource limits, and cleanup. Playwright warns that its Docker image is for testing and development and is not recommended for untrusted sites (project guidance).
Software priceStarter is $29 a month for 2,500 credits. One credit makes one PDF or image.Puppeteer and Playwright use the Apache License 2.0, which grants a no-charge, royalty-free licence under its terms (project licence). There is no hosted render service in the library price.
Total costPlan, overage, and pack prices are public. We run and maintain the browser for you.Compute, storage, transfer, build work, maintenance, security, monitoring, incidents, and user support belong to your team. Their cost depends on your system and staff (our judgment).
Where it fitsTeams that want a managed service for repeat PDFs and images, with designs they can edit and fixed limits.Engineering teams that need browser-level control and already own the operating work, or have a reason to build it (our judgment).

Read before you decide

Limits on both sides

thirds.ai limits

  • It doesn't load a page URL. Send the HTML text or use a saved template and data.
  • It doesn't expose page navigation, selectors, scripts, cookies, browser contexts, or arbitrary Playwright or Puppeteer calls.
  • A PDF can have up to 100 pages. The pictures and fonts it loads can total 20 MiB, and the finished file can be 25 MiB.
  • An image can be up to 32 megapixels and 25 MiB.
  • It uses one fixed version of Chromium that we manage. You can't choose Firefox, WebKit, a Chrome channel, or an arbitrary browser build.
  • It's a shared hosted service, so each account has limits on files at once, request rate, spend, and abuse.

Self-hosting limits and the work you take on

  • Playwright says each library version needs specific browser binaries and may need another browser install after an update (project guidance). Puppeteer downloads a compatible Chrome for Testing build by default (project guidance).
  • Browser images and Linux hosts need system packages, fonts, writable temporary space, and correct process cleanup. Puppeteer's Docker guide requires an init process and documents a sandboxed image that uses the SYS_ADMIN capability (project guidance).
  • Playwright's Docker image runs browsers as root by default, which disables the Chromium sandbox. Its guide recommends a separate user and seccomp profile for crawling or scraping (project guidance).
  • A browser call alone does not give customers safe retries, duplicate protection, quotas, billing, job states, webhooks, signed downloads, retention, or support (our reading).
  • Your service must treat HTML, JavaScript, assets, and URLs as untrusted when customers control them. Network blocks must cover redirects, DNS changes, loopback, private, link-local, metadata, and reserved addresses.
  • No project page promises a maximum PDF page count, output size, request rate, service availability, or support response time for your deployment (our reading). You set and test those contracts.

Worth knowing

How to compare the total cost

The library licence price is not the operating cost. Choose the same comparison period and output count for both options. Record running costs with representative documents and include failed work. Label any cost you estimate rather than measure.

Cost to measureWhat to record
ComputeBrowser hosts, warm idle capacity, peak concurrency, memory, CPU, temporary disk, and retries.
Storage and transferInputs, finished files, backups, retention, and customer downloads.
Build workAPI, auth, templates, queue, idempotency, webhooks, storage, limits, and admin tools.
Safety workBrowser sandbox, container policy, URL and redirect checks, network rules, secrets, and abuse controls.
Ongoing workBrowser and library updates, visual checks, alerts, incident response, capacity changes, and customer support.

For self-hosting, spread one-time build and setup work across the chosen period and add compute, storage, transfer, and operating work for that period. For thirds.ai, include one-time integration and migration work, the plan or packs, and your own download, storage, and support work over the same period. Do not charge a whole build to one month while spreading the other option’s setup cost across a year.

Divide each period total by successful customer outputs during that period. Keep staff time as measured hours and apply the rate your business uses; this page does not invent one. Compare equal output counts, retention needs, and support needs.

Self-hosting can cost less when spare capacity, browser skills, and the needed service code already exist. It can cost more when the renderer needs new security and operations work. Measure your case instead of assuming either result.

Switching

Moving from self-hosted Puppeteer or Playwright

Start with one render path, its HTML, data, fonts, assets, browser settings, PDF or screenshot options, and a known-good output. Send the HTML directly to thirds.ai first. Map page size, orientation, margins, backgrounds, and image format to the supported request fields. A request that depends on navigation, cookies, selectors, or page scripts can need a new input path because thirds.ai does not expose those browser steps.

Then decide whether the HTML stays stateless or becomes a saved template. For repeat work, replace values with MiniJinja fields, add sample data and a schema, check the preview, and save the exact version. Replace local files or object-store writes with the job response, signed webhook, and expiring download. Keep your current renderer for any job that needs direct browser control.

Checked and dated

Sources

Try the same job here

Open the Campaign results report template to make a sample document. Or use Create your first PDF to send HTML you already have, without saving a design first.

Change the details and make a real file for free. It has a watermark. Sign in to keep working on the same design with the same details.