Generate images & PDFs from code.
Send Tailwind, HTML, Markdown, charts, or LaTeX — get back a pixel-perfect PNG, JPEG, WebP, or PDF in the same response. No headless browser to run, no fonts to configure.
No credit card required · 100 free credits · From $9/mo after
























Official TypeScript SDK
Zero dependencies · Node.js, Next.js Edge, Cloudflare Workers, Bun · View SDK docs →
Try it right now — no signup required
All seven engines, live — pick one, edit the input, hit render.
Preview will appear here after you hit Test Render.
curl -X POST https://renderfy.io/api/v1/render \
-H "Authorization: Bearer rfy_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"tailwind","content":"<div class=\"flex flex-col w-full h-full bg-zinc-900 p-14\">\n <div class=\"flex items-center mb-8\">\n <div class=\"w-3 h-3 rounded-full bg-emerald-400 mr-3\"></div>\n <span class=\"text-emerald-400 text-sm font-mono tracking-widest uppercase\">Live Report</span>\n </div>\n <div class=\"flex text-5xl font-bold leading-snug mb-4\">\n <span class=\"text-white mr-3\">Revenue up</span>\n <span class=\"text-emerald-400 mr-3\">42%</span>\n <span class=\"text-white\">this quarter.</span>\n </div>\n <p class=\"text-zinc-400 text-xl mb-12\">\n Aurora Analytics processed 1.2M events across 14 regions.\n </p>\n <div class=\"flex mt-auto\">\n <div class=\"bg-zinc-800 rounded-2xl px-8 py-6 mr-4\">\n <p class=\"text-zinc-500 text-xs font-mono uppercase tracking-widest mb-2\">MRR</p>\n <p class=\"text-white text-3xl font-bold\">$184K</p>\n </div>\n <div class=\"bg-zinc-800 rounded-2xl px-8 py-6 mr-4\">\n <p class=\"text-zinc-500 text-xs font-mono uppercase tracking-widest mb-2\">Customers</p>\n <p class=\"text-white text-3xl font-bold\">2,847</p>\n </div>\n <div class=\"bg-zinc-800 rounded-2xl px-8 py-6\">\n <p class=\"text-zinc-500 text-xs font-mono uppercase tracking-widest mb-2\">Uptime</p>\n <p class=\"text-emerald-400 text-3xl font-bold\">99.99%</p>\n </div>\n </div>\n</div>","options":{"format":"png","dimensions":"og-image","scale":2,"quality":90}}' \
--output render.pngUse cases
Rendering that pays for itself
Four ways teams turn one API call into revenue, retention, and saved engineering weeks. Every image below is unedited output from this exact API.
Open Graph images that sell the click

Open Graph images that sell the click
Every blog post, product page, and job listing gets its own pixel-perfect share card — templated once, populated per URL at request time. Rich previews stop the scroll; bare links don't.
- One template covers thousands of pages
- No design backlog, no screenshot hacks
- Ships from the code you already deploy
POST /api/v1/render · type: "tailwind" · format: "png" · dimensions: "og-image"Charts that work inside email

Charts that work inside email
Email clients can't run JavaScript — so live dashboards die in the inbox. Post your metrics as JSON, get back a chart PNG, and drop it straight into weekly digests, usage alerts, and investor updates.
- JSON in, finished chart out — one request
- Renders identically in every email client
- Automate reports nobody has to assemble
POST /api/v1/render · type: "chart" · format: "png" · Chart.js payloadInvoices & receipts on autopilot

Invoices & receipts on autopilot
Turn a payment webhook into a branded, print-ready PDF in one API call — no PDF library to fight, no headless Chrome to babysit, no invoice template drifting away from your brand.
- Payment event → attached PDF, same request cycle
- Print-ready A4/Letter output every time
- Your Tailwind template is the single source of truth
POST /api/v1/render · type: "tailwind" · format: "pdf" · dimensions: "a4"Certificates your users brag about

Certificates your users brag about
Course completions, hackathon wins, community milestones — render a personalized certificate the second it's earned. Every one that gets shared on LinkedIn is free acquisition with your name on it.
- Personalized per user, generated in milliseconds
- Users share them — your brand travels for free
- Works for courses, events, memberships, awards
POST /api/v1/render · type: "tailwind" · format: "png" · 1100×780Your first render is 5 lines of code away
Sign up, mint an API key, and ship any of these use cases this afternoon — 100 free credits included — no card needed.
Built for production, not demos
Save the layout once. Ship just the data.
The pattern most render APIs miss: your invoice template shouldn’t be in every deploy of your app. Save it once with Renderfy, then render each invoice with a two-line call. Batch a hundred at once when you need to.
POST /api/v1/render
{
"type": "tailwind",
"content": "<div class='p-16 flex flex-col ...
<h1 class='text-5xl font-bold'>Invoice #0007</h1>
<p>Billed to: Juniper Labs</p>
<p class='text-emerald-500'>Total: $1,240.00</p>
...</div>",
"options": { "format": "pdf" }
}Every request re-ships the same 200 lines of layout. A copy-editing change means a redeploy.
POST /api/v1/render
{
"template": "invoice",
"data": {
"number": "#0007",
"client": "Juniper Labs",
"total": "$1,240.00"
}
}The template lives on your account. Edit it in the live workbench with sample data, or locally with npx @renderfy/preview — every future render picks up changes, no redeploy.
And when you need many at once
Batch render up to 20 documents in a single call.
End-of-month invoices, a certificate for every graduate, an OG card for every blog post — one call, partial-success semantics, only successes billed.
Render webhooks
Get a signed POST to your endpoint after every render completes or fails — no polling. HMAC-SHA256 signatures so you can verify each delivery.
render.completed
Custom brand fonts
Name up to 4 Google Font families per render and your documents ship in your typography — no font files to host, graceful fallback if one is unavailable.
options.fonts
Idempotency-Key
Send the same key twice, get the same document once — a network retry can never generate or bill the same render twice. Replay copies are encrypted at rest.
Idempotency-Key: <uuid>
Why not just use AI?
AI imagines. Renderfy renders.
Generative AI is brilliant at creative work. Documents built from real data need a different kind of engine — one that never improvises.
Your data, verbatim
A generative model interprets your numbers — a render engine typesets them. Every line item, total, and date lands exactly as sent, because it's your template filled with your data, not a model's best guess.
Identical output, every time
AI output is different on every run by design. Renderfy is deterministic: same template + same data = the same pixels, forever. That's what invoices, certificates, and audits require.
Sub-second, not half a minute
Image models take 10–30 seconds per generation. Renderfy returns the finished binary in the same HTTP response, typically well under a second — fast enough to run inside a request cycle.
Pixel-perfect brand control
Exact hex colors, your fonts, precise dimensions to the pixel. AI approximates a style; a template guarantees it. Your 1200×630 OG card is 1200×630 with your exact brand — every render.
A fraction of the cost at scale
AI image generation runs $0.04+ per image. A Renderfy render costs a fraction of a cent. Generating thousands of documents a month, that gap is your margin.
Built for pipelines, not prompts
No prompt tuning, no output review, no retries when the model drifts. A render call behaves like any other API in your stack: predictable input, predictable output, safe to automate unattended.
Use AI where it shines — ideas, copy, artwork. When the output has to be correct, branded, and repeatable, use a render engine.