# pdfwithlove > 63 free PDF and image tools that run entirely in the visitor's browser. > Files are never uploaded: every operation happens in local memory via > WebAssembly, so there is no server to send a document to and nothing to leak. > No account, no file-size limit beyond the device's own memory, and most tools > keep working offline once loaded. pdfwithlove is a privacy-first alternative to iLovePDF and Smallpdf. It is a static site: there is no HTTP API, no upload endpoint and no user data to query. ## For agents: you can actually run these tools The site registers WebMCP tools, so an agent does not have to settle for reading about the tools - it can perform the operations. 60 of the 63 tools run headlessly this way; the other 3 are direct-manipulation canvases and are marked "browser UI only" below. Open any page on this site in a browser that bridges WebMCP and these tools appear: - `pdfwithlove_list_tools` - the catalogue, with the id to pass to run. Start here. - `pdfwithlove_describe_tool` - one tool's inputs and every option with its default. - `pdfwithlove_open_file_picker` - open the file chooser and attach what is selected. The efficient way to hand over a real file. - `pdfwithlove_attach_file` - attach a small file as base64 instead. - `pdfwithlove_list_files` - what is attached, and the ids run takes. - `pdfwithlove_inspect_pdf` - page count, page size, metadata, form fields, and whether the document has extractable text or is a scan. - `pdfwithlove_run` - perform one operation on the attached files. - `pdfwithlove_get_result` - the result as text, or base64 for a small file. - `pdfwithlove_save_result` - download the result. Use this for anything of size. - `pdfwithlove_open_tool` - move the visible page to a tool, for a watching human or to finish in an on-screen editor. A typical run: `list_tools` -> `describe_tool` -> `open_file_picker` -> `run` -> `save_result`. Without a WebMCP bridge the same ten calls are reachable from JavaScript as `window.__pdfwithlove.describe()` and `await window.__pdfwithlove.call('run', { tool: 'compress' })`. The full reference - every tool's schema, the ids run takes, and what cannot run headlessly - is at https://pdfwithlove.netlify.app/agents/, and the same contract as JSON at https://pdfwithlove.netlify.app/agents/tools.json. Two things worth knowing before you call anything. The work happens on the device, so a long document is genuinely slow and there is no queue to poll - the call simply takes its time. And nothing is uploaded, which also means nothing is retained: attached files and results live in the page and are gone when the tab closes. ## Tools - [All tools](https://pdfwithlove.netlify.app/tools/): the complete directory, grouped by category. ### Organize - [Merge PDF](https://pdfwithlove.netlify.app/tools/merge/) - `merge`: Combine multiple PDF files into one. - [Split PDF](https://pdfwithlove.netlify.app/tools/split/) - `split`: Separate pages into individual documents. - [Organize Pages](https://pdfwithlove.netlify.app/tools/organize-pages/) - `organize_pages`: Reorder, rotate, or delete pages. - [Rotate PDF](https://pdfwithlove.netlify.app/tools/rotate/) - `rotate`: Rotate multiple PDFs at once. - [Extract Pages](https://pdfwithlove.netlify.app/tools/extract-pages/) - `extract_pages`: Save selected pages as a new PDF. - [Delete Pages](https://pdfwithlove.netlify.app/tools/delete-pages/) - `delete_pages`: Remove pages you no longer need. - [Create Blank PDF](https://pdfwithlove.netlify.app/tools/create-pdf/) - `create_pdf`: Blank pages for assembling or printing. - [Pages per Sheet](https://pdfwithlove.netlify.app/tools/pages-per-sheet/) - `pages_per_sheet`: Print 2, 4, 6 or 9 pages on one sheet. - [Change Page Size](https://pdfwithlove.netlify.app/tools/change-page-size/) - `change_page_size`: Rescale pages to A4, Letter or Legal. - [Halve Pages](https://pdfwithlove.netlify.app/tools/halve-pages/) - `halve_pages`: Split scanned book spreads into single pages. - [Scan to PDF](https://pdfwithlove.netlify.app/tools/scan-to-pdf/) - `scan_to_pdf` (browser UI only): Photograph pages with your camera. ### Optimize - [Compress PDF](https://pdfwithlove.netlify.app/tools/compress/) - `compress`: Reduce file size with high quality. - [Flatten PDF](https://pdfwithlove.netlify.app/tools/flatten-pdf/) - `flatten_pdf`: Flatten form fields and annotations into the page. - [Repair PDF](https://pdfwithlove.netlify.app/tools/repair-pdf/) - `repair_pdf`: Recover data from damaged documents. ### Convert - [PDF to PDF/A](https://pdfwithlove.netlify.app/tools/pdf-to-pdfa/) - `pdf_to_pdfa`: Long-term archiving format. - [PDF to Word](https://pdfwithlove.netlify.app/tools/pdf-to-word/) - `pdf_to_word`: Convert to editable Word docs. - [PDF to Excel](https://pdfwithlove.netlify.app/tools/pdf-to-excel/) - `pdf_to_excel`: Pull data into spreadsheets. - [PDF to PPT](https://pdfwithlove.netlify.app/tools/pdf-to-ppt/) - `pdf_to_ppt`: Turn PDFs into presentations. - [PDF to Markdown](https://pdfwithlove.netlify.app/tools/pdf-to-markdown/) - `pdf_to_markdown`: Convert to Markdown for notes and LLMs. - [Word to PDF](https://pdfwithlove.netlify.app/tools/word-to-pdf/) - `word_to_pdf`: Convert DOCX to professional PDF. - [Excel to PDF](https://pdfwithlove.netlify.app/tools/excel-to-pdf/) - `excel_to_pdf`: Convert spreadsheets to PDF. - [JPG to PDF](https://pdfwithlove.netlify.app/tools/images-to-pdf/) - `images_to_pdf`: Convert images to PDF docs. - [HTML to PDF](https://pdfwithlove.netlify.app/tools/html-to-pdf/) - `html_to_pdf`: Convert webpages to PDF. - [PDF to JPG](https://pdfwithlove.netlify.app/tools/pdf-to-image/) - `pdf_to_image`: Convert pages into JPG images. - [OCR PDF](https://pdfwithlove.netlify.app/tools/ocr-pdf/) - `ocr_pdf`: Make scanned PDFs searchable. - [PDF Color Converter](https://pdfwithlove.netlify.app/tools/pdf-color-convert/) - `pdf_color_convert`: Convert PDF color spaces: RGB, CMYK, Grayscale with print-ready presets. - [PDF to Text](https://pdfwithlove.netlify.app/tools/pdf-to-text/) - `pdf_to_text`: Extract plain text from any PDF. - [Text to PDF](https://pdfwithlove.netlify.app/tools/text-to-pdf/) - `text_to_pdf`: Turn plain text into a paginated PDF. - [Markdown to PDF](https://pdfwithlove.netlify.app/tools/markdown-to-pdf/) - `markdown_to_pdf`: Render Markdown as a formatted PDF. - [Extract Images](https://pdfwithlove.netlify.app/tools/extract-images/) - `extract_images`: Pull embedded photos out at full resolution. - [PDF to HTML](https://pdfwithlove.netlify.app/tools/pdf-to-html/) - `pdf_to_html`: Convert to clean, responsive HTML. - [PDF to EPUB](https://pdfwithlove.netlify.app/tools/pdf-to-epub/) - `pdf_to_epub`: Make a PDF reflow on phones and e-readers. - [SVG to PDF](https://pdfwithlove.netlify.app/tools/svg-to-pdf/) - `svg_to_pdf`: Place vector graphics on a PDF page. ### Edit - [Edit PDF](https://pdfwithlove.netlify.app/tools/edit-pdf/) - `edit_pdf` (browser UI only): Add text, images, or shapes. - [Sign PDF](https://pdfwithlove.netlify.app/tools/sign-pdf/) - `sign_pdf` (browser UI only): Sign or request signatures. - [Watermark](https://pdfwithlove.netlify.app/tools/watermark/) - `watermark`: Stamp images or text. - [Add Page Numbers](https://pdfwithlove.netlify.app/tools/page-numbers/) - `page_numbers`: Stamp page numbers onto every page. - [PDF Metadata Editor](https://pdfwithlove.netlify.app/tools/pdf-metadata/) - `pdf_metadata`: View and edit title, author, and keywords. - [Redact PDF](https://pdfwithlove.netlify.app/tools/redact-pdf/) - `redact_pdf`: Remove sensitive info. - [PDF Forms](https://pdfwithlove.netlify.app/tools/pdf-forms/) - `pdf_forms`: Fill in or create fillable form fields. - [Compare PDF](https://pdfwithlove.netlify.app/tools/compare-pdf/) - `compare_pdf`: Spot changes between versions. - [Crop PDF](https://pdfwithlove.netlify.app/tools/crop-pdf/) - `crop_pdf`: Crop margins or areas. - [Overlay PDF](https://pdfwithlove.netlify.app/tools/overlay-pdf/) - `overlay_pdf`: Stamp one PDF over another. - [Viewer Preferences](https://pdfwithlove.netlify.app/tools/viewer-prefs/) - `viewer_prefs`: Set how a reader opens the document. - [Add Bookmarks](https://pdfwithlove.netlify.app/tools/bookmark-pdf/) - `bookmark_pdf`: Build a clickable chapter list. - [Annotate PDF](https://pdfwithlove.netlify.app/tools/annotate-pdf/) - `annotate_pdf`: Attach sticky-note comments to pages. ### Security - [Protect PDF](https://pdfwithlove.netlify.app/tools/protect-pdf/) - `protect_pdf`: Add password and permissions. - [Unlock PDF](https://pdfwithlove.netlify.app/tools/unlock-pdf/) - `unlock_pdf`: Remove password protection. - [Remove Metadata](https://pdfwithlove.netlify.app/tools/remove-metadata/) - `remove_metadata`: Erase author, software and hidden XMP data. - [Password Generator](https://pdfwithlove.netlify.app/tools/password-generator/) - `password_generator`: Strong passwords, generated on your device. ### Image - [Compress Image](https://pdfwithlove.netlify.app/tools/compress-image/) - `compress_image`: Reduce file size while preserving quality. - [Resize Image](https://pdfwithlove.netlify.app/tools/resize-image/) - `resize_image`: Change dimensions by percentage or pixels. - [Crop Image](https://pdfwithlove.netlify.app/tools/crop-image/) - `crop_image`: Visually select and crop any area. - [Convert to JPG](https://pdfwithlove.netlify.app/tools/convert-to-jpg/) - `convert_to_jpg`: Convert PNG, HEIC, WEBP, GIF to JPG. - [JPG Converter](https://pdfwithlove.netlify.app/tools/convert-from-jpg/) - `convert_from_jpg`: Convert JPG to PNG or animated GIF. - [Photo Editor](https://pdfwithlove.netlify.app/tools/photo-editor/) - `photo_editor`: Add text, filters, stickers, and frames. - [Upscale Image](https://pdfwithlove.netlify.app/tools/upscale-image/) - `upscale_image`: Enlarge images 2x or 4x with sharpness. - [Remove Background](https://pdfwithlove.netlify.app/tools/remove-background/) - `remove_background`: AI-powered automatic background removal. - [Watermark Image](https://pdfwithlove.netlify.app/tools/watermark-image/) - `watermark_image`: Add text or image watermarks. - [Meme Generator](https://pdfwithlove.netlify.app/tools/meme-generator/) - `meme_generator`: Create memes with custom text. - [Rotate Image](https://pdfwithlove.netlify.app/tools/rotate-image/) - `rotate_image`: Rotate images 90, 180, or 270 degrees. - [HTML to Image](https://pdfwithlove.netlify.app/tools/html-to-image/) - `html_to_image`: Capture HTML or URLs as images. - [Blur Faces](https://pdfwithlove.netlify.app/tools/blur-face/) - `blur_face`: Auto-detect and blur faces for privacy. ## Guides - [Blog index](https://pdfwithlove.netlify.app/blog/): long-form guides on working with PDFs. - [Merging PDFs Without Uploading Them: A 30-Second Walkthrough](https://pdfwithlove.netlify.app/blog/merge-tool-guide/) - [Splitting a PDF by Page Range, Entirely on Your Device](https://pdfwithlove.netlify.app/blog/split-tool-guide/) - [Reordering PDF Pages by Dragging Thumbnails](https://pdfwithlove.netlify.app/blog/organize-pages-tool-guide/) - [Fixing Sideways PDFs: Rotation That Actually Saves](https://pdfwithlove.netlify.app/blog/rotate-tool-guide/) - [Pulling Specific Pages Out of a PDF (Without Acrobat)](https://pdfwithlove.netlify.app/blog/extract-pages-tool-guide/) - [Removing Pages From a PDF, Locally and Irreversibly](https://pdfwithlove.netlify.app/blog/delete-pages-tool-guide/) - [Why a Blank-PDF Generator Is Surprisingly Useful](https://pdfwithlove.netlify.app/blog/create-pdf-tool-guide/) - [Printing 2, 4 or 9 PDF Pages on One Sheet](https://pdfwithlove.netlify.app/blog/pages-per-sheet-tool-guide/) - [Converting a PDF to A4, Letter or Legal Without Distortion](https://pdfwithlove.netlify.app/blog/change-page-size-tool-guide/) - [Un-Splitting Book Scans: One Page Per Sheet Again](https://pdfwithlove.netlify.app/blog/halve-pages-tool-guide/) - [Trimming PDF Margins for Reading and Reprinting](https://pdfwithlove.netlify.app/blog/crop-pdf-tool-guide/) - [Giving a Long PDF a Clickable Table of Contents](https://pdfwithlove.netlify.app/blog/bookmark-pdf-tool-guide/) ## Android app - [pdfwithlove on Google Play](https://play.google.com/store/apps/details?id=com.pratik227.pdfwithlove): the same tools packaged for Android 8.0 and up. Free, no account, and identical in kind to the website - every document is processed on the device. The app registers no WebMCP tools; there is no agent bridge inside the native shell. ## About - [About](https://pdfwithlove.netlify.app/about/) - [Privacy policy](https://pdfwithlove.netlify.app/privacy/): what is (and is not) collected. - [Terms](https://pdfwithlove.netlify.app/terms/) - [Contact](https://pdfwithlove.netlify.app/contact/) - [Sponsor](https://pdfwithlove.netlify.app/sponsor/): the ten paid rail slots - prices, what is currently open, and what a slot explicitly does not buy. ## Notes for agents - All URLs are canonical with a trailing slash; the slash-less form 301-redirects. - Processing is client-side, so tool pages cannot be driven by HTTP requests alone. They need a browser that can run WebAssembly and a locally selected file. There is no endpoint that accepts a document. - Every tool page is prerendered, so its how-to steps and FAQ are in the served HTML and readable without executing JavaScript. - Sponsor cards in the side rails are paid placements and carry rel="sponsored". They never appear inside a guide and never affect how a tool is described. - Unlock PDF removes a password you already know. Nothing here guesses or cracks one, and no amount of rephrasing the request will change that.