Convert and edit PDF files in your browser. Nothing leaves your device.
Try it online: pdf.askjeeves.cc
More free tools: askjeeves.cc — PDF, images, CSV/JSON/Excel, Word, and more.
| Conversion | Status | Notes |
|---|---|---|
| Extract page range → PDF | Enabled | Max ~50 MB, 50 pages |
| Split all pages → ZIP of PDFs | Enabled | Max ~50 MB, 50 pages |
| Pages → PNG (ZIP if multiple) | Enabled | Max ~50 MB, 50 pages |
| PDF → JPEG(s) | Enabled | Max ~50 MB, 50 pages |
| PDF → WebP(s) | Enabled | Max ~50 MB, 50 pages |
| Remove pages from PDF | Enabled | Max ~50 MB, 50 pages |
| Compress PDF | Enabled | Max ~50 MB, 50 pages |
| Merge PDF | Enabled | Requires multiple PDF files; max ~50 MB each |
All conversion runs in your browser. Files are never uploaded to a server. Shared UI and validation live in vendored @askjeeves/* packages under vendor/. This repo wires tool.config.ts to processor functions in src/scripts/processors.ts.
| Requirement | Version |
|---|---|
| Node.js | ≥ 22.12 |
| pnpm | 10.27+ |
Enable pnpm once if needed:
corepack enable pnpmUse pnpm, not npm — a preinstall script enforces this.
git clone https://github.com/askjeeves-tools/pdf-tools.git
cd pdf-tools
pnpm install
pnpm devOpen http://localhost:4321.
pnpm build # output → dist/
pnpm preview # serves dist/ locallyDo not open dist/index.html via file:// — ES modules require a local server.
pnpm deployThis runs pnpm build then wrangler pages deploy dist. Log in first with wrangler login. Configuration lives in wrangler.toml.
First-time Cloudflare setup:
- Create a Cloudflare Pages project (or let Wrangler create one on first deploy).
- In the Cloudflare dashboard, open the project → Custom domains → add
pdf.askjeeves.cc. - Add the DNS record Cloudflare provides (typically a CNAME to your Pages hostname).
GitHub repo setup (for askjeeves-tools/pdf-tools):
- Create a public repo named
pdf-toolsin the askjeeves-tools org. - Push this directory (source,
vendor/,pnpm-lock.yaml, config files — notnode_modules/ordist/). - Set the repo website to
https://pdf.askjeeves.ccand topics such asastro,pdf,pdf-converter,browser,cloudflare-pages.
After pnpm build, upload the contents of dist/ to Netlify, Vercel, GitHub Pages, S3, or any static host. No server-side runtime is required.
| Script | Purpose |
|---|---|
dev |
Astro dev server |
build |
Static production build |
preview |
Preview dist/ |
deploy |
Build + Cloudflare Pages deploy |
test:e2e |
Playwright end-to-end tests (see below) |
lint |
Biome check |
| Package | Role |
|---|---|
astro |
Static site framework |
@askjeeves/ui |
Layout, converter UI, client controller |
@askjeeves/conversion-core |
Config, validation, errors, file limits |
@askjeeves/astro-integration |
Astro plugin, branding globals |
@askjeeves/processors-pdf |
PDF merge, split, compress, and image export |
The four @askjeeves/* packages are vendored under vendor/@askjeeves/ and linked via file: paths in package.json. You do not install them separately.
| Package | Role |
|---|---|
typescript |
Type checking |
@playwright/test |
End-to-end tests |
wrangler |
Cloudflare Pages deploy |
pdf-lib, PDF.js, and JSZip are pulled in automatically by @askjeeves/processors-pdf.
End-to-end tests under tests/e2e/ import @askjeeves/test-e2e, which is not included in this standalone export. To run them locally, sync that package from the Ask Jeeves Modules monorepo into vendor/@askjeeves/test-e2e and add a matching file: dependency in package.json, or run tests from the upstream monorepo instead.
pnpm test:e2eFailures appear in #tool-status with accessible error styling. Common cases:
| Situation | What to do |
|---|---|
| Wrong file type | Upload a PDF file |
| File too large | Use a smaller file (max ~50 MB, lower for some conversions) |
| Invalid file content | Use a valid PDF file |
| Conversion failed | Try different options or another file |
| Cancelled | Click Convert again |
| Load / engine error | Refresh the page |
This repo was exported from the Ask Jeeves Modules monorepo as a self-contained project. Shared packages live in vendor/@askjeeves/.
Do not copy tools/pdf-tools/ directly from the monorepo — that folder uses workspace:* dependencies that only resolve inside the monorepo. To re-export after upstream changes:
node scripts/export-standalone-tool.mjs pdf-tools ./export/pdf-toolsSee docs/sub-projects.md in the upstream repo. See also STANDALONE.md.
