QuestPDF is free under its Community License for individuals, for organizations with less than USD 1,000,000 in annual gross revenue, and for charities, academic institutions and open-source projects. Government and public-sector bodies and publicly traded companies need a paid license whatever their revenue. The paid tiers are Professional at $1,999 for one legal entity and Enterprise at $4,999 for a group of affiliates, both plus local tax. It isn’t MIT: on NuGet, only releases up to the 2022.12.x line carry the MIT license, and 2023.4.0 and later ship QuestPDF’s own license file. This page sets out the current terms, quoting QuestPDF’s own pages, then shows a permissively licensed alternative with the same fluent style.
The facts below come from QuestPDF’s pricing page, its License Selection Guide and Community License (both version 3.0, effective 6 July 2026), and the NuGet listings, read on 27 October 2026. The current release, QuestPDF 2026.9.1 (25 September 2026), ships those same documents in its package. QuestPDF’s FAQ calls itself “a practical summary” in which the license document controls, and this page is no legal advice either.
Who can use QuestPDF for free
The License Selection Guide lists seven Community License categories:
- Individuals, including commercial projects, while the individual’s annual gross revenue stays under the threshold.
- Learning and evaluation by an individual, regardless of revenue.
- Charitable organizations. Non-profit form alone isn’t enough: a trade association or industry body “is treated as an ordinary business”.
- Academic institutions, public or private non-profit, for teaching, research or their own administration.
- Open-source projects distributed under an OSI-approved license, unless “structured primarily to allow a commercial entity to avoid licensing fees”.
- Small businesses: “annual gross revenue under USD 1,000,000 in its most recently completed fiscal year, measured on a consolidated basis across entities under common control”.
- Transitive dependency users, whose own code doesn’t call QuestPDF but uses a library built on it, unless that library is “primarily a wrapper” around QuestPDF.
And the exclusion: “Public-sector entities and government agencies — other than academic institutions covered by category (4) — and publicly traded companies are not eligible for the Community License, regardless of revenue.”
When you build software for a client, the client’s situation decides. The guide says the license is determined by the entity that “ultimately owns, controls, commercially uses, or receives the primary business benefit” from the application, and the pricing FAQ adds that a freelancer’s client who doesn’t qualify “needs their own paid license”.
QuestPDF pricing
| Community | Professional | Enterprise | |
|---|---|---|---|
| Price | Free | $1,999 + local tax | $4,999 + local tax |
| Who it covers | The eligible categories above | One legal entity | The licensee and its affiliates (“more than 50% ownership or control”) |
| Developers, projects, servers | Unlimited | Unlimited | Unlimited |
| Features | The same in every tier (“License Equality”) | ||
| Updates | — | One year included. The license is perpetual for versions released during a paid term, and renewal is annual at a locked price. | |
| Support | GitHub | Next-business-day, priority email | |
Source: QuestPDF pricing. Website purchases renew automatically every 12 months unless cancelled, and the FAQ says that if you don’t renew, “you keep the software permanently” for the versions you received. An organization that doesn’t qualify for the Community License may evaluate QuestPDF for up to 60 days, for non-production use.
When your revenue crosses USD 1,000,000
The Community License gives a 90-day transition period, which starts at the end of the fiscal period in which the threshold was exceeded (or on the date of a merger or acquisition, if that is the cause). In the pricing FAQ’s words, during that period “you either purchase the appropriate paid license or stop using QuestPDF”, and “Nothing applies retroactively: there are no back-payments, penalties, or fees for the period when you qualified for the Community License.” QuestPDF relies on self-certification and “does not perform routine audits”, but may ask for written confirmation of compliance at most once a year.
Is QuestPDF open source, or MIT?
Not today. QuestPDF’s pricing FAQ: “QuestPDF is source-available commercial software… your right to use QuestPDF comes from one of our licenses, including the free Community License, not from an OSI-approved open-source license such as MIT.” The Community License says the same: “It is not an OSI-approved open-source license.”
Older versions are different. On NuGet, the license expression of every QuestPDF release up to the 2022.12.x line is MIT:
| Version | Published on NuGet | License on NuGet |
|---|---|---|
| 2022.12.15, the last 2022.12.x | 7 February 2024 | MIT |
| 2023.4.0 | 4 May 2023 | License file |
| 2026.9.1, current | 25 September 2026 | License file (Community, Professional and Enterprise terms) |
The 2022.12.x line kept getting releases into 2024, alongside the 2023 versions. The Community License’s “Applicable Version” clause says the license version distributed with a release governs that release, so the terms that apply depend on the version you use.
Setting the license in code
QuestPDF has no license key. Its license configuration page asks you to put one line at application startup, for example QuestPDF.Settings.License = LicenseType.Community; (or Professional, or Enterprise), and says the library “does not perform any network calls”. The pricing FAQ adds that there is no telemetry or online activation, and “no remote shutdown mechanism”.
Other terms worth reading
- Redistribution. Every tier allows shipping QuestPDF “as a compiled component of your own application”, royalty-free. The Community License doesn’t grant redistribution in source form.
- Competing products. The Community License forbids using the software “primarily to develop, market, distribute, or operate a library, SDK, API, hosted service, or other developer component whose primary purpose is general-purpose PDF generation and that competes with QuestPDF”. Ordinary applications that generate PDFs as one feature are explicitly fine.
- Developers. The guide defines who counts as a developer, and since all paid tiers cover unlimited developers, the definition decides who must be covered, not how many licenses you buy.
- Governing law. Poland.
A permissively licensed alternative: OnePdf.Layout
If the revenue test, the public-sector exclusion or a source-available license doesn’t fit your project, RecursiveAI.OnePdf.Layout generates documents in the same style, with nested delegates, slots and decorator chains, under MIT OR Apache-2.0. There’s no revenue test, no registration and no license line in code. It is pure managed C# and works with NativeAOT. By comparison, the QuestPDF 2026.9.1 package contains native libraries for eight runtime identifiers (Windows, Linux, Linux musl and macOS). A one-page invoice:
dotnet add package RecursiveAI.OnePdf.Layout --version 1.11.0using OnePdf.Layout; LayoutDocument.Compose(doc => { doc.Title("Invoice 1042").Language("en"); doc.Page(page => { page.Size(PageSize.A4); page.Margin(2.Cm()); page.Header().Text("Acme Corp").FontSize(9).FontColor(Colors.Grey); page.Content().Column(col => { col.Spacing(8); col.Item().Heading(1).Text("Invoice 1042").FontSize(20).Bold(); col.Item().Table(table => { table.Columns(c => { c.Relative(3); c.Constant(70); }); table.HeaderRow(r => { r.Cell().Text("Item").Bold(); r.Cell().AlignEnd().Text("Price").Bold(); }); table.Row(r => { r.Cell().Text("Widget"); r.Cell().AlignEnd().Text("12.00"); }); }); }); page.Footer().AlignCenter().Text(t => { t.Span("Page "); t.CurrentPageNumber(); t.Span(" of "); t.TotalPages().ReservedDigits(1); }); }); }).Save("invoice.pdf"); Console.WriteLine("saved invoice.pdf");
saved invoice.pdfThe file is one A4 page with the header, the heading, the two-column table and “Page 1 of 1”. It is tagged by default: the heading is an H1, the header row is TH cells, and the header and footer are artifacts. The same document becomes PDF/A or PDF/UA through the save options. Text is shaped with OpenType, including Arabic and Indic scripts, and the fonts are embedded, so output is the same on every machine.
For moving QuestPDF code, the QuestPDF migration map in the docs pairs QuestPDF concepts with their OnePdf.Layout names: pages and slots, decorators, Column, Row, Table, page numbers and components. Some things OnePdf.Layout doesn’t have: a previewer app with hot reload, shadows, and built-in charts or barcodes. Draw those on a Canvas or place them as SVG. It targets .NET 10 only. Create a PDF in C# builds a full multi-page invoice with it.
Where next
- Choosing a C# PDF library: licenses and features of the common options compared.
- PDFsharp license and iText license, for the other libraries that changed or charge.
- The layout guide.