hello@datascale.de+49 89 921 35 623tracked cookie-free · /openDEEN

Search services, integrations and blog posts.

DatascaleResourcesChecksScript loading

Check · C05 · Script inventory & performance

Script loading: which third-party scripts hold up rendering

Third-party scripts loaded synchronously in the head hold up first paint; every second of load time measurably costs conversions.

What we check

Every externally loaded script is classified by position and loading mode: async, defer or synchronous, in the head or in the body. Synchronous head scripts are named by hostname.

Why it matters

A synchronous script in the head stops the page build until the third-party server has responded. Your visitor sees nothing in the meantime. A slow vendor turns a tracking tag into a visible brake; a vendor outage hangs the page. Every second of load time measurably costs conversions.

Common causes

  • The GA4 or GTM snippet was copied into the head years ago, without the async attribute.
  • A CMP or A/B testing tool deliberately requires synchronous loading, and the pattern got copied for every other tag.
  • Chat widgets, maps and fonts ship embed codes without defer that went in unreviewed.
  • A site builder or theme renders third-party scripts synchronously across the board.

The fix

Switch tracking scripts to async or defer (or load them via the tag manager); keep synchronous only what demonstrably has to run before render. Anti-flicker and consent logic are the usual legitimate exceptions. Everything else belongs off the critical path.

Check it yourself first

The Tracking Check tests this point along with all the others, in seconds.

Start the Tracking Check →
The scan names our CMP as a blocking script. Is that an error?

No, that is the usual exception. A CMP has to run before all tags so it can block them; many vendors therefore require the synchronous head embed. The price is waiting time when the CMP's CDN answers slowly. The line stays "to review" because the scan does not know the intent; what matters is that nothing else hangs synchronously in the head.

GTM loads synchronously for us. How much does async really help?

The entire difference between a container that holds up the page and one that loads alongside. The official snippet has set async for years; with an older or a home-built snippet you lose the first paint on every hiccup of googletagmanager.com. Copy the snippet fresh from the container admin, done.

Does the scan also see scripts the tag manager loads later?

No. It classifies the script tags in the delivered HTML by position and attribute. What GTM or another loader inserts later is asynchronous by definition and does not show up here. For the full picture, the third-party scripts and tracking payload lines belong alongside.

The fix, delivered

Wired up in days, not sprints.

Findings from the Tracking Check go into a ranked sequence with effort estimates in the Audit Sprint, every module with an acceptance criterion.