Guides
Retool PDF Generation: Your Best Options in 2024
If you've searched for a native Retool PDF generation option, you've already hit the wall: Retool doesn't ship one out of the box. No built-in PDF Generator component, no jsPDF integration, no one-click invoice export. It's one of the most upvoted feature requests in the Retool community—and for good reason. Generating PDFs for invoices, reports, and summaries is a core use case for almost every internal tool. Until Retool ships something native, here's a clear breakdown of every option available right now, ranked from free to paid.
Why Retool Doesn't Have a Native PDF Generator (Yet)
Retool's component library is built around displaying and manipulating data, not document rendering. PDF generation typically requires a templating engine, a rendering pipeline, and font/layout handling—none of which fit cleanly into Retool's current architecture. The community has been vocal about wanting a free, built-in option similar to what you'd get in a Next.js app with jsPDF or react-pdf. Until that ships, you need to wire up an external solution.
Option 1: jsPDF via a Retool JavaScript Query (Free)
The closest thing to a free, native feel is running jsPDF directly inside a Retool JavaScript query. Retool lets you load external scripts using utils.loadScript(), which means you can pull in jsPDF from a CDN and call it inline.
- In a
JavaScript query, callawait utils.loadScript('https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js') - Instantiate the library:
const { jsPDF } = window.jspdf; const doc = new jsPDF(); - Add content:
doc.text('Invoice #1001', 10, 10); - Trigger the download:
doc.save('invoice.pdf');
This works well for simple, text-heavy PDFs like invoices or basic reports. The limitation is layout control—jsPDF's coordinate-based system gets painful fast when you need tables, logos, or multi-page documents. For anything beyond a simple document, you'll be fighting the library.
Option 2: CraftMyPDF (Paid, API-Based)
CraftMyPDF is a popular choice in the Retool community precisely because it has a clean REST API you can call from a Retool Resource query. You design your template in CraftMyPDF's visual editor, then pass JSON data to the API and get back a PDF URL or binary.
- Create a
REST API resourcein Retool pointed athttps://api.craftmypdf.com/v1/create - Pass your template ID and data payload as JSON in the request body
- Use the returned URL with a
Buttoncomponent orutils.openUrl()to open or download the PDF
The downside is cost. CraftMyPDF's free tier is limited, and at scale the credits add up. It also means your PDF logic lives outside Retool, which adds a dependency to manage.
Option 3: jsreport (Self-Hosted, Free)
jsreport is an open-source reporting platform that supports HTML-to-PDF rendering, templating with Handlebars or JavaScript, and a REST API. If your team already runs infrastructure, self-hosting jsreport gives you a powerful, free PDF engine you can call from Retool like any other API resource.
- Deploy jsreport via Docker:
docker run -p 5488:5488 jsreport/jsreport - Create a
REST API resourcein Retool targeting your jsreport instance - POST an HTML template and data to the
/api/reportendpoint and receive a PDF in response
This is the best free option if you want full layout control and are comfortable managing a service. The trade-off is infrastructure overhead—it's not a five-minute setup.
Option 4: Carbone or Documint (Template-First Workflows)
Carbone and Documint are document generation APIs built around uploading a Word or PDF template with placeholders, then filling them with data via API. They're excellent for document-heavy workflows like contracts, proposals, or compliance reports where a designer owns the template.
Both integrate with Retool via a REST API resource the same way CraftMyPDF does. Carbone has a generous self-hosted open-source version. Documint is fully managed but paid. If your PDF layout is complex and design-driven, these are worth the look.
Which Option Should You Pick?
- Simple invoices, zero budget: Use
jsPDFloaded viautils.loadScript()in a JavaScript query. - Pixel-perfect templates, small team:
CraftMyPDForDocumintfor the fastest setup. - Free + full control + okay with infra: Self-host
jsreportorCarbone. - Complex reports at scale:
jsreportwith a dedicated rendering server.
What to Watch For from Retool
The community thread requesting native PDF generation in Retool has consistent upvotes and no official resolution date. Retool has been expanding its native component library steadily, so a built-in PDF export feature—possibly powered by a headless browser or a JS library like jsPDF—isn't out of the question. Until then, the options above cover every real-world use case. Bookmark the original community thread to catch any official announcements.
The bottom line: Retool PDF generation is solvable today—it just requires one extra integration step. Pick the option that matches your budget and complexity, wire it up as a resource or JavaScript query, and you'll have PDFs exporting from your internal tool before end of day.
Ready to build?
We scope, design, and ship your Retool app — fast.