<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[freewebsite247]]></title><description><![CDATA[Marc Mulvaney, founder of freewebsite247. I have built websites and done SEO since 1997, with more than 1,000 websites built. I write about small-business websi]]></description><link>https://freewebsite247.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ae458faad61bfcfec09a445/cd533763-0f18-4f2c-8a88-f80bcf8ac0cd.png</url><title>freewebsite247</title><link>https://freewebsite247.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 07:22:38 GMT</lastBuildDate><atom:link href="https://freewebsite247.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Astro for Small-Business Websites: A 33-Item Speed Checklist and a Six-Page Build]]></title><description><![CDATA[72.2% of Astro sites passed all Core Web Vitals on mobile in Oct 2026 vs 49.0% of WordPress sites. A six-page build with code and a 33-item checklist.]]></description><link>https://freewebsite247.hashnode.dev/why-we-build-small-business-websites-in-astro</link><guid isPermaLink="true">https://freewebsite247.hashnode.dev/why-we-build-small-business-websites-in-astro</guid><category><![CDATA[Astro]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[SEO]]></category><category><![CDATA[Small business]]></category><category><![CDATA[WordPress]]></category><dc:creator><![CDATA[Marc Mulvaney]]></dc:creator><pubDate>Fri, 30 Oct 2026 08:48:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ae458faad61bfcfec09a445/3856380d-d8ba-47a0-9534-e9ea63b67e77.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I build small-business websites in Astro. In the <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">HTTP Archive Core Web Vitals Technology Report</a> for October 2026, 72.2% of Astro sites passed all three Core Web Vitals on mobile, against 49.0% of WordPress sites and 53.0% of all sites tracked. The median Astro home page weighed about 1.3 MB on mobile that month, under half the 2.7 MB median WordPress page, in the <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">same report</a>.</p>
<p>One caveat, stated once: those figures come from real sites measured in the field, not from a lab test. Framework choice is not the only cause of the gap. Hosting, themes, plugins and third-party scripts also affect each site's result.</p>
<p>This post covers what Astro does differently, the Core Web Vitals thresholds Google publishes, the Astro versus WordPress numbers for October 2026, an illustrative six-page plumber build with code, the cases where WordPress is still the right call, and a 33-item checklist you can run on your own site today.</p>
<h2>What Astro does differently</h2>
<p>Astro renders components to HTML and CSS at build time. The <a href="https://docs.astro.build/en/concepts/islands/">Astro docs</a> put it this way: "By default, Astro will automatically render every UI component to just HTML &amp; CSS, stripping out all client-side JavaScript automatically."</p>
<p>Interactive parts become islands. The same page of the docs states: "With islands, client-side JavaScript is only loaded for the explicit interactive components that you mark using client:* directives." A quote form or a booking widget gets JavaScript. The header, the service text, the footer and the phone link do not.</p>
<p>A finished Astro build is a folder of HTML, CSS and image files plus the few JavaScript files the islands need. Any static host serves that folder. No PHP runs on each visit. No database query runs on each visit. There is no admin login page on the public site.</p>
<p>Images go through the <code>&lt;Image /&gt;</code> component from <code>astro:assets</code>. The <a href="https://docs.astro.build/en/guides/images/">Astro image docs</a> state: "The <code>&lt;Image /&gt;</code> component optimizes for CLS by automatically setting the correct width and height for your images." The component also converts images to WebP by default and keeps the alt attribute required.</p>
<p>Content lives in Markdown files, in content collections or in a headless CMS. A content change triggers a rebuild, and the host serves the new static files.</p>
<h2>Why the speed numbers matter to a local business</h2>
<p>Google publishes the pass thresholds on <a href="https://web.dev/articles/vitals">web.dev</a>: Largest Contentful Paint (LCP) within 2.5 seconds, Interaction to Next Paint (INP) of 200 milliseconds or less, Cumulative Layout Shift (CLS) of 0.1 or less, measured at the 75th percentile of page loads, split by mobile and desktop.</p>
<p>Google recommends those thresholds for Search. <a href="https://developers.google.com/search/docs/appearance/core-web-vitals">Google Search Central</a> says: "We highly recommend site owners achieve good Core Web Vitals for success with Search and to ensure a great user experience generally. This, along with other page experience aspects, aligns with what our core ranking systems seek to reward."</p>
<p>Google ranks the mobile version. <a href="https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing">Google's mobile-first indexing page</a> states: "Google uses the mobile version of a site's content, crawled with the smartphone agent, for indexing and ranking."</p>
<p>Page weight correlates with LCP. The <a href="https://almanac.httparchive.org/en/2024/page-weight">Web Almanac 2024 page weight chapter</a> reports "a clear correlation between the page weight and Largest Contentful Paint, the higher the page weight, the longer the time to LCP. This is especially true for mobile devices." The median mobile page grew: the <a href="https://almanac.httparchive.org/en/2025/page-weight">Web Almanac 2025</a> puts it at 2,362 KB as of July 2025, up from 845 KB in July 2015.</p>
<p>Fewer than half of mobile sites passed in 2025. The <a href="https://almanac.httparchive.org/en/2025/performance">Web Almanac 2025 performance chapter</a> reports that good Core Web Vitals performance "reached 44% on mobile and 55% on desktop" in 2024 and "further improved in 2025 to 48% for mobile websites and 56% for desktop websites."</p>
<p>Google published one revenue case. Its <a href="https://web.dev/case-studies/vodafone">Vodafone case study</a> is titled "Vodafone: A 31% improvement in LCP increased sales by 8%". That is one company's measured result.</p>
<h2>Astro vs WordPress: the October 2026 numbers</h2>
<p>All figures below are medians for mobile from the HTTP Archive Technology Report, October 2026.</p>
<table>
<thead>
<tr>
<th>Metric (mobile, October 2026)</th>
<th>Astro</th>
<th>WordPress</th>
<th>All sites</th>
</tr>
</thead>
<tbody><tr>
<td>Origins passing all three Core Web Vitals</td>
<td>72.2%</td>
<td>49.0%</td>
<td>53.0%</td>
</tr>
<tr>
<td>Median total page weight</td>
<td>1,285,350 bytes (about 1.3 MB)</td>
<td>2,730,019 bytes (about 2.7 MB)</td>
<td>2,551,208 bytes (about 2.6 MB)</td>
</tr>
<tr>
<td>Median JavaScript bytes</td>
<td>389,918 (about 390 KB)</td>
<td>689,307 (about 689 KB)</td>
<td>736,473</td>
</tr>
<tr>
<td>Median image bytes</td>
<td>306,488 (about 306 KB)</td>
<td>1,030,068 (about 1.0 MB)</td>
<td>750,219</td>
</tr>
<tr>
<td>Median Lighthouse performance score</td>
<td>70.5</td>
<td>44</td>
<td>49</td>
</tr>
<tr>
<td>Median Lighthouse SEO score</td>
<td>100</td>
<td>92</td>
<td>92</td>
</tr>
<tr>
<td>Median Lighthouse accessibility score</td>
<td>95.5</td>
<td>88</td>
<td>87.5</td>
</tr>
<tr>
<td>Median Lighthouse best practices score</td>
<td>92</td>
<td>79</td>
<td>77</td>
</tr>
</tbody></table>
<p>Source: <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">HTTP Archive Technology Report, Astro and WordPress, mobile</a>. The Core Web Vitals row covers 53,101 Astro origins and 2,513,839 WordPress origins tested in October 2026.</p>
<p>The Astro pass rate rose every month from June to October 2026. The <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">same report</a> shows Astro at 67.2% in June 2026, then 69.8%, 71.0%, 71.1% and 72.2% in October. WordPress moved from 48.8% in June to 49.0% in October. All sites moved from 53.1% to 53.0%.</p>
<p>The <a href="https://almanac.httparchive.org/en/2025/cms">Web Almanac 2025 CMS chapter</a> ranks CMS platforms by mobile Core Web Vitals and reports: "Duda is the top performer with 85% of its sites meeting the benchmarks ... WordPress remains among the lowest-ranked with a pass rate of 45%." The same chapter puts the WordPress median Lighthouse performance score at 63 on desktop and 41 on mobile.</p>
<p>The <a href="https://almanac.httparchive.org/en/2025/cms">CMS chapter</a> states that WordPress is "powering roughly 64% of CMS-driven sites" and that "around 60% of WordPress sites use a page builder." In the table above, the median Astro page carried 389,918 bytes of JavaScript and 306,488 bytes of images. The median WordPress page carried 689,307 bytes of JavaScript and 1,030,068 bytes of images.</p>
<h2>Security and maintenance: what a static build removes</h2>
<p>Patchstack's <a href="https://patchstack.com/whitepaper/state-of-wordpress-security-in-2026/">State of WordPress Security in 2026</a> reports: "11,334 new vulnerabilities were found in the WordPress ecosystem in 2025 - that's a 42% increase compared to 2024." The same report states: "91% of new vulnerabilities were found in plugins, and 9% were found in themes. There were only 6 vulnerabilities reported in the WordPress core".</p>
<p>A static Astro site has no plugin layer in production. The dependencies run on the build machine, not on the server that visitors hit. The public site has no PHP interpreter, no database and no login form.</p>
<p>Static does not mean zero risk. The form endpoint, the DNS account, the hosting account and the Git repository still need strong passwords and two-factor authentication. Review every third-party script you add (chat widget, analytics, ad pixel), because each one runs in your visitors' browsers.</p>
<p>A WordPress site needs core, theme and plugin updates on a schedule, plus a backup you have tested. An Astro site needs a dependency update when you next change content, and the build either passes or fails before anything goes live.</p>
<h2>Illustrative example: a six-page plumber site</h2>
<p>Illustrative example. This is not a real client and these are not measured results. It shows what the build does and what the owner should measure afterwards.</p>
<p>The site has six pages: home, four service pages (water heaters, drain cleaning, leak repair, emergency plumbing), and contact. Every page is static HTML. The phone number is a plain link in the HTML, so it works before any script loads. One JavaScript island, the quote form, loads only when it scrolls into view. Every photo goes through <code>&lt;Image /&gt;</code>. Every page carries LocalBusiness structured data.</p>
<p>At freewebsite247 we build our customers' sites this way. Every site is built by humans, assisted with AI.</p>
<h3>The home page with one island</h3>
<pre><code class="language-astro">---
// src/pages/index.astro
import Layout from '../layouts/Layout.astro';
import { Image } from 'astro:assets';
import QuoteForm from '../components/QuoteForm.jsx'; // a React, Preact, Svelte, Vue or Solid component
import vanPhoto from '../assets/van.jpg';
---
&lt;Layout title="[Business name], Plumber in [City]"&gt;
  &lt;h1&gt;[Business name]: licensed plumber in [City]&lt;/h1&gt;
  &lt;p&gt;
    Same-day service. 
    &lt;a href="tel:[PHONE]"&gt;Call [PHONE]&lt;/a&gt;
  &lt;/p&gt;

  &lt;Image
    src={vanPhoto}
    alt="[Business name] service van parked outside a home in [City]"
    loading="eager"
  /&gt;

  &lt;h2&gt;Services&lt;/h2&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="/water-heaters/"&gt;Water heater repair and replacement&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/drain-cleaning/"&gt;Drain cleaning&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/leak-repair/"&gt;Leak repair&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/emergency-plumbing/"&gt;24-hour emergency plumbing&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;Get a quote&lt;/h2&gt;
  &lt;QuoteForm client:visible /&gt;
&lt;/Layout&gt;
</code></pre>
<p>What this does:</p>
<ul>
<li>The <code>tel:</code> link is plain HTML. A visitor can tap and call before any JavaScript loads, or with JavaScript blocked.</li>
<li><code>&lt;Image /&gt;</code> from <code>astro:assets</code> reads the width and height from the imported file and writes them into the <code>&lt;img&gt;</code> tag, which is how it prevents layout shift. It converts the file to WebP by default. The alt attribute is required by the component.</li>
<li><code>loading="eager"</code> on the hero image overrides the component's default lazy loading. Use it on the image you expect to be the LCP element.</li>
<li><code>client:visible</code> on the quote form means its JavaScript downloads when the form scrolls into the viewport. Until then the page has zero framework JavaScript.</li>
<li>Framework components need the matching Astro integration installed (for example <code>@astrojs/react</code> or <code>@astrojs/preact</code>). Keep the file extension in the import, as the Astro docs do.</li>
</ul>
<h3>The LocalBusiness JSON-LD block</h3>
<p>Put this in the <code>&lt;head&gt;</code> of the layout, or in a component included on every page. Replace every value in brackets. Keep the rest exactly as written so the JSON stays valid.</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "[Business name]",
  "url": "https://[yourdomain.com]/",
  "telephone": "[PHONE]",
  "image": "https://[yourdomain.com]/images/[storefront-or-van].jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[Street address]",
    "addressLocality": "[City]",
    "addressRegion": "[State]",
    "postalCode": "[ZIP]",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "[latitude]",
    "longitude": "[longitude]"
  },
  "areaServed": "[City and surrounding area]",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:00",
      "closes": "18:00"
    }
  ],
  "priceRange": "[$$]",
  "sameAs": [
    "https://[your Google Business Profile or social profile URL]"
  ]
}
&lt;/script&gt;
</code></pre>
<p><code>Plumber</code> is a schema.org subtype of <code>LocalBusiness</code>. Swap it for <code>Electrician</code>, <code>HVACBusiness</code>, <code>Dentist</code>, <code>Restaurant</code> or plain <code>LocalBusiness</code> to match the business. In Astro you can also build the object in the component's frontmatter and output it with <code>&lt;script type="application/ld+json" set:html={JSON.stringify(schema)} /&gt;</code>.</p>
<p>Validate the result. <a href="https://developers.google.com/search/docs/appearance/structured-data/local-business">Google's LocalBusiness documentation</a> says: "Validate your code using the Rich Results Test and fix any critical errors." Run it on every page template before launch.</p>
<h3>What the owner should measure after launch</h3>
<ul>
<li>PageSpeed Insights, Mobile tab, field data section: LCP, INP and CLS against the 2.5 s, 200 ms and 0.1 thresholds. Field data appears once the site has enough Chrome visitors. Until then, use the lab score as a guide, not a result.</li>
<li>Search Console, Core Web Vitals report, Mobile: the count of URLs rated Good.</li>
<li>Search Console, Performance report: impressions and clicks for "[service] [city]" queries, page by page.</li>
<li>Calls: tap events on the <code>tel:</code> link, tracked as a key event in your analytics tool.</li>
<li>Quote form submissions per week, and how many turned into jobs.</li>
</ul>
<p>Do not accept a promised speed score from any builder, including me. Accept the measured field data after launch.</p>
<h2>When WordPress is still the right call</h2>
<p>WordPress is the right choice when the business publishes often and non-technical staff edit pages themselves several times a week. Astro can pair with a headless CMS to give editors a visual interface, but that adds setup, an extra service and a build step.</p>
<p>WordPress with WooCommerce is the right choice for a store with a cart, inventory, taxes, shipping rules and payment plugins. Rebuilding that in a static framework means wiring together several services.</p>
<p>WordPress is the right choice for membership sites, gated content, forums and course platforms, where logged-in users see different pages. Static builds serve the same HTML to everyone.</p>
<p>WordPress is the right choice when a critical workflow depends on a specific plugin: a booking system with staff calendars, a directory with user submissions, a multi-step form synced to a CRM. If the plugin is the business process, keep the platform the plugin runs on.</p>
<p>Keep WordPress when the site already passes. <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">49.0% of WordPress sites</a> passed all three Core Web Vitals on mobile in October 2026. If your site is in that group and the plugins are current, run the checklist below before deciding on a rebuild.</p>
<h2>Checklist: test your own site today</h2>
<p>Run these on your current site, whatever it is built in. Every item names the free tool and what to look for. Labels: "Pass" marks the three Core Web Vitals thresholds Google publishes. "Astro median benchmark" marks a comparison with the median Astro site in the HTTP Archive data, not a pass mark. "Target" marks a goal with no published threshold. "Check" marks everything else.</p>
<h3>Speed and Core Web Vitals</h3>
<ul>
<li><input disabled type="checkbox" /> Run your home page and your busiest service page through PageSpeed Insights (pagespeed.web.dev) on the Mobile tab. Read the field data section first. Pass: LCP at or under 2.5 s, INP at or under 200 ms, CLS at or under 0.1, all at the 75th percentile, per <a href="https://web.dev/articles/vitals">web.dev</a>.</li>
<li><input disabled type="checkbox" /> If PageSpeed Insights shows no field data, use the lab Performance score and the diagnostics list as a guide. Check: nothing flagged red. Lab numbers are not field numbers, so re-check once real-user data arrives.</li>
<li><input disabled type="checkbox" /> Open Search Console, Experience, Core Web Vitals, Mobile report. Target: zero URLs rated Poor and zero rated Needs improvement.</li>
<li><input disabled type="checkbox" /> In the PageSpeed Insights diagnostics, find the LCP element. Check: it is a text block, or an image served with width and height attributes and without lazy loading.</li>
<li><input disabled type="checkbox" /> Count third-party scripts in the "Reduce unused JavaScript" and "Minimize third-party usage" audits. Check: every one has a named business reason. Remove the rest.</li>
</ul>
<h3>Page weight</h3>
<ul>
<li><input disabled type="checkbox" /> Open Chrome DevTools, Network tab, tick Disable cache, pick a mobile throttling profile, reload the home page. Read the transferred total in the status bar. Astro median benchmark: at or under 1.3 MB. Above 2.7 MB puts you over the WordPress median, per <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">HTTP Archive</a>.</li>
<li><input disabled type="checkbox" /> Filter the Network tab by JS. Astro median benchmark: total JavaScript at or under 390 KB.</li>
<li><input disabled type="checkbox" /> Filter the Network tab by Img. Astro median benchmark: total image bytes at or under 306 KB. Check: every photo served as WebP or AVIF.</li>
<li><input disabled type="checkbox" /> View the page source and check that each <code>&lt;img&gt;</code> has width and height attributes. Check: every image has both.</li>
<li><input disabled type="checkbox" /> Count web font files in the Network tab, filter Font. Check: system fonts, or self-hosted WOFF2 files with <code>font-display: swap</code>.</li>
</ul>
<h3>Mobile</h3>
<ul>
<li><input disabled type="checkbox" /> Open the site on your own phone over mobile data, not Wi-Fi. Tap the phone number. Check: the dialer opens with the full number filled in.</li>
<li><input disabled type="checkbox" /> View the page source and search for <code>tel:</code>. Check: the phone link is a plain <code>&lt;a href="tel:+1..."&gt;</code> in the raw HTML, not inserted by a script.</li>
<li><input disabled type="checkbox" /> Pinch-zoom in on a service page and rotate the phone. Check: no horizontal scrolling and no text cut off.</li>
<li><input disabled type="checkbox" /> Search the page source for <code>name="viewport"</code>. Check: one tag reading <code>content="width=device-width, initial-scale=1"</code>.</li>
<li><input disabled type="checkbox" /> Compare the mobile and desktop views of each page. Check: same text, same links, same structured data, because <a href="https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing">Google indexes the mobile version</a>.</li>
<li><input disabled type="checkbox" /> Run Lighthouse in Chrome DevTools, Mobile, Accessibility category. Check: the "Touch targets have sufficient size and spacing" audit passes.</li>
</ul>
<h3>SEO and structured data</h3>
<ul>
<li><input disabled type="checkbox" /> View the page source of each key page. Check: the H1, the service descriptions, the address and the phone number appear in the raw HTML. The <a href="https://almanac.httparchive.org/en/2025/page-weight">Web Almanac 2025</a> states: "all key information should be present in the initial raw HTML, since AI crawlers do not render JavaScript."</li>
<li><input disabled type="checkbox" /> Check every page has one <code>&lt;title&gt;</code> and one meta description. Check: no two pages share either.</li>
<li><input disabled type="checkbox" /> Paste the home page URL into Google's Rich Results Test (search.google.com/test/rich-results). Check: LocalBusiness or a subtype detected with zero critical errors, as <a href="https://developers.google.com/search/docs/appearance/structured-data/local-business">Google's documentation</a> requires.</li>
<li><input disabled type="checkbox" /> Open yourdomain.com/robots.txt and yourdomain.com/sitemap.xml in a browser. Check: both load, and the Search Console Sitemaps report shows the sitemap with status Success.</li>
<li><input disabled type="checkbox" /> Open the Search Console Pages report. Check: every service page is listed as Indexed.</li>
<li><input disabled type="checkbox" /> Run Lighthouse, Mobile, SEO category. Astro median benchmark: 100, the <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">median Astro site's score</a>.</li>
<li><input disabled type="checkbox" /> Check heading structure in the page source. Check: one H1 per page, and H2s that name the services and the city.</li>
</ul>
<h3>Security and maintenance</h3>
<ul>
<li><input disabled type="checkbox" /> Count your plugins (WordPress: Plugins menu). Write the number down. Check each one's last-updated date on wordpress.org. Check: every plugin is active, current and still maintained. Delete the rest. Context: 91% of new WordPress vulnerabilities in 2025 were in plugins, per <a href="https://patchstack.com/whitepaper/state-of-wordpress-security-in-2026/">Patchstack</a>.</li>
<li><input disabled type="checkbox" /> Load the http://, https://, www and non-www versions of your domain. Check: all four land on one HTTPS URL with a valid certificate and no browser warning.</li>
<li><input disabled type="checkbox" /> Open the Search Console HTTPS report. Check: every indexed URL is HTTPS.</li>
<li><input disabled type="checkbox" /> If the site has a login page, confirm two-factor authentication is on for every account. Check: no account logs in with a password alone.</li>
<li><input disabled type="checkbox" /> Confirm a backup from this week exists and that you have restored one at least once. Check: you can name the date of the last restore test. On a static site, the Git repository plus the build command is the backup, so confirm the repository is private and up to date.</li>
</ul>
<h3>Conversion</h3>
<ul>
<li><input disabled type="checkbox" /> Open the home page on a phone. Check: the phone number and one primary action are visible without scrolling.</li>
<li><input disabled type="checkbox" /> Open every service page. Check: each ends with one clear action, call or request a quote, and no page has competing buttons.</li>
<li><input disabled type="checkbox" /> Submit your own contact form from a phone. Check: you receive the message, and the visitor sees a plain confirmation.</li>
<li><input disabled type="checkbox" /> In your analytics tool, mark <code>tel:</code> link taps as a key event. Check: a test tap from your phone appears in the real-time report.</li>
<li><input disabled type="checkbox" /> Open your Google Business Profile. Check: the name, address and phone match the site footer and the JSON-LD exactly, and the website field points at your home page.</li>
</ul>
<h2>FAQ</h2>
<h3>Is Astro good for SEO?</h3>
<p>Yes. Astro outputs every page as static HTML with its own title, meta description and structured data in the raw source. The Web Almanac 2025 states that AI crawlers do not render JavaScript, so raw HTML is what they read. The median Astro site <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">scored 100 on the Lighthouse SEO audit</a> on mobile in October 2026, against 92 for the median WordPress site.</p>
<h3>Is Astro faster than WordPress?</h3>
<p>On measured real-world sites, yes. In October 2026, <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">72.2% of Astro sites</a> passed all three Core Web Vitals on mobile against 49.0% of WordPress sites, and the median Astro page weighed about 1.3 MB against 2.7 MB. Those are field correlations across many sites, not a lab test, and framework is not the only factor.</p>
<h3>Can a small business owner edit an Astro site?</h3>
<p>Yes, with the right setup. Content lives in Markdown files or in a headless CMS with a visual editor. The owner edits a page, saves, and the host rebuilds and publishes the static files. Owners who change text a few times a year can ask the developer to make the edits. For daily editing by several staff, see the WordPress section above.</p>
<h3>Does an Astro site need plugins or a database?</h3>
<p>No. A static Astro build ships as HTML, CSS, images and the JavaScript its islands need. There is no database and no plugin layer running on the server. Forms post to a form service or an API endpoint. Dependencies update on the build machine, and a failed build stops before anything reaches visitors.</p>
<h2>Takeaway</h2>
<p>Astro ships HTML by default and JavaScript only where you ask for it. In October 2026, <a href="https://httparchive.org/reports/techreport/tech?tech=Astro,WordPress">72.2% of Astro sites passed Core Web Vitals on mobile</a> against 49.0% of WordPress sites, with pages under half the weight. Those are field correlations, not a lab guarantee, so measure your own site with the checklist above. Keep WordPress for stores, memberships and daily editing by many hands. For a six-page local business site, build static, keep the phone link in plain HTML, and validate the structured data before launch.</p>
<p>freewebsite247 builds its customers' small-business websites in Astro, with on-page SEO, schema markup and Google setup included, redesigns existing sites too, and shows owners a preview within 24 hours.</p>
<p>If that's too much work, contact us and we'll make you a free website.</p>
<p>The website is free, you just pay for the hosting. Business websites only.</p>
<p>Call or WhatsApp (702) 695-5582, or <a href="https://freewebsite247.com/?utm_source=hashnode&amp;utm_medium=article">request your free website here</a>.</p>
]]></content:encoded></item></channel></rss>