Chapter 4 of 5 · SEO for Thai Websites — Getting Google to Find, Understand and Choose Your Pages
Structured data and sharing: JSON-LD, Open Graph and share cards that actually show
Tell Google whether a page is an article, a shop or an organisation with JSON-LD; tell Facebook, LINE and X how to draw the card with Open Graph. Image-size rules, what Google no longer shows, and the lesson of a share image that never existed.
This chapter is about two sets of data readers never see on the page but that shape how the site looks elsewhere. The first, structured data, is for Google. The second, Open Graph tags, is mainly for apps like Facebook, LINE and X. Adding one does not give you the other.
| Structured data (JSON-LD) | Open Graph (og:) | |
|---|---|---|
| Read by | Mainly Facebook, LINE, X and chat apps (Google may also read og:title, chapter 3) | |
| Used for | Saying what the page is, and becoming eligible for rich results | The title, description and image of the card when a link is shared |
| Lives in | <script type="application/ld+json"> | <meta property="og:…"> in <head> |
4.1 What structured data is — and is not
Structured data is information written in schema.org’s vocabulary that says plainly whether a page is an article, a shop, a product or an organisation. Google recommends JSON-LD, since it sits apart from the HTML as one block.
Rules to remember:
- It must match what people see on the page. Google forbids marking up information readers cannot see, even if it is accurate, and forbids empty pages made just to hold structured data.
- Required properties must be complete for a page to be eligible for rich results — and in Google’s words, structured data “enables a feature to be present, it does not guarantee that it will be present”.
- Test with Google’s Rich Results Test before going live.
An Article in JSON-LD:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Choosing a laptop for video editing",
"image": ["https://example.com/images/laptop-16x9.jpg"],
"datePublished": "2026-09-24T08:00:00+07:00",
"author": [{ "@type": "Person", "name": "Somchai Jaidee", "url": "https://example.com/authors/somchai" }]
}
4.2 The types Thai sites use most
| Type | Required | Recommended, and where Thai sites slip |
|---|---|---|
| Article, NewsArticle, BlogPosting | none | headline; image in several ratios (16x9, 4x3, 1x1), each at least 50,000 pixels (width × height); datePublished and dateModified with a time zone such as +07:00; author with the bare name |
| LocalBusiness (shops, clinics, hotels) | name, address | phone numbers with the country code +66 instead of the leading 0 |
| Organization | none | a logo of at least 112x112 px |
Honorifics: Google wants author.name to hold only the name — no honorifics, job titles or publisher. Thai back-ends often add นาย, นางสาว or ดร. (“Mr”, “Miss”, “Dr”); strip them, and use the separate honorificPrefix property if you want one.
Time zones: without one, Google falls back to the time zone used by Googlebot, which is not Thai time. End Thai times with +07:00.
4.3 What Google no longer shows
Many SEO guides still recommend FAQ and HowTo markup, but neither appears as a rich result any more.
| Type | Google stopped showing it |
|---|---|
| FAQPage | 7 May 2026 |
| HowTo | September 2023 |
FAQ had already been limited long before it ended: from August 2023 Google showed it only for well-known, authoritative government and health sites. For most sites it stopped appearing in 2023.
Keeping it does no harm, but it no longer changes the result. Do not pay anyone to add it.
4.4 Open Graph: the card when a link is shared
The basic tags every page should carry:
<meta property="og:title" content="Khao Man Gai Pratunam, Sukhumvit branch">
<meta property="og:description" content="Poached and fried chicken rice, the original sauce">
<meta property="og:image" content="https://example.com/images/sukhumvit-1200x630.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:url" content="https://example.com/branches/sukhumvit">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary_large_image">
Each app reads them differently:
- Facebook reads the full set; without
og:typeit assumeswebsite, and it counts shares atog:url. - LINE uses only
og:title,og:descriptionandog:image; withoutog:titleit falls back to<title>. - X reads
twitter:tags first and falls back toog:, excepttwitter:card, which you must set yourself for a large image. (X’s card documentation no longer opens; this comes from several guides quoting the old docs.)
Card image size
| Condition (Facebook) | Value |
|---|---|
| Best display | at least 1200x630 px |
| Below this the card shows a small image | 600x315 |
| Minimum accepted | 200x200 |
| Ratio that avoids cropping | about 1.91:1 |
| Maximum file size | 8 MB |
Add og:image:width and og:image:height too: Facebook says they let the first share render the image without waiting to download it. And do not use an SVG as the card image — sharing apps do not show it (several sources agree; Facebook’s documentation names no formats).
Fixed it, but the old card still shows
Sharing apps cache cards. Facebook caches images by the image URL and does not update them until the URL changes.
- Facebook: open the Sharing Debugger, enter the URL, press Scrape Again.
- LINE: it used to offer a tool called PagePoker for clearing its preview cache, but it no longer opens (checked September 2026). What still works is the next point.
- When you replace an image, give the file a new name too, so every app sees a URL it has never cached.
4.5 A lesson from KoishiAI: the share image that never existed
Our site gives every page without its own image a shared default card. But that file had never been created. Whenever anyone shared the homepage or a tool page, the card had no picture, and nothing warned us, because the pages themselves looked fine. We only caught it after building a link preview checker and trying it on our own site.
The same check turned up two more problems:
- some articles used an SVG as their main image, which sharing apps do not show; those articles now share the default card, while the page still shows the SVG;
- the logo files had a gray checkerboard painted into them instead of real transparency, showing as a gray box in the header.
The takeaway: check what users actually see in the destination app, not just whether the tag is in the code. A tag pointing at a missing file looks perfectly correct in the code.
4.6 After this chapter
- Paste the HTML of your homepage and a main product or article page into the link preview checker; look at the cards for Facebook, LINE and X.
- Open your
og:imageURL directly: does the file exist, and is it at least 1200x630? - Build JSON-LD for your main page type and test it with the Rich Results Test.
- If you still have FAQPage or HowTo, no need to rush to remove it — just stop investing in it.
Related tools
- JSON-LD builder & checker — Article, LocalBusiness and Organization with +07:00 times, +66 phones and honorifics stripped
- Link preview checker — see the cards and measure the real image size
Sources
- Google Search Central — Introduction to structured data
- Google Search Central — General structured data guidelines
- Google Search Central — Article structured data
- Google Search Central — Local business structured data
- Google Search Central — Organization structured data
- Google Search Central — Documentation updates
- Google Search Central Blog — Changes to HowTo and FAQ rich results (August 2023)
- The Open Graph protocol
- Meta for Developers — A Guide to Sharing for Webmasters
- Meta for Developers — Images in Link Shares
- LINE Developers FAQ — URL previews