Show HN: Free, in-browser PDF editor
breezepdf.comAdd text, input boxes, pictures, signatures, delete pages, merge PDFs and password protect them. All happening in the browser, 100% free and no sign-up.
Add text, input boxes, pictures, signatures, delete pages, merge PDFs and password protect them. All happening in the browser, 100% free and no sign-up.
I tossed a legal document at it which was recently of passing interest to me, and it looks like embedded fonts still need some work. I'm not inclined to share a test case from what I have, which relates to a change of name and in any case was not really prepared by anyone especially competent when it comes to PDFs and their content; I tested with the first, facially void, version I was given. But it is possible I'll find more use for this tool, and if a shareable test case does come along then I'll do so. (And heaven knows with this document format, embedded fonts are a total nightmare always, even somehow in programmatic authoring. I'm not criticizing!)
On a similar note, a downloadable (single-file HTML or so, although these days some kind of HTTP service is a practical necessity) version would be nice to have. Low pri even from my perspective; it isn't that I spend a lot of time in places with no cell signal, so much as just that tethering on an a la carte plan gets out of hand pretty quick, since applications aren't at all required to honor or even notice the existence of the "data saver" option.
This is really neat! Thanks for posting it, I've bookmarked it for later use in the "just need a quick tweak" kind of case. I'll look forward to seeing how it develops!
Emedded fonts only embed the used characters, so if ypu want to change "John" to "Mary" and there is no capital "M" elsewhere in the doccument, you are out of luck. Can this be your problem?
The mapping is incorrectly decoded and applied such that many characters for which glyphs are embedded and applied do not show them. It's a pretty common style of PDF mojibake, I think, and sometimes appears also with badly subsetted webfonts or "icon font" abortions if you disable page fonts in your browser settings.
Fonts on the web are super hard. There’s hardly any useful browser APIs for the kind of typesetting you need for PDFs: itemization, character bounding boxes, font file sub setting, etc. To solve or properly, you need to include a lot of code, e.g. all of harfbuzz compiled to wasm.
Well, that's the thing. Web fonts are hard. PDF fonts are super hard. Both at once is...actually maybe not hideous these days. Oh, I would not wish the task of devising such an algorithm, but the subset of vector fonts supported in PDF and that in browsers aren't totally disjoint, I think.
Modern processors can handle the relevant conversion math without really waking from sleep, which will no doubt make it more frustrating when some W3C third party resource security model WG fistfight from 2013 makes it impossible to both construct and use a webfont on the client. (There may be some hideous blob URL magic, but those are length constrained so you could up in N subset nonce fonts bucketing M custom glyphs from the source document, with a hideously complex fifty-case rewrite for all the p90 ways of mapping fonts in PDF (or is that 90 cases and p50?) to render the document in the editor. And then have to handle the actual editing cases, like what happens when your subset nonce font of a subset embedded font doesn't map any character to the keycode you just saw, and you want to try to give the user something with metrics sorta matching what they wanted instead of Helvetica or Times New Roman out of a naïvely constructed fontset.
I may have worked with PDF in browsers one time too many, before. But the idea of using WASM to smuggle real tools into this impoverished environment actually makes a lot of sense to me...
Thank you!
I'll take a look at improving rendering embedded font support. And that's a neat idea to be able to download it for offline, I'll give some thought to that. Appreciate your feedback!
FYI - using service workers would automatically make it work offline and possibly be easier than trying to bundle it into one HTML file.
Oh, that's an excellent point, especially since this is a perfect case for workers more broadly. I've had a bit of an app dev interregnum these last or postpandemic years; if service worker support has advanced that broadly, then that's wonderful news! Not especially surprising news, I suspect, but wonderful. Last I afforded close attention, the state of play for service workers in iOS Safari particularly was "don't bother."
Since I like an iPhone - or have thought at least they're least worst for 13 years and counting - you can probably imagine how this would have depressed my interest: Even though irrelevant here in that touchscreen PDF editing is an extremely hard problem and none I'd expect a solo dev to address, just knowing nothing I built with a worker I would myself be able to use, has made me not want to sink good time and effort into the topic at all. Best case that's all just wasted; worst case, it creates a dilemma I might not escape without a new regret.
The service worker functionality can be expressed as a PWA! Based on the comments I'm thinking of heading in that direction.
As far as touchscreen PDF editing, that is 100% doable and something I plan on adding soon. Touchevents are supported natively in the web
https://developer.mozilla.org/en-US/docs/Web/API/Touch_event...
You should make your app a PWA [1]
PWAs are basically "installable" pages which open in their own browser window and generally can work offline
[1] https://developer.mozilla.org/en-US/docs/Web/Progressive_web...
Nice work. I've been building something lately to manipulate PDFs in the browser for privacy, although it's quite a different use case.
I think I see you're using pdf-lib and jspdf - both great libraries, and I'm using both, but:
(1) Have you seen the recent WASM compilation of MuPDF? I am also using it for some functions and find it really excellent with accessible APIs and highly functional. Worth an try!
(2) We chose different forks of the (unmaintained) pdf-lib - is there a reason you went with `pdf-lib-plus-encrypt`? I chose the cantoo fork, which seemed well-maintained to me - but I didn't research many others so would be interested to know if there is a good reason.
(1) Yes, I am very familiar with the WASM compilation of MuPDF. It's got a lot of great features. I actually built another product pdfredactoronline.com that does redaction fully in the browser using the MuPDF WASM compilation. The reason I don't use it in BreezePDF is MuPDF has an APGL license which requires open-sourcing any code that uses their software. Which, I guess technically anything fully browser based is essentially open sourced :) so perhaps I could use it here.
Since a lot of the basic functionality I've added so far is also covered by more permissible packages like the ones you mentioned, I've started out just using those. But thanks for bringing that up, I'll revisit using MuPDF for redaction and other features
(2) I went with pdf-lib-plus-encrypt because the original pdf-lib doesn't have functionality for password-protecting PDFs, and since pdf-lib-plus-encrypt does, I used it so I could have that feature
> Which, I guess technically anything fully browser based is essentially open sourced :) so perhaps I could use it here.
Open source isn't just about the source code being available (and when making web apps, there is often a compile step which makes the browser facing code not source code), but also about the license under which it is available.
It is in every sense of the word technically not open source.
Thanks for the insight. Yes, the AGPL isn't a problem for me - I didn't check your licence as I could just view source :)
Is your code available?
I would assume not based on their objection to AGPL libraries.
not yet available as open source. Open-source has two main purposes I think: trust, and customizing/integrating it into other products.
On the first part, since everything happens in the browser, anyone can see the html/javascript and inspect the Network tab and see that no network requests are made that send their PDF anywhere.
And on the second part, I think most people who use the software aren't developers and won't want to modify it, and I don't particularly see a use case for integrating this software into another one, outside maybe an internal corporate scenario.
Though, maybe I'll add something where you can pay to get the desktop version, similar to what Sejda does.
First of all, great tool!
> trust
That's exactly right. The main attractiveness of your tool comes from the "never leaves your browser", insinuating that other similar services do send your data to a server and then who-knows has access to your sensitive data. I really like that angle. But we don't know you. We can use some tools to check that nothing is transmitted today. But who knows about the future? Maybe you change your mind? Maybe once your service becomes popular you sell it for $$$ and the new owner silently pushes things to a server "totally securely, we promise"? Or is even malicious?
> anyone can see the html/javascript
Seeing minified javascript is not the same as open source. Nobody would claim that the google doc UI is "open source".
If you open source this and it turns out as great as it seems then it can make you world famous. If you keep it closed then it will probably disappear in the vast sea of similar sevices, server-based or not (since avg Joe doesn't know the difference and doesn't care). It's your choice to make.
> Though, maybe I'll add something where you can pay to get the desktop version
Ah, thanks for your honesty here. An angle describing your project in a more bad-faith way could now be that you run beta-testing of your proprietay software through this "free" service and intend to turn it into a closed pay product once the public testing has fleshed out the main issues. That's obviously something you are free to do instead of an open source product emphasizing freedom.
Thanks!
> trust All fair points that you're making. I see no reason I would change my mind to send PDFs to the server, but I understand your concerns. If I'm reading in between the lines of what you're saying, that the way to alleviate these concerns is to make it open source?
I think that's a compelling argument, but to play devil's advocate if most people realistically working with PDFs aren't developers and thus wouldn't go to GitHub to host it themselves, then what would change for them to have a self-hostable option? If I released a desktop version, might the average person would see that as "private" and have any privacy concerns relieved, whether it was open sourced or not?
There is always a degree of trust you put in any company's software you use, and it's up to the company to be good stewards of that trust. If they break it, it's always bad for business anyways. But there is a point that if it was open source, those who have the desire to do so can continue using it without any concerns, which is fair.
> anyone can see the html/javascript Yes minified javascript is not the same as open source, but mine is not minified. Plain HTML, CSS and vanilla JS. So given that and since all the editing happens in the browser, the entire source code is inspectable for anyone who wants to see.
Given that the average person editing PDFs is not tech savvy, and as you said they don't really know the difference between software options, then given that what do you see as the utility of open-sourcing, from a business or even public good perspective? Genuine question.
> Though, maybe I'll add something where you can pay to get the desktop version I can see why someone would think that, but really at this point I'm figuring out what/if there is a monetization method here, and I'm not set on a particular path. I don't have any agenda to just make it free then close it off. That'd probably be a bad business decision anyways. I'm not sure if desktop is something to charge for, or if desktop and the whole thing is better to be free and open-source along with premium features that people can optionally pay for that are outside the core scope. I'm still thinking through it.
Ideally, I'll make all core features open-source while there are also some extra features people are willing to pay for. I'm just still wrestling with even just from the public good perspective, for the vast majority of people that won't host it themselves how would they benefit from open-source versus the core features just being free?
Curious if you have any response to what I've laid out here.
Appreciate your thoughtfulness!! You've given me a lot to think about.
>There is always a degree of trust you put in any company's software you use, and it's up to the company to be good stewards of that trust. If they break it, it's always bad for business anyways. But there is a point that if it was open source, those who have the desire to do so can continue using it without any concerns, which is fair.
I generally agree, but in this case you don't even have any meaningful identification on the site to say who created the software. I'm not sure how one can trust the creator of software if they won't even tell you who or what they are. Not even a pseudonym. There is no way to say that the person posting as philjohnson here is in fact the creator, or if the claimed copyright owner "Breeze PDF" is a legal entity that can own copyright.
As it is, with no source or identifying information, my default assumption if I happened upon this page would be that is is another one of the thousands of sites running FOSS software as a service with no added value or contribution back, but possibly also scanning every PDF it sees for bank/personal/tax/crypto information at which point it would decide to send that off to a server.
Open sourcing a piece of software, especially one that focuses on a broader audience like yours, can convince more people than just developers. The advantages of open source are well-known even among less techy people who aren't necessarily interested in self-hosting the application. It's a good way to quickly earn the trust of people who are initially sceptical of your product.
It shows to your potential users that, even if they decided not to trust the developer anymore in the future, they will likely still be able to use your application. Everyone praised Simple Mobile Tools until the developer sold it to an ad company. But because it was open source, people were able to fork the entire suite of apps to continue using them.
There's also a lot of growth potential. draw.io likely wouldn't be integrated into so many other products if it wasn't open source. It allows them to charge money (apparently) for specific integrations, simply because everyone is already familiar with the product.
Typst is another good example. Their compiler is free and open source, but the web app is not. Certain features of their web app require a subscription, which allows them to pay the bills. But I (and many other people) wouldn't be using and recommending it if the core wasn't open source, because if Typst ever disappears, I still want to be able to compile my documents. Currently this might not matter much for your app since PDF is a universal format anyway, but as you flesh out your product, it will become more important.
It's difficult to monetise open source software, but so much more rewarding if it does work out. And your app being targeted at the general public gives you a massive advantage, since the potential market is so much larger.
My wife hit a wall trying to upload a hefty PDF - every “shrink” tool we tried barely compressed the size, and some even made it larger! Frustrated by the state of PDF compressors (looking at you, Adobe), I turned to LLMs - Claude, Deepseek, and Gemini came up short, but OpenAI’s o4-mini saved the day with a perfect solution. That inspired me to build pdfmini: a tiny, open‑source, client‑side HTML app that crushes PDF sizes right in your browser!!! No installs, no fees, zero privacy worries - all your data stays on your machine.
Try pdfmini now:
https://den-run-ai.github.io/pdfmini/
Source code for pdfmini:
https://github.com/den-run-ai/pdfmini
This gave me an idea. You seem to be the right person to talk to.
Here is my workflow. Have a bunch of PDFs and images I need to combine.
I go to tools.PDF24.org, Merge pdfs, then compress them, then more compress them because of size limits, then add or remove pages. Then add page numbers.
These are multiple steps.
Could we have a way of defining these terms at start, either textual or no-code-like or something where we could define stuff like
Take input, merge > compress with greyscale, Max size 1MB, add page numbers on bottom right
Or
Convert input to jpg with image size 8cm by 8cm
I know many people who simply fail at such stuff. They just throw their hands up in defeat.
Not saying we should have llms do the job but if we could have multiple actions so that people could tell the software what they have in mind.
People dont just compress PDFs, often merge and then compress.
I recently say pdfux.com but it is not as featureful as PDF24 but PDF24 crashes a lot.
#!/bin/bash
# Convert images to PDF
img2pdf *.jpg -o images.pdf
# Merge PDFs
pdfunite file1.pdf file2.pdf images.pdf merged.pdf
# Compress
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \ -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed.pdf merged.pdf
# Remove unwanted pages (e.g., page 3)
pdftk compressed.pdf cat 1-2 4-end output final.pdf
# Add page numbers
pdfjam final.pdf --outfile final_numbered.pdf --pagecommand '{}' --landscape
I'll be adding compression support for BreezePDF, so this can be done in a click
Merge/compress with Max size / color-greyscale/ remove pages / multi format import like PDF and images as input / export options/ export into multiple files if file size exeeds certain size.
And like my earlier comment, a way to define these multiple steps in a flow so that people can do multiple steps with a single file without having to learn command
This is very cool, are all these command-line tools open-source?
Yes
You know what. I will share my script in the morning.
I used scantailor go scan a book. That gave out tif files.
So I built a script to convert them to jpg, then merge into PDF. Then OCR and add the text layer on PDF. Then compress.
I know this for a niche automation..... web OTOH where normies reside and are scared by terminal, it wont work.
Been using pdftk for years now but im only person who can use it in my office.
If you can define this as a feature request to pdfmini, please submit it on github, e.g. drag-and-drop flow builder
Great project! I'm also maintaining a fully in-browser data visualisation/analytics tool [1] and I often found it hard to convince people that their data isn't sent anywhere. It's funny I also say the exact same thing that they can inspect the Network tab. As a potential alternative to open-sourcing the codebase, maybe a desktop version of the same tool (i.e. an Electron app) could help address the privacy concerns if it explicitly states that it won't make network calls, although it's a perception problem rather than a technical one.
[1]: https://docs.visprex.com/
Thanks, and cool project you've built!
Yeah, you're right on that it's perception problem rather than tech. It's interesting because it's much less intuitive to inspect the code/network requests for a desktop app which on it's face seems less transparent than something on the web, but the kicker is that there is no URL that you're accessing it from so it feels safer.
I'm thinking now actually if I did a PWA? I think it has the psychological benefit of feeling of an offline desktop app (which it can function as), but is lightweight and less maintenance than an Electron app, while still having the benefit of automatically updating when I make improvements without needing to manually make updates.
Where I'm struggling on the open-source question is that in the PDF use case most of them are not developers and don't know what open source is let alone host it lol. And most businesses can probably afford to pay a nominal fee to host it themselves and modify it if they wish, which many companies offer. It would be different if the product was something like a database or code package where it's always going to be a developer using it.
While open source might actually have more "freedom" for people to modify it for free initially, in a way it can be more honest for a developer with any commercial intentions to not open source something while offering paid ways to modify the source code, as we're seeing more and more that companies start out with a very open source product that they then revert once the community has helped develop it. Not that it needs to happen that way, but with commercial aspirations one needs to be careful as something becomes popular, it becomes too tempting to take back once open-source parts.
Forgive the wall of text here, I'm thinking out loud haha. Appreciate your comment!
Yes as dimava commented above a PWA would be a great alternative.
> in a way it can be more honest for a developer with any commercial intentions to not open source something while offering paid ways to modify the source code
I appreciate that you made your commercial intentions clear in the comments and I agree that you don't want to walk back your license as it definitely leads to backlash. I think developers (i.e. people on HN) tend to trust open-core models more where there's a clear separation between the core open-source components and a paid offering but I guess you don't have to overindex on those given the general audience of this tool.
I don't know what your ultimate monetization goal is, but in my opinion one realistic path is an one-time only payment of some reasonable amount with the full feature as opposed to subscription (I saw your Stripe link in the source).
I'm 50% sure adding a "Install offline app" button that installs PWA would be enough to make them believe otherwise
Add a "Check for updates" button that redirects to chamgelog page in browser for extra points
This is a great idea. I was actually just suggesting PWA with opt-in updates in another comment I was just replying to, so it's affirming to hear someone else suggest it as well. Love the changelog piece.
Now the question is if people would be willing to pay. Perhaps it could be a nominal one-time payment to get the PWA and updates for up to a limited amount of time, or monthly amount to get updates indefinitely.
And maybe the URL accessed web version stays free with the core features, and PWA has benefits of both offline and some extra features.
Would you be willing to pay for something like this?
Another alternative proposition to test data (non)upload is to ask your user to load the app, shut their device connection off and then use the app. The more cautious one will close the tab before switching the connection on.
I use stirling-pdf for this, ran locally with
docker run -d -p 8080:8080 -e DOCKER_ENABLE_SECURITY=false --name stirling-pdf frooodle/s-pdf:latest
Lots of features, OP you should definitely check this out
Stirling is a life saver, they have a web UI too: https://stirlingpdf.io
Love the idea. However, there is no guarantee that the no-upload will not change. Which begs a question: wouldn't it be great if browsers provided a guaranteed "offline only" mode? Since they don't, I personally would prefer downloading this app as a standalone electron (or similar) app, or a docker container where I could disable Internet access.
Thanks!
The "offline only" app could be a PWA where you can access if if you're offline but I could even enforce disabling network requests in the code itself. Seems like the most straightforward solution to me. Could even make updates opt-in. Would keep it lightweight and easily accessible for anyone.
What do you think of this? Would you be willing to pay for this, or are certain features you'd be willing to pay for? Curious you're thoughts.
It's a great idea indeed. But the paranoid _like myself?_ would probably not recommend it as it runs on...well...a browser. I'm not at ease with the chance that a code change someday would / could allow a copy of my file to be uploaded anywhere.
As for having the browsers run in "offline mode" (proxy equal 127.0.0 1?)...neat but I would vote against it. My fridge just needs to keep stuff cold, my toaster should serve bread, my Internet browser should not be an app.
You could use firefox containers to redirect a tab to localhost.
I noticed that this tool doesn't preserve links within PDFs. ( https://github.com/Hopding/pdf-lib/issues/341 ) That's one of the main things I always try out with PDF editors, and it saddens me to see that this one also runs into that issue.
Fixes would be either using a different PDF library, or manually implementing that feature with the building blocks that pdf-lib provides.
I created a similar offline tool during covid because I didn't want to upload sensitive data to random servers, it's open source if that can be useful to someone else : https://timothebarbe.github.io/pdfModer (Im not a front end dev, the UI is not very good)
Nice! I will give it a try later today.
For people who want a non web-based alternative, these days I use Xournal++ (https://xournalpp.github.io/) to do that type of edition locally.
What I am still looking for is a good way to clean scanned PDFs: split double pages, clean up text and make sure it is in lack and white, clean deformations and margin, cut and maybe rotate pages, compress the end result.
For splitting double pages, this is the best tool I’ve seen: https://github.com/mbaeuerle/Briss-2.0
For the other issues, I haven’t found any single good tool, but I’ve stitched together things like unpaper, ghostscript and deskew ( https://github.com/galfar/deskew ).
Also, if you need OCR, hocr-tools and Google’s Document AI ocr API have worked really well for me (I tried Gemini, but you run into issues with big documents).
Scrolling is broken. Also for modals, it'd be nice to be able to click anywhere on the screen to close it (or pressing Esc) rather than just pressing "cancel".
Also for text, different fonts is a necessary requirement (and bolding, italics, underline, etc).
Also, it seems like I can't edit text boxes after creating them... I can't even tell if I've selected the text box (an outline would be nice).
Also the confirm modal for deleting a page is realllly annoying. You should just have it automatically delete the page and create an undo feature. (Basically store the original PDF, and store all the "actions" a user makes in an array, and then undo/redo the actions to the original pdf).
Also the arrow to close the page overview on the left side of the screen is very unintuitive. Why does the entire page shift to the left? The only reason I'd use that feature is to see my centered page more clearly. On this topic, a zoom feature is super important too.
Overall, the concept of a privacy-based PDF editor sounds really cool! Just note that for users to actually make a serious switch to this, you must at least match 1/4 of the quality of other PDF services like ilovepdf.com or smallpdf.com.
Good luck!
Scrolling is now fixed! And just updated so that if you click outside modal it closes. Working on update now so you can edit text you've already added.
Agree with you regarding fonts, bolding underlining etc. and having instant page deletion with undo/redo. Will definitely be adding soon.
Fixed the arrow closing the preview pane so that the page stays centered.
I plan on adding a lot more features so that it's on par with ilovepdf.com and smallpdf.com. The libraries I'm already using support many of the features they have, so it'll be easy to add them while keeping everything fully in the browser.
Thanks for the feedback!
You're very welcome! Thanks for building this out! I look forward to using it :)
For what it's worth, Firefox has had most of these features built into their PDF.js viewer for a while. I believe signatures were recently added. I'm not sure whether there's capability to remove pages or merge PDFs, though.
pdf.js is also available as an extension on chromium based browsers.
I've found that scrolling on pdfs on a high dpi screen using the built in chromium pdf reader is extremely laggy so this has always been a must-have extension for me.
Please don’t use the adjective “free” when describing proprietary software. We know you mean “free as in beer” but those outside our community may not and it may cause confusion over the meaning of free software.
if anything, "free software" should change its wording (when referring to freedom/libre).
there's no way you'll ever convince the masses who use software to not call it free or appeal to software that's advertised as "free".
[flagged]
Missing one important detail: the ability to add a table of contents by hand (or be it auto generated) with the additional ability to modify such table of contents if it exists.
doesn't "edit" PDF text, just adds more.
That's the problem with all the pdf editors available out there. I guess adding stuff is much easier than editing existing stuff which you didn't add, and can be laid out in a gazillion ways, because PDF is a format for viewing and printing, not for editing.
I had a period when I worked with lots of documents. I could only find one fairly decent PDF editor which deserves to be called that way. I could use it to open any PDF and delete an existing element, or change text in an existing field. Sometimes things behaved funny, for example a text field can have each letter in a separate block, but I assume the tool did what it could within reasonable effort. It worked fine for me overall.
PDF was basically created as a final presentation format, it's essentially append-only by design, which is why you hear so often of redactions just marking up a white/black box over text.
You can edit text streams, which needs a decompress/recompress, messes up all the object reference offsets for the entire file, potentially adds or removes characters to the subset font, which may not be referenced by the glyphs but a number instead to intentionally break copy/paste/scrape (e.g. 'a' is not 'a' in the text stream, but a random number), etc. Assuming the text is even marked up as strings, and not individually positioned characters with nested offset co-ordinate scaling to further muddy the waters.
The fact so many people want to edit PDFs probably indicates a design flaw on Adobe's side, when considering what customers really want.
Editing text in PDFs is _really_ hard compared to other document formats because most PDFs don't really encode the "physics" of the document. I.e. there isn't a notion of a "text block with word wrapping," it's more "glyphs inserted at location X with font Y."
If the PDF hasn't been made accessible, you have to do a lot of inferencing based on the layout about how things are grouped and how they should flow if you want to be able to make meaningful edits. Not impossible (Acrobat does it), but very challenging.
It's part of the legacy of PDF as a format for presentation and print jobs, rather than typesetting.
Yes, and alongside formatting challenges, PDFs commonly only include the glyphs from the font that are actually used in the document.
So if you had PDF with "Hello World" on it, you could feasibly change it to "Hello Hello", but wouldn't be able to change it to "Goodbye World" (as the glyphs for "G", "b", "y", and "e" are not included in the PDF)
Sure, you could do a bit of detective work to figure out which font it was from the glyphs or something and lookup and insert new glyphs into the PDF, but I can't imagine a generic PDF editor being capable of doing this for you.
Some editors get around this but just straight up switching the font(s) for the whole PDF, so they'll look different after saving.
Sejda.com does it. Though its free one is severely crippled
It's still what a PDF editor, as it says in the title, would do. With a quick Google I found one that I hadn't heard about before, and it let me edit some text and save it for free.
Ask yourself, why would someone spend money on bandwidth for me to download something for free...
PDF editor is used as a broadly encompassing term. Yes, other tools can edit existing text, but they upload your PDF to their servers, so it's not private if that's something you care about.
There isn't anything off the shelf that enables editing existing text in the browser, but it's something I'll build from scratch. So you'll be able to edit existing PDF text without compromising privacy.
This can if I remember correctly (can't check now), but it's a POC and not a finished product https://github.com/ShizukuIchi/pdf-editor
PDF is really not a format designed for editing, of text content in particular. It’s only possible in limited circumstances.
yes, that's why the description says "add text" not edit :)
there aren't existing packages that can edit existing PDF text in the browser, but I'll do it myself sometime soon
The website says: Edit PDFs Freely & Privately, Right in Your Browser.
What I miss in free alternatives is the ability to redact. Not just by placing a black bar above, but such that the text also leaves the PDF. Shouldn't even need to reflow other text as mentioned in another comment, as things would otherwise stay the same.
check out pdfredactoronline.com I also built that. I had to make it separate for now as it's using MuPDF JS library which has APGL licensing, but I might add it in here if it seems I can add it while still complying.
Will check it out, thanks!
Wonderful! Inserted form-fields show up in Preview and Acrobat, which is not a trivial task. I run a little AI-powered tool that automatically figures out where form fields should go (https://detect.penpusher.app) and robustly adding form fields to the PDF was the hardest part.
Fwiw, I do see the issue with being unable to scroll down across both Safari and Chrome.
Thanks! I fixed the scrolling issue
This is really nice! Kudos.
Small request: When I have a document open, ask to prevent accidentally closing the tab.
Large request: Resizing pictures and signatures.
Thanks!
Ask to prevent accidentally closing the tab is a great suggestion, I just added it!
Resizing pictures and signatures is definitely something I'll add very soon.
Any chance to open source this and allow us to host it privately?
Fantastic work btw.
Great! On Android I couldn't get signature to work. It popped up but couldn't sign.
Doesn't seem to be working ATM:
Console. Chrome based browser. Uncaught (in promise) wc: Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways.
You're encountering this error if the document uploaded is encrypted. I previously supported it, but ran into issues re-encrypting the PDF when you download. I'll fix this soon so it is supported properly. In the mean time I'll handle encrypted documents more gracefully. Thanks for pointing the error out
Are you planning to open source or make a product? We're working with headless content solutions, and despite our best efforts to digitise everything - people on the floor still need physical copies of things.
Hooking up a good PDF editor for output is hard, but this is a nice solution.
No plans to open source at the moment, but I might consider it. I just added a Subscribe button to support further development of the software and get access to premium features.
Which features (if any) that if added would you be willing to pay for?
Essentially templates, driven from a headless CMS with some ability to customise and print - instead of having to go to the headless CMS, or use some other tool to edit - in browser is nice. I've already looked at options but this is a build vs buy option.
Based on my understanding of what you're saying, here's my idea that I could build:
You would add variables in the interface, and there would be a secure sandbox in the client where you can call the API of your headless CMS, and with an sdk you could create PDF programmatically assigning the respective variables with values from your headless CMS API response. Then a button to print them. This keeps everything fully private in the browser while automating the process.
Would that work? For reference, what would you expect to pay for this if you wanted to go this route?
Is this open source? I think the world could use a good free and open 'utility' app for PDFs. Its hard to do digital business these days without even moderate features needed in PDF editing without paying Adobe or non-free online services - JUST TO EDIT A DOCUMENT.
It's not open source at the moment, but I would consider it. Just have to think through it as once you go open-source it doesn't go over too well to go back. So, if I want to open source it, I want to be sure.
I'm sure some might like to modify it, though I think probably most people aren't developers and wouldn't want to.
There's no VCs or anything behind this, just me, and my costs are just a VPS to render the page, and all processing happens on the local device. So I have no reason to change any currently free features to ever not be free.
Not open source but free and works in Windows: PDFGear.
Some suggestions:
Pen input (Apple Pencil) is quite choppy, because browsers tend to coalesce multiple pen events together, effectively reducing the pen's polling rate. You need to use PointerEvent.getCoalescedEvents: https://developer.mozilla.org/en-US/docs/Web/API/PointerEven.... Pen pressure support would also make signatures look a lot better.
Would also be nice to be able to draw anywhere you want. Right now I'm using Xournal++ for pdf annotation but its performance is lacking and I'm always looking for alternatives.
Seems broken to me. Uploaded a pdf but I cant scroll down to see the bottom of the pdf, its just stuck... tried with FF and safari, same deal.
Fixed now!
Where is the repo? I do not trust the privacy...
I might post the repo, but if you don't trust it you can just open the Network inspection tab and you'll see that zero network requests are made when you edit a PDF
You can also use "offline mode" in Dev Tools to ensure that tab doesn't send or receive network traffic. Then you don't have to sit there monitoring it.
Cool! I would have expected a ton of things like this, but there really aren't.
If it's free, though, who pays for your hosting?
Me :)
It runs on an very inexpensive VPS. There's no VCs or anything with this and since all processing happens on the users device, my costs won't really change at all.
Still figuring out potential monetization. Is there anything you'd pay for?
Add a text block - it adds a block that wraps (it's a bit narrow, would like to change its size).
When downloading the PDF, the text block is not wrapped, so it doesn't match the way it looks in the editor. Tested in Firefox (but it's the same in Chromium).
Nice work on the interface and the offline & local way it works is very welcome!
Hm, mind describing more about how it wraps? Assuming you're referring to text you added? I haven't encountered that myself, but will definitely try and fix.
And thanks!
Just that the text block after entering four-five words starts on a new line, it's like regular soft wrapping, looks like I get a 4cm wide text box to write into. Which is fine as a feature, only bug is the two items mentioned (can't resize it and doesn't show up in the pdf with the same width of the text box).
Wrapping fixed! So now it only goes to a new line if you hit enter, which is probably the best approach. So the text should render the same in the editor as it does when it downloads.
Thanks for the feedback, and let me know if you run into any more issues!
Why there aren't any PDF editors that support editing the actual PDF instead of adding on top of the PDF?
I like it! It has most of the features I need in a PDF doc and nothing of the bloat. The only features missing for me are: callout text comments, redact text, and flatten PDF. It's snappy and pretty easy to understand. Good job
As much as I'd like it, we all know it can't remain "100% free and no sign-up". What's your plan to avoid enshitification?
Thanks! Text comments, redaction and flattening are definitely features I'll add.
One way it'll avoid enshitification is that I have no VCs or anything like that, it's just me. So I only answer to actual users.
My hunch is that while PDF editing is something people commonly do, most people probably don't want to pay for it, at least for basic features. My plan is to add Google Adsense, but in a way that is non-obstructive/intrusive.
Depending on feedback, I might add a paid plan for much more advanced features if there's demand. But all the features you mentioned that are missing, as well as all other basic features, will always remain free. Since all the editing happens in the browser, it's a win-win for privacy and lower resource utilization. I just have to render the webpage. It runs on a low cost VPS, so it costs me almost nothing to keep this software running. Given that, there's no current or future costs that would give any reason to remove free features.
> One way it'll avoid enshitification is that I have no VCs or anything like that, it's just me. So I only answer to actual users.
> My plan is to add Google Adsense, but in a way that is non-obstructive/intrusive.
Please do not do Google ads.
Not only that this ruins the privacy of the users and further entrances Google's reach, but it further leads to enshitification which is what we don't want.
Perhaps maybe a small tiny sponsor banner may be better.
Fair point. I added a contact email in the upper right for feedback and sponsorship. Let's see what happens
Really neat. i tried a couple and it worked fine for my use case which is mainly adding a signature .. Any chance the signature size can be adjusted by dragging a corner ?
Nice! Recently I had the need for pdf censoring, aka not adding black rectangles but actually removing the content underneath and I still haven't found a suitable tool. Any recommendation? Or even python library to do it?
I developed another tool pdfredactoronline.com that does this. Full redaction/removal of content, not just blacking out text. I didn't include it in this tool for now due to the APGL license of the library that enables the redaction, but since something fully in the browser is kinda open source already, I'll see if I can comply with the license while including it in BreezePDF
LibreOffice.
You can open PDF in LibreOffice Writer, just make sure to select "PDF - Portable Document Format (writer)" in the file selection dialog. This is very important, if you don't do that, the file will be opened in LibreOffice Draw instead of Writer.
you can do it easily with Inkscape which supports the pdf format
Do you want the black rectangle and the content removed? There are "redaction" tools. https://smallpdf.com/redact-pdf
This likely uploads your content to their servers
Honestly, your best bet for securely erasing data from a PDF is by adding the black bars, printing it and then scanning the print.
You can bypass the messy printing step by just printing the PDF as an image, then import or OCR the image as a new document.
I've been using a tangential but still pdf tool, pdfux.com since it was posted here on hn
Thanks for this! I'll definitely add it to my bookmarks
I tested in Tor Browser at standard security level and it's blank except the thumbnails on the left show fine, so just a minor glitch somewhere is breaking it. I presume it doesn't support TOC then, which is a shame. On the upside, the signature feature is well appreciated, something sorely missing from most other PDF editors.
Sorry about that. Would you mind sharing the console logs? Perhaps it's showing an error that I can use to debug and fix. Thanks!
Is anyone building 'Cursor for editing PDFs on the web'?
So many smart people out there developing brilliant PDF tools—it's truly impressive! And yet... we still have billions of XFA-based form PDFs lurking in the shadows. Forgotten. Unopened. Untouched. Why? Because almost no tool can handle them.
Where is the hero who will rise to the challenge? The one who will finally rescue thousands of office and admin workers from the endless misery of XFA hell—a nightmare Adobe created and then abandoned in a pit of form chaos years ago.
Seriously, we need you. The world needs you. Be the one who ends the suffering. Be the legend.
Very nice, thank you !
What reason do I have to believe this will still exist in 3 months when I need it next?
There's no VC backing behind this, it's just me. And it's actually a win-win to have all the PDF editing happen in the browser. It both offloads resource usage to a local computer and makes it private. All I have to do is render the page and that's it. Given that, it costs me almost nothing to keep it running, so there's no reason to take it down.
Inkscape!
A voice in the wilderness, but weren't PDFs originally meant to be read-only? Yes, nearly everyone now has a PDF editor, but this seems to undermine the original intent behind the format. As things stand, we may need to invent a portable document format that remains read-only, that fills the purpose PDF was meant to fill.
very nice !
You'd think at this point there would be a dozen solid competitors to Adobe Acrobat. You'd really fuckin think so.
And yet filling out a pdf and signing it with a certificate (aka the bog standard procedure for much of modern bureaucracy) is still too much to ask for any pdf software on linux. It just doesn't exist. How?
It is similar to the lack of a perfect MS Office with full VBA support, or the lack of well-designed CAD software for 21st century or the lack of industry-grade photography software someone can earn a living from, or the lack of reverse-engineering software that has the exact integration and full capabilities of IDA. It is sufficiently hard to get it right, so people who are smart and determined enough to solve PDF editing problem are asking for a return on their investment.
PDFs are final produce of a rendering process. They don't have nice text or image elements you can move around as a unit. The rendering process explodes the source material into thousands of unconnected objects. Fonts are separated into their glyphs so you need to have legal access to a bunch of very expensive fonts to just to write the correct heuristics. You need good algorithms to reverse the layout and even reverse engineer entire documents to rearrange text content. It is stupidly expensive to develop in and hire for this niche. So nobody will release their very expensive heuristics in the wild.
Btw, closed-source alternatives to Acrobat exist. I like Tracker Software's editors a lot. There is also Foxit and Master PDF. The latter two work under Linux but their UI can be janky since they ship their own UI libraries.
Gnome's Papers and, of course, KDE's Okular sign PDF without a hassle. If you need to edit PDFs, too, MasterPDF [1] is a solid choice. Not quite PDF X-Change in power or Acrobat Pro in looks it is sufficient for daily tasks.
The real obstacle to digitally signing is bad support for Linux by the card reader vendors, as usual.
[1] https://code-industry.net/masterpdfeditor/
For similar reasons that no fully compatible MS Word clone exists: very high complexity of the format, underspecified format details, and undocumented implementation algorithms.
Even if the format is understood, it's also very much a case of Acrobat handling extremely badly formed PDFs instead of erroring out if it were strictly adhering. If you've ever seen a save prompt when making no changes, that happened.
"It works on Acrobat" was something we got told a lot from clients sending us PDFs that were broken according to the official spec - we just had to deal with it.
Yes, and the same is true for MS Word. "Undocumented implementation algorithms" was meant to subsume that aspect.
The best I have found that does this is Master PDF Editor for Linux. Unfortunately not free or open source, but it is good.
https://code-industry.net/masterpdfeditor-help/certificate-m...
Right now the signatures are digital ink, but I plan on adding signatures with certificates so it's more official.
I use Scribus to edit PDfs https://scribus.net
Weird: Your link is broken for me, but typing in exactly the same text to the address bar resolves perfectly.
Is it somehow filtering out referrals from this site?
Their link redirected to www.scribus.net for me, perhaps somebody saw this and fixed the config?
Looks like they have a cert for https://*.scribus.net, but not for https://scribus.net.
I use LibreOffice Draw
Does that do a perfectly accurate import?
Whenever I import PDF's into drawing programs, add something, and then export, something always seems to get messed up.
Whether it's font glyphs, or font spacing, or something to do with layer ordering.
It doesn't except very trivial things.
Why did I never think of this? Thanks!
[dead]
Why would you want functionality like this to be in a browser?
Isn't a browser for interfacing to http?
It's accessible via a website so that you don't have to download anything, and everything running in your browser means the PDF never leaves your device, so it's 100% private.
Not having to download anything is not a plus. Much better to make an actual application that you download, and which never touches someone else's server.
The functionality isn’t actually in the browser, it’s in the files downloaded via HTTP.
This tool is hosted on a website, and you access that website like all other websites, using a browser interfacing with HTTP.
I do not trust the privacy here...
All the requests made through DevTools seem to only load PDF scripts. I didn't detect any POST requests.
Of course, there is no guarantee that this will remain... regularly checking network activity before uploading a private document isn't too hard
You can monitor Network requests the application made with DevTools.