DocSigner: sign PDFs in your browser — vanrossum.dev                    

       vanrossum.dev 

Article

DocSigner: sign PDFs in your browser
====================================

 ![](https://vanrossum.dev/images/jeffrey-portrait.webp)By Jeffrey van Rossum

  [home](https://vanrossum.dev)/[posts](https://vanrossum.dev/posts)/docsigner-sign-pdfs-in-your-browser 

 TOOLS July 13, 2026 · 1 min read 

DocSigner: sign PDFs in your browser
====================================

 ![Jeffrey van Rossum](https://vanrossum.dev/images/jeffrey.png)Jeffrey van Rossum

Product engineer

  share [ 𝕏 ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fvanrossum.dev%2Fposts%2Fdocsigner-sign-pdfs-in-your-browser&text=DocSigner%3A+sign+PDFs+in+your+browser) [ WhatsApp ](https://wa.me/?text=DocSigner%3A+sign+PDFs+in+your+browser+https%3A%2F%2Fvanrossum.dev%2Fposts%2Fdocsigner-sign-pdfs-in-your-browser) [ LinkedIn ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fvanrossum.dev%2Fposts%2Fdocsigner-sign-pdfs-in-your-browser)

I needed to sign a multi-page PDF and didn't want another DocuSign-style account, email flow, or "upload your document to our cloud." So I built a tiny free tool instead.

DocSigner
---------

[DocSigner](https://docsigner.vanrossum.dev) runs entirely in the browser:

1. Drop in a PDF
2. Draw your signature (and initials if you need them)
3. Click to place them on any page, optionally on all pages at once
4. Download the signed file

Nothing is uploaded. The PDF never leaves your device. No account, no watermark.

It's useful for the boring everyday stuff: contracts, NDAs, invoices, forms. Whenever you just need a mark on the page and not a full e-sign product.

How it's built
--------------

React + Vite, with [pdf.js](https://mozilla.github.io/pdf.js/) for rendering and [pdf-lib](https://pdf-lib.js.org/) for stamping the signature into the file. Hosted on Cloudflare Pages. Source is on [GitHub](https://github.com/jeffreyvr/docsigner) if you're curious.

While I normally review AI-generated code, in all honesty this was entirely vibe-coded with [Grok 4.5](https://x.ai). Just a couple of prompts.

Try it
------

→ **[docsigner.vanrossum.dev](https://docsigner.vanrossum.dev)**

If it saves you a few minutes, a follow on [X](https://x.com/jeffreyrossum) is always appreciated.

 ![](https://vanrossum.dev/images/jeffrey.png)Questions or thoughts about this post?

 [say hi on 𝕏 →](https://x.com/jeffreyrossum) 

✍️ More posts

  [all posts →](https://vanrossum.dev/posts) 

 [ I sold 143 licenses and never asked for feedback Jul 2026 ](https://vanrossum.dev/posts/i-sold-143-licenses-and-never-asked-for-feedback) [ Simplifying WordPress Emails with a Fluent API Jul 2025 ](https://vanrossum.dev/posts/simplifying-wordpress-emails-with-a-fluent-api) 

   © 2026 Jeffrey van Rossum · [privacy](https://vanrossum.dev/privacy) · [terms](https://vanrossum.dev/terms) · [cookies](https://vanrossum.dev/cookies) [𝕏](https://x.com/jeffreyrossum) [YouTube](https://www.youtube.com/@jeffrey.rossum) [GitHub](https://github.com/jeffreyvr) [LinkedIn](https://www.linkedin.com/in/jeffrey-van-rossum-97b27321) [Instagram](https://www.instagram.com/jeffrey.rossum/) [Nomads](https://www.nomads.com/@jeffreyrossum/) [Unsplash](https://unsplash.com/@jeffreyrossum) 

 made with ☕
