TuPDF is a lightweight, open-source PDF toolkit designed for modern browsers.
All operations — from splitting to optimizing — run entirely on the client using Web APIs, ensuring speed, privacy, and zero server dependencies.
Easily divide a PDF into multiple files:
- Extract specific page ranges or individual pages.
- Split every page into separate files with one click.
- Preview pages before splitting, ensuring precise extraction.
- Client-side splitting — no data leaves your browser.
Combine multiple PDFs into one clean document:
- Upload, reorder, and preview files before merging.
- Merge seamlessly using pdf-lib, preserving quality and metadata.
- Drag-and-drop interface for intuitive document organization.
- No upload limits, as everything runs locally.
Visually edit your PDF structure:
- Rearrange, rotate, or delete pages using a responsive grid view.
- Instant visual feedback with live thumbnails (powered by PDF.js).
- Perfect for cleaning up scans or reordering reports before submission.
Transform your PDFs into image files for sharing or web use:
- Export as PNG or JPG.
- Multi-page PDFs automatically bundled into a ZIP.
- Adjustable DPI and scaling options (in development).
- Great for previews, thumbnails, and online document sharing.
Reduce file size without losing clarity:
- Smart compression balancing image quality and file weight.
- Ideal for email attachments or web uploads.
- Preview before and after compression.
- Runs entirely in your browser, preserving confidentiality.
Designed with accessibility and usability in mind:
- Mobile-first layout with adaptive drawer and sticky toolbar.
- Dark-mode available, choose between two different styles.
- Built with MUI (Material UI) for a clean, consistent design.
- Keyboard and touch support for effortless use across devices.
Seamlessly localized experience:
- UI available in 8 languages (English, Spanish, French, German, Chinese, Hindi, Portuguese, Italian).
- Automatic locale detection with persistence via
localStorage. - Easy to contribute new translations through
locales/<lang>/common.json.
Your documents never leave your computer:
- All operations — from upload to export — happen entirely client-side.
- No servers, APIs, or cloud processing.
- Built with privacy-by-design, suitable for sensitive documents and offline use.
Optimized for large PDFs and fast rendering:
- Leverages Web Workers and efficient memory handling.
- Incremental rendering with PDF.js for smooth previews.
- Tested on files exceeding 100 MB for stability and performance.
| Layer | Technology |
|---|---|
| Framework | Next.js + React |
| Language | TypeScript |
| UI Components | MUI (Material UI) |
| Internationalization | i18next + react-i18next |
| PDF Processing | pdf-lib for editing, PDF.js for rendering |
| Code | Language |
|---|---|
| en | English |
| es | Español |
| de | Deutsch |
| fr | Français |
| zh | 中文 |
| hi | हिन्दी |
| pt | Português |
| it | Italiano |
- Node.js ≥ 18
- Package manager: npm, pnpm, or yarn
# Using npm
npm install
# Or using pnpm
pnpm install
# Or using yarn
yarn
## Getting started
### Prerequisites
- Node.js 18+ and pnpm/npm/yarn
### Install
```bash
# using npm
npm install
# or with pnpm
pnpm install
# or with yarn
yarnnpm run dev
# http://localhost:3000npm run build
npm startapp/Next.js app routes (merge, split, organize, convert, optimize, recent, settings)components/UI and feature componentslayout/main-layout.tsxDrawer sidebar + top barpdf/PDF upload, page selector, preview- feature workspaces under
merge/,split/,organize/,convert/,optimize/
locales/<lang>/common.jsoni18n dictionarieslib/i18n.tsi18next config and locale utilities
- Default locale is auto-detected and saved in localStorage.
- Add/modify strings under
locales/<lang>/common.json. - Use
const { t } = useTranslation()and callt("namespace.key")in components.
- PDF work happens client-side; large files may be memory-intensive in the browser.
- Some locales may fall back to English for missing strings; contributions welcome.