Technical Audit
Stop guessing what's wrong with your website. Performance, security, SEO infrastructure, AI-readiness, and a prioritized fix list you can execute with us or anyone else.
Speed & Core Web Vitals
Manual engineering against real-user field data, not another caching plugin. We find the root cause of failing LCP, INP, and CLS, fix it at the source, and measure the result in the same 28-day field data Google uses.
field data · 28-day p75
LCP
4.1s1.9s
INP
480ms140ms
measured in the data Google ranks with
Illustrative — not client data
TL;DR
A Core Web Vitals sprint fixes the root causes of failing LCP, INP, and CLS: third-party scripts loading too early, broken render paths, and unoptimized images. The $795 diagnostic analyzes your real-user CrUX data and produces a prioritized fix list; it's credited toward the $1,500–$2,500 remediation sprint, which is verified against 28-day field data.
Because PageSpeed's lab score and Google's field data measure different things. The lab runs one synthetic load on simulated hardware; Search Console reports 28 days of real visitors on real phones and real networks. A site can ace the lab and fail the field. We diagnose and fix against field data, because that's the data Google ranks with.
RUM/CrUX field-data analysis, a root-cause report, and a prioritized fix list. The fee is credited toward the sprint, so diagnosis costs nothing extra if you proceed. The report is yours either way, usable with any developer.
Conditional third-party script deferral, render-path correction, image and LCP optimization, priced $1,500–$2,500 by template count and verified against 28-day field data.
Larger builds: the Enterprise/E-Commerce sprint (quote, from $2,500) covers multi-template remediation, Shopify app-bloat surgery, and tracking-stack rationalization. The quote states what drives it: template count, app and script inventory, platform constraints.
Very often, yes, and usually through what's loaded inside it rather than GTM itself. Chat widgets, pixels, and session recorders injected as blocking scripts routinely add seconds to LCP and wreck INP on mobile. The fix is conditional deferral: load marketing tags after the page is interactive, without breaking the marketing team's data.
This is the CrUX API call we run in every diagnostic, and you can run it on your own site today:
Lab (PageSpeed)
1 synthetic load
Simulated hardware, one run: the score can pass.
Field (Search Console)
28 days of real visitors
Real phones and networks: the data Google ranks with.
bash · chrome ux report api
curl -s "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"origin": "https://your-site.com", "formFactor": "PHONE"}'If the largest_contentful_paint p75 in the response disagrees with your PageSpeed score, you've just reproduced the lab-versus-field gap this page describes.
The 28-day field-data window means results land in Search Console about a month after fixes ship. We track it through that window. Most sprint clients move onto a Growth retainer, which includes RUM monitoring and a monthly CWV report so regressions get caught before Google sees them.
Stop guessing what's wrong with your website. Performance, security, SEO infrastructure, AI-readiness, and a prioritized fix list you can execute with us or anyone else.
Predictable monthly retainers that keep your website updated, secure, backed up, and monitored, on any platform, including custom PHP/CodeIgniter applications.
Evidence-graded audits of how ChatGPT, Perplexity, and AI Overviews actually see your site, documented crawler behavior, not agency folklore.
Going deeper
Usually some combination of blocking third-party scripts, an oversized or late-loading hero image, and theme JavaScript running before first paint. Mobile fails first because real phones on real networks are slower than any lab simulation. The diagnostic tells you which of these your site actually has.
Find what the largest visible element is, then find what delays it: slow server response, render-blocking CSS or JS, or an image without priority loading. Each has a different fix, which is why generic "speed plugins" rarely move LCP in field data.
INP (Interaction to Next Paint) measures how long the page takes to respond to every interaction, not just the first one. FID only caught the first input delay, which let heavy scripts hide. Google replaced FID with INP in 2024; sites that passed FID often fail INP.
They help server response time and not much else. Caching does nothing for a blocking chat widget, a heavy hero image, or slow interaction handlers. That's why sites with three caching plugins still fail: the root cause was never caching.
Usually, yes. The Enterprise/E-Commerce sprint does app-bloat surgery: we identify which app scripts actually block rendering and defer or conditionally load them, keeping the app functional. Some apps are genuinely unsalvageable, and the report will say so.
About 28 days. Field data is a rolling 28-day window, so Search Console reflects fixes roughly a month after they ship. We measure the sprint against that window, not against a lab score on delivery day.
The diagnostic is $795, credited toward the sprint. The remediation sprint is $1,500–$2,500 depending on template count. Multi-template and e-commerce work is quoted, starting at $2,500.
No. Conditional deferral changes when tags load, not whether they load. Your analytics and pixels keep firing; they just stop blocking the page. We verify tag behavior as part of the sprint.
