Guide
Ghost social share image
Ghost prints the Facebook card and the X card from the post settings menu, and the theme outputs them with {{ghost_head}}. The site-wide cards under General are what Ghost’s help describes for the site address. Publishing a new image does not clear the card Facebook already stored.
The Facebook card and the X card on a post
Ghost’s post settings article puts the share fields in the post settings menu in the editor. The article does not name the button that opens that menu. The sections it does name:
- Meta data. Custom meta title and description, plus a canonical URL. Ghost says search engines use this, and that it is also used to populate dynamic links when the content is shared.
- X card. Custom structured data for X. “If the X data is not set, the custom meta data is used.”
- Facebook card. Custom data for Facebook Open Graph. The article does not say this card falls back to the X card.
The SEO article says the same menu is where you add custom meta data and social media metadata on each post or page. If you leave it blank, “Ghost automatically uses data available from the content on the page as a fallback.” It also says a search engine may still show something else. Neither help article lists the image order. Ghost’s editor article calls the post image a feature image and says that, once it is uploaded, the pencil icon opens the image editor. It does not name the control that adds the feature image.
The order below is the current meta helpers on Ghost’s main branch, commit 268846ab (Oct 22, 2026), in og-image.js and twitter-image.js. For a post or a page, og:image is:
- The Facebook card image.
- The feature image.
- The site Facebook card image.
- The publication cover image.
twitter:image is a separate list. It does not copy the Facebook card image:
- The X card image.
- The feature image.
- The site X card image.
- The publication cover image.
So an empty X card, a filled Facebook card, and no feature image does not put the Facebook file on twitter:image. The help line about X falling back to custom meta data matches the title helper, not the image helper. In title.js, the Open Graph title is the Facebook card title, then the meta title, then the post title. The X title is the X card title, then the meta title, then the post title. It does not fall from the X title back to the Facebook title.
Descriptions, from description.js, follow the same split. For Open Graph or X, Ghost uses that card’s description, then the custom excerpt, then the meta description, then a 50-word excerpt of the post, then the site description. The X description does not copy the Facebook description.
structured-data.js sets twitter:card to summary_large_image when there is an X image or a cover image, and to summary otherwise. On a post, that cover value is the feature image. Ghost’s help articles do not offer a Large or Small card-size control. Author and tag pages use a different order in those same files. This page is the post, page, and homepage case.
Ghost’s publishing article says Preview, in the top-right of the editor (or Ctrl/Cmd+P), includes a social preview. That preview is Ghost’s. It is not the card Facebook stored.
Site-wide cards, and what they are not
Ghost’s site setup article is the menu:
- Settings → General → Title & description. The publication title and description, used across the site.
- Settings → General → Meta data. Custom meta data for search engines. The SEO article calls this the metadata for the homepage.
- Settings → General → Meta data → X card. How the site address renders on X.
- Settings → General → Meta data → Facebook card. A custom image, title, and description. Ghost says this is rendered in the Facebook card when the site address is shared. The help article does not say every post inherits it.
The theme docs name the same values @site.og_image, @site.og_title, @site.og_description, @site.twitter_image, @site.twitter_title, and @site.twitter_description, and say they are set under “Site Meta Settings within General Settings” (@site). The help article’s menu name is Meta data, not a separate Site Meta Settings screen. On the homepage, the image helper uses the site Facebook image, then the publication cover. The X image on the homepage uses the site X image, then the cover. It does not copy the Facebook image.
The meta helper also uses those site images on a post or page that has no Facebook or X image and no feature image. Ghost’s help does not describe that post fallback. If you set a site card and a post still shows something else, the post’s own card or its feature image is ahead of the site image in the list above.
Settings → General → Social accounts is the Facebook and X profile links. Ghost says those links are tied to icons in the theme. In the tag output they become article:publisher and twitter:site. They are not the share image.
The publication icon, logo, and cover are a different screen. Ghost’s design settings article puts them at Settings → Site → Design & branding → Customize. The publication icon is the favicon, square, at least 60px. The logo is the theme logo. The publication cover is an optional banner on index pages, and Ghost recommends a width of at least 1500px. That article does not call the cover the share image. The @site docs still say the cover image comes “from General settings,” which is not the Design & branding path. The image helper uses the cover only after the social images, and on a post only after the feature image. Do not upload the share file as the icon and expect og:image to change.
What {{ghost_head}} prints
Ghost’s {{ghost_head}} docs say the helper belongs just before </head> in default.hbs. It outputs the meta description, schema, Facebook Open Graph and X card tags, the RSS paths, the Ghost API scripts, and anything in code injection, both the global block and the page block. A custom theme that removes the helper prints none of those tags. Official themes include it. The image helper turns a stored path into an absolute URL before the tag is written.
Code injection, in the post settings menu or for the whole site, is also emitted by {{ghost_head}}. A second og:image in that block gives crawlers two images, and they can keep the first. Leave one set. The same trap on WordPress is in WordPress share image. A Wix site uses a different screen: Wix social share image.
Private site mode turns the tags off. Ghost’s site setup article says enabling private mode from Settings → Membership → Access switches off all search engine optimization features. A crawler then does not get the card. A wide PNG or JPEG is still the practical file: OG image size and OG image format. The Open Graph image resizer crops to 1200×630 in the browser.
Publish, then ask Facebook to look again
Read the published URL, not the editor preview:
curl -sL https://example.com/your-post | grep -iE 'og:image|twitter:image|twitter:card'
You want one og:image and, when you set an X image, one twitter:image, both absolute https:// URLs. If this is empty, {{ghost_head}} is missing or the site is private. If this is the old file, the post’s Facebook card, feature image, or site card is still the previous upload, or the post is not published.
If this is already the new file and Facebook shows the old card, Ghost’s post settings article says Facebook caches the Open Graph data when the post is published, and to update a published post with the Facebook Sharing Debugger. CardScope does not clear that cache. The other apps, and the ones with no debugger, are in clear Open Graph cache. If the picture is missing for a different reason, walk og:image not showing.
FAQ
Which image does a Ghost post use?
For og:image: the Facebook card image, then the feature image, then the site Facebook image, then the publication cover. For twitter:image: the X card image, then the feature image, then the site X image, then the cover. Ghost’s help articles do not list that order. It is the meta helpers on main at commit 268846ab. The X image does not copy the Facebook image.
Where is the site-wide card?
Settings → General → Meta data → Facebook card and X card. Ghost’s help describes those for the site address, and the SEO article says the meta settings are for the homepage. The publication icon under Settings → Site → Design & branding is the favicon, not og:image.
I changed the image and Facebook still shows the old one.
Confirm the live tag with the curl line above. Ghost says Facebook caches the card at publish time, and to run the published URL through the Facebook Sharing Debugger. Other apps are in clear Open Graph cache.
What does a CardScope check cost?
Previews for X, LinkedIn, Slack, Discord, iMessage, Bluesky, Threads, Mastodon, WhatsApp, Telegram, and Microsoft Teams, plus the fix checklist, are Pro: $19 once via Stripe Checkout. No account. A sample report shows the shape of the result before you pay. A free partial check names whether og:image and og:title are set. We parse HTML in memory and discard it — we do not store the page.