Google Changed How It Reads Your Schema Markup
Google made a change in August 2026 that most site owners will never hear about, and some will feel: its crawler stopped auto-correcting a common formatting mistake in schema markup. If your site's structured data contains double-escaped characters, Google used to fix them for you. Now it reads them literally. Markup that has worked without complaint for years can start feeding Google wrong data this week, and the rich results it earned can go with it.
Here's what changed, how to check your site in about five minutes, and how to fix it if you're affected.
Quick Navigation
- What Google Changed
- What Double-Escaping Looks Like
- Why This Can Cost You Rich Results
- How to Check Your Site in Five Minutes
- How to Fix It
- Frequently Asked Questions
What Google Changed
Google now applies only a single pass of HTML unescaping when it extracts JSON-LD structured data from a page, where it previously unescaped repeatedly and silently corrected double-escaped markup. Google announced the change on the Google Search Central LinkedIn account in August 2026: "To bring our parser up to JSON and other standards, we changed our JSON-LD extraction and are now only applying a single pass of HTML unescaping."
In plain terms: Google's parser used to be forgiving. If your CMS or SEO plugin encoded a character twice, Google would keep decoding until the text made sense. That safety net is gone. Google's Gary Illyes pointed site owners to the actual JSON standard, RFC 8259 section 7, which defines how characters should be escaped. Your markup is now expected to follow it.
Barry Schwartz first reported the change at Search Engine Roundtable on August 21, 2026. It applies to how Googlebot reads JSON-LD, the script-tag format that powers most structured data on the web.
What Double-Escaping Looks Like
Double-escaping happens when text gets HTML-encoded twice on its way into your JSON-LD, so an ampersand that should appear as & or \u0026 arrives as &. One pass of encoding turns & into &. A second pass encodes the & in & again, producing &. Under the old behavior Google kept unescaping until it reached the plain &. Under the new behavior it stops after one pass, and your business name reads as Johnson & Sons inside your own structured data.
A concrete example. This Product markup looks fine in a browser because browsers are forgiving too:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Smith & Co. Garden Shears",
"offers": {
"@type": "Offer",
"price": "24.99",
"priceCurrency": "USD"
}
}
After Google's single unescape pass, that product name is now Smith & Co. Garden Shears, with literal HTML code embedded in the text. Before the change, Google would have unrolled it all the way down to Smith & Co. Garden Shears.
The same problem hits special characters like check marks (✔), curly apostrophes, and accented letters, any of which may have been HTML-encoded by a template before being dropped into a JSON-LD block.
Why This Can Cost You Rich Results
JSON-LD structured data is what earns the enhanced Google listings small businesses care about: the price and star rating under a product, FAQ dropdowns, recipe cards, event details. Google reads the markup to understand those specifics, and rich results built on wrong or malformed data can stop showing.
The damage comes in two sizes. The smaller one is wrong text: your brand or product name displays with stray & codes where Google surfaces the value. The bigger one is disqualification. Structured data has to parse as valid JSON, and escaping mistakes in the wrong place can make Google skip the block entirely. A page that loses its Product markup loses the price and stars in its listing, and plain blue links get fewer clicks than rich ones.
The frustrating part is that nothing on your site changed. The markup is the same markup that passed validation last month. Google's tolerance for the mistake is what changed.
How to Check Your Site in Five Minutes
The fastest check is Google's own Rich Results Test at search.google.com/test/rich-results, which now parses JSON-LD the strict way and shows you exactly what Google extracts. Run your money pages through it: home page, top products or services, any page with FAQ or review markup. Look at the extracted values, not just the pass/fail verdict. If a name or description shows & or other HTML codes inside the text, you're double-escaping.
Two more places to look:
- View your page source. Open a page, view source, and search for
&amp;or&#inside any<script type="application/ld+json">block. Finding either one is a confirmed problem. - Google Search Console enhancement reports. GSC's Enhancements section (Products, FAQs, and similar reports) will show items dropping to "Invalid" if Google stops parsing your markup. Check it now for a baseline, then watch it over the next few weeks.
If you use Brass-SEO, ask the chat to check your key pages and watch your GSC data for changes. A drop in rich-result impressions on pages with structured data is the symptom showing up in your numbers.
How to Fix It
The fix is to escape characters the JSON way, once, and stop HTML-encoding text that goes into JSON-LD. RFC 8259 allows most characters to appear raw inside JSON strings. A plain & is completely valid JSON, and so is the Unicode escape \u0026. What's wrong is HTML entities like & standing in for characters, because JSON-LD is JSON, not HTML.
Where the fix lands depends on who writes your markup:
- Your CMS or SEO plugin writes it. Most small-business schema comes from WordPress SEO plugins or e-commerce platform templates. Update the plugin, then re-test the page. If the markup is still double-escaped after updating, report it to the plugin developer; this change affects every site running that code.
- A developer wrote it. The usual bug is running text through an HTML-escape function before inserting it into the JSON-LD block. JSON-encode values instead, and let the JSON serializer handle escaping. One pass, the right kind.
- You hand-wrote it. Replace HTML entities inside the JSON with the real characters.
&becomes&.✔becomes ✔ or\u2714.
Then re-run the Rich Results Test and confirm the extracted text reads clean. That's the whole loop.
If you have valid markup already, this change asks nothing of you. Google getting stricter about standards rewards the sites that followed them.
Frequently Asked Questions
Does this change affect all structured data or just JSON-LD?
Google's announcement covers JSON-LD extraction specifically, the <script type="application/ld+json"> format. JSON-LD is the format Google recommends and the one most CMS platforms and SEO plugins generate, so in practice this covers most structured data on small-business sites.
Will my rankings drop because of this?
Structured data mostly affects how your listing looks, and how often it gets clicked, rather than where it ranks. Broken markup can cost you rich results like prices, stars, and FAQ dropdowns, which lowers click-through, but it doesn't remove your page from search results.
How do I know if my site is double-escaping?
Run a page through Google's Rich Results Test and read the extracted values, or view your page source and search inside the JSON-LD block for &amp; or &#. Either string inside a JSON-LD script means text was HTML-encoded twice, which Google no longer corrects.
My markup passed validation before. Why is it a problem now?
Google's parser previously unescaped HTML entities repeatedly, which papered over double-encoding bugs in CMS templates and plugins. As of August 2026 it applies one unescape pass, so text that needed two passes to become readable now stays broken. The markup didn't change; Google's tolerance did.
Keep Your Schema Working
Schema markup is one of the few SEO tasks where the fix is fully in your control. If you're new to it, start with what schema markup is and which types matter for small businesses. Selling online? Product schema puts your price and stars in the listing, which is exactly the markup this parsing change can silently break. And if you're curious what structured data does for AI search visibility, here's what the research actually shows.
Brass-SEO connects to your Google Search Console and Google Analytics 4 and lets you ask plain-English questions about your search performance, including whether pages with structured data are losing impressions or clicks. It's $25/month with a 3-day free trial at brass-seo.com.
Sources: Google Search Central announcement via Search Engine Roundtable (Barry Schwartz, August 21, 2026); RFC 8259, section 7 (the JSON standard's escaping rules).