Skip to content
dialegein

WeasyPrint

Open-source Python library that turns HTML and CSS into PDF documents.

Jobs Convert

Since 2011

Operated by CourtBouillon

Where your files are processed

No server involved

A Python package and its command line, running in your own process. There is no service and no account, so templates and data never leave the machine generating the document. 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.

A Python package that runs in your own process, plus a command-line entry point. There is no service in the path and no account, so templates and data never leave the machine generating the document. The URL fetching it does for images or stylesheets is the caller's configuration rather than a vendor service.

What it does

WeasyPrint renders HTML and CSS into a PDF, which makes it the open-source answer to the same job the commercial typesetting engines do: you write a template in the web technologies you already know and get a printable document out — invoices, statements, tickets, reports, book interiors. It installs as a Python package and is driven from Python or from a command line. It is developed by the people who also sell support and template work around it, so the software is free and the expertise is the product.

Best for: Python teams that need to generate PDFs from HTML they already have, without paying per document or sending anything to a service, and anyone producing repetitive business documents where CSS is a better layout language than a PDF drawing API. It is the strongest open-source option in this index for template-driven generation.

Worth knowing: It is not a browser and does not pretend to be: it implements the parts of CSS that make sense for paged output, and a stylesheet that relies on browser-specific behaviour or on JavaScript will not render the way you expect — the vendor's own samples exist partly to show what the print-oriented subset can do. It also depends on native libraries rather than being pure Python, so installation is heavier than pip alone on some platforms, and that is a deployment consideration in containers. The project is small and the commercial support around it is per-month consulting rather than an SLA product, with three published tiers that are explicitly unavailable in Canada and the United States; a team that needs a support contract rather than occasional help should read those terms carefully. And the success figures on the site — millions of downloads and thousands of stars — are popularity, not a measure of how well it renders a difficult document.

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
Self-hosted
Website
weasyprint.org
Requires an account
Not applicable
Watermark on the free tier
Not verified
Maximum file size
Not verified
Batch processing
Yes
Data residency
Self-hosted
Open source
Yes
Self-hostable
Yes
Licence
BSD-3-Clause
Redaction
No redaction feature
Programmatic access
Embeddable library · Command line
Last availability check
Responded in 401 ms 16 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.

“WeasyPrint is a smart solution helping web developers to create PDF documents. It's free and open source software that can be easily plugged to your applications and websites and turns simple HTML pages into gorgeous: Statistical reports, Invoices, Tickets, html print”

What that does not establish: Recorded as `none` on absence, and for the same structural reason as Prince: this is a generator. It creates a PDF from HTML and CSS and never opens an existing one, so there is no document for a redaction feature to act on. What it does not establish: that a document produced by WeasyPrint is safe to share. A template renders whatever data it is given, and a generator is precisely the tool that will print a field you did not mean to include.

https://weasyprint.org/

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.

  • “WeasyPrint is a smart solution helping web developers to create PDF documents. It's free and open source software that can be easily plugged to your applications and websites.”

    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
    f798b20d097136b9e2f9f9f145b152fe607d41898ddfba4e9c4705fb7657424a

    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

  • “15 years of experience”

    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
    f798b20d097136b9e2f9f9f145b152fe607d41898ddfba4e9c4705fb7657424a

    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 WeasyPrint 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 16 October 2026.
Behaviour testing.
We ran this ourselves. The file handling was watched directly.

Sources: weasyprint.org, read 2026-09-22 with headless Chrome, including the support tiers and the project's own statement of who maintains it; the licence from the project's LICENSE file in its repository. Project documentation, not independently tested; the package was not installed and no document was generated.