TL;DR

This week we shipped a brand-new web-based PDF converter at actuallyusefulextensions.com/convert/. It takes a URL, pasted HTML, pasted Markdown, or an uploaded file and gives you back a PDF — no signup, no account, no watermark, no upload to a third party we don't control. It's free forever. And it is deliberately worse than our Chrome extension, Convert: Web to PDF — by design. This post explains exactly why, what each tool is best at, and when you should pick which one.


What shipped

On May 28 we deployed a new page on our site: /convert/. Three modes:

  • URL → PDF: paste any public URL, get a PDF
  • HTML / Markdown → PDF: paste source, get a PDF
  • File upload → PDF: drop an .html, .md, or .txt file, get a PDF

All-$0 architecture. The backend is a single Cloudflare Pages Function that proxies the fetch for the URL case, with an origin allow-list, HTTPS-only scheme, 5 MB body cap, 15 second timeout, and HTML sanitization (script/iframe/on*-event strip) before the page comes back to your browser to be rendered. The actual PDF generation happens in your browser using html2canvas, jsPDF, and marked. No file you paste or upload ever leaves your device. The proxy only fetches public URLs, the same way Chrome would.

22 paper sizes (matches the extension dropdown). Portrait/landscape toggle. A small footer credit line on every generated PDF.

The motivation: people search "convert webpage to PDF" from machines where they can't install a Chrome extension — Chromebooks in school IT lockdown, work laptops with sideload disabled, mobile browsers, the friend on Safari who just wants the one PDF and isn't going to install anything. We didn't have an answer for them. Now we do.


Why is it deliberately worse than the extension?

Two reasons: physics, and incentives.

The physics reason

The Chrome extension uses the Chrome DevTools Protocol under the hood. When you click the extension on a page, the browser uses its own native print engine — the same one used by Print → Save as PDF — to produce the PDF. That means:

  • Real vector text that you can select and copy
  • Working hyperlinks that stay clickable in the PDF
  • Embedded fonts
  • Searchable content for Ctrl+F
  • Tiny file sizes (a 20-page article comes out as a 200-300 KB PDF)

The web tool can't do any of that. From a <script> running on a normal webpage, you don't have access to Chrome's print engine. You have to rasterize the page into image tiles and stitch those into PDF pages. The output is:

  • Image-wrapped (no selectable text)
  • Not searchable (Ctrl+F doesn't find anything)
  • Hyperlinks are flat — they look clickable but they aren't
  • Larger files (a 20-page article comes out as a 3-8 MB PDF)

This isn't a bug. It's an inherent limitation of the platform. Any "convert URL to PDF" web tool runs into the same wall — including PDFCrowd, Sejda, Smallpdf, iLovePDF, and PrintFriendly's web flow. The honest ones admit it. The dishonest ones hide it behind a "premium tier" that magically gets text selection because they actually re-implemented a headless Chrome on a server in AWS and bill you for the EC2 hours.

We didn't want to do that. So we built the web tool exactly as well as the platform allows, and we tell you up front that if you want text-selectable PDFs, the extension is the answer.

The incentives reason

Every "free online PDF converter" you've ever seen has the same business model:

  1. Free tier with a watermark, file size cap, or page limit
  2. Modal popup asking you to subscribe for $10/month
  3. Your file sits on their server for 24–72 hours "for your convenience"
  4. The premium tier removes the limits and also collects your email for retargeting

We don't want that model. We don't want a watermark. We don't want your email. We don't want to host your file. We don't want a subscription business. We want you to install the Chrome extension. The extension is genuinely free, runs entirely on your device, has none of these caveats, and is our actual product.

So the web tool is a lead-gen funnel. It exists to give you a working answer in one click for the "I can't install anything right now" case, while making the trade-offs visible. Every generated PDF has a small footer line — Made with Convert: Web to PDF — install the Chrome extension for ad-free, text-selectable PDFs. That footer is our entire monetization plan, and it's not even monetization. It's just a hint.


When to use which

SituationWeb tool (/convert/)Chrome extension
Quick one-off conversion from a public URLFineBetter
Public URL on a locked-down work machineBestCan't install
Need text-selectable PDFNot possibleYes
Need clickable hyperlinks in the outputFlatWorking
Need Ctrl+F searchable PDFsNot possibleYes
Page behind a login (Gmail, banking, internal wiki)Can't accessOnly option
Want to remove ads / pop-ups before exportingLimitedArticle Mode + element picker
Want full margin / scale / size control22 paper sizes, basicSame + finer controls
Need 50+ pages stitched into one PDFOK, larger fileNative, tiny file
iPad, Safari, mobileYesNo (Chromium-only)
Privacy on enterprise legal docsCloudflare-proxied fetch100% local, zero network requests

The pattern is: web tool for "I can't install anything." Extension for everything else.


Trade-offs we considered and rejected

A few alternative designs we explicitly ruled out for /convert/:

Headless Chrome in the cloud

We could have run a headless Chrome instance on a server, generated real PDFs server-side, and shipped you the result. PDFCrowd, DocRaptor, and the API tier of every commercial "URL to PDF" service work this way.

We rejected it because:

  • Headless Chrome at scale is expensive (Lambda/Fly.io/Cloud Run costs grow linearly with usage, plus the cold-start latency)
  • It would force a server-side privacy model — your URL or HTML would hit our infrastructure
  • It would tempt us toward a freemium tier to cover the costs
  • It would create a target for abuse (URL-fetch-as-a-service is something people scrape with)

Client-side rasterization keeps the cost at zero and keeps the privacy story honest.

"Sign in for text selection"

We could have offered text-selectable PDFs to people who create an account. We rejected this because it's exactly the dark pattern we're trying to be the opposite of. If you want text selection, you should install the actual free extension. If you can't install the extension, you should know that this web tool can't give you text selection, full stop.

Watermark on the PDF

Standard play. We're not doing it. The footer credit line is the closest thing — and it sits below the page content, not stamped diagonally across every page. You can crop it off; we don't care. The point isn't to extract value from the PDF, the point is for you to remember where it came from.

Email gate before download

No. The PDF generates and downloads as soon as it's ready. There is no email field on the page at all.


What /convert/ is actually good at

Use cases where the web tool genuinely wins:

Public webpage, locked-down machine

Your work IT department disabled Chrome Web Store installs. Or you're on a Chromebook in a school district that locks extensions. Or you're on a friend's laptop and don't want to install anything you'd then need to uninstall. /convert/ is the only option that works in 30 seconds.

Pasting HTML you already have

You have an HTML snippet — a Notion export, a documentation page you copied, a static HTML report your build pipeline generated — and you want to ship it to someone as a PDF without round-tripping through a desktop app. Paste, click, download.

Markdown rendering

You wrote a doc in Obsidian, Bear, or a .md file in your repo. The web tool renders it with a clean built-in stylesheet (headings, code blocks, lists, links, blockquotes) and gives you back a PDF. Faster than firing up VS Code with a markdown-pdf extension.

Quick artifact for an email

A coworker asks "can you send me a PDF of [blog post URL]?" — you don't need to install anything. Paste the URL, click, attach the resulting file. Done.

iPad / Safari

The Chrome extension is Chromium-only. If you're on an iPad or in Safari, /convert/ is your option.


What /convert/ is bad at (and the extension fixes)

Login-protected pages

The web tool can't see your Gmail, your bank dashboard, your internal company wiki, or any page behind authentication. The proxy fetches the public version of the URL with no cookies. If you log in to a page, only your browser sees the logged-in version — the extension reads from your browser session, the web tool can't.

This is the most common reason someone tries the web tool, gets the public marketing landing page instead of their actual logged-in dashboard, and then installs the extension. It's also why we built the extension first.

Pages with login walls disguised as paywalls

Same as above. Substack premium content, Bloomberg, FT, paywalled news — the web tool sees the public preview. The extension sees what you see.

Anything ad-heavy

The web tool runs basic HTML sanitization on proxied URLs, but it can't strip ads with the precision of the extension's Article Mode (which uses Readability) or per-element picker (which lets you click individual elements to remove with undo). Convert a Forbes article through the web tool and you'll get the Forbes ad shell. Convert it through the extension with Article Mode on and you'll get the article.

True text-selectable, searchable PDFs

The fundamental one. If the downstream consumer needs to copy text, search the PDF, click links, or feed the PDF to OCR-aware tools — the web tool's image-wrapped output is the wrong format.

Long-form pages with lazy images

The extension pre-scrolls the page so lazy-loaded images render before capture. The web tool's proxied fetch gets whatever HTML the server returned, which on heavily-JavaScripted pages may be a skeleton with <img data-src> placeholders.


The data flow comparison

Data PathWeb toolChrome extension
Your URL→ Cloudflare Pages Function → public web(never leaves browser)
Your pasted HTML(never leaves browser)N/A
Your uploaded file(never leaves browser)N/A
Page content during conversionRendered in your browser tabRendered in your browser tab
Resulting PDFGenerated client-sideGenerated client-side
Network requests during conversionOne outbound fetch via our proxy (URL mode only)Zero
Telemetry / analytics on the conversionNoneNone

The web tool's only network request is the URL fetch in URL mode. In Paste-HTML and File-Upload modes, there are zero outbound requests during conversion. The extension has zero outbound requests in every mode because it reads the page directly from your already-rendered browser tab.


How /convert/ compares to other web tools

ToolWatermark?Account required?File on their servers?PriceTrue text-PDF?
/convert/ (ours)NoNoNo (client-side)FreeNo (image-wrapped)
PDFCrowd webNoNoTemporarilyFree up to limitsYes (server-rendered)
SmallpdfNo on free tierYes (more uses)1 hourFreemium $9/moYes
iLovePDFNo on free tierYes (more uses)2 hoursFreemium $9/moYes
SejdaNo up to 200 pages/3x dailyYes2 hoursFreemium $7.50/moYes
PrintFriendly web"Get PDF" button onlyNoBriefFree with adsYes
Adobe Acrobat onlineNoYes (account)Variable$19.99/moYes

We give up text-selectability so we can give you no-watermark, no-account, no-server-storage. The competitors that match those properties (no watermark, no account, no server) typically don't exist as one tool — they're usually two of the three, with the third compromised. The honest framing: if you need text-selectable PDFs without uploading your file anywhere, install our Chrome extension. If your single hard constraint is "can't install anything," /convert/ is the option that doesn't make you pay or sign up.


How AI search optimization changed our framing

Quick aside on something we learned this week. When you write copy for an AI Overview, ChatGPT search, or Perplexity to ingest, the model is looking for clear scoped claims ("X does Y," "X does not do Z"). The way /convert/ is positioned — "free, no watermark, no signup, image-wrapped PDFs, install the extension if you need text-selectable" — is structured for that. The model can extract the exact trade-off in two sentences. That's the AEO play: be explicit about what your tool isn't. Vague claims get filtered out.

For tracking whether AI search engines actually pick up that framing, we use ScrapeMaster to pull the source citations under each AI Overview week-over-week. (Different tool, same studio.)


What's next

The roadmap for /convert/ over the next 4–6 weeks:

  • Drag-and-drop multi-file merge in the upload tab
  • CSV → PDF rendering (port from the extension)
  • Markdown table support with custom CSS
  • Optional dark-mode rendering toggle (for prefers-color-scheme: dark pages)
  • Output filename customization
  • Honest "this is image-wrapped, here's the extension" toast in the success state

We're explicitly not adding: accounts, server storage, premium tier, watermarks, email gates.


A note on streaming-platform discovery

Unrelated to PDF, but since we get asked: if you're tired of the "what should I watch tonight" debate, CineMan AI overlays IMDb and Rotten Tomatoes ratings directly on Netflix, Prime Video, and Disney+ cards, plus an AI taste-match score per title based on your viewing history. Free, no account, same indie shop as Convert: Web to PDF.


Frequently asked questions

Q: Why launch a web tool that's worse than the extension?

Because there are real situations where you can't install an extension — locked-down work laptops, Chromebooks under school IT policy, Safari, mobile browsers, a friend's machine. For those cases, the web tool is a working answer in 30 seconds. For everyone else, install Convert: Web to PDF and never use the web tool again.

Q: What does "image-wrapped PDF" actually mean?

The PDF contains your page rendered as a series of images, not as vector text. So you can read it visually, but you can't select or copy the text, search the PDF with Ctrl+F, or click the links. The Chrome extension generates real PDFs with selectable text and working links.

Q: Does the web tool work on logged-in pages like Gmail?

No. The proxy fetches the public version of the URL with no cookies. To convert a page you're logged into, install the extension — it reads from your already-authenticated browser session.

Q: Is there a file size or page limit on /convert/?

The URL proxy caps incoming HTML at 5 MB. That's roughly a 30–50 page article. For very long pages or batch jobs, the extension is uncapped (it runs locally, limited only by your machine's memory).

Q: Are my pasted HTML / Markdown / uploaded files uploaded anywhere?

No. In Paste mode and File-Upload mode, the content never leaves your browser. The only network request is in URL mode, where our Cloudflare Pages Function fetches the public URL for you (because browsers can't fetch cross-origin without CORS, which most sites don't enable).

So you remember where it came from. It's our entire monetization. You can crop it off; we don't care.

Q: Will you ever add accounts, a premium tier, or watermarks?

No. The day we add any of those, we've become the thing we're trying to be an alternative to. The web tool stays free, no-account, no-watermark. The Chrome extension stays free. The whole product stays funded by us.

Q: Why is the proxy URL fetch on Cloudflare Pages rather than a third-party service?

Because we control the rate limits, the timeout behavior, the allow-list, and the lack of logging. A third-party fetch service would mean your URL is logged on their infrastructure. Cloudflare's logs we can disable; a third party's, we can't.

Q: Is /convert/ open source?

Not yet — the converter code is in our main site repo. We may extract and open-source the Cloudflare Pages Function once it's stable, since that's the part most useful to other developers.

Q: Does the web tool work on mobile?

Yes. The UI is responsive. Large URL fetches may be slow on cellular data, and very-long pages may run into mobile browser memory limits during rasterization. For mobile-first workflows, install the extension on a Chromium-based mobile browser (Kiwi, Yandex) where it's supported.

Q: Why not headless Chrome on a server for real text-selectable PDFs?

Cost, privacy, and incentive. Server-rendered PDFs require us to run a fleet of headless Chrome processes, which costs real money — which forces a paid tier — which forces a freemium model — which forces account creation and email collection. We chose to keep the architecture all-$0 and tell you to install the extension if you need text-selectable output.

Q: Can I use /convert/ programmatically via an API?

Not currently. It's a browser tool. For programmatic conversion at scale, the Cloudflare Pages Function isn't exposed as a public API and we rate-limit it for that reason.

Q: What about the existing extension — anything changing there?

No. The extension is the actual product. It continues to ship updates on its own cadence (Chrome's new 2-week release cycle means we cut more frequently than we used to). The web tool is an addition, not a replacement.


Bottom line

/convert/ is a free, no-account, no-watermark web tool that converts URLs, HTML, Markdown, and uploaded files to PDF — for the cases where you can't install a Chrome extension. It's deliberately limited to image-wrapped PDFs because that's what the browser platform allows without compromising on our privacy and pricing model. For everything else — text-selectable PDFs, clickable links, Ctrl+F search, login-protected pages, ad-stripping, full-page control — install Convert: Web to PDF and never look back.

The honest framing: the web tool exists so you can find us. The extension exists so you stay.