Start from

Import from an existing <head>
Page basicstitle, description, canonical
0 chars

Search engines cut titles by pixel width (roughly 580px on desktop). The pixel count is an estimate.

0 chars

Roughly 920px on desktop and 680px on mobile before it is cut. Google may write its own snippet.

The one address you want search engines to treat as the real one.

Belongs on your <html> element (shown under the output). Examples: en, en-GB, pt-BR.

Browser toolbar colour on phones.

Google ignores the keywords tag. Leave it empty unless another system you use reads it.

Robotsindex, follow

With the defaults (index, follow) no robots tag is written, because that is what search engines assume.

Open GraphFacebook, LinkedIn, Slack, WhatsApp

Written like en_US.

A full https:// address. 1200 × 630 pixels works well. The image is not uploaded: you only type its address.

X (Twitter) cardsummary_large_image
Icons and manifestfavicon, apple-touch-icon

180 × 180 PNG.

Alternate languages (hreflang)none

Each language version should list all versions, itself included. Use full URLs.

Structured data (JSON-LD)off
  • 100% Free
  • No Sign-Up
  • No Credit Card
  • No Free Trial
  • No Pro Tier
  • No Watermarks

Nothing is uploaded. Just open it and start.

Write meta tags and Open Graph cards, and see how they look

Free, no sign-up, no upload. Fill in your page details and get clean, correctly escaped head tags, with a preview of the Google result and the cards that Facebook, LinkedIn, X, Slack and WhatsApp will show. Previews are approximate and the length checks are guidance.

Live previews

Google result (desktop and mobile), Facebook and LinkedIn, X, Slack and WhatsApp cards, with pixel-based length checks.

Three output formats

HTML head tags, a Next.js metadata and viewport object, or a plain list, with warnings for the usual mistakes.

Import and share

Paste an existing head to fill the form, start from a blog, product or landing preset, or share the form as a link.

Private by default

Runs in your browser. Images are only requested from their host when you press Load image preview.

Frequently asked questions

What does this tool write?
The <head> tags that describe a page: title, description, canonical link, robots, viewport, theme colour, author, Open Graph (Facebook, LinkedIn, Slack, WhatsApp), the X (Twitter) card, favicon and apple-touch-icon links, hreflang alternates and, if you want it, one JSON-LD block (WebSite, Organization, Article, Product or FAQPage). You can copy it as HTML, as a Next.js metadata object, or as a plain list.
How accurate are the Google, Facebook, X and Slack previews?
They are approximations. The Google preview cuts the title and description by measured pixel width in an Arial-like font (about 580px for a desktop title, 920px for a desktop description, 680px on mobile). Google uses its own fonts, may rewrite titles and snippets, and changes layouts, so treat the cut-off as guidance. The social cards follow each network's usual layout; real cards also depend on caching and app versions.
Does the page contact the image's website?
Only when you press "Load image preview". You type an image address; nothing is fetched until you ask. Pressing the button makes your browser request that address, so the image's host sees your IP address and browser details. Nothing is sent to us, no image is uploaded or stored, and editing the address clears the preview until you load it again.
Can I import tags I already have?
Yes. Paste the contents of a <head> into "Import from an existing <head>" and the form is filled from it. The text is read by a small built-in reader, never by the browser's page parser, so scripts in it do not run and nothing is fetched. Tags with no matching field (stylesheets, generators, extra robots bots) are listed, repeated tags are reported, and Undo restores your previous form.
Is everything escaped safely?
Yes. Quotes, ampersands and angle brackets in attribute values and the title are turned into entities, line breaks are removed from single-line fields so a value cannot add a tag, and JSON-LD escapes < > & and the Unicode line separators so a value can never close the script tag. Always read the result before publishing, as you would any generated markup.
Does Google use the keywords tag?
No. Google has said it ignores meta keywords, and most other search engines do too. The field is there for the few systems that still read it, and the checks remind you.
Why do some fields fall back to others?
Open Graph title, description and URL use the page title, description and canonical URL when you leave them blank, and the X card uses the Open Graph values the same way, which is how the networks read them. The placeholder in each box shows the value that will be used. JSON-LD boxes borrow the same way.
Are my entries saved or shared?
Your draft is kept in this browser (localStorage) so a reload brings it back; nothing is uploaded. "Copy share link" puts the form text in the part of the address after #, which browsers never send to a server. A link opened from someone else is not saved over your draft until you edit it. It's free with no sign-up.

Spotted a bug or have a suggestion?

Found something broken, have an idea, or just want to say thanks about any of our tools? Every message reaches a real person.