Open Graph and Twitter Card Generator

Generate the social sharing tags a page actually needs, without the duplicates that drift apart.

Anything you want recorded with the run. The fields below build the tags.

The URL people should land on when they click.

Must be absolute, including https://

Read out by screen readers on the card.

With the @, for example @gravityhexa

100 runs left today · sign up for more

About this tool

Generates the Open Graph and Twitter Card tags for a page.

**It deliberately emits fewer tags than most generators.** X reads `og:title`, `og:description` and `og:image` when the `twitter:` equivalents are absent, so emitting both is emitting the same value twice. Every duplicate is another place for the two to disagree the next time somebody edits one — which is how a page ends up showing one title on Facebook and a different one on X.

So the output is Open Graph as the source of truth, plus `twitter:card`, which is the single value with no fallback and without which a link posts as plain text with no preview at all.

Lengths are checked against where each platform truncates, the image URL is checked for being absolute, and `og:image:alt` is included because the picture carries most of the message on a large card and a screen reader gets nothing without it.

Common questions

Why so few twitter: tags?

Because X falls back to og: for everything except the card type. Duplicating them adds no capability and creates a second copy to keep in step, which nobody does.

What image size should I use?

1200 by 630, under 5MB. That is 1.91:1, which fills a large card on X and Facebook without cropping. Smaller images are either upscaled or fall back to the small card format.

Why does og:url matter?

It is the canonical URL for sharing. Without it, the same page shared with different tracking parameters accumulates separate share counts and separate comment threads on each platform.

How long should the description be?

Around 150 to 160 characters. LinkedIn cuts near 150, Facebook varies by layout, and X shows very little of it. Front-load the point rather than optimising for a specific limit.