Skip to content
GDPR compliant. Hosted in DE.
14-day free trial →
Chrome 158XML sitemapRSS and Atom
SEO 16 min read 4 Nov 2026

Chrome 158 drops XSLT: What changes for sitemaps and feeds

Chrome 158 removes XSLT on November 17, 2026. What this means for styled XML sitemaps and feeds, who should act, and which rebuild mistakes cause real damage.

X

XICTRAQ®

XICTRAQ®

XSLTXML-SitemapSEO-Monitoring
158
Chrome version from which XSLT is gone in the stable channel, due Nov 17, 2026 (Chrome for Developers)
0.02%
roughly the share of page loads using XSLT, as of October 2025 (Chrome for Developers)
176
Chrome version that also ends the origin trial and enterprise policy on Aug 17, 2027 (Chrome for Developers)
Same sitemap.xml, two views in the browserFrom Chrome 158 (Nov 17, 2026) the browser no longer applies XSL stylesheets.shop.example/sitemap.xmlup to Chrome 157shop.example/sitemap.xmlfrom Chrome 158XML sitemap, styled via XSLTURLLast modified//products//products/oak-table//contact/The XSL file turns the XML into a table in the browser.<?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?>Notice: XSLT disabled, no styling applied<?xml-stylesheet type="text/xsl"href="/sitemap.xsl"?><urlset xmlns="…"><url><loc>https://shop.example/</loc><lastmod>…</lastmod></url><url><loc>https://shop.example/products/</loc>…The file's content and address stay the same.Chrome158Sitemap check after the rebuildXML · same URL count · no HTMLStatus 200 · media type application/xmlTypical error: HTML instead of XML/sitemap.xml returns HTML with status 200The check treats the sitemap as unreachableSources: Chrome for Developers, “Removing XSLT for a more secure browser”; XICTRAQ documentation, SEO monitoring
Chrome 158 reaches the stable channel on November 17, 2026, and from that version on XSLT no longer works there (Chrome for Developers). This affects XML files that pull in an XSL stylesheet through a processing instruction. Typical candidates are the XML sitemap and the RSS or Atom feed when they appear as a styled table in the browser. Anyone who opens such a URL in Chrome 158 sees the file without that styling. The file itself does not change: it stays on the server as it was, and every program that reads the XML receives the same data as before. This article explains what exactly goes away, who should act and who need not, and why the greater damage usually comes from a hasty rebuild after which /sitemap.xml suddenly serves an HTML page.

What Chrome 158 removes on November 17

Chromium has officially deprecated XSLT, and it covers both ways the browser has run the language so far: the XSLTProcessor JavaScript API and the XSLT processing instruction at the top of an XML file, meaning a line such as <?xml-stylesheet type="text/xsl" href="sitemap.xsl"?> (Chrome for Developers). The Chrome documentation names version 158 on November 17, 2026 as the removal date (Chrome for Developers). The Chromium project's release schedule lists the same day as the stable date for milestone 158 (Chromium Dash).

Even so, November 17 is a single cutoff only on paper. According to the same schedule, Chrome 158 already goes out as an early stable release to part of the user base on November 4 (Chromium Dash). The Chromium project describes this stage as the first time a new milestone ships to a small percentage of stable channel users (Chromium Docs). The actual stable rollout is then staged and generally reaches all users within one to two weeks (Chromium Docs). How much the new cadence has shortened test windows is covered in the article on Chrome's two-week release cycle.

Chrome versionDateWhat happens
Chrome 142Oct 28, 2025First warning messages in the console
Chrome 143Dec 2, 2025Official deprecation, notices in the console and in Lighthouse
Chrome 145 (Canary)from Dec 2, 2025Canary, Dev and Beta disable XSLT by default as an early warning
Chrome 146Mar 10, 2026Enterprise policy available for testing
Chrome 152Aug 25, 2026Origin trial available for testing
Chrome 158Nov 17, 2026XSLT stops working in the stable channel, except for origin trial and enterprise policy participants
Chrome 176Aug 17, 2027Origin trial and enterprise policy end, XSLT is disabled for everyone

All dates in the table come from the timeline in the Chrome documentation (Chrome for Developers). Two rows matter more in practice than the cutoff itself. The first: since Chrome 145, Canary, Dev and Beta disable XSLT by default (Chrome for Developers). Anyone who wants to know how their own sitemap will look after November 17 can check it in one of these channels today. The second is the last row with its transition period.

The exception until Chrome 176 does not help every website

Through an origin trial, websites can keep using XSLT past the cutoff, and through an enterprise policy, companies can keep allowing it in their own browsers (Chrome for Developers). Both end with Chrome 176 on August 17, 2027 (Chrome for Developers), the stable date the Chromium schedule also lists for milestone 176 (Chromium Dash). For a public website, the enterprise policy is no way out, because it applies in a company's managed browsers, not on visitors' devices. The origin trial postpones the rebuild; it does not replace it.

Why Chrome is removing XSLT

XSLT, short for Extensible Stylesheet Language Transformations, transforms XML documents into other formats, most often HTML. The World Wide Web Consortium published XSLT as a recommendation on November 16, 1999 (Chrome for Developers). The language itself kept evolving: XSLT 2.0 arrived in 2007 and XSLT 3.0 in 2017 (Chrome for Developers). None of that reached browsers. All major browser engines natively support only the original XSLT 1.0 from 1999 (Chrome for Developers).

Chrome names security as the main reason for the removal. According to the documentation, the libraries that run these transformations, libxslt in the case of Chromium, are complex, aging C and C++ codebases, and this kind of code is particularly prone to memory safety bugs (Chrome for Developers). As examples of high-severity vulnerabilities, the documentation cites CVE-2025-7425 and CVE-2022-22834, both in libxslt (Chrome for Developers). In parallel, Chrome plans to move XML parsing to a memory-safe library written in Rust. XML itself stays in the browser; only XSLT is slated for removal (Chrome for Developers).

Low usage adds to that. According to the usage data cited in the Chrome documentation from October 2025, only about 0.02 percent of page loads use XSLT at all, and less than 0.001 percent do so through the processing instruction (Chrome for Developers). Chrome is not alone in this step: according to the documentation, the Firefox and WebKit projects have also indicated plans to remove XSLT from their engines (Chrome for Developers). The Chrome documentation does not give dates for those projects.

What XSLT has to do with sitemaps and feeds

An XML file can associate a stylesheet through a processing instruction in its prolog; a separate W3C recommendation defines this (W3C). If that instruction points to an XSL file, the browser transforms the XML before display, typically into an HTML table with column headings and clickable URLs. The same file, however, is primarily meant for programs. The sitemap protocol exists to give search engines details about the pages of a website (sitemaps.org). RSS is a dialect of XML (RSS Advisory Board), and Atom is specified as an XML-based format for syndicating web content (RFC 4287).

For feeds, the Chrome documentation states the purpose of the styling explicitly: in many existing RSS and Atom feeds, XSLT makes the raw XML readable when someone opens the feed directly in the browser (Chrome for Developers). Styled sitemaps follow the same pattern. The sitemap file gets a line pointing to an XSL file, and anyone who opens the URL in the browser sees an overview instead of the tags. The top of such a file looks like this:

sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.shop.example/</loc>
  </url>
  <url>
    <loc>https://www.shop.example/products/</loc>
  </url>
</urlset>

From Chrome 158 on, exactly the step in which the browser applies the XSL file goes away. When XSLT is disabled, Chrome shows a warning banner that links directly to an extension search page (Chrome for Developers). How search engine crawlers handle the processing instruction is not covered by the Chrome documentation. What is documented is which formats Google accepts for sitemaps: XML, RSS, mRSS, and Atom 1.0 as well as text files (Google Search Central). A sitemap that was valid XML before remains valid XML, even if Chrome no longer styles it.

XML stays, and so does CSS as a stylesheet

XML is not being removed from the browser, only XSLT (Chrome for Developers). The xml-stylesheet processing instruction also remains allowed as long as it points to CSS: with type="text/css" you can still apply layout and design rules to the raw data (Chrome for Developers).

Who needs to act and who does not

Whether the end of XSLT creates work depends on who reads the file. Three cases can be distinguished, and only one calls for a real rebuild:

Sitemap with XSL styling

The file is meant for search engines. From Chrome 158 on, only the table view for people who open the URL is missing. Nothing here is urgent; you can clean up calmly and check afterwards.

Feed with a visible link

If you offer the feed as a link on the website, visitors who click it will land on an unstyled file. Here it is worth reviewing how the feed is linked before November 17 arrives.

XML as a page template

If entire pages or device displays are built in the browser via XSLT, the display goes away. This is the case that truly needs a rebuild, for example a transformation on the server.

A look at the first lines of the files shows which case applies. If they contain type="text/xsl", the file is affected. Whether the view is still usable afterwards can be checked in Chrome Canary, Dev or Beta, where XSLT has been off by default since Chrome 145 (Chrome for Developers). If you run your own scripts with XSLTProcessor, you can capture usage through the Reporting API: the documentation shows a ReportingObserver that evaluates deprecation reports with the ID XSLT (Chrome for Developers). For sitemaps and feeds, the command line is usually enough:

$ curl -s https://www.shop.example/sitemap.xml | head -c 160
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
$ curl -sI https://www.shop.example/feed.xml | grep -i '^content-type'
content-type: application/rss+xml; charset=utf-8
$ curl -s https://www.shop.example/feed.xml | grep -c 'text/xsl'
1

Besides the main sitemap, the inventory should include the sitemap index, child sitemaps, news and image sitemaps, and every feed. If one template generates all of these files, a mistake in it hits every file at once.

Rebuild mistakes that do more harm than the end of XSLT

The real risk is not the deprecation but the rebuild that follows. If you insist on keeping the styled view and redirect the sitemap URL to an HTML page or serve one in its place, you replace a file for machines with a page for people. The server keeps answering with status 200; only the content is wrong. It is the same pattern as a soft 404 with status 200: the availability check stays green, and the error only surfaces when someone looks at the content. These mistakes typically show up in such rebuilds:

  1. HTML at the XML URL. A redirect from /sitemap.xml to an HTML overview, or a single-page application that serves its home page for every unknown URL, returns status 200 with HTML. The Sitemaps report in Search Console lists sitemaps in an unsupported format as errors (Google Search Console Help).
  2. Wrong media type. For XML documents, application/xml is the standardized type, and text/xml is defined as an alias (RFC 7303). A rebuild that suddenly serves the file as text/html gives itself away in the response header.
  3. Foreign elements in the sitemap. The sitemap protocol defines the structure: a urlset with a namespace, and one url with a loc per page (sitemaps.org). Extensions are meant to go through a namespace of your own (sitemaps.org). The polyfill approach, which places a script element in the XML file, is described in the Chrome documentation in general terms and for feeds; it does not mention sitemaps (Chrome for Developers).
  4. Encoding and size. If you merge files while you are at it, keep the limits in mind: no more than 50,000 URLs and 50 MB uncompressed per sitemap (Google Search Central), with the file encoded in UTF-8 (sitemaps.org).
  5. References to the old URL. If the file name changes, the Sitemap: line in robots.txt, the sitemap index and the submissions to search engines have to follow. The entry in robots.txt is an intended way to tell search engines where the sitemap is (sitemaps.org). Which other mistakes lurk there is covered in the article on robots.txt mistakes.
What cleanup does not require

If you are touching the sitemap anyway, there is no need to spend time on priorities and change frequencies: Google ignores the priority and changefreq values (Google Search Central). Google does use the lastmod value if it is consistently and verifiably accurate (Google Search Central).

Feeds: keeping people and feed readers apart

Feed readers read the XML and need no styling. The XSL view was meant for people who click a feed link. For that case, the Chrome documentation names the standard HTML approach: announce the feed in the head of the HTML page with <link rel="alternate" type="application/rss+xml"> instead of placing a visible link to the XML file (Chrome for Developers). Feed readers then find the feed even when someone enters only the website URL, and visitors see the normal page. The documentation sums this up as the usual division of labor on the web: HTML for humans, XML for machines (Chrome for Developers).

head.html
<link rel="alternate" type="application/rss+xml"
      title="News from the shop"
      href="https://www.shop.example/feed.xml">
<link rel="alternate" type="application/atom+xml"
      title="News from the shop (Atom)"
      href="https://www.shop.example/atom.xml">

As a second approach, the documentation describes an additional line in the feed that loads a polyfill and reproduces the previous transformation in the browser. According to the documentation, this should not affect feed readers because the script element sits directly under the root element (Chrome for Developers). It does mean that a file which used to contain pure data now carries a script that needs maintenance. Whether that is worth it depends on how often people actually open the feed in the browser.

A feed can double as a sitemap. The sitemap protocol accepts RSS 2.0 as well as Atom 0.3 and 1.0 (sitemaps.org), and Google supports RSS, mRSS, and Atom 1.0 as sitemap formats (Google Search Central). If you rebuild the feed, you also change what search engines receive as a sitemap in that case. Atom has a clear rule on top of that: Atom documents must be well-formed XML (RFC 4287). An inserted HTML fragment that breaks the XML can therefore affect any feed reader, not just Chrome.

Styling without XSLT: three approaches and their consequences

If you want to keep a readable view, you have more options than a complete rebuild. The smallest step is switching from XSL to CSS. The processing instruction stays; it simply points to a CSS file, and Chrome keeps supporting that (Chrome for Developers). CSS styles the existing elements but does not transform them: loc and lastmod do not turn into a table with column headings, but into a neatly formatted list.

sitemap.css
/* at the top of sitemap.xml:
   <?xml-stylesheet type="text/css" href="/sitemap.css"?> */
urlset  { display: block; margin: 2rem; font-family: system-ui, sans-serif; }
url     { display: block; padding: 0.4rem 0; border-bottom: 1px solid #e2e8f0; }
loc     { display: block; color: #004d43; }
lastmod { display: block; color: #64748b; font-size: 0.85rem; }

The second approach moves the transformation to the server and delivers finished HTML (Chrome for Developers). For the sitemap, however, there is a hard limit: the HTML version belongs at its own URL, for example an overview page for visitors, and /sitemap.xml stays XML. Merging both at one URL produces exactly the mistake from the previous section.

The third approach is the least conspicuous: remove the processing instruction and otherwise leave the file as it is. For a sitemap whose purpose under the protocol is to inform search engines, that is often the most sensible solution, since no XSL file is left to maintain. The overview puts the approaches side by side:

ApproachEffortRisk to the sitemapFits when
Change nothingnonenone: the file stays the same, Chrome shows it unstyledno reader misses the browser view
Remove the XSL referenceone linelow if you check afterwardsthe sitemap is meant for search engines only
CSS instead of XSLone stylesheetlow: XML stays XMLa readable view is wanted
Polyfill lineadd and maintain a scriptnot described for sitemapsa feed is often opened in the browser
Server-side transformationhighhigh if HTML ends up at the XML URLentire pages rely on XML and XSLT
Origin trialregistrationonly postpones the rebuild until Chrome 176the rebuild needs more time

A checklist for the weeks around November 17

The plan separates the question of styling from the question of whether the file stays intact for machines. Only the second has to be measured, after every change and once more after the cutoff.

  • Take inventory: find every XML URL with type="text/xsl", meaning sitemap, sitemap index, child sitemaps and feeds.
  • Preview: open the files in Chrome Canary, Dev or Beta, where XSLT has been off by default since Chrome 145 (Chrome for Developers).
  • Decide per file: do nothing, remove the reference, switch to CSS, or create a separate HTML page at its own URL.
  • Measure after every change: status 200, a media type containing xml, first bytes <?xml or <urlset, and a URL count matching the one before the rebuild.
  • Check the search engine side: look at the Sitemaps report in Search Console for fetch and format errors (Google Search Console Help).
  • Check again around the cutoff: the Chrome 158 rollout is staged and generally reaches all users only after one to two weeks (Chromium Docs).
  • Update references: robots.txt, link elements in the HTML head, and entries in the sitemap index.

Especially during the weeks of the staged rollout, a colleague may still see the sitemap as a table while a customer already sees raw XML. That is not a server error but a browser version difference. How to narrow down such discrepancies between your own machine and a customer's is described in the article The site works for us but not for the customer.

Styling is optional, valid XML is required

Whether the sitemap looks appealing in the browser does not decide whether it works. What matters is that the URL keeps delivering valid XML with all URLs. If you measure that, you can settle the styling question calmly.

Monitoring sitemaps and feeds after the rebuild

SEO monitoring from XICTRAQ® takes over part of this measurement on a fixed schedule. The check fetches /sitemap.xml, counts the URLs it contains and detects a sitemap index; for an index it collects up to 50 child sitemaps and up to 3,000 URLs (XICTRAQ documentation). If the URL answers with status 200 but with HTML instead of XML, XICTRAQ® treats the sitemap as unreachable (XICTRAQ documentation). The check is included in every plan and runs every 24 hours on the Free plan and every 12 hours on the paid plans (XICTRAQ documentation). Details are in the SEO monitoring documentation.

If the number of URLs changes, the change log records it, together with the added and removed paths. That makes it visible when a rebuild loses child sitemaps or a template suddenly outputs fewer pages. How to set up sitemap monitoring in general is covered in the article on sitemap monitoring. For a quick one-off check right after the rebuild, there is the free sitemap validator: it reports the HTTP status, checks whether XML arrives and can be parsed, and counts the URLs. The live demo shows what the SEO area of the dashboard looks like.

The sitemap check does not cover the feed. For that, an endpoint check in API monitoring works well; it is included from the Starter plan. It fetches the feed URL at the configured interval and checks the HTTP status as well as, through a text-contains check, whether the response includes something like <rss or <feed. If the check fails twice in a row, XICTRAQ® reports it through the alert channels you have set up.

What the check does not see

XICTRAQ® does not evaluate whether a sitemap references an XSL file or how Chrome displays it. What it measures is what programs receive at the URL: status, format and content. Whether the XML is well-formed is not part of the scheduled check; that is what the one-off check with the sitemap validator is for.

Sources

This article draws on: Chrome for Developers, "Removing XSLT for a more secure browser" (published October 29, 2025); Chromium Dash, schedule for milestones 158 and 176; Chromium Docs, "Chrome Release Cycle"; sitemaps.org, sitemap protocol; Google Search Central, "Build and submit a sitemap"; Google Search Console Help, "Sitemaps report"; RSS Advisory Board, RSS 2.0 Specification; RFC 4287, The Atom Syndication Format; RFC 7303, XML Media Types; W3C, Associating Style Sheets with XML documents 1.0 (Second Edition); XICTRAQ documentation, SEO monitoring. Chrome may adjust its schedules.

Will my sitemap disappear from Google Search with Chrome 158?
The Chrome documentation describes a change in the browser, not in the file on the server, and makes no statement about crawlers. Google accepts sitemaps in XML format under the sitemap protocol (Google Search Central). A risk typically arises only from a rebuild after which the URL no longer delivers XML.
Do I have to delete the XSL file before November 17?
That is not required. From version 158 on, Chrome simply no longer applies it. If you want to clean up, remove the processing instruction first, then the XSL file, and afterwards check that the sitemap is still served as XML.
What do visitors see when they click the feed after November 17?
Instead of the styled view, the file appears without XSL styling, and Chrome shows a warning banner linking to an extension search page (Chrome for Developers). If you want to avoid that, announce the feed with a link element in the HTML head instead of linking to it visibly.
Does this apply to other browsers as well?
The Chrome documentation reports that the Firefox and WebKit projects have also indicated plans to remove XSLT (Chrome for Developers). It does not give specific dates for those browsers. For planning, it is advisable to follow the announcements of the respective projects directly.
Does the enterprise policy help my public website?
Generally not. The enterprise policy is aimed at companies that want to keep allowing XSLT in their own managed browsers. For websites there is the origin trial; both end with Chrome 176 on August 17, 2027 (Chrome for Developers).
How can I tell that a rebuild has damaged the sitemap?
Typical signs are a text/html media type, HTML instead of XML in the first bytes, and a changed URL count. XICTRAQ® fetches /sitemap.xml on a fixed schedule, treats HTML instead of XML as unreachable and records changes to the URL count in the change log. The sitemap validator allows a one-off check.

Related in XICTRAQ®

Guides

Start in 60 seconds

Let XICTRAQ® watch your website.

Permanent free plan available. No credit card, no installation, no hidden fees.