# JavaScript PDF fillable form library

Nutrient Web SDK is a JavaScript library for filling, reading, creating, and editing PDF AcroForms. It offers developers an API for programmatic access to PDF form objects, as well as a beautiful UI for form filling.

[Try for free](https://www.nutrient.io/sdk/web/getting-started.md)

[Launch demo](https://www.nutrient.io/demo/forms)

## Limitations and known issues

- **XFA forms** — XFA forms aren’t supported; convert them to AcroForms or flatten them to static PDFs.

- **Dynamic behavior** — PDF form JavaScript, calculations, and custom actions are only partially supported; complex dynamic logic may need to be handled in your app.

- **Field type restrictions** — Some field types or appearances (for example, rich text, barcode, or custom widgets) can render as plain text or be read-only in the web UI.

For detailed workarounds, see [troubleshooting](https://www.nutrient.io/guides/web/troubleshoot.md).

## What are forms?

The concept of forms in PDFs is similar to that of a form in the physical world. Forms allow a user to enter unique information into a preformatted page. As it’s an electronic format, PDF offers certain advantages to users — for example, the ability to edit entered information at a later date.

[Learn more](https://www.nutrient.io/guides/web/forms/introduction-to-forms/what-are-forms.md)

## Essential guides

---

**Supported form fields**

Learn about the types of form fields supported by Nutrient

[Read more](https://www.nutrient.io/guides/web/forms/introduction-to-forms.md)

---

**Form data formats**

Learn about using external files to manage form data

[Read more](https://www.nutrient.io/guides/web/forms/introduction-to-forms/data-formats.md)

---

**Flatten forms**

How to flatten forms and burn them into a PDF

[Read more](https://www.nutrient.io/guides/web/forms/flatten.md)

## Fill forms

---

**Programmatic form fill**

Learn the different approaches to programmatically filling form fields

[Read more](https://www.nutrient.io/guides/web/forms/form-filling.md)

---

**Fill form fields using the UI**

Learn how end users can fill form fields with the built-in UI

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/using-the-ui.md)

---

**Attach a file to a PDF**

How to attach a file to a PDF as an image annotation

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/attach-a-file.md)

---

**Add an image to a PDF**

How to add an image to a PDF as an image annotation

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/add-image.md)

---

**Detect user form field input**

How to subscribe to form events to detect form field input

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/detect-user-input.md)

---

**Form field permissions**

How to configure form fill permissions

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/permissions.md)

---

**Fonts**

How to dynamically load fonts when users enter text

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/dynamic-font-loading.md)

---

**Headless form fill**

How to fill PDF forms without presenting the UI

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/headless.md)

## Import form data

---

**With Document Engine**

How to import form data with Document Engine

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/import-from-server-backed.md)

---

**From Instant JSON**

How to import form data from Instant JSON files

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/import-from-instant-json.md)

---

**From XFDF**

How to import form data from XFDF files

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/import-from-xfdf.md)

---

**From a database**

How to import form data from a database

[Read more](https://www.nutrient.io/guides/web/forms/fill-form-fields/import-from-database.md)

## Form data — Read, extract, submit, or save

---

**Extract form data**

How to extract form field values present in a PDF document

[Read more](https://www.nutrient.io/guides/web/forms/extract-form-data.md)

---

**Read form fields**

How to read all form objects present in a PDF document

[Read more](https://www.nutrient.io/guides/web/forms/read-form-fields.md)

---

**Submit or save form data using Document Engine**

How to submit or save form data using Document Engine

[Read more](https://www.nutrient.io/guides/web/forms/submit-or-save/to-server-backed.md)

---

**Submit or save form data to an external source**

How to submit or save form data to an external source

[Read more](https://www.nutrient.io/guides/web/forms/form-submission.md)

---

**Embed form data into a PDF**

How to embed form data into a PDF document

[Read more](https://www.nutrient.io/guides/web/forms/submit-or-save/embed-data-into-pdf.md)

---

**Automatically save forms**

How to configure the way forms are automatically saved

[Read more](https://www.nutrient.io/guides/web/forms/submit-or-save/auto-save.md)

---

**JavaScript validation**

How to validate form field values using JavaScript

[Read more](https://www.nutrient.io/guides/web/forms/javascript-validation.md)

## Create, edit, or remove forms

---

**Browser form template builder**

Canonical end-to-end browser form authoring: setup, editing, and exporting

[Read more](https://www.nutrient.io/guides/web/forms/browser-form-template-builder.md)

---

**Create a fillable form**

How to programmatically create a fillable PDF form

[Read more](https://www.nutrient.io/guides/web/forms/form-creation.md)

---

**Add a signature field**

How to add a signature form field to a PDF document

[Read more](https://www.nutrient.io/guides/web/forms/create-edit-and-remove/add-signature-field.md)

---

**Edit form fields**

How to update a form field or widget annotation

[Read more](https://www.nutrient.io/guides/web/forms/create-edit-and-remove/edit-fields.md)

---

**Remove form fields**

How to remove a form field from a PDF document

[Read more](https://www.nutrient.io/guides/web/forms/create-edit-and-remove/remove-fields.md)

---

**Form Creator**

How to build an app where fields can be dragged and dropped onto a PDF

[Read more](https://www.nutrient.io/guides/web/forms/create-edit-and-remove/built-in-ui.md)

---

**Form field flags**

How to configure form behavior and capabilities

[Read more](https://www.nutrient.io/guides/web/forms/create-edit-and-remove/form-field-flags.md)

---

**PDF actions support**

Learn about the PDF actions supported by Nutrient

[Read more](https://www.nutrient.io/guides/web/forms/pdf-actions-support.md)

## Framework support

Nutrient Web SDK is compatible with any JavaScript framework, including React, Angular, Vue.js, Svelte, Blazor, Next.js, TypeScript, and Nuxt.js. It’s also compatible with ASP.NET, PHP, Laravel, and HTML5.

**Call to Action**

Start your free trial for unlimited access and expert support.

[Learn More](https://www.nutrient.io/sdk/web/getting-started/other-frameworks/javascript.md)
---

## Related pages

- [Extract data from PDF form fields using JavaScript](/guides/web/forms/extract-form-data.md)
- [Flatten dynamic PDF forms using JavaScript](/guides/web/forms/flatten.md)
- [Master PDF actions with JavaScript integration](/guides/web/forms/pdf-actions-support.md)
- [Validate PDF forms using JavaScript](/guides/web/forms/javascript-validation.md)
- [Read PDF form fields using JavaScript](/guides/web/forms/read-form-fields.md)

## Pages in this section

- [Embed data into PDF forms using JavaScript](/guides/web/forms/submit-or-save/embed-data-into-pdf.md)
- [Submit and save PDF forms using Document Engine](/guides/web/forms/submit-or-save/to-server-backed.md)
- [Autosaving changes made to PDF forms](/guides/web/forms/submit-or-save/auto-save.md)
- [Submit and save PDF forms to an external source](/guides/web/forms/form-submission.md)
- [Adding a signature field to a PDF form](/guides/web/forms/create-edit-and-remove/add-signature-field.md)
- [Build a browser form template builder](/guides/web/forms/browser-form-template-builder.md)
- [JavaScript PDF Form Creator](/guides/web/forms/create-edit-and-remove/built-in-ui.md)
- [Edit PDF form fields using JavaScript](/guides/web/forms/create-edit-and-remove/edit-fields.md)
- [Create fillable PDF forms using JavaScript](/guides/web/forms/form-creation.md)
- [Remove form fields from PDFs using JavaScript](/guides/web/forms/create-edit-and-remove/remove-fields.md)
- [PDF form field flags](/guides/web/forms/create-edit-and-remove/form-field-flags.md)
- [PDF form elements and data formats](/guides/web/forms/introduction-to-forms/data-formats.md)
- [Supported PDF form fields](/guides/web/forms/introduction-to-forms.md)
- [Understanding the benefits of PDF forms](/guides/web/forms/introduction-to-forms/what-are-forms.md)
- [Adding an image to a PDF form using JavaScript](/guides/web/forms/fill-form-fields/add-image.md)
- [Attach a file to a PDF form using JavaScript](/guides/web/forms/fill-form-fields/attach-a-file.md)
- [Detecting user inputs in PDF forms](/guides/web/forms/fill-form-fields/detect-user-input.md)
- [Dynamic font loading in PDF forms using Nutrient Web SDK](/guides/web/forms/fill-form-fields/dynamic-font-loading.md)
- [Headless form fill](/guides/web/forms/fill-form-fields/headless.md)
- [Import data into PDFs from a database](/guides/web/forms/fill-form-fields/import-from-database.md)
- [Import data into PDF forms using Instant JSON](/guides/web/forms/fill-form-fields/import-from-instant-json.md)
- [Import data into PDF form using Web SDK with Document Engine](/guides/web/forms/fill-form-fields/import-from-server-backed.md)
- [Import data into PDF forms using XFDF](/guides/web/forms/fill-form-fields/import-from-xfdf.md)
- [Customizing PDF form permissions](/guides/web/forms/fill-form-fields/permissions.md)
- [Fill PDF forms programmatically using JavaScript](/guides/web/forms/form-filling.md)
- [Fill PDF form fields using our JavaScript viewer UI](/guides/web/forms/fill-form-fields/using-the-ui.md)

