Existing Coverage Check
Reviewed before proposing:
This is net-new. No existing spec, issue, or live tool in this repo addresses filling in PDF form fields. The PDF Redactor hides content; this tool fills in writable form fields. The workflows are complementary. Both pdf-lib and PDF.js are already vendored in the repo, making this immediately implementable without new dependencies.
Specify Draft Summary
Proposed spec path: specs/006-pdf-form-filler/spec.md
Problem: Users receive PDF forms daily — tax forms, HR onboarding documents, rental agreements, insurance claims, visa applications — and need to fill them in without printing, scanning, or uploading to a paid cloud service. Adobe Acrobat Pro ($23/month), DocuSign ($10+/month), and Nitro PDF (subscription) are the mainstream options. "Free" tools like PDFescape require server upload and limit free usage. The result: non-technical users either pay, print-and-scan, or send sensitive financial and HR documents to third-party servers.
Users: Job applicants, tenants, HR professionals, taxpayers, anyone who receives a fillable PDF and needs to return it completed.
Scope (3 prioritised stories):
| Priority |
Story |
Description |
| P1 |
Fill Form Fields |
Load PDF → detect AcroForm text fields, checkboxes, radio buttons → fill them in → download completed PDF |
| P2 |
Add Free-Text Annotations |
For non-form PDFs, place text boxes at click position → download annotated PDF |
| P3 |
Draw Signature |
Draw or type a signature → place it on any page at chosen position → download signed PDF |
Key requirements: detect and render AcroForm fields, tab-order navigation between fields, checkbox and radio group support, zero server transmission, download filled PDF with fields flattened (values baked into output), free-text overlay for non-fillable PDFs, signature drawing pad (Canvas), mobile-friendly touch input, clear/reset, per-field validation feedback.
Acceptance criteria:
- SC-001: Zero bytes of PDF content transmitted to any external server
- SC-002: Text entered into form fields appears in the downloaded output PDF when opened in Adobe Reader, Preview, and Chrome PDF viewer
- SC-003: Full single-form fill workflow completable in under 60 seconds for a 3-page form
- SC-004: Checkboxes and radio button groups behave as expected (only one radio per group selectable)
- SC-005: Output PDF opens without errors in Adobe Reader, macOS Preview, and Chrome
- SC-006: Signature drawn on mobile touch screen renders correctly in output
The Gap
Filling in a PDF form is one of the most common document tasks non-technical users perform — and it is thoroughly paywalled. Adobe Acrobat is the market standard at $23/month. DocuSign and HelloSign charge $10–20/month. Free browser tools (PDFescape, Smallpdf) require server upload of documents that often contain personal financial and employment data. A user filling in a job application, tax form, or rental agreement should not have to upload it to a stranger's server.
pdf-lib (already vendored in this repo for the PDF Redactor and Merger/Splitter) supports reading and writing AcroForm fields natively. PDF.js (also already vendored) renders PDFs to Canvas including form field overlays. Both dependencies are in place — the implementation gap is entirely a product and UX one.
Competitor Evidence
| Tool |
Problem |
| Adobe Acrobat Online |
$23/month, requires Adobe account |
| DocuSign |
$10–$45/month depending on plan, account required |
| Nitro PDF |
Subscription, server upload |
| PDFescape |
Server upload required; premium plan for editing at $3.99/month |
| Smallpdf Fill & Sign |
Server upload; 2 free tasks/day, then $12/month |
| ILovePDF |
Server upload; free tier throttled |
Search phrases users type: fill PDF form online free, fill in PDF online no upload, complete PDF form online free, fill PDF without Adobe, sign PDF free online, fill and sign PDF free no account
The Tech
| API / Capability |
Role |
| PDF.js (vendored) |
Render PDF pages to Canvas with form field overlays for display |
| pdf-lib (vendored) |
Read AcroForm field definitions; write filled values; flatten fields into output PDF |
| Canvas API |
Signature drawing pad; free-text overlay positioning |
| File API |
Load PDF from disk without upload |
| Blob + URL.createObjectURL |
Trigger local download of completed PDF |
Ships as tools/pdf-form-filler.html + tools/pdf-form-filler/main.js + tools/pdf-form-filler/style.css. Both required libraries (pdf-lib and PDF.js) are already in /tools/vendor/ — zero new vendor dependencies.
Usability Controls
- Auto field detection: AcroForm fields highlighted with a coloured overlay when PDF loads; count shown ("This form has 12 fillable fields")
- Click-to-fill: Click any highlighted field to focus it; keyboard tab moves between fields in logical order
- Checkbox/radio support: Click checkboxes to toggle; radio groups enforce single selection
- Free-text mode: For non-fillable PDFs, click anywhere on the page to place a text box; drag to reposition; delete to remove
- Signature pad: Draw a signature with mouse or touch; type a signature with automatic handwriting-style font; place anywhere
- Flatten on export: Option to flatten all fields into the PDF body (values become permanent, non-editable) or preserve editable AcroForm structure
- Page navigation: Previous/next page controls with page number display
- Zoom: Standard zoom in/out for legibility on dense forms
- Reset: Clear all filled values and return to blank form
- Safe defaults: Preserve editable fields by default; warn if downloading without filling any fields
Complexity: 5 / 10
The core fill-and-export loop (pdf-lib AcroForm getField() + setText() + flatten() + save()) is well-documented. The main complexity is the rendering layer: PDF.js must display the PDF with field positions synced to the pdf-lib field coordinates so the user's click lands on the right field. Signature placement and free-text overlay positioning add UI complexity. Both critical libraries are already vendored, eliminating setup overhead. The hardest edge case is PDFs with non-standard AcroForm structures, which may not render editable fields — a graceful fallback to free-text overlay mode handles this.
Generated by Market Research Discovery · ◷
Existing Coverage Check
Reviewed before proposing:
/specs/001-pdf-redactor/— PDF redaction (drawing black boxes to hide content); unrelated to form filling/specs/002-video-trimmer-gif-exporter/— media tool, unrelated/specs/003-pdf-merger-splitter/— PDF assembly (merge/split pages); unrelated to form fields/specs/004-qr-code-generator/— unrelatedpdf-redactor,pdf-merger-splitter— neither interacts with AcroForm fieldsThis is net-new. No existing spec, issue, or live tool in this repo addresses filling in PDF form fields. The PDF Redactor hides content; this tool fills in writable form fields. The workflows are complementary. Both
pdf-libandPDF.jsare already vendored in the repo, making this immediately implementable without new dependencies.Specify Draft Summary
Proposed spec path:
specs/006-pdf-form-filler/spec.mdProblem: Users receive PDF forms daily — tax forms, HR onboarding documents, rental agreements, insurance claims, visa applications — and need to fill them in without printing, scanning, or uploading to a paid cloud service. Adobe Acrobat Pro ($23/month), DocuSign ($10+/month), and Nitro PDF (subscription) are the mainstream options. "Free" tools like PDFescape require server upload and limit free usage. The result: non-technical users either pay, print-and-scan, or send sensitive financial and HR documents to third-party servers.
Users: Job applicants, tenants, HR professionals, taxpayers, anyone who receives a fillable PDF and needs to return it completed.
Scope (3 prioritised stories):
Key requirements: detect and render AcroForm fields, tab-order navigation between fields, checkbox and radio group support, zero server transmission, download filled PDF with fields flattened (values baked into output), free-text overlay for non-fillable PDFs, signature drawing pad (Canvas), mobile-friendly touch input, clear/reset, per-field validation feedback.
Acceptance criteria:
The Gap
Filling in a PDF form is one of the most common document tasks non-technical users perform — and it is thoroughly paywalled. Adobe Acrobat is the market standard at $23/month. DocuSign and HelloSign charge $10–20/month. Free browser tools (PDFescape, Smallpdf) require server upload of documents that often contain personal financial and employment data. A user filling in a job application, tax form, or rental agreement should not have to upload it to a stranger's server.
pdf-lib(already vendored in this repo for the PDF Redactor and Merger/Splitter) supports reading and writing AcroForm fields natively.PDF.js(also already vendored) renders PDFs to Canvas including form field overlays. Both dependencies are in place — the implementation gap is entirely a product and UX one.Competitor Evidence
Search phrases users type:
fill PDF form online free,fill in PDF online no upload,complete PDF form online free,fill PDF without Adobe,sign PDF free online,fill and sign PDF free no accountThe Tech
Ships as
tools/pdf-form-filler.html+tools/pdf-form-filler/main.js+tools/pdf-form-filler/style.css. Both required libraries (pdf-libandPDF.js) are already in/tools/vendor/— zero new vendor dependencies.Usability Controls
Complexity: 5 / 10
The core fill-and-export loop (pdf-lib AcroForm
getField()+setText()+flatten()+save()) is well-documented. The main complexity is the rendering layer: PDF.js must display the PDF with field positions synced to the pdf-lib field coordinates so the user's click lands on the right field. Signature placement and free-text overlay positioning add UI complexity. Both critical libraries are already vendored, eliminating setup overhead. The hardest edge case is PDFs with non-standard AcroForm structures, which may not render editable fields — a graceful fallback to free-text overlay mode handles this.