Skip to main content
BentoPDF is a fully static site — there is no database, no backend server, and no server-side processing. Every PDF operation runs entirely in the user’s browser using WebAssembly (WASM). This means you can host BentoPDF as plain static files on virtually any web server or hosting platform.

How it works

When a user opens BentoPDF, the browser downloads the app’s JavaScript and, on demand, fetches WASM modules (PyMuPDF, Ghostscript, CoherentPDF, Tesseract) directly from a configured URL. Files are never sent to a server — all processing happens locally in the browser tab.
Office file conversion requires HTTPS on non-loopback addresses.Word, Excel, and PowerPoint conversions use LibreOffice WASM, which requires SharedArrayBuffer. Browsers only make SharedArrayBuffer available when the page is cross-origin isolated and served from a secure context.
  • http://localhost — works for same-device testing.
  • http://192.168.x.x or any LAN IP/hostname — will not work over plain HTTP even if the server sends the correct COOP/COEP headers. Terminate with HTTPS.
The official Docker image already sends the required headers:
  • Cross-Origin-Opener-Policy: same-origin
  • Cross-Origin-Embedder-Policy: require-corp

Deployment options

Docker

The recommended method. Pull the pre-built image, run it, and you’re done. Supports Docker Compose and Podman Quadlet for systemd integration.

Vercel / Netlify

Connect your fork and deploy in minutes. Automatic builds on every push.

Cloudflare Pages

Free unlimited bandwidth with a global CDN and 300+ edge locations.

AWS S3 + CloudFront

Upload the dist folder to S3, serve it through CloudFront with a response headers policy.

Nginx / Apache

Serve the dist folder directly. Requires adding COOP/COEP headers to the server config.

Kubernetes

Deploy with Helm. The official image serves on port 8080 and includes all required headers.

Air-Gapped

For networks with no internet access. Bundle everything with the included prepare-airgap.sh script.

Configuration

All environment variables and build arguments for WASM URLs, branding, language, OCR, and more.

System requirements

RequirementMinimum
Storage~100 MB (core app; WASM modules are fetched at runtime)
RAM512 MB
CPUAny modern processor
BentoPDF is a static site — there is no database or backend server required. Any web server that can serve files over HTTPS is sufficient.

Building from source

If you want to customize BentoPDF before deploying, build it from source:
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
npm run build
The output is in the dist/ folder. Alternatively, download a pre-built dist-{version}.zip from GitHub Releases to skip the build step entirely.

Next steps

Build docs developers (and LLMs) love