← Blog

Astro JS for Landing Pages: How Page Speed Affects Your Google Ads Cost

Most landing page conversations focus on copy and design. Both matter. But there’s a variable that affects your cost per click before anyone reads the headline — and it’s not the offer, the CTA, or the color of the button. It’s how fast the page loads. An Astro landing page scoring 98 on Lighthouse is not just “fast.” It’s structurally cheaper to run on Google Ads than a WordPress/Elementor page scoring 38. Here’s how that works.

How Google Ads Quality Score Actually Works

Quality Score is Google’s estimate of how relevant your ad, keyword, and landing page are for a given search. It’s reported on a 1–10 scale. It affects two things directly: your ad rank and your cost per click.

The formula for Ad Rank is: Max CPC bid × Quality Score × Expected Impact of Ad Extensions. A higher Quality Score means you can achieve the same ad position with a lower bid. Or more precisely: a competitor bidding $5 with a Quality Score of 4 and a competitor bidding $3 with a Quality Score of 8 can achieve the same rank.

Landing page experience is one of the three components of Quality Score (along with expected click-through rate and ad relevance). Google does not publish the exact weight of each component. The official guidance is that landing page experience considers “how useful, relevant, and easy-to-navigate your landing page is” — and explicitly includes page load speed.

Google confirmed in 2018 that landing page speed is a factor in Quality Score. The mechanism is not just a checkbox for “does the page load.” It’s a signal drawn from actual user behavior and Google’s own measurement of page performance. Pages that take 8 seconds to load on mobile have worse user metrics — higher bounce rates, lower session depth — and those user signals reinforce the low Quality Score.

The business consequence: a slow landing page isn’t just a UX problem. It’s a tax. You pay more per click for the same position. Across a $10,000/month Google Ads budget, the difference between a Quality Score of 4 and a Quality Score of 8 is measurable in hundreds or thousands of dollars of wasted spend.

The Baseline Numbers

The average Lighthouse mobile score for an Elementor-built landing page is 38. We know this from running audits across dozens of client sites over the years. The number is not unusual — Elementor loads 400–600KB of render-blocking JavaScript and CSS on every page load, regardless of whether any specific page uses the features that require it.

An Astro landing page built with proper optimization scores 95–100 on Lighthouse mobile. LCP (Largest Contentful Paint) comes in at 0.3–0.8 seconds on a CDN. Total blocking time is typically under 50ms.

That 38 vs. 98 gap is not theoretical. Those are real numbers from real pages, and the performance path from 38 to 98 is a technology decision, not a configuration decision. You can’t optimize an Elementor page to 98 by adding a caching plugin. The JavaScript is structural.

A well-built custom WordPress site — hand-coded, no page builder, selective plugin use — scores 88–97 on Lighthouse mobile. Better than Elementor, closer to Astro. We build those too, and they’re significantly better than the page builder alternative. But Astro’s static output still has a structural edge: no PHP execution, no database query, pure CDN delivery.

The LCP Impact on Ad Performance

Google’s internal research (published as part of the Think with Google speed studies) found that pages loading in 3 seconds have a 32% higher bounce rate than pages loading in 1 second. Pages loading in 5 seconds have a 90% higher bounce rate than pages loading in 1 second.

Bounce rate is one of the user behavior signals Google uses to assess landing page quality. A page where 60% of users leave within 3 seconds before interacting with the content is signaling to Google that the experience is poor. That signal degrades Quality Score.

An Astro landing page with LCP at 0.5 seconds is showing Google a different signal than an Elementor page with LCP at 5 seconds. The user who lands on the Astro page sees content immediately. The user who lands on the Elementor page waits while JavaScript bundles execute, layout stabilizes after CLS events, and the page becomes usable.

The Elementor user has an 80–90% higher probability of bouncing before engaging with the page. Those bounce events are measurable. Google measures them. They affect the Quality Score.

What a 1-Point Quality Score Improvement Is Worth

Google’s estimates on Quality Score impact suggest:

  • Quality Score 6 vs. 7: approximately 16% reduction in CPC
  • Quality Score 7 vs. 8: approximately 14% reduction in CPC
  • Moving from Quality Score 4 to Quality Score 8: approximately 50% reduction in CPC for the same position

These are Google’s published estimates. Real-world impact varies by industry, competition, and keyword. But the direction is consistent: every Quality Score point improvement reduces what you pay per click.

At $10,000/month in ad spend, a 25% reduction in CPC means the same number of clicks costs $7,500 instead of $10,000. Or the same $10,000 buys 33% more clicks. For a business running Google Ads year-round, this compounds.

The page speed component is one of three Quality Score factors. It’s not the whole picture. A fast, irrelevant landing page still gets a low Quality Score. But a relevant, well-written landing page that loads in 5 seconds is leaving Quality Score points on the table.

The Technical Reason Astro Landing Pages Are Faster

Astro’s performance advantage on landing pages comes from three structural factors:

No JavaScript by default. A landing page built in Astro produces HTML. No JavaScript framework runtime loads on page visit unless you add a component that requires it. A contact form, a video embed, a chat widget — these can be islands that load JavaScript. The headline, the offer, the CTA, the social proof — all static HTML, rendered instantly.

CDN delivery. Astro deploys as static files. Vercel, Netlify, and Cloudflare Pages serve those files from edge nodes worldwide. A visitor in Los Angeles, London, or Singapore gets the file from the nearest node. TTFB (Time to First Byte) is typically 20–50ms. A WordPress page on a US server has TTFB of 200–600ms for a European visitor.

Build-time image optimization. The hero image on a landing page is often the LCP element. Astro’s Image component converts it to WebP, generates responsive sizes, and adds fetchpriority="high" for the LCP image. The browser downloads the correct size for the device, in the optimal format, with priority signaling. We cover this in more detail in our article on Astro image optimization.

No WordPress configuration produces all three of these simultaneously. A custom-built, well-optimized WordPress site on Kinsta with Cloudflare caching, WebP conversion through Imagify, and no page builder can score 92–97 and achieve LCP under 1.5 seconds. That’s genuinely good. The Astro version of the same page scores 98–100 and achieves LCP under 0.6 seconds. The gap is smaller at the high end, but it exists.

Landing Page Architecture for Google Ads

A Google Ads landing page has different requirements than a regular website page. You don’t want it in the main navigation. You want variant testing capability. You want the tracking pixels to fire correctly without affecting performance.

Here’s how these work in Astro:

Isolated landing pages. Astro’s routing is file-based. A landing page at /lp/your-offer/ is a file that doesn’t appear in the sitemap or navigation unless you include it. You can have 20 ad group variants in /lp/ with no UI overlap. Clean, organized, isolated.

Tracking and tag management. Google Tag Manager can run in Astro via the Partytown integration, which offloads GTM’s JavaScript to a web worker. GTM running in Partytown doesn’t affect your Lighthouse score or Time to Interactive. Your analytics fire, your conversion pixels fire, your LCP is unaffected. This is not achievable in the same way on an Elementor site — GTM is one of several JavaScript sources stacking up on page load.

A/B testing. Edge-based A/B testing through Cloudflare Workers or Vercel Edge Middleware can route traffic between two Astro landing pages at the CDN level — no client-side flicker, no CLS, no performance impact from the testing script itself. This is technically more involved than dropping a VWO snippet in a WordPress page, but it produces cleaner performance data.

Form handling. Landing page forms in Astro typically post to a serverless function or a form service like Netlify Forms, Formspree, or a custom endpoint. The form is static HTML with a JavaScript submission handler as an island. Form submission fires without reloading the page. Conversion tracking fires via the island’s JavaScript.

The Cost Comparison

An Elementor page builder license costs $49–$99/year. Hosting for the WordPress site runs $20–$100/month. The pages are slow and they tax your Quality Score. You pay this cost continuously in higher CPC.

An Astro landing page deployed to Vercel or Netlify costs $0–$20/month to host. The development cost is a one-time build. The ongoing platform cost is nearly zero. The Quality Score benefit is structural and continuous.

The upfront development cost for a custom Astro landing page is higher than buying an Elementor template. A properly built, conversion-optimized Astro landing page costs $2,000–$5,000 to build well. An Elementor page from a template costs $200–$500.

The math turns quickly. If a 25% CPC reduction on a $10,000/month Google Ads account saves $2,500/month, the $3,000 upfront cost of a custom Astro landing page pays for itself in 6 weeks. The landing page keeps performing. The savings compound.

This is not guaranteed — Quality Score improvements are not linear and landing page speed is one of three factors. But the direction of the math is consistent. Faster landing pages cost less to advertise on, and Astro produces faster landing pages structurally.

For a comparison of Astro against other fast frameworks for marketing sites, see our Astro vs Webflow comparison and Astro vs Next.js for marketing sites.

FAQ

Does landing page speed directly determine Google Ads Quality Score? Not directly. Quality Score has three components: expected CTR, ad relevance, and landing page experience. Landing page experience includes speed, relevance, and usability. A fast, irrelevant page still gets a low Quality Score. A highly relevant, slightly slower page can still score well. But speed is a real factor, and a page scoring 38 on Lighthouse mobile has measurably worse user behavior metrics than one scoring 98 — and those metrics feed into Quality Score.

What Lighthouse score do I need for a “good” landing page experience in Google Ads? Google doesn’t publish a Lighthouse threshold. What they measure is actual user experience signals: time on page, bounce rate, conversion rate, and page speed as measured by their crawlers. The practical target is: LCP under 2.5 seconds on mobile, Lighthouse Performance score above 80, passing Core Web Vitals. Scores of 95–100 are the highest-quality signal you can send. Scores under 50 are a consistent drag on Quality Score.

Can I improve my WordPress/Elementor landing page performance without rebuilding it? Partially. Caching plugins, CDN configuration, and image optimization can improve a WordPress/Elementor page from a Lighthouse score of 38 to perhaps 55–65 on mobile. The ceiling is structural — Elementor’s render-blocking JavaScript is not removable through optimization. Switching to a page builder-free WordPress theme and rebuilding the page in Gutenberg or custom PHP templates can reach 85–95. That’s a significant rebuild, not an optimization pass.

How many Astro landing page variants can I run for different ad groups? As many as you want. Astro’s file-based routing handles any number of landing pages. Deployment to Vercel or Netlify handles the hosting for free at typical traffic volumes. The constraint is development time to build each variant, not the platform.

Does an Astro landing page work with Google Ads conversion tracking? Yes. Google Ads conversion tracking fires via a JavaScript snippet. In Astro, that snippet is added as an island or as a script in the page head. It fires on the thank-you page or on the form submission event. The conversion data flows to Google Ads normally. The difference from a WordPress setup is that the tracking JavaScript doesn’t block the main thread or affect LCP.

What about Dynamic Search Ads and landing pages that need to change frequently? If landing page content needs to update frequently — pricing changes, new offers, seasonal copy — an Astro setup with a headless CMS keeps the performance profile while enabling content changes without code deployments. You edit the offer in the CMS, the site rebuilds (typically 30–90 seconds for a landing page), and the new content is live. For more frequent or complex dynamic content, a hybrid Astro setup with server-side rendering for that specific route handles it.

If you’re running Google Ads on a landing page that’s currently scoring under 70 on Lighthouse and want to understand what a faster page would do to your Quality Score and CPC, the analysis starts with the audit. Our custom WordPress development service includes performance targets in the contract — specific Lighthouse scores, not vague commitments. Or see our fixed-price packages for a defined scope with performance floors built in.