The method and result come from our test in December 2017. The section What has changed since then? describes where Google stands today.
- Today Google renders pages with a current version of Chromium. According to Google, title, meta description and links may be added via JavaScript. A canonical added via JavaScript should name the same URL as the source code.
- In December 2017 we checked whether Google picks up five changes that Google Tag Manager only inserts during rendering. We tested title and meta description, noindex, canonical, an internal link and a URL that only appears in JSON-LD. For the internal link there was a control page without a link.
- Google picked up all five. On the homepage it took 8 days, on the other pages around two months.
The question behind the tests
Our first experiment with hreflang had suggested that Google reads the rendered HTML for hreflang. After that we wanted to know whether this also applies to other SEO signals. Google Tag Manager is a good tool for this. It writes changes into the DOM via JavaScript. The source code from the server stays unchanged.
Our question was how Google handles pages that depend on JavaScript. The test was never meant as a recommendation to maintain SEO signals permanently via Tag Manager.
| Test | Change via Tag Manager | Result | Time until visible |
|---|---|---|---|
| Title and meta description | Homepage, title changed only in capitalization, description in a few words | Google shows the new version | 8 days |
| noindex | Meta robots noindex on five unimportant URLs | All five dropped from the index | between 6 weeks and 3 months |
| Canonical | Author page points to the blog overview | Author page disappears from search | about as long as noindex |
| Internal link | Link target rewritten on an unimportant page | Test page indexed, control page not | around two months |
| URL only in JSON-LD | Test page only named in an inserted JSON-LD script | Test page indexed | not recorded separately |
Title and meta description
On the English homepage of searchviu.com, a Custom HTML tag replaced the title and the meta description. In the title we only changed the capitalization, in the description a few words. The old version stayed in the source code. The script removes both elements and appends new ones to the head.
All scripts in this article are the originals from the 2017 test. They require jQuery, which was loaded on the website at the time.
Eight days after publishing in Tag Manager, Google showed the new version in the search result and kept it.
noindex
While setting up the tests, we noticed five URLs that should not be in the index. A tag with a trigger only on these pages removed any existing meta robots tag and added a new one with noindex, follow.
Then nothing happened for a long time. We did not measure exactly how long. It was between six weeks and three months. After that, all five pages had disappeared from the index. We checked this with a site: query covering all five URLs, to which Google replied “did not match any documents”.
Canonical
Google ignores a canonical when other signals contradict it. For a clean test we therefore needed a pair where the canonical clearly fits. Eoghan Henn's author page only showed posts that also appear on the blog overview. A tag on the English author page removed any existing canonical and set one pointing to the blog overview.
It took about as long as the noindex. After that, the author page no longer ranked for the search “eoghan henn searchviu”. Because this part relied on a single URL, we repeated it in 2018 with more pages. You can read about it in the guide Canonical via JavaScript.
Internal links and JSON-LD
What interested us most was whether Google follows links that only exist in the rendered HTML. For this we created two identical test pages. Neither was in a sitemap, and there were no pings or other hints when they were published. On an unimportant page we picked a link that hardly anyone clicks. It carried the id js-seo-test, and Tag Manager replaced it with a link to the first test page. The second test page stayed unlinked and served as the control.
After around two months the linked test page was in the index, the control page was not.
A third test page appeared only in a JSON-LD script that Tag Manager inserted on the first test page. Its URL sits there in the sameAs field and nowhere else.
The third test page was indexed as well. So Google also used structured data to discover URLs. We documented both results with two site: queries. The first excludes the sameAs page and returned exactly one result, the internally linked test page. The second returned both test pages. The test pages no longer exist, so the queries reflect the state at the time.
Our conclusion
Google picked up all five changes from the rendered HTML and ignored the source code. What differed markedly was the time until they were picked up. The homepage needed eight days, the other pages around two months. At the time we concluded that Google renders important pages more often than unimportant ones. Earlier JavaScript tests with negative results may have run too briefly, especially when the test pages were new and unimportant. We had not set up regular measurement, so the timings are rough.
What has changed since then?
Since May 2019, Googlebot has rendered with a current version of Chromium. Google's documentation on JavaScript SEO now confirms several results of the test. Title and meta description may be set via JavaScript, and links may be added to the DOM via JavaScript. A canonical via JavaScript is possible. However, it should name the same URL as the canonical in the source code, or the source code should have none at all.
For noindex, Google now warns of a special case. If noindex is already in the source code, Google may skip rendering. A script that removes the noindex then never runs. Our test went the other way. The noindex was only added via JavaScript.
For links, Google now only names <a> elements with href. We have not retested whether a URL that only appears in JSON-LD still gets indexed today. On waiting times, Google writes that a page may sit in the render queue for a few seconds, but it can also take longer. Our eight days and two months from 2017 are an old one-off measurement. According to Vercel (December 2024), AI crawlers such as GPTBot and ClaudeBot do not execute JavaScript at all. Anything that only Tag Manager inserts is missing for them.
What does this mean for your website?
- Use Tag Manager for SEO changes as a stopgap or test. The permanent solution belongs in the source code.
- After every change, check what Google sees with the live test in Search Console's URL Inspection.
- For unimportant pages, allow weeks before you judge a result.
- Compare source code and rendered HTML regularly. Someone else can change a tag in Tag Manager at any time.
Common mistakes
- A canonical is added via Tag Manager and the old one stays in the source code. The page then has two canonicals.
- noindex is in the source code and is supposed to be removed via JavaScript.
- Links are built as buttons or with onclick instead of as
<a href>. - A test is abandoned as failed after a few days.
Frequently asked questions
Does Google pick up changes from Google Tag Manager?
In our test, yes, for title, meta description, noindex, canonical and internal links. Google evaluates the rendered HTML for this.
How long does it take for Google to show a GTM change?
On our homepage 8 days, on less important pages around two months. That was in 2017. Today Google says a few seconds for the render queue, but writes that it can take longer.
Can I set noindex via JavaScript?
Adding it worked in our test. Removing it is risky, because Google may skip rendering when there is a noindex in the source code.
Does Google follow links that JavaScript inserts?
Yes, if they are <a> elements with href. Our test page, which could only be reached via such a link, was indexed, the control page was not.
Should I control SEO permanently via Google Tag Manager?
Better not. The changes only take effect after rendering, AI crawlers without rendering do not see them, and tags are easy to change without anyone noticing.
Sources
Retrieved on October 15, 2026. If something is out of date or missing, let us know.
- Google, Understand the JavaScript SEO basics: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics · As of Mar 4, 2026
- Google Search Central Blog, The new evergreen Googlebot: https://developers.google.com/search/blog/2019/05/the-new-evergreen-googlebot · May 2019
- Search Console Help, URL Inspection tool: https://support.google.com/webmasters/answer/9012289 · Retrieved Oct 15, 2026
- Vercel, The rise of the AI crawler: https://vercel.com/blog/the-rise-of-the-ai-crawler · Dec 17, 2024