Skip to content
dialegein

WeasyPrint

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

Jobs Convert

Since 2011

Operated by CourtBouillon

Visit WeasyPrint

Opens the vendor's own site.

Jobs covered

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

Convert Browse all convert tools

converting HTML and CSS to PDF with WeasyPrint's Python library or command-line interface: paginated CSS layout, PDF/A and PDF/UA variants, tagged PDF output for accessibility, PDF forms, attachments, metadata and related document options, plus the CLI's stylesheet/attachment/PDF-variant controls. The scope records documented HTML/CSS-to-PDF generation and the supported PDF variant/tagging options, and explicitly excludes JavaScript execution/browser-engine emulation, editing or reflowing existing PDFs, text extraction, OCR, redaction, digital signatures, semantic/legal accessibility certification and any hosted-service claim

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 and command-line program running in the caller's own process/machine, with no WeasyPrint service or account. HTML, CSS and data are processed locally; URL fetching for external stylesheets/images is the caller's configuration and follows the caller's network access.

Native Pango and Python dependencies must be installed locally.

What it does

WeasyPrint renders HTML and CSS into PDF from a Python library or command-line program, which makes it the open-source answer to the same job the commercial typesetting engines do: write a template in HTML/CSS and get a printable document out - invoices, statements, tickets, reports, book interiors. It implements a paginated CSS layout engine rather than embedding a full general-purpose rendering engine, and is free software under BSD-3-Clause.

The current release is 70.0 (8 September 2026), requiring Python >=3.10, Pango >=1.44 and Python dependencies including pydyf, cffi, tinyhtml5, tinycss2, cssselect2, Pyphen, Pillow and fonttools. It generates PDF variants including PDF/A and PDF/UA modes, can tag PDFs for accessibility, add attachments/metadata/forms and drive output from the CLI.

It is not a general-purpose renderer: JavaScript and renderer-specific behaviour are outside its model, and it does not edit existing PDFs, extract text, OCR, redact, sign or provide legal accessibility certification. WeasyPrint was created and developed by Kozea; professional support, maintenance and community management are provided by CourtBouillon.

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 general-purpose renderer and does not pretend to be: it implements the parts of CSS that make sense for paged output, and a stylesheet that relies on JavaScript or on renderer-specific behaviour will not render the way you expect - the project's own samples exist partly to show what the print-oriented subset can do. It also depends on native libraries (Pango >=1.44) 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 published support 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. 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.

It is self-hosted software only: there is no WeasyPrint hosted service, account or hosted edition.

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.

BSD-3-Clause. WeasyPrint is free software under a BSD licence; the current PyPI package is 70.0, requires Python >=3.10, and depends on pydyf, cffi, tinyhtml5, tinycss2, cssselect2, Pyphen, Pillow and fonttools, plus the system Pango >=1.44 library.

It was created and developed by Kozea; professional support, maintenance and community management are provided by CourtBouillon, which is recorded as the current maintainer. No account or paid software edition is required.

Redaction
No redaction feature
Programmatic access
Embeddable library · Command line
Last availability check
Responded in 643 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.

“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.”

    Reported by the vendor Read 16 October 2026

    Present as vendor marketing; downgraded from verified to reported rather than presenting 'web developers' as a platform or audience metric. The product is a self-hosted Python library/CLI, not a web service.

    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

    Re-read the current project documentation/site on 2026-10-16. The sentence is present but is marketing copy about web developers, not an independently measured capability claim.

    What this hash proves, and what it does not

  • “15 years of experience”

    Reported by the vendor Read 16 October 2026

    Unsupported as a precise factual claim and too vague to verify. Downgraded to reported rather than treating it as evidence of product age or quality.

    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

    Re-read the current site on 2026-10-16. The phrase is a rounded marketing figure; no launch announcement or dated experience measurement was found.

    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 16 October 2026 and 16 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: https://pypi.org/project/weasyprint/ (70.0, 8 September 2026, Python >=3.10, BSD, dependencies; read 2026-10-16); https://github.com/Kozea/WeasyPrint (BSD-3-Clause, created 2011-08-09, last push 2026-10-15, latest release v70.0; read 2026-10-16); https://doc.courtbouillon.org/weasyprint/stable/first_steps.html (Python >=3.10, Pango >=1.44 and dependency versions); https://doc.courtbouillon.org/weasyprint/stable/features.html (HTML/CSS to PDF, PDF/A, PDF/UA, tags, forms, attachments, metadata; CLI); https://weasyprint.org/ (Kozea creation, CourtBouillon support, licence); read 2026-10-16.