Generate beautiful code snippet images with syntax highlighting. Use when users want to share code as an image, create code screenshots for social media, documentation, or presentations...
Generate beautiful code snippet images with syntax highlighting via html2png.dev.
/api/convert endpointPOST https://html2png.dev/api/convert
curl -X POST "https://html2png.dev/api/convert?width=800&deviceScaleFactor=2" \
-H "Content-Type: text/html" \
-d '<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
<style>
.shiki { background: transparent !important; }
.line::before {
content: attr(data-line);
width: 2rem;
margin-right: 1rem;
display: inline-block;
text-align: right;
color: rgba(128,128,128,0.4);
}
</style>
</head>
<body class="p-12" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);">
<div class="bg-white rounded-xl shadow-2xl overflow-hidden">
<div class="flex items-center gap-2 px-4 py-3 border-b border-gray-200">
<div class="w-3 h-3 rounded-full bg-red-400"></div>
<div class="w-3 h-3 rounded-full bg-yellow-400"></div>
<div class="w-3 h-3 rounded-full bg-green-400"></div>
<span class="ml-2 text-xs text-gray-500 font-mono">hello.js</span>
</div>
<pre class="p-6 font-mono text-sm leading-relaxed"><code class="language-javascript"><span style="color:#D73A49">function</span> <span style="color:#6F42C1">greet</span>(<span style="color:#24292E">name</span>) {
<span style="color:#D73A49">return</span> <span style="color:#032F62">`Hello, ${name}!`</span>;
}
<span style="color:#6F42C1">console</span>.<span style="color:#6F42C1">log</span>(<span style="color:#6F42C1">greet</span>(<span style="color:#032F62">"World"</span>));</code></pre>
</div>
</body>
</html>'
Syntax Highlighting:
shiki.style) or highlight.js for token coloringWindow Chrome:
Typography:
Backgrounds:
For server-side syntax highlighting:
import { createHighlighter } from "shiki";
const highlighter = await createHighlighter({
themes: ["github-light"],
langs: ["javascript", "python", "rust"],
});
const html = highlighter.codeToHtml(code, {
lang: "javascript",
theme: "github-light",
});
deviceScaleFactor=2 for crisp textdelay=500 if using web fontswidth paramomitBackground=true for transparent PNGs50 requests/hour per IP.