Open Graph tags in WordPress
WordPress core prints a document title. og:title, og:description, og:image, and og:url come from a theme or an SEO plugin, written into the head on wp_head(). Publish the page, then paste the public URL into the checker above.
Where the tags come from
- Printed from wp_head. Themes that follow the theme handbook call wp_head() inside the head: header.php on a classic theme, and the document head on a block theme. Plugins attach to that action. A tag a page builder inserts only in the browser, after load, is absent from the HTML a crawler fetched. View source, or curl the URL, and read the head. With no SEO plugin, a child theme can print the tags on wp_head. A child theme keeps the hook when the parent theme updates. Skip the hook when Yoast or Rank Math is already printing the same properties. The Open Graph protocol gives the first tag preference when they conflict, and this checker reads the first og:title, og:description, and og:image. The How to Add Open Graph Tags page is the four tags and the image URL rules. The Next.js Open Graph page is the same fields as a metadata export.
add_action('wp_head', function () { if (!is_singular()) return; $image = get_the_post_thumbnail_url(null, 'full'); echo '<meta property="og:title" content="' . esc_attr(wp_get_document_title()) . '">' . "\n"; echo '<meta property="og:description" content="' . esc_attr(wp_strip_all_tags(get_the_excerpt())) . '">' . "\n"; echo '<meta property="og:url" content="' . esc_url(get_permalink()) . '">' . "\n"; echo '<meta property="og:type" content="article">' . "\n"; if ($image) echo '<meta property="og:image" content="' . esc_url($image) . '">' . "\n"; echo '<meta name="twitter:card" content="summary_large_image">' . "\n"; }); - Yoast SEO. Yoast's help says Open Graph output is on by default, under Yoast SEO → Settings → Site features → Open Graph data. Their functional spec, when that output is enabled, lists og:locale, og:type, og:title, og:url, and og:site_name on pages that are not error templates. og:type is website on the homepage, profile on a user archive, and article on posts, pages, and other templates. og:title uses the first value that exists: a Facebook title on the page, a social title template, an SEO title on the page, an SEO title template, then %%title%% %%page%% %%sep%% %%sitename%%. og:url is the canonical URL, or the series root on paginated content. og:description uses a Facebook description, then a social description template, then the meta description, then the excerpt on a post. og:image uses a Facebook image on the Social tab, then the featured image on a post, then a prominent image in the content, then the social default image, then the site default at SEO → Social → Facebook → Default image. Yoast SEO WooCommerce adds the first product-gallery image to that list. og:image:width and og:image:height are printed when Yoast knows both. article:published_time is printed on posts. Yoast warns that a second plugin writing Open Graph can make a network use the wrong text or image. Turn the extra output off. Their spec removed og:image:secure_url in Yoast SEO 14.0, so a secure_url tag beside theirs is coming from the theme or another plugin.
- Rank Math. Rank Math's Open Graph guide says the plugin writes og:title, og:type, og:url, og:description, and og:image, and that og:type follows the content: website, profile, article, or product. The image order they publish is the Open Graph image on the post, then the featured image, then the first image in the post, then the default thumbnail at Rank Math SEO → Titles & Meta → Global Meta → OpenGraph Thumbnail. They recommend 1200×630, and they name JPEG, PNG, and GIF, the formats in Facebook's image guide. og:site_name comes from Rank Math → Titles & Meta → Local SEO, then the site title in Settings → General. The Twitter tab can reuse the Facebook title, description, and image, or replace them. The card types they list include Summary Card with Large Image, which is the summary_large_image value. A homepage that lists the latest posts has its own thumbnail under Titles & Meta → Homepage. Use Yoast or Rank Math for these tags, and turn off a theme setting that prints a second og:image. The X (Twitter) Link Preview page is what that twitter:card value does.
- Check the public URL. Paste the public post URL. Peekly fetches the HTML and grades og:title, og:description, og:image, and twitter:card. A title that is only the site name is a template that never received the post title. An image URL that is the site logo is the default image, which means the featured image and the social image were both empty. When the source has two og:image tags, this checker keeps the first. A page cache can keep serving the old head after you save. If the result still shows the old title, the HTML being fetched is the old HTML. The Open Graph Image Not Updating page is the case where the HTML is already right and the share still shows the previous picture.
Tags covered: og:title · og:description · og:image · og:url · og:type · og:site_name · twitter:card
More checkers
Twitter Card ValidatorOpen Graph CheckerLinkedIn Link Preview CheckerDiscord Embed PreviewWhatsApp Link Preview CheckerSlack Link Preview CheckeriMessage Link Preview CheckerFacebook Link Preview CheckerOpen Graph Image SizeTelegram Link Preview CheckerReddit Link Preview CheckerNext.js Open GraphRefresh a Link Preview CacheBluesky Link Preview CheckerMastodon Link Preview CheckerMicrosoft Teams Link Preview CheckerFix a Broken Open Graph PreviewInstagram Link Preview CheckerPinterest Link Preview CheckerTikTok Link Preview CheckerYouTube Link Preview CheckerThreads Link Preview CheckerSnapchat Link Preview CheckerHow to Add Open Graph TagsOpen Graph Image Not UpdatingDiscord Link PreviewX (Twitter) Link PreviewShopify Open GraphAll platforms
What each platform reads
- X / Twittertwitter:card, twitter:* → og:* fallback1200×630 (min 300×157), < 5 MB
- Facebookog:title, og:description, og:image1200×630, 1.91:1
- LinkedInog:title, og:image (og: only)1200×627, 1.91:1
- Discordog:site_name, og:*, theme-color, twitter:cardLarge image needs summary_large_image
- Slackog:site_name, og:title, og:description, og:image1200×630
- WhatsAppog:title, og:description, og:imageKeep < 300 KB
Guidance based on each platform's public documentation and observed behavior. Platforms change their rules without notice.
FAQ
+Is Peekly free?
Yes. Checking a single URL is free forever — no signup and no limit on one-off checks. Batch watching and monitoring may arrive later as a paid Pro plan; the free single-URL tool stays.
+Why does my link show no image when I share it?
Usually one of four things: there's no og:image tag, the image URL is relative instead of absolute, the image is behind a login, firewall or bot block, or the file is too big or in an unsupported format like SVG. Peekly checks all four and tells you which one it is.
+What size should my og:image be?
1200×630 pixels (a 1.91:1 ratio) as a PNG or JPG under about 300 KB. That size works for large cards on X, Facebook, LinkedIn, Discord, Slack and WhatsApp.
+Do I need twitter: tags if I already have Open Graph tags?
X reads og:title, og:description and og:image as fallbacks, but you still need twitter:card set to summary_large_image if you want the big image card. Without it, X shows a small thumbnail.
+I fixed my tags but the old preview still shows. Why?
Platforms cache link previews, sometimes for days. Facebook and LinkedIn let you force a refresh with their own debugging tools. On X, Slack and Discord the cache usually expires on its own, or you can add a query string such as ?v=2 to the URL.
+Do you store the pages I check?
No. We fetch the page once to read its <head>, show you the result, and don't save the page or the result. We only fetch public http(s) URLs, and private or internal addresses are blocked.
+Are the previews pixel-perfect?
They're close approximations of each platform's current card layout, built from the same tags the platforms read. Platforms change their designs from time to time, so treat them as a very good guide rather than a screenshot.
$9
One time
A written fix for the batch.
Up to 25 URLs. We check og:image, Twitter cards, size, redirects, and cache, then send copy-paste meta tags within 48 hours. The free single-URL check stays free.