IHatePDF is a privacy-focused web application that provides essential PDF tools for converting, splitting, and managing PDF files. All processing happens locally in the browser, ensuring that no files are uploaded or stored on any server.
- Image to PDF – Convert multiple images (JPG, PNG, etc.) into a single PDF file
- PDF Splitter – Split PDF files into individual pages or selected ranges
- 100% private — all processing happens in the browser
- Completely free with no subscriptions
- Fast and modern user experience
- Responsive interface for desktop and mobile devices
- Clean and intuitive UI
- React – JavaScript library for building interactive user interfaces with component-based architecture
- Vite – Fast frontend build tool and development server for optimized development experience
- React Router DOM – Client-side routing for seamless navigation between pages without full page reloads
- jsPDF – Library for generating PDFs from images and content in the browser
- pdf-lib – Powerful PDF manipulation library for reading, splitting, and modifying PDF documents
- file-saver – Utility for saving files directly to the user's device
- Tailwind CSS – Utility-first CSS framework for rapid and responsive UI design
- Radix UI – Unstyled, low-level UI component primitives for building accessible interfaces
- class-variance-authority – Type-safe utility for managing component variant styles
- clsx – JavaScript utility for conditionally joining classNames together
- tailwind-merge – Utility to prevent Tailwind CSS class conflicts and merge them properly
- lucide-react – Beautiful, consistent SVG icon library with React components
- framer-motion – Animation library for creating smooth, interactive UI transitions and effects
- sonner – Toast notification library for displaying success, error, and info messages
- next-themes – Theme management system for implementing dark and light mode support
ihatepdf/
├── src/
│ ├── components/
│ │ ├── tools/
│ │ │ ├── ImageToPdf.jsx
│ │ │ ├── PdfSplitter.jsx
│ │ │ ├── WordToPdf.jsx
│ │ │ └── PdfToWord.jsx
│ │ ├── ui/
│ │ ├── DropZone.jsx
│ │ ├── ImagePreview.jsx
│ │ └── ConvertButton.jsx
│ ├── pages/
│ │ ├── Index.jsx
│ │ └── NotFound.jsx
│ ├── hooks/
│ ├── lib/
│ ├── App.jsx
│ └── main.jsx
├── public/
├── index.html
├── vite.config.js
├── tailwind.config.js
├── components.json
└── package.json
Clone the repository:
git clone https://github.com/yourusername/ihatepdf.git
cd ihatepdfInstall dependencies:
npm installStart the development server:
npm run devOpen the application at:
http://localhost:5173
Upload multiple images, arrange them in order, and generate a single PDF file directly in the browser.
Upload a PDF file, choose page ranges or individual pages, and download the separated files.
Upload a .docx document and convert it into a PDF file.
Upload a PDF file and convert the content into an editable Word document. Often works better for portfolios.