On this page
Overview
Signature Pad is a JavaScript library for smooth handwritten signature input on HTML5 canvas. It uses variable-width Bézier curve interpolation and can expose the result as images, SVG, or point-group data.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Draw smooth handwritten strokes on canvas
Mouse and touch input are rendered as variable-width Bézier curves, providing smooth signature drawing across modern desktop and mobile browsers.
Sources: [2]
Export PNG, JPEG, SVG, or point-group data
toDataURL exports image data URLs, toSVG returns SVG text, and toData preserves point groups that can later be restored with fromData.
Sources: [2]
Best fit
Fits handwritten-input surfaces inside web forms and applications
It is useful for adding canvas-based signature or handwriting capture to forms, confirmation screens, kiosks, and touch-oriented web interfaces.
Sources: [2]
Before adoption
Handle high-DPI scaling and canvas resize in the application
High-DPI screens require scaling the canvas by devicePixelRatio. Changing canvas width or height clears it, so resize flows need redraw or data preservation.
Sources: [2]
Image restoration does not restore internal point data
fromDataURL redraws an image but does not repopulate the internal point representation, so subsequent toData calls do not behave like a point-data round trip.
Sources: [2]
Official sources
- [1]szimek/signature_pad repository(2026-09-30)
- [2]Signature Pad README(2026-09-30)
- [3]Signature Pad MIT license(2026-09-30)
Supplemental curator note
It is a focused drawing component rather than a complete signing workflow. Applications still need to handle high-DPI canvas sizing, resize persistence, identity, and business-process requirements.
Try it in 3 steps
- 1
Install Signature Pad
Add the library to an existing web project using the npm command documented in the README.
npm install --save signature_pad - 2
Attach Signature Pad to a canvas
After importing SignaturePad from signature_pad, initialize it with the target canvas element.
const canvas = document.querySelector("canvas"); const signaturePad = new SignaturePad(canvas); - 3
Export the signature as an image
Capture a PNG data URL. Use toSVG for SVG text or toData when point-group data is needed for later editing or redraw.
const pngDataUrl = signaturePad.toDataURL();
Growth
Growth trends · Last 30 days
12,047 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 9
- Open PRs
- 1
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- signature
- signature-pad
- canvas
- javascript
- drawing
- Stars
- 12,047
- Forks
- 2,171
- Watchers
- 213
- Open issues
- 4
- Contributors
- 57
- Owner type
- User
- Primary language
- TypeScript
- License
- MIT
- Repository last updated
- Sep 30, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Playwright96,842 Stars
2 shared tag(s) · 1 shared category(s) · Same language
Drive Chromium, Firefox, and WebKit through one API and test runner for E2E, scripting, and agent browser automation
TypeScript - Storybook91,174 Stars
2 shared tag(s) · 1 shared category(s) · Same language
capture UI states once and reuse them across docs, interaction tests, and agent tooling
TypeScript - Mermaid90,482 Stars
2 shared tag(s) · 1 shared category(s) · Same language
Generate flowcharts, sequences, classes, ER diagrams, Gantt charts, and more from text syntax
TypeScript - Vite83,069 Stars
2 shared tag(s) · 1 shared category(s) · Same language
Combine a native-ESM dev server and HMR with Rolldown-powered production builds
TypeScript - Docusaurus66,360 Stars
2 shared tag(s) · 1 shared category(s) · Same language
combine docs, blogs, custom React pages, and localization into a static documentation-site build
TypeScript - Jest45,465 Stars
2 shared tag(s) · 1 shared category(s) · Same language
Combine assertions, mocks, watch mode, snapshots, coverage, and worker isolation in one JavaScript test runner
TypeScript
Report incorrect information
Tell us if any listing information is incorrect or outdated.