SolisReach
← Journal
Web Performance5 min read

What third-party scripts actually cost a page, measured

Written by the SolisReach team

Nearly every marketing site accumulates third-party scripts over time: a chat widget added by one team, an analytics tag added by another, an ad pixel nobody remembers approving. Each one seems small in isolation. Measured together, they're routinely one of the biggest single contributors to a slow page, and the actual numbers from real audits make the case better than a general warning does.

We start almost every new performance engagement with this specific audit, before touching images or fonts or any of the more commonly discussed performance levers, because on a meaningful share of client sites it turns out to be the single largest opportunity available, and it's one nobody on the client's own team had thought to question.

A representative before-and-after

On a recent client audit, we counted fourteen separate third-party scripts running on the homepage: two chat widgets from a previous vendor switch nobody removed, three analytics tools, a heatmap tool, five ad and retargeting pixels, and a handful of others. Combined, they added 1.8 seconds to Time to Interactive and blocked the main thread for a cumulative 640 milliseconds during page load, before a single line of the site's own code had run.

Nobody on the client's marketing or engineering team could tell us, when we asked, why two separate chat widgets were both still running. The likeliest explanation, based on the timestamps in the code, was a vendor switch eighteen months earlier where the old script was simply never removed once the new one went live.

Why the count matters more than any single script's size

Any one script alone often looks small on a waterfall chart, thirty or forty kilobytes, seemingly not worth worrying about. The problem compounds: each script makes its own network request, often triggers additional third-party requests of its own, and each one competes for the same limited main-thread execution time during the page's most critical loading window. Fourteen small costs add up to one large one.

This is also why fixing the biggest single script rarely fixes the actual problem. We've seen teams spend real effort optimizing the largest individual script on a page, only to see almost no change in the overall load time, because the real cost was distributed evenly across a dozen medium-sized scripts rather than concentrated in one large one.

What we actually removed, and what we kept

We removed the abandoned chat widget, consolidated three analytics tools down to one, and moved four of the five ad pixels to load only after the main content had rendered, since retargeting pixels don't need to fire in the first 100 milliseconds to do their job. We kept the current chat widget and the primary analytics tool, both genuinely used by the business, but deferred their loading until after the critical content painted.

Deciding what to keep required a short conversation with each internal stakeholder who owned a given tool, since a script that looks removable from the outside sometimes turns out to be feeding a report someone relies on weekly. We flag everything as a candidate for removal, then confirm with the actual owner before anything gets cut.

The result

Time to Interactive dropped from 4.2 seconds to 2.1 seconds, mobile conversion rate rose 14 percent over the following month, and nothing the business actually used was lost, since deferred scripts still load, just a beat later, after the content a visitor actually came for is already usable.

The conversion rate improvement here is worth dwelling on specifically, since it came from a change that required no new design work, no new copy, and no new offer, only removing and reordering scripts that were already there. It's some of the highest return-on-effort performance work we do.

Time to Interactive dropped from 4.

A quick audit anyone can run

Open your site's network tab in Chrome DevTools, filter by domain, and count how many aren't your own. If it's more than five or six, there's almost certainly a script running on your site right now that nobody on the current team remembers adding, quietly taxing every single visit.

It's a five-minute check that costs nothing, and we'd genuinely recommend any marketing or engineering lead run it on their own site this week, independent of whether they're planning any other performance work, simply because the answer is so often more surprising than expected.

How scripts accumulate in the first place

Nobody sits down and decides to add fourteen tracking scripts to a homepage. It happens one approval at a time: a marketing hire wants a heatmap tool, a sales team wants a new chat vendor, an agency running a specific ad platform needs its own pixel installed. Each individual request is reasonable in isolation, and each one is approved by someone without visibility into the growing list already running on the page.

The fix isn't refusing every new script request, some of them are genuinely worth the cost. It's requiring whoever approves a new script to also commit to removing the tool it's replacing, if there is one, and revisiting the full list on a fixed schedule rather than only when someone happens to notice the page has gotten slow.

A lightweight governance process that actually gets followed

We set up a simple shared document for ongoing clients listing every third-party script currently running, who requested it, what it's for, and when it was last confirmed still needed. Reviewing this list takes fifteen minutes a quarter and has, more than once, caught an abandoned tool within weeks of it going unused rather than years.

The document works because it's genuinely lightweight, a spreadsheet, not a formal approval workflow requiring sign-off from multiple people before any script gets added. Heavier governance tends to get bypassed under time pressure; a simple, low-friction log that someone actually reviews on a schedule holds up much better in practice.

We share this log with the client directly rather than keeping it internal, since it's often the client's own team adding new scripts between our engagements, and a shared, visible record is the only way that ongoing addition stays disciplined once we're not the ones reviewing every change.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.