Limited lifetime deal. Grab it Now โ†’
HTML to Image API

Generate images from HTML templates

Create invoices, certificates, social cards, and more using HTML/CSS โ€” and generate thousands of images automatically.

Full browser rendering with CSS, fonts, and layouts - exactly as you design Generate hundreds of images with one template using dynamic data No credit card 100 free renders
HTML template
<!-- OG Image --> <div style="background:linear-gradient( 135deg,#1e3a5f,#6d28d9); width:1200px;height:630px; padding:80px;color:white;"> <h1 style="font-size:64px"> {{page_title}} </h1> <p style="opacity:.6"> peekshot.com </p> </div>
Rendered image
โœ“ Rendered ยท 0.8s
peekshot.com
Screenshot any website. Automatically.
cdn.peekshot.com/img_og_k8x2.png ยท 1200ร—630
< 1s
Average render time
Any CSS
Flexbox, Grid, variables
Any font
Google, Adobe, or custom
CDN
Hosted URL, zero config
Trusted by 500+ teams
Agenix AI
AstroDecode
Bernadot
CandyDocs
DSM Engines
Elevate HC
Radio Media
Seraph
Agenix AI
AstroDecode
Bernadot
CandyDocs
DSM Engines
Elevate HC
Radio Media
Seraph
The problem with alternatives

Canvas API is a pain.
Design tools can't scale.

Generating images programmatically has always been harder than it should be. You shouldn't need to learn a graphics API to put text on a coloured background.

โœ— Canvas API / node-canvas
โŸถ Steep learning curve with low-level drawing primitives
โŸถ Text wrapping requires manual calculation โ€” no CSS layout
โŸถ Loading custom fonts is painful and platform-specific
โŸถ Building anything complex takes days, not hours
โŸถ Output quality varies โ€” subpixel rendering is inconsistent
โŸถ Native binaries break on deploy across different environments
โœ“ PeekShot HTML to Image API
โŸถ Write HTML and CSS you already know โ€” no new API to learn
โŸถ Full CSS layout engine: Flexbox, Grid, text-overflow, wrapping
โŸถ Any Google Font, Adobe Font, or custom typeface โ€” one parameter
โŸถ Go from HTML template to rendered image in under an hour
โŸถ Consistent, pixel-perfect output โ€” same result every render
โŸถ Pure REST API โ€” no dependencies, no binaries, no deploy issues
API integration

Send HTML.
Get an image URL back.

POST your HTML and CSS to the API. PeekShot renders it in a full browser environment with complete CSS support, then returns a hosted CDN URL you can use immediately. No storage setup. One request.

  • Full HTML5 and CSS3 support โ€” any valid markup renders correctly
  • Inject external CSS frameworks like Tailwind or Bootstrap
  • Dynamic content via template variables โ€” personalise every image
  • Set exact pixel dimensions for any output size โ€” OG, Twitter, LinkedIn
  • Retina output option for crisp 2x images on high-DPI displays
  • Returns a permanent hosted CDN URL โ€” embed directly in your app
generate-og.js
// Generate a dynamic OG image from HTML
const html = `<html>
  <head>
    <link rel="stylesheet" href="https://fonts.googleapis.com/
      css2?family=Inter:wght@400;700">
    <style>
      body { margin:0; font-family:'Inter',sans-serif; }
      .card {
        width:1200px; height:630px;
        background:linear-gradient(135deg,#1e3a5f,#7c22d9);
        display:flex; flex-direction:column;
        justify-content:flex-end; padding:80px; color:white;
      }
      h1 { font-size:64px; line-height:1.1; margin:0; }
    </style>
  </head>
  <body>
    <div class="card">
      <h1>${pageTitle}</h1>
      <p style="opacity:.6">peekshot.com ยท ${date}</p>
    </div>
  </body>
</html>`;

const { url } = await fetch(
  'https://api.peekshot.com/v1/html-screenshots', {
    method: 'POST',
    headers: { 'x-api-key': process.env.PEEKSHOT_KEY },
    body: JSON.stringify({ html, width:1200, height:630 })
  }
).then(r => r.json());
// โ†’ https://cdn.peekshot.com/img_og_k8x2.png
โœ“ 200 OK ยท 0.8s ยท cdn.peekshot.com/img_og_k8x2.png ยท 1200ร—630px
What you can build

Every image your app
needs to generate.

peekshot.com
Screenshot any website. Automatically.
OG / Social Share Image
Dynamic Open Graph images for any page. Personalised per URL with live title and metadata.
Certificate of completion
Jamie
Advanced React Development ยท 2026
Certificates & Badges
Personalised certificates, completion badges, and awards with user data injected dynamically.
๐Ÿ“Š Week in review
1,247 new signups
โ†‘ 34% vs last week
Stat & Data Cards
Turn numbers and metrics into shareable visual cards for Slack, email, or social โ€” from live data.
"Give it a URL, get a screenshot back. Simple. Elegant."
โ€” mtrifiro, AppSumo
Testimonial Images
Convert text reviews into polished visual testimonial cards for landing pages, ads, and social.
๐Ÿ“ฌ You're invited
Hi Jamie, join us for the product launch...
Register now โ†’
Email Graphics
Personalised email header images that bypass CSS limitations in email clients. Consistent everywhere.
Order #PK-2847
PeekShot Basic$9.00
Total$9.00
Receipts & Invoices
Generate PDF or image receipts from HTML templates with dynamic order data. Perfect for transactional emails.
Developer workflows

How developers use
HTML to Image.

๐ŸŒ
Dynamic OG images in Next.js
Generate unique Open Graph images for every page in your Next.js app without Vercel OG or Satori. Create an HTML template, inject page title and description, call PeekShot, cache the result. Works on any host.
Template HTML + page metadata โ†’ POST to /v1/html-screenshots โ†’ cache URL โ†’ return in <meta og:image>
๐ŸŽ“
Personalised certificate generation
Design your certificate in HTML and CSS, inject each user's name, course title, and completion date. PeekShot renders it as a print-quality PNG or PDF. No image editor, no server-side canvas required.
User completes course โ†’ inject name + date โ†’ POST to PeekShot โ†’ send download link
๐Ÿ“ฃ
Social media content at scale
Turn any data โ€” blog post titles, product names, customer reviews โ€” into on-brand social images. Define your template once, generate thousands of images by looping through your data and calling the API.
Data array โ†’ loop โ†’ inject each item โ†’ POST to PeekShot โ†’ store URLs โ†’ queue for posting
๐Ÿ“ง
Personalised email imagery
Email clients strip most CSS. Images don't. Generate personalised header images with the recipient's name, company, or custom data baked in. Consistent rendering across every email client.
Subscriber data โ†’ personalised HTML โ†’ POST to PeekShot โ†’ embed image URL in email send

Design once.
Generate infinitely.

Build your HTML template, call the API, get back a hosted image URL. 100 free renders to start. No credit card, no canvas API, no headaches.

Get free API key โ†’ Read the docs
100 free renders ยท No credit card ยท Full CSS support ยท CDN hosting included