Free PDF tools that respect your privacy. CoolPDF is a privacy-first, 100% client-side PDF toolkit for the web — think ilovepdf.com, except your files never leave your device. All PDF processing runs in the browser (WebAssembly / Web Workers); there is no backend at all.
Live site: https://getcoolpdf.com
- No Uploads — your files never leave your device. Every tool runs locally in your browser.
- No Sign-Up — no account, no email address, no personal information. Ever.
- Free Forever — every tool is free with no usage limits, funded by unobtrusive ads.
Don't take our word for it: disconnect from the internet after a page loads and the tools still work; watch the Network tab in DevTools and see zero file uploads; audit the source code — it's open source (AGPL-3.0).
All tools run 100% locally in your browser — no uploads, no sign-up, free forever:
- Merge PDF — combine multiple PDFs into a single file, in the order you want
- Split PDF — extract a page range or split one PDF into separate documents
- Compress PDF — shrink the file size while keeping the quality you need
- Rotate PDF — rotate single pages or an entire document in seconds
- Organize PDF — reorder, delete, and rearrange pages with drag and drop
- PDF to JPG — turn each PDF page into a high-quality JPG image
- JPG to PDF — convert JPG images into a clean, shareable PDF document
- Protect PDF — add AES-256 password encryption to keep your PDF private
- Unlock PDF — remove password protection from PDFs you own
- Watermark PDF — stamp a text or image watermark over every page, tiled or centered
- Page Numbers — add page numbers to your PDF, exactly where you want them
- PDF to Markdown — extract clean, structured Markdown from any PDF
- Word to Markdown — convert .docx documents into clean, AI-ready Markdown
- Excel to Markdown — turn spreadsheet sheets into Markdown tables
- Remove Pages — delete unwanted pages from a PDF with a visual page picker
- Extract Pages — save selected pages of a PDF as a new document
- Reorder Pages — drag pages into exactly the order you want
- Extract Images — pull every embedded image out of a PDF as JPG/PNG files
- HEIC to PDF — turn iPhone HEIC photos into a clean, shareable PDF document
- Sign PDF — draw a signature or upload a photo of it, and place it anywhere on a PDF document
- Next.js 15 (App Router,
output: 'export'static export toout/) + React 19 + TypeScript (strict) - Tailwind CSS 3.4 — no UI framework, system font stack
- lucide-react icons
- Hand-rolled lightweight i18n (no next-intl): 8 locales —
en(default, at the root),de,fr,it,es,pt,zh,ja(path-prefixed) - Zero backend: no API routes, no server code, nothing to deploy but static files
npm install # install dependencies
npm run dev # dev server on http://localhost:3000
npm run build # static export to out/
npm run lint # ESLint (next/core-web-vitals)
npm run type-check # tsc --noEmit- Build command:
npm run build - Build output directory:
out - No environment variables are required. Optional ones (see
.env.example):NEXT_PUBLIC_SITE_URL— canonical URL used for metadata/hreflang/sitemap (defaulthttps://getcoolpdf.com)NEXT_PUBLIC_GITHUB_URL— GitHub link target (defaulthttps://github.com/Jimsnote/coolpdf)NEXT_PUBLIC_CF_ANALYTICS_TOKEN— enables the cookieless Cloudflare Web Analytics beaconNEXT_PUBLIC_ADSENSE_CLIENT— enables the AdSense ad component
src/
├── app/ # routes: English pages at the root, other locales under [locale]/
│ ├── page.tsx # Home (en) — thin wrapper around components/pages/*
│ ├── about|privacy|terms|faq/page.tsx
│ ├── [locale]/ # mirrored routes for de/fr/it/es/pt/zh/ja (generateStaticParams)
│ ├── sitemap.ts # all pages × 8 locales with hreflang alternates
│ └── robots.ts # allow all + explicit AI-crawler rules
├── components/
│ ├── layout/ # Header (with language switcher), Footer, SiteShell
│ ├── pages/ # HomePage, AboutPage, PrivacyPage, TermsPage, FaqPage (shared by all locales)
│ ├── seo/ # JsonLd, FactSummary (canonical GEO summary)
│ └── ads/ # AdBanner (AdSense placeholder, off unless configured)
├── i18n/
│ ├── config.ts # locales, defaultLocale, isLocale()
│ ├── get-dictionary.ts
│ └── locales/ # en.ts defines the Dictionary type; the other 7 mirror it
└── lib/
├── site.ts # SITE_URL, GITHUB_URL, tokens (env-overridable)
├── seo.ts # buildAlternates() (canonical + hreflang), pageMetadata()
└── tools.ts # tool registry (12 tools, status flags)
public/
├── llms.txt # site summary for LLM crawlers
└── logo.svg
Issues and pull requests are welcome on GitHub: https://github.com/Jimsnote/coolpdf
CoolPDF is free software licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See LICENSE.