Warning
This project is entirely slopped. Enter at your own risk (that being said, it is entirely client side so hopefully has no vulnerabilities)
Slay PDF is a free local PDF editor and Adobe Acrobat alternative for everyday PDF editing. It keeps documents on your device, stores the active workspace in IndexedDB, and uses browser-side WebAssembly engines for heavier PDF operations.
Live app: https://slaypdf.com/
Latest release: https://github.com/emileakbarzadeh/slay-pdf/releases/tag/v0.1.0
Backlink kit: https://slaypdf.com/link-to-slay-pdf.html
Privacy and security model: https://slaypdf.com/pdf-privacy-security.html
PDF privacy checklist: https://slaypdf.com/pdf-privacy-checklist.html
- Import PDFs plus PNG, JPEG, and WebP images.
- Merge, split, reorder, duplicate, delete, rotate, crop, resize, and posterise pages.
- Add text, highlights, rectangles, ink, visual signatures, watermarks, page numbers, metadata, and secure redactions.
- Fill imported AcroForm text, checkbox, dropdown/list, and radio fields, with optional flattening on export.
- Export merged PDFs, selected pages, separate pages, page images, plain text, and searchable English OCR PDFs.
- Compress with GhostPDL/Ghostscript, optimize with qpdf, and optionally encrypt exports with AES-256 passwords.
- Continue recent local workspaces after refresh or install the app as a PWA.
Slay PDF is designed to run as a static site. PDF contents are processed in the browser and are not uploaded to an application server.
The practical limits are still the user's browser, memory, CPU, and storage quota. Imports are capped at 200 MB per file, and OCR currently bundles English language data only.
Security model details: https://slaypdf.com/pdf-privacy-security.html
PDF privacy checklist: https://slaypdf.com/pdf-privacy-checklist.html
Use the backlink kit when adding Slay PDF to open-source lists, privacy tool roundups, PDF utility directories, student resource pages, or Adobe Acrobat alternative comparisons:
Outreach checklist: docs/backlink-outreach.md
Backlink target tracker: docs/backlink-targets.md
Resource pages can also cite the PDF privacy checklist when they need neutral criteria rather than product copy:
[PDF privacy checklist](https://slaypdf.com/pdf-privacy-checklist.html) - practical criteria for choosing no-upload and local PDF tools.[Slay PDF](https://slaypdf.com/) - free local PDF editor for splitting, merging, signing and editing PDFs in the browser.<a href="https://slaypdf.com/">Slay PDF - free local PDF editor</a>[](https://slaypdf.com/)Short directory description:
Slay PDF is a free local PDF editor and Adobe Acrobat alternative that runs in the browser, so documents stay on your device.
This repo ships a Nix flake with a default development shell for the project. It provides:
- Node.js 24 and npm.
- Git and
jqfor local project work. nixpkgs-fmtas the flake formatter.- A local Playwright browser cache at
.cache/ms-playwright.
Enter the shell:
nix developOr run commands without entering an interactive shell:
nix develop --command npm ci
nix develop --command npm run dev -- --host 127.0.0.1For first-time Playwright setup, install the Chromium browser bundle into the project-local cache:
nix develop --command npx playwright install chromiumInstall dependencies:
nix develop --command npm ciStart the dev server:
nix develop --command npm run dev -- --host 127.0.0.1Run unit tests and the production build:
nix develop --command npm run checkRun SEO file consistency checks only:
nix develop --command npm run seo:checkRegenerate every managed SEO artifact in dependency order:
nix develop --command npm run seo:generateOr run the individual generators:
nix develop --command npm run seo:social
nix develop --command npm run seo:schema
nix develop --command npm run seo:index
nix develop --command npm run seo:feed
nix develop --command npm run seo:feed:json
nix develop --command npm run seo:llmsCheck the deployed canonical URLs after a release:
nix develop --command npm run seo:check:liveRun the Playwright regression suite:
nix develop --command npm run test:e2eSubmit deployed URLs to IndexNow after the latest build is live:
nix develop --command npm run indexnow:submitCheck the flake output shape and formatter:
nix flake check
nix fmtThe app builds to static files in dist/ and is designed for GitHub Pages. The workflow in .github/workflows/deploy.yml installs Nix, runs npm ci inside the dev shell, builds with npm run build, uploads the static bundle, deploys it, and submits the live indexnow.json URL list to IndexNow.
Slay PDF can be self-hosted anywhere that serves static files. A self-hosted deployment serves the app bundle; PDF imports, edits and exports still run in the user's browser rather than through a document processing server.
Build the static bundle:
nix develop --command npm ci
nix develop --command npm run buildThen serve the contents of dist/ from GitHub Pages, Cloudflare Pages, Netlify, nginx, Caddy, an S3-compatible bucket, or another static host.
The crawlable self-hosting overview is available at https://slaypdf.com/self-hosted-pdf-editor.html
Slay PDF is licensed under AGPL-3.0-only.
The app also uses AGPL-licensed GhostPDL/Ghostscript through @okathira/ghostpdl-wasm, so the project is licensed under AGPL as a whole. The About modal links to the app source and the major third-party PDF/OCR engines used at runtime.