PRIVATE. POWERFUL. LOCAL.
PDFMiniFly is a privacy-first, local-first, browser-based PDF toolkit. Document processing is performed locally in your browser whenever technically possible: files are not uploaded to a server for the local tools, and nothing is stored in the cloud.
Production (primary): https://pdfminifly.pages.dev/
Secondary deployment: https://pdfly-source.github.io/pdfly-app/
A browser-based PDF workspace with 49 tools covering organizing, editing, converting, protecting, analyzing, and automating PDF documents. The application ships as a static site (Next.js static export) and installs as a Progressive Web App (PWA) for offline use.
Tool categories include:
- Organize — merge, split, organize/rotate, extract pages, remove blank pages, booklet maker, split by size, N-Up
- Edit — compress, edit, page numbers, crop/trim, watermark, Bates stamping, invert colors, grayscale ink saver
- Convert — PDF to image/text/markdown/HTML/Excel/DOCX, image/DOCX to PDF, OCR (English, Assamese, Hindi, Bengali)
- Protect — watermark, redact, sign, certificate-based digital signature, password protect, metadata cleaning, PDF sanitizer
- Read & Analyze — viewer, read aloud, compare, health check, metadata
- Study — turn documents into summaries, MCQs, flashcards, and quizzes (generated locally in your browser)
- Automation — batch processing of multiple files, and a workflow builder that chains multiple steps; workflows and history are stored only in your browser (localStorage)
- All PDF processing runs client-side, in your browser, using pdf-lib, PDF.js, Tesseract.js (OCR), and JSZip. Local tools never transmit document bytes to a remote server.
- The Document Workspace keeps documents in browser memory only; metadata and history are stored locally in your browser and are never uploaded.
- The PDF Assistant defaults to Local mode (in-browser analysis). An optional cloud mode exists in the code but requires a server runtime that is not part of this GitHub Pages deployment; on this deployment it is not available and the app tells you so, with the local mode as the working fallback.
- See the in-app Privacy and Security pages for details.
No absolute security guarantees are made. Local processing means your documents are not sent to a server for the local tools; standard browser security still applies.
- Next.js static export (
output: 'export'), deployed on GitHub Pages - pdf-lib — PDF manipulation
- PDF.js — rendering, text and image extraction (shared worker + cMaps)
- Tesseract.js — local OCR
- JSZip — DOCX/XLSX parsing
- node-forge — certificate-based signing
- Bun — package manager;
bun.lockis the canonical lockfile
bun install # frozen install per bun.lock
# Local dev (served from '/')
npm run dev
# Production build for GitHub Pages (basePath /pdfly-app)
NEXT_PUBLIC_BASE_PATH=/pdfly-app \
NEXT_PUBLIC_SITE_URL=https://pdfly-source.github.io/pdfly-app \
npm run buildThe static export is written to out/. NEXT_PUBLIC_BASE_PATH controls the
base path; it is set by the GitHub Actions workflow for the Pages deployment
and left empty for local development or a future custom domain.
GitHub Actions builds the static export on every push to main and publishes
two production deployments:
- Cloudflare Pages (primary): https://pdfminifly.pages.dev/ — root
deployment via
.github/workflows/deploy-cloudflare-pages.yml. - GitHub Pages (secondary): https://pdfly-source.github.io/pdfly-app/ —
/pdfly-appbase-path deployment via.github/workflows/deploy-pages.yml.
The deployment is fully static: no server, no database, no API endpoints are used in production.
See CHANGELOG.md.