LinkPeek is a production-grade link unfurl API: one endpoint that fetches a URL, parses its HTML, and returns normalized link-preview metadata — the same data Slack, iMessage, and social platforms use to render a rich card. It handles the messy parts (Open Graph vs Twitter Cards vs bare meta tags, relative favicon URLs, redirects) so you don't have to. This free tool is the same engine, so the output you see here is identical to what your code receives.
How it works
Give LinkPeek a public URL and it fetches the page (with an SSRF guard and size/timeout caps), extracts Open Graph, Twitter Card, and standard meta tags, resolves the favicon and preview image to absolute URLs, and returns one tidy JSON object. For JavaScript-heavy single-page apps, add render=true to render the page in headless Chromium first. This tool wraps a single GET /unfurl request.
What you get back
- Title, description, site name, canonical URL, and locale
- Preview image and favicon, resolved to absolute URLs
- Full Open Graph (
og:*) and Twitter Card (twitter:*) tag sets - Theme color, author, and any oEmbed discovery link
Use cases
- Rich link previews in chat apps, comment systems, and CMS editors
- Bookmarking and read-it-later apps
- Auditing your own pages' Open Graph tags before sharing
- Enriching links for AI agents that summarize or browse the web
FAQ
- Is the link preview tool free?
- Yes — free to use, no signup. The LinkPeek API behind it has a free tier of 50 unfurls/month; paid plans start at $5/mo for 1,000 and scale to 60,000.
- Does it run JavaScript?
- By default it parses the served HTML (fast, cheap). For SPAs that inject meta tags client-side, add
render=trueto render in headless Chromium first. - Can I unfurl several URLs at once?
- Yes —
POST /unfurlwith{ "urls": [...] }(up to 10) returns them in one response. - What about private or login-gated pages?
- LinkPeek only fetches public pages, and internal/private hosts are blocked for security. Pages behind a login can't be unfurled.