Free, Private & Browser-Based
Merge, split, compress, convert, and edit PDF files online without uploading to servers.
PDFCraft is a comprehensive suite of PDF tools designed for privacy and performance. Unlike many online converters, PDFCraft processes your files entirely within your browser using WebAssembly technology. Your documents never leave your device, ensuring maximum security for your sensitive data.
This project is built with modern web technologies to provide a slick, app-like experience directly in the browser.
- 🔒 100% Private: All processing happens client-side. No file uploads to external servers.
- 🚀 Fast & Responsive: Powered by Next.js and WebAssembly for near-native performance.
- 🛠️ Comprehensive Toolset: Over 80+ tools to handle any PDF task.
- 🎨 Modern UI: Clean, accessible, and responsive design built with Tailwind CSS.
- 🌐 Multi-language: Supports English, Spanish, French, German, Portuguese, Japanese, Korean, and Chinese.
| Tool | Description |
|---|---|
| PDF Multi Tool | All-in-one PDF editor for merge, split, organize, delete, rotate, and extract |
| Merge PDF | Combine multiple PDFs into one document |
| Split PDF | Separate specific pages or divide by page ranges |
| Extract Pages | Extract specific pages to a new file |
| Organize PDF | Reorder, duplicate, and delete pages with drag-and-drop |
| Delete Pages | Remove unwanted pages from PDF files |
| Rotate PDF | Rotate pages by 90°, 180°, or 270° |
| Rotate by Custom Degrees | Rotate pages by any angle for straightening scans |
| Reverse Pages | Reverse the page order of a PDF |
| Add Blank Page | Insert blank pages at any position |
| Divide Pages | Split pages horizontally or vertically |
| N-up PDF | Combine multiple pages on a single sheet (2-up, 4-up, etc.) |
| Combine to Single Page | Stitch all pages into one continuous page |
| Alternate Merge | Interleave pages from multiple PDFs |
| OCR PDF | Make scanned PDFs searchable with text recognition |
| Add Attachments | Embed files into PDF documents |
| Extract Attachments | Download embedded files from PDFs |
| Edit Attachments | View, rename, or remove embedded files |
| View Metadata | View PDF properties, author, dates, and keywords |
| Edit Metadata | Modify PDF title, author, subject, and keywords |
| PDF to ZIP | Package multiple PDFs into a ZIP archive |
| Compare PDFs | Compare two PDFs side-by-side with difference highlighting |
| Posterize PDF | Split large pages into multiple printable sheets |
| Grid Combine | Combine multiple PDFs into a grid layout with custom spacing |
| Tool | Description |
|---|---|
| Edit PDF | Add text, images, annotations, highlights, and shapes |
| Sign PDF | Draw, type, or upload electronic signatures |
| Crop PDF | Trim margins and remove unwanted areas |
| Edit Bookmarks | Add, edit, and manage PDF navigation bookmarks |
| Table of Contents | Generate clickable table of contents from bookmarks |
| Page Numbers | Add customizable page numbering |
| Add Watermark | Apply text or image watermarks |
| Header & Footer | Add headers and footers with page numbers and dates |
| Invert Colors | Create dark mode versions of documents |
| Background Color | Change or add page background colors |
| Change Text Color | Modify the color of all text content |
| Add Stamps | Apply preset or custom stamps (Approved, Rejected, etc.) |
| Remove Annotations | Strip comments, highlights, and markup |
| Form Filler | Complete interactive PDF forms |
| Form Creator | Add text fields, checkboxes, and dropdowns to create forms |
| Remove Blank Pages | Auto-detect and remove empty pages |
| Tool | Description |
|---|---|
| Image to PDF | Convert any image format to PDF |
| JPG to PDF | Convert JPEG images to PDF |
| PNG to PDF | Convert PNG images with transparency support |
| WebP to PDF | Convert modern WebP images to PDF |
| SVG to PDF | Convert vector graphics to PDF |
| BMP to PDF | Convert bitmap images to PDF |
| HEIC to PDF | Convert iPhone/iPad photos to PDF |
| TIFF to PDF | Convert multi-page TIFF to PDF |
| TXT to PDF | Convert plain text files to PDF |
| JSON to PDF | Convert JSON data with syntax highlighting |
| PSD to PDF | Convert Photoshop files to PDF |
| Word to PDF | Convert Microsoft Word documents to PDF |
| Excel to PDF | Convert Excel spreadsheets to PDF |
| PowerPoint to PDF | Convert PowerPoint presentations to PDF |
| XPS to PDF | Convert XPS documents to PDF |
| RTF to PDF | Convert Rich Text Format files to PDF |
| EPUB to PDF | Convert EPUB ebooks to PDF |
| MOBI to PDF | Convert MOBI ebooks to PDF |
| Tool | Description |
|---|---|
| PDF to JPG | Extract pages as JPEG images |
| PDF to PNG | Export pages as PNG with transparency |
| PDF to WebP | Convert to modern WebP format |
| PDF to BMP | Export as bitmap images |
| PDF to TIFF | Convert to high-quality TIFF |
| PDF to Greyscale | Convert colorful PDFs to black and white |
| PDF to JSON | Extract text and metadata as JSON |
| PDF to DOCX | Convert PDF to editable Word document |
| PDF to PowerPoint | Convert PDF to editable slides |
| PDF to Excel | Extract tables to spreadsheet format |
| Extract Images | Extract all images embedded in a PDF file |
| Tool | Description |
|---|---|
| Compress PDF | Reduce file size while maintaining quality |
| Fix Page Size | Standardize page dimensions |
| Page Dimensions | Analyze and view page sizes |
| Linearize PDF | Optimize for fast web viewing |
| Repair PDF | Fix corrupted or damaged PDF files |
| Remove Restrictions | Remove editing/printing restrictions |
| Tool | Description |
|---|---|
| Encrypt PDF | Add password protection and encryption |
| Decrypt PDF | Remove password from PDFs |
| Sanitize PDF | Remove metadata, scripts, and hidden data |
| Flatten PDF | Merge annotations and form fields into content |
| Remove Metadata | Strip author, dates, and other metadata |
| Change Permissions | Set print, copy, and edit permissions |
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS 4
- PDF Processing:
- State Management: Zustand
To run this project locally, follow these steps:
- Node.js 18.17 or later
- npm, yarn, or pnpm
-
Clone the repository
git clone https://github.com/PDFCraftTool/pdfcraft.git cd pdfcraft -
Install dependencies
npm install # or yarn install # or pnpm install
-
Start the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser Navigate to http://localhost:3000 to see the application running.
If you prefer running PDFCraft in containers, you can use the provided docker-compose.yml.
docker compose --profile dev upOpen http://localhost:3000.
This runs next build to generate the static export (out/), then serves it via Nginx using nginx.conf.
docker compose --profile prod up --buildOpen http://localhost:8080.
To stop and remove containers:
docker compose downnpm run dev: Starts the development server with Turbopack.npm run build: Builds the application for production.npm run start: Starts the production server.npm run lint: Lints the code using ESLint.npm run test: Runs tests using Vitest.
PDFCraft is configured for static export (output: 'export'), which means it can be deployed to any service that supports static website hosting without requiring a Node.js server.
Before deploying, build the project to generate static files using the following command:
npm run buildAfter the build is complete, all static files will be located in the out directory.
You can deploy the contents of the out directory to any of the following platforms:
- Install Vercel CLI:
npm i -g vercel - Run the
vercelcommand. - Follow the prompts to set the build command to
npm run buildand the output directory toout. - Alternatively, connect directly to your GitHub repository, and Vercel will automatically detect Next.js and configure it.
Copy the contents of the out directory to the root directory of your web server.
Nginx Configuration Example:
server {
listen 80;
server_name example.com;
root /path/to/your/pdfcraft/out;
index index.html;
# Handle static files
location / {
try_files $uri $uri.html $uri/ =404;
}
# Enable gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}- Push the
outdirectory to thegh-pagesbranch of your repository. - Enable GitHub Pages in your repository settings.
- Note: If you are not using a custom domain, you might need to modify
basePathinnext.config.js.
- Connect your repository to Netlify.
- Set build command:
npm run build - Set publish directory:
out
- Headers Configuration: The
headersconfiguration innext.config.jsdoes not automatically take effect in static export mode. You need to configure HTTP headers separately depending on your hosting platform (e.g.,vercel.jsonfor Vercel or Nginx configuration). - Image Optimization: Since static export does not support Next.js's default image optimization server, the project is configured with
images: { unoptimized: true }.
After deployment, please check the following features to ensure everything is working correctly:
- Multi-language routing (e.g.,
/en,/zh) - Tool page loading
- WebAssembly (PDF processing) functionality
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.