Cardstock

Social cards as an API

Your links are showing up naked.

Every time someone shares a page without an og:image, it turns into a grey text row. Paste a URL: get a designed card back in about a second. One meta tag gives every page on your site its own.

No signup. Reads one public page, shows what it looks like today next to what it could.

01 — How it works

One tag. Every page gets a card.

  1. Add the tagPut one og:image in your layout, pointing at your site token and the page's own URL.
  2. We read the pageTitle, description, author, date and favicon come from the page itself. The accent colour comes from its theme-color, or a stable pick per domain.
  3. Cached at the edgeA card renders once, then every crawler gets it from cache. You're only billed for cards that were actually drawn.
<!-- in <head>, once, in your layout -->
<meta property="og:image"
      content="https://cardstock.dev/a/TOKEN.png?url={'{'}canonicalUrl{'}'}">

// or build one explicitly
GET /v1/card.png
  ?tpl=editorial
  &title=Shipping v2.0
  &author=Mara Voss
  &accent=E4572E
02 — Specimens

Five templates, five sizes, no stock gradients.

Every card below is rendered by the API right now. Pick a template, or let Cardstock choose one from the page.

Editorial template
editorialposts, docs, changelogs
Terminal template
terminaldev tools, CLIs, repos
Ticket template
ticketevents, launches, webinars
Stat template
statmetrics, results, reports
Quote template
quotetestimonials, pull-quotes
Sizes
og    1200×630
tw    1200×600
li    1200×627
sq    1080×1080
story 1080×1920
03 — The details

Built for the part nobody checks until launch day.

One site token, no secrets in HTML

Your token only works for URLs on your own domain, so you can ship it in markup. Need a one-off card? POST /v1/sign returns a signed URL that can't be edited or reused for anything else.

Brand kit

Set your accent, theme, kicker and logo once. Every card, on every page, picks it up with no query-string clutter.

A link checker that tells the truth

Paste any URL and see what X, LinkedIn and Slack will make of it, plus every tag problem, with a score. It's free and stays free.

Never a broken image

Page down, timeout, or over your monthly limit: you still get a clean fallback card, not a missing image on a launch tweet.

Emoji and long titles, handled

Emoji render as real glyphs. Titles are fitted and clamped by length instead of overflowing the edge. Latin scripts today; more on request.

04 — Versus the alternatives

Why not just screenshot the page?

CardstockScreenshot servicesBuild it yourself
Looks likeA designed card, readable at thumbnail sizeA shrunken web page nobody can readWhatever you have time for
SetupOne meta tagPer-page URL plumbingA weekend, then upkeep
Fields from the pageTitle, author, date, favicon, brand colourNone, it's pixelsYou write the parsing
SpeedEdge-cached, no headless browserSeconds per fresh shotDepends on your host
05 — Pricing

Pay for cards drawn. Cache hits are free.

Free
$0
  • 100 cards / month
  • All templates and sizes
  • Link checker
  • Small watermark
Try it above
Maker — 7 days free
$15 /mo
  • 5,000 cards / month
  • No watermark
  • 1 site token
  • Brand kit
  • Signed URLs
Studio
$49 /mo
  • 40,000 cards / month
  • No watermark
  • Unlimited site tokens
  • Brand kit
  • Signed URLs

Card required for the trial. Cancel in two clicks from your account page. Prices in USD.

06 — Questions

Fair questions.

Is the free plan really free?

Yes: 100 freshly drawn cards a month per site, with a small watermark in the corner. There's no card on file and no expiry.

Which frameworks does this work with?

Anything that can write a meta tag: Next.js, Astro, Remix, Rails, Laravel, WordPress, Hugo, plain HTML. The docs have copy-paste snippets for the common ones.

What counts as a card?

One freshly drawn image. Repeat requests for the same card, including every crawler that unfurls it, are served from cache and don't count.

What happens if I go over my limit?

Your pages keep working. Over-limit requests get a clean fallback card instead of a broken image, and we don't charge overage.

Does it support non-Latin languages?

Not yet. Latin scripts and emoji render today. If you need CJK, Arabic or Devanagari, tell us and it moves up the list.

How do I cancel?

From your account page, through the billing portal. You keep access until the period ends.