Skip to content

Repository files navigation

🧨 iHatePDF

Every PDF tool you need — 100% in your browser. Zero uploads. Zero accounts.

Live Demo License: MIT PRs Welcome

React TypeScript Vite Tailwind CSS Framer Motion KaTeX pdf-lib PDF.js

iHatePDF banner

📌 Table of Contents

✨ What's New

Note

v3.0

🪄 Drag & Drop Hero Drop files once on the home page and they follow you everywhere. No re-uploading between tools.

🗂️ File Vault A shared in-memory vault carries your PDFs and images across every tool page automatically.

🖼️ Real PDF Previews Page thumbnails render everywhere, with a graceful PDF-icon fallback if a file can't be parsed.

🧮 Equation → Image Type LaTeX, get a pixel-tight cropped PNG for papers, reports and slides. Fraction rules now align perfectly.

✍️ Sign PDF Draw a signature on a signpad, then place, drag and resize it anywhere on the page.

📉 Smarter Compression Live preview per quality level, predicted output size, and target-size mode for PDFs and images.

Important

Your files never leave your device. All parsing, rendering and export happens in the browser, there is no upload endpoint at all.

🚀 Why iHatePDF

🔒 Private by design Files are processed locally; nothing is uploaded, logged or stored.
🆓 Free forever No paywalls, no premium tier, no watermarks on your output.
👤 No account Open the site and start working. That's it.
Instant No queues, no round-trips — conversion speed is your CPU's speed.
📱 Works anywhere Responsive, touch-friendly layouts from phones to ultrawide screens.

🧰 Tools

📄 PDF

Tool Route What it does
Merge PDFs /merge-pdfs Combine multiple PDFs, reorder pages before export
Split PDF /split-pdf Extract page ranges or burst into separate files
Compress PDF /compress-pdf Quality presets with live preview + target file size
PDF → Image /pdf-to-image Export pages as JPG, PNG or WebP at chosen DPI
Image → PDF /image-to-pdf Merge images into one document with page sizing
Watermark PDF /watermark-pdf Text watermarks with opacity, rotation and position
Lock PDF /lock-pdf Password-protect a document
Sign PDF /sign-pdf Draw a signature and place / resize it on any page

🖼️ Image

Tool Route What it does
Compress Image /compress-image Quality slider, live preview, predicted size

🧮 Documents & Math

Tool Route What it does
Equation → Image /equation-to-image LaTeX math rendered to a cropped, transparent PNG
LaTeX Resume /latex-resume Write LaTeX-style resumes and export to PDF
Resume Builder /resume-builder Form-driven resume templates, no LaTeX needed

📸 Screenshots

Home — Drag & Drop Hero Tools Grid
Home hero with animated dropzone Tools grid
Compress PDF — Live Preview Sign PDF — Signature Placement
Compress PDF preview Sign PDF
Equation → Image Watermark PDF/Image
Equation to image Watermark PDF/Image

🛠 Tech Stack

React TypeScript Vite Tailwind CSS Radix UI Express Vercel

📦 Full dependency breakdown

UI & Motion

  • tailwindcss + shadcn/ui + @radix-ui/* — accessible, themeable components
  • framer-motion — hero animations, layout transitions, drag interactions
  • lucide-react — icon set

PDF & Imaging

  • pdfjs-dist — page rendering and previews (bundled worker, no CDN)
  • pdf-lib — merge, split, watermark, encrypt, signature placement
  • jspdf + html2canvas / html-to-image — DOM → PDF/PNG export

Math

  • katex — client-side LaTeX math typesetting for the equation tool

⚡ Getting Started

# 1 · clone
git clone https://github.com/cu-sanjay/iHatePDF.git
cd iHatePDF

# 2 · install
npm install

# 3 · run
npm run dev

Then open http://localhost:5000.

Script Purpose
npm run dev Start the dev server with HMR
npm run build Production build (client + server bundle)
npm start Serve the production build
npm run check TypeScript typecheck

Warning

Large PDFs are processed entirely in memory. On low-RAM devices, very large files (100 MB+) may be slow or fail — split them first.

🤝 Contributing

  1. Fork the repo and create a branch: git checkout -b feat/my-tool
  2. Keep everything client-side — no upload endpoints.
  3. Match the design language: light theme, red #E63228 / white / black, glass surfaces, rounded corners.
  4. Run npm run check before opening a PR.

📄 License

Released under the MIT License — see LICENSE. Use it, fork it, ship it.

Built with ❤️ by Sannjay · If this saved you a subscription, leave a ⭐

About

Basic try to copy iLovePDF – testing features like PDF conversion, merge/split tools, and a resume builder.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages