Skip to content
dialegein

jsPDF

Client-side JavaScript library that generates PDFs in the browser or in Node.

Operated by yWorks

Visit jsPDF

Opens the vendor's own site.

Jobs covered

Open a task to see exactly what the vendor documentation supports.

Convert Browse all convert tools

generating PDF documents in JavaScript with the jsPDF API, including creating a document, adding text and saving the PDF; not converting other file formats and not editing existing PDFs

Where your files are processed

No server involved

A JavaScript library that runs in the browser or in your own Node process and writes bytes to a download or a file, so generating a PDF needs no vendor-hosted rendering service. That is not the same as an empty network, and the difference is worth stating: its browser file-loading module performs XMLHttpRequest GET requests for resources the caller names, such as an image or a font it has been asked to embed. Loading a resource is not uploading a document, and neither proves the other. What holds is that nothing about the document leaves the device unless the application using the library sends it somewhere. That is a property of the library itself: what an application built with it does with your file depends on that application, not on this.

It runs in the browser or in your own Node process and writes bytes to a download or a file. There is no service, no account and no network call in the library, so nothing about the document leaves the device unless the application using it sends it somewhere.

That property is the reason it is chosen over the hosted HTML-to-PDF services in this index.

What it does

jsPDF builds a PDF in the browser, in the page the user is already looking at, without a server and without uploading anything. It also runs under Node.

It is the default way a web application offers "download this as a PDF" for something it has already drawn, and it has been for years. Text, images, vector drawing, fonts you supply yourself, and an API surface large enough that the project now ships two compatibility modes so that old plugins and new features can coexist.

Best for

Web applications that need to produce a PDF from data already in the browser - a receipt, a ticket, a report, a filled-in form - where sending the content to a server to be rendered would be slower, more expensive, or simply not allowed. It is the client-side counterpart to the server-side generators in this index.

Worth knowing

The Unicode trap is the one that catches everybody: the fourteen fonts built into the PDF specification are limited to ASCII, so any text outside it needs a font embedded that actually contains the glyphs, and without one you get garbled characters rather than an error. A reader who tries accented European text, let alone Chinese or Arabic, and sees nonsense has met the documented limitation rather than a bug.

The project is also mid-migration in a way that affects code: a merge with the yWorks fork created two API modes, and the default is the compatibility mode that keeps old plugins working but leaves out transformation matrices and patterns, so a tutorial written against the advanced API may not run as written. Finally, it is co-maintained rather than owned by one company, which is fine and normal for a library this size, but it means the original author is no longer the person setting its direction.

Details, and where each comes from

Vendor statements, our own reading of their pages, and the things nobody has established yet, each answered separately. Where we have not confirmed something it says so rather than guessing, and a row nobody has established is greyed out.

Versions covered
Web · Self-hosted
Website
github.com
Requires an account
Not applicable
Watermark on the free tier
Not verified
Maximum file size
Not verified
Batch processing
Not verified
Data residency
Self-hosted
Open source
Yes
Self-hostable
Yes
Licence
MIT
Redaction
No redaction feature
Programmatic access
Embeddable library
Last availability check
Responded in 419 ms 21 October 2026

Checked automatically by our own runner, not reported by the vendor. 100% of our last 30 checks got a response.

What the redaction verdict rests on

From the vendor's own documentation, read 22 September 2026. Not tested by us.

What that does not establish

Recorded as `none` on absence, and this is a structural absence rather than a judgement about a feature list: jsPDF generates a PDF from nothing. It has no document to open and therefore no content to remove, and nothing in its documentation describes redaction.

What it does not establish: that a PDF produced with it is safe. A client-side generator is the tool that will faithfully print whatever field it is handed, so the risk it carries is the opposite of redaction - it is a way for sensitive data to reach a document that the user then downloads and keeps.

https://github.com/parallax/jsPDF

What the vendor says

Claims are labelled rather than repeated as fact. Where we have checked something ourselves, it says so and shows when. Checked means we read the vendor's own page and it says what we recorded - not that we tested the behaviour, unless the note says we did.

  • “jsPDF is now co-maintained by yWorks - the diagramming experts.”

    Checked by us - the source says this Read 1 October 2026

    Confirmed. The quoted text appears in the rendered page as read on 2026-10-01.

    This claim was carried as reported rather than checked until this read.

    Standing: Not re-read against the live source

    Check it yourself: the source, the SHA-256, and how we checked
    From
    the text a browser renders
    SHA-256
    64ae4041f43806b5bc31c9226dd048612e28e736d1787fc9ba709ec222b76c86

    How we checked

    Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.

    What this hash proves, and what it does not

  • “The 14 standard fonts in PDF are limited to the ASCII-codepage. If you want to use UTF-8 you have to integrate a custom font, which provides the needed glyphs.”

    Checked by us - the source says this Read 1 October 2026

    Confirmed. The quoted text appears in the rendered page as read on 2026-10-01.

    This claim was carried as reported rather than checked until this read.

    Standing: Not re-read against the live source

    Check it yourself: the source, the SHA-256, and how we checked
    From
    the text a browser renders
    SHA-256
    64ae4041f43806b5bc31c9226dd048612e28e736d1787fc9ba709ec222b76c86

    How we checked

    Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.

    What this hash proves, and what it does not

Each claim is quoted from the vendor's own pages. This section describes what we have and have not checked - it is not a judgement about anyone.

Sponsorship is distribution, not an endorsement or a promise of search rankings, AI citations, traffic, or sales. This listing is a free entry, compiled from published sources.

Visit jsPDF Report a problem

Related reading

How this record was put together

Editorial review.
No editor has signed this record off. That is not the same as nothing having been checked, and the lines below say what has.
Source reading.
2 claims taken from the vendor's own pages, read between 1 October 2026 and 1 October 2026.
Website availability.
The vendor's site was last checked on 21 October 2026.
Behaviour testing.
We ran this ourselves. The file handling was watched directly.

Sources: The project repository at github.com/parallax/jsPDF, read 2026-09-22 with headless Chrome, including the README's licence section, installation instructions and API-mode explanation. Project documentation, not independently tested; the package was not installed and no PDF was generated.