Link Preview APIs: Speed, Quality, and Pricing Compared (2026)
Blog16 min read
Link Preview APIs: Speed, Quality, and Pricing Compared (2026)
Compare Microlink, LinkPreview.net, SnapRender, ScreenshotOne, and Urlbox for link preview generation. Pricing, speed benchmarks, image quality, and a production-ready code example, with prices checked October 2026.
If you need to generate link preview images for your app, SnapRender combines full Chromium-rendered thumbnails with built-in metadata extraction at the lowest entry price here: $9/month for 2,000 previews, against Microlink's $49/month Pro plan, with ad blocking, cookie banner removal, and device emulation on every plan. No separate OG scraping library needed. Microlink also returns metadata and screenshots from one call, and its 25-requests-a-day free plan is a good fit for small apps.
Let me break down each option with real numbers (prices from each provider's public pricing page, checked October 7, 2026).
Try it on your URL
Live capture, no signup. You get the screenshot and the exact API call that produced it.
This is the exact API call that made the image above. Swap in your key and it runs anywhere.
The dedicated link preview APIs (Microlink, LinkPreview.net) give you a simpler integration since metadata and thumbnails come back in one response. Microlink's screenshot controls are close to a screenshot API's; LinkPreview.net trades control for simplicity.
SnapRender also handles metadata extraction through its content extraction endpoint. You get both the screenshot and OG metadata from the same platform, with full control over rendering quality, device emulation, and ad blocking. No third-party OG library needed.
Pricing Comparison
This is where things get interesting. Let me normalize everything to a per-request cost. For more granular pricing analysis, see Screenshot API Pricing Compared.
Service
Plan
Monthly Requests
Monthly Price
Cost Per Request
SnapRender
Free
200
$0
Free forever
SnapRender
Starter
2,000
$9
$0.0045
SnapRender
Growth
10,000
$29
$0.0029
SnapRender
Business
50,000
$79
$0.0016
SnapRender
Scale
200,000
$199
$0.0010
Microlink
Free
about 750 (25 a day)
$0
Free
Microlink
Pro
46,000
$49
$0.0011
Microlink
Pro
84,000
$90
$0.0011
LinkPreview.net
Pro (commercial)
up to 1,000 an hour
$25
Rate-limited, not metered
ScreenshotOne
Basic
2,000
$17
$0.0085
Urlbox
Hi-Fi
5,000
$49
$0.0098
DIY Puppeteer
Self-hosted
Unlimited
~$20-100/mo server
Varies
A few things stand out:
LinkPreview.net is the cheapest at high volume, since its plans cap requests per hour rather than per month, but its screenshot quality is limited and the two cheaper plans are for personal use only. No device emulation, no ad blocking, no custom viewports. If you need a quick metadata-plus-thumbnail response and don't care about controlling the output, it works.
SnapRender is the most cost-effective for quality screenshots. At the Growth tier ($29/10K), you're paying $0.0029 per screenshot with full Chromium rendering, device emulation, ad blocking, and cookie banner removal. Unlike other screenshot APIs, you don't need a separate OG library because content extraction handles metadata natively. For even more detail, see Cheapest Screenshot APIs: Real Pricing Breakdown.
Microlink is the most polished all-in-one solution, and its free plan (25 requests a day) covers small apps. Its paid plans start at $49/month for 46,000 requests, so it is cheap per request at high volume but costs more than SnapRender below that: at 10,000 requests, Microlink costs $49 versus SnapRender's $29. Microlink also stops at the plan cap rather than billing overage.
DIY Puppeteer looks free but isn't. A server that can run headless Chrome reliably costs $20-100/month, and you'll spend engineering time on monitoring, restarts, memory management, and scaling. See Puppeteer on Lambda vs Screenshot API for the full cost breakdown.
Speed Comparison
I tested each service against the same set of 50 URLs (mix of news sites, SaaS landing pages, blogs, and documentation).
Service
Median Response Time
95th Percentile
Cached Response
Microlink
3.2s
6.8s
~1s
LinkPreview.net
2.1s
4.5s
~0.8s
SnapRender
2.8s
5.1s
<200ms
ScreenshotOne
3.5s
7.2s
~1.2s
Urlbox
3.1s
6.0s
~0.9s
DIY Puppeteer
4.2s
12.0s
N/A (build your own)
SnapRender's cached response time stands out at under 200ms. If your link previews show the same URLs repeatedly (common in apps with shared links), the cache hit rate will be high and most responses will be fast. Cached screenshots don't count against your quota, so repeated requests for popular URLs are effectively free.
DIY Puppeteer has the worst p95 because you're running a single Chrome instance. Heavy pages that load slowly block your entire pipeline. The API services distribute load across infrastructure and handle timeouts more gracefully.
Image Quality
For link previews, image quality matters. A blurry or incorrectly rendered thumbnail makes your app look broken.
Service
Rendering Engine
Retina Support
Quality Notes
Microlink
Chromium
No
Good, but limited viewport control
LinkPreview.net
Unknown
No
Basic quality, no customization
SnapRender
Chromium (latest)
Via 2x viewport
Full Chromium rendering, sharp output
ScreenshotOne
Chromium
Yes
Good quality
Urlbox
Chromium
Yes
Excellent quality
DIY Puppeteer
Chromium
Yes (manual)
Depends on your setup
For link preview cards, you usually display images at 400-600px wide. At that size, the differences in rendering quality are minimal across the Chromium-based options. The main differentiator is whether you can control ad blocking and cookie banners, because those overlays ruin the preview.
SnapRender handles both: block_ads: true strips ad scripts, and block_cookie_banners: true removes GDPR/consent overlays. The result is a clean screenshot of the actual page content, not a cookie consent dialog.
Building a Link Preview Endpoint with SnapRender
Here's a production-ready link preview endpoint using SnapRender for both thumbnails and metadata extraction. No external OG library needed.
import express from 'express';
import { SnapRender } from 'snaprender';
import Redis from 'ioredis';
const app = express();
const redis = new Redis(process.env.REDIS_URL);
const snap = new SnapRender({ apiKey: process.env.SNAPRENDER_API_KEY });
const CACHE_TTL = 48 * 60 * 60; // 48 hours
app.get('/api/link-preview', async (req, res) => {
const { url } = req.query;
if (!url) return res.status(400).json({ error: 'url is required' });
const cached = await redis.get(`lp:${url}`);
if (cached) return res.json(JSON.parse(cached));
// Extract OG metadata via SnapRender content extraction
let metadata = {};
try {
const extractRes = await fetch(
`https://app.snap-render.com/v1/extract?url=${encodeURIComponent(url)}&formats=metadata`,
{ headers: { 'X-API-Key': process.env.SNAPRENDER_API_KEY } }
);
const data = await extractRes.json();
metadata = {
title: data.metadata?.title || new URL(url).hostname,
description: data.metadata?.description || null,
siteName: data.metadata?.siteName || new URL(url).hostname,
};
} catch {
metadata = {
title: new URL(url).hostname,
description: null,
siteName: new URL(url).hostname,
};
}
// Generate screenshot thumbnail
let thumbnail = null;
try {
const buffer = await snap.capture({
url,
format: 'webp',
width: 1200,
height: 630,
blockAds: true,
blockCookieBanners: true,
});
// In production, upload buffer to your CDN
thumbnail = `data:image/webp;base64,${buffer.toString('base64')}`;
} catch {
thumbnail = null;
}
const preview = { url, ...metadata, image: thumbnail };
await redis.set(`lp:${url}`, JSON.stringify(preview), 'EX', CACHE_TTL);
res.json(preview);
});
app.listen(3000, () => console.log('Link preview service on :3000'));
Both the metadata extraction and the screenshot come from SnapRender. One platform, one API key, one bill. For more on the Node.js SDK, see Screenshot Any URL in 3 Lines of Code.
If you're generating previews for a list of URLs (importing bookmarks, crawling a feed, processing a CSV), SnapRender's batch endpoint handles up to 50 URLs in a single request:
No need to manage concurrency or rate limiting. The API handles parallel processing and notifies your webhook when all captures are ready. See the Batch API Optimization Guide for best practices.
Making the API Call Directly
If you prefer to skip the SDK, SnapRender's API is a single GET request:
That's it. No POST body, no JSON payload, no sessions. One GET request, one image back. For more on command-line captures, see How to Automate Screenshots with cURL.
When to Use What
Use Microlink if:
You want the simplest possible integration (one API call for everything)
You don't need device emulation or ad blocking
Budget isn't your primary concern
You're building a prototype or low-volume feature
Use LinkPreview.net if:
You need high volume at low cost
Basic metadata + thumbnail is sufficient
You don't need control over screenshot quality
Use SnapRender if:
You want both metadata extraction and high-quality screenshots from one platform
You need device emulation, ad blocking, or cookie banner removal
The SnapRender approach saves $20/month versus Microlink and hundreds of dollars in engineering time versus DIY. At 50,000 requests the two are close: SnapRender's Business plan is $79/month versus $90 for Microlink's 84,000-request step.
Implementation Tips
A few things I've learned from running link preview services in production:
Cache aggressively. Most URLs don't change their OG tags frequently. A 48-hour cache TTL means 95%+ of requests hit cache, and your screenshot API bill stays predictable. SnapRender's built-in cache with configurable TTL means cached responses return in under 200ms and don't count against your quota.
Generate screenshots asynchronously. Don't make users wait 3 seconds for a fresh screenshot. Return the metadata immediately and generate the thumbnail in a background job. Update the preview when the screenshot is ready. SnapRender's webhooks can notify your backend when a batch of previews is done.
Use WebP format. WebP images are 25-35% smaller than PNG at the same visual quality. Same screenshot, less bandwidth on your CDN.
Set a budget alert. If your app has user-submitted URLs, you can't predict volume. SnapRender uses hard quota caps (no overage charges), so you'll never get a surprise bill. When you hit the limit, the API returns a 429, and you serve a graceful fallback.
Fallback gracefully. When everything fails (URL is down, screenshot times out, OG tags are missing), show a preview card with just the domain name and a generic icon. A partial preview is always better than a broken one.
Frequently Asked Questions
What is the best link preview API in 2026?
For most use cases, SnapRender offers the best combination of quality, features, and pricing: screenshot generation and OG metadata extraction on every plan, starting at $0/month with 200 free captures. Microlink is the strongest dedicated alternative, especially on its free plan.
Can I extract Open Graph metadata without a screenshot?
Yes. SnapRender's content extraction endpoint returns page metadata (title, description, OG tags, favicon) without generating a screenshot. This is useful when you only need the text data and already have a cached thumbnail.
How much does a link preview API cost?
Prices range from free to a few hundred dollars a month depending on volume. SnapRender starts free (200/month) and scales to $199/month for 200,000 captures. Microlink is free for 25 requests a day and $49/month for 46,000. See Screenshot API Pricing Compared for a full breakdown.
What's the fastest way to generate link previews?
SnapRender's cached responses return in under 200ms. For fresh captures, expect 2-5 seconds. Cache aggressively with a 24-48 hour TTL to keep most responses fast.
Can I generate link previews in bulk?
Yes. SnapRender's batch endpoint accepts up to 50 URLs per request and processes them in parallel. Combined with webhooks, you can generate previews for large URL lists without managing concurrency yourself.
Bottom Line
The link preview API space has matured to the point where rolling your own is hard to justify unless you have very specific needs. SnapRender at $9-29/month gives you Chromium-rendered thumbnails, built-in OG metadata extraction via content extraction, ad blocking, cookie banner removal, device emulation, batch processing, and webhooks. Everything Slack and Discord show their users, without any of the infrastructure headaches.
Get your free API key and start generating link previews in under 5 minutes. To see what your own links look like when shared, test them with the free OG image checker.
Skip the spreadsheet. Test the API in two minutes.