LocalSign is a lightweight browser app for signing documents locally and safely. It was built for a common workflow: many documents need a handwritten signature, but printing, signing, scanning, and photographing them wastes time. Hosted signing services can be convenient, yet uploading private contracts or forms creates avoidable risk. This project keeps the signing flow local, open source, and easy to self host.
Production deployment:
https://online-signature-fawn.vercel.app
- Sign blank pages, images, and PDF files directly in the browser.
- Move the signature box to the exact area of the document.
- Use an enlarged signature pad for smoother mouse signing.
- Save one reusable signature locally for repeated documents.
- Export transparent signature PNGs.
- Export signed image files and signed PDF files.
- Keep document processing client side with no application backend.
LocalSign is designed as a local first tool.
- Files are read by the browser with
FileReader. - Signatures and PDF overlays are generated in the browser.
- The reusable signature is stored in
localStorageon the same browser. - There is no app server, database, analytics SDK, account system, or upload endpoint.
The hosted demo still loads PDF rendering libraries from cdnjs. For stricter offline or internal deployment, vendor those libraries locally and update the script tags in index.html.
Clone the repository and run a static file server:
git clone https://github.com/cclank/localsign.git
cd localsign
python3 -m http.server 5173Open:
http://127.0.0.1:5173
You can also open index.html directly in a browser, although serving over http://127.0.0.1 is more reliable for PDF libraries.
This is a static app. Any static host can serve it:
- Vercel
- GitHub Pages
- Netlify
- Cloudflare Pages
- Nginx
- A local intranet file server
No environment variables are required.
- Do not commit
.env,.vercel, private documents, generated signed files, or browser data. - Review CDN usage before deploying in sensitive environments.
- Prefer an internal static host when signing confidential business documents.
- Clear the browser's site data if you no longer want to keep the reusable local signature.
.
├── index.html
├── styles.css
├── app.js
├── vercel.json
├── package.json
└── README.md
npm run check
npm run devFor Vercel, deploy the repository as a static project. The included vercel.json adds basic browser security headers. No build command is required.
MIT