SEO for Static Websites: The Complete Guide (Built-In, No Plugins)
Static websites have a great reputation with search engines. They load fast, they are hard to hack, and every page is a finished HTML document that crawlers can read in one request. So why do so many people still struggle with static website SEO?
Because “static” describes how a page is delivered, not whether it is optimized. Someone still has to write the title tags, generate the sitemap, keep canonicals consistent, return the right status codes, redirect old URLs and tell Google which language version belongs to which audience. On a WordPress site, plugins quietly do much of that. On a hand-built or generator-built static site, it all becomes your job.
This guide covers SEO for static websites from start to finish: what actually changes when a site is static, the problems that trip people up, and a complete checklist. Then we show how to do all of it inside one platform. TeleportHQ, a static website builder, builds, optimizes and publishes your site, and every SEO feature (including internationalization SEO) is built in, so you never export your code to another tool just to get found on Google.
Is SEO different for a static website?
Short answer: no. Search engines do not rank a site higher or lower because it is static. They look at the same things they look at everywhere:
- Content quality: does the page answer what the searcher wanted?
- Metadata: titles and descriptions that explain the page.
- Technical signals: sitemaps, robots rules, canonical tags, structured data, correct status codes.
- Internal linking: crawlable links that show how pages relate.
- Crawlability and indexability: can bots reach each page and are they allowed to index it?
- Experience: speed, mobile-friendliness and stability, measured through Core Web Vitals.
What differs is where the work happens. On a dynamic CMS, SEO settings live in plugins and a database. On a static site, titles, canonicals and schema come from templates and build steps, and a sitemap only changes when the site is rebuilt and deployed. The rules are the same. The mechanics are not, and that is where mistakes creep in.
The same applies to static site generator SEO. Astro, Hugo, Jekyll, Next.js, Gatsby and similar tools can all produce excellent SEO results, but none of them is “best for SEO” by default. Canonicals, Open Graph tags, schema, sitemap rules and noindex handling still have to be configured, and image optimization varies a lot between tools. How well it is configured matters far more than which generator you picked.
Why static sites can be great for SEO
When a static site is set up properly, it has real advantages.
Speed. Pages are prebuilt, so the server hands over finished files with no database queries or server-side rendering on each request. That helps Core Web Vitals, the page-experience metrics Google measures. The commonly used “good” thresholds, measured at the 75th percentile of real visits, are Largest Contentful Paint at or under 2.5 seconds, Interaction to Next Paint at or under 200 milliseconds and Cumulative Layout Shift at or under 0.1.
Security. With no database and little server-side code, there is a smaller attack surface. That matters for SEO because a hacked site can be flagged as unsafe, shown with warnings in results or even dropped from the index.
Crawlability. A crawler requesting a static page receives the full content immediately. It does not have to wait for scripts to build the page, which removes a whole class of rendering and indexing problems.
Cleaner URLs. Static output tends to produce simple, stable, human-readable addresses.
There is one honest caveat. A static host can serve a complete HTML document or an almost empty shell that JavaScript fills in later. These are very different starting points for a crawler. And a static site can still ship oversized images, heavy scripts and layout shifts. Static makes fast easy. It does not make fast automatic.
Where static website SEO goes wrong
Industry guides on this topic keep returning to the same problems. Here they are, with how each one typically gets solved when you do it yourself and how TeleportHQ handles it.
| Common static-site problem | Typical DIY fix | In TeleportHQ |
|---|---|---|
| Missing or duplicate titles and descriptions | Hand-code fields in every template | Per-page fields with site-wide defaults, plus AI fill |
| Canonical conflicts and duplicate URLs | Align framework and host settings | Self-canonical on every page by default, custom canonical per page |
| Sitemap ignores noindex pages, or is stale | Custom sitemap logic | Auto-generated; excludes noindex, admin and 404 pages |
| No robots.txt, or a wrong one | Write and deploy a file | Written every publish; editable in settings |
| Broken or missing schema | Hand-written JSON-LD in templates | Schema on every page automatically; AI-written per page |
| Fake 404s and bad redirects | Host-level config files | Page-level and global 301/302 redirects with loop detection |
| Unoptimized images | Plugins or build steps | Automatic resizing; optional WebP and phone/tablet sizes |
| Broken internal links | Crawl after the fact | Issues window flags them before you publish |
| Multilingual SEO (hreflang) | Manual tags or plugins | Built in: language URLs, hreflang sitemap, translated metadata |
| Migration losing rankings | Spreadsheet of redirects | Redirect manager, automatic redirects for moved homepage and imported posts |
| No way to verify the live result | Third-party audit tools | Site Health audits inside the editor |
The rest of this guide walks through each area, first explaining what matters, then showing the TeleportHQ way.
The platform-first approach to static site SEO
Most static SEO advice assumes a pipeline of separate pieces: a generator to build pages, a plugin or script for the sitemap, a host with its own redirect syntax, an audit tool to check the output and a translation setup bolted on top. Each seam between those tools is a place where settings disagree. A classic example is a framework that generates one trailing-slash convention while the host enforces another.
TeleportHQ takes the opposite approach. It is a browser-based platform for building, publishing and growing websites, web apps, online stores and booking sites without writing code. You describe or design the site with AI and the visual editor, and the same platform runs it: hosting, publishing, SEO settings, audits and analytics. Because the page list, the settings and the published output live in one place, the sitemap, canonicals, schema and redirects are all generated from the same source.
That is the idea behind everything below: you do not need to take your code and publish it somewhere else to get proper SEO. (You can still download your code if you want it. We cover that near the end.)
Static website SEO checklist, step by step
1. Make sure the page content is in the HTML
The first check on any static site is simple: open a key page, choose “View page source” and search for a distinctive sentence from the main content. If it is there, crawlers get it in the initial response. If you only see an empty app container, you are relying on JavaScript rendering, which adds risk.
With TeleportHQ, you publish a site rather than assemble a rendering setup, so there is no framework or hosting rule to misconfigure. It is still a good habit to view source on a live page after your first publish and confirm the title, description and canonical are what you expect.
2. Write unique titles and descriptions for every page
Titles and meta descriptions tell search engines (and searchers) what a page is about. On static sites they are usually generated from shared templates, which is efficient but means one bad default can spread across hundreds of pages. Think of a brand suffix that pushes every title past the display length.
In TeleportHQ, every page gets a title and description automatically. If you leave a page's fields empty, it uses your site-wide defaults, and the title falls back to the page name plus the site title. To set your own:
- Right-click a page in the Pages list and choose Page SEO Settings.
- Fill in Meta Title (up to 70 characters) and Meta Description (up to 160).
- Set site-wide fallbacks under Project settings → SEO & social → Search engines.
- Publish.
Not a copywriter? Click Fill with AI next to Meta Settings. It writes the missing title and description from the page's content, and it only fills empty fields, so it will not overwrite what you wrote.
One rule worth repeating from any SEO guide: do not duplicate titles across pages. TeleportHQ's Site Health audit flags pages that are missing a title or description, and pages that share the same title.
3. Get canonicals right
A canonical tag tells Google which address is the “real” one when similar content exists at several URLs. The usual static-site failure is two versions of one page, such as with and without a trailing slash, with canonicals, links and redirects disagreeing about which wins.
In TeleportHQ, Use Self Canonical URLs is on by default, so each page points to its own address. When a page genuinely duplicates another, such as a campaign landing page that repeats your homepage, turn on Custom Canonical in that page's Page SEO Settings and enter the full address of the main version. Blog posts have the same option, which is handy when an article first appeared on another site and you want Google to credit the original.
4. Publish a correct sitemap, automatically
On a static site, an XML sitemap is usually generated by code, and the generator may not know which pages you marked noindex. That is how thank-you pages and drafts end up in sitemaps. Sitemaps can also go stale: a page can be live while the sitemap still describes an older build.
TeleportHQ writes sitemap.xml every time you publish, with no upload step. It includes:
- Every page search engines should find, and one address per item on details pages (for example, one per product).
- Each language version of each page on multilingual sites.
It leaves out pages with No Index turned on, pages with “404” or “not-found” in their name and admin panel pages. That one rule removes the “sitemap ignores noindex” problem entirely.
If your site has a Blog or Help Center, the sitemap becomes an index. It points to sitemap-pages.xml for your pages, plus sitemap-blog.xml and sitemap-help.xml for articles. The article sitemaps are produced when a search engine asks, so a new post is listed without republishing the site. This solves the stale-sitemap problem for the content you update most often. The lists refresh every few minutes, so allow around 15 minutes for a brand-new article to appear.
You can see exactly what the next publish will write under Project settings → SEO & social → Search engines, then submit your sitemap address in Google Search Console.
5. Control crawling with robots.txt
A missing robots.txt is one of the most common launch oversights on static sites, and a wrong one (a stray Disallow: /) can hide your whole site. TeleportHQ writes a robots.txt on every publish. The default allows all crawlers and points to your sitemap. You can edit it in the same Search engines settings, for example to keep crawlers out of a /drafts/ folder.
Remember that robots.txt controls crawling, not indexing. To keep a page out of search results, use noindex instead.
6. Use noindex, and hide test sites properly
Turn on No Index in a page's Page SEO Settings for pages that should not appear in results, such as thank-you pages. TeleportHQ adds the noindex tag and drops the page from the sitemap in the same step, so the two signals never contradict each other. (Noindex does not make a page private. Anyone with the link can still open it. Use a members-only page or exclude the page from the site if it needs to be truly hidden.)
For test or demo sites, switch off Show this site in search engines in Project settings. From the next publish, every address of the site asks search engines not to list it. Staging addresses are always kept out of search engines automatically, and when you connect a custom domain, your TeleportHQ address redirects visitors to the domain and asks search engines not to list it. That prevents the duplicate-site problem where the same content ranks from two hostnames.
7. Manage redirects and status codes
Redirects are fiddly on static hosts because each one has its own configuration syntax. In TeleportHQ they are a form. Open a page's Page SEO Settings, turn on Custom Redirect, pick another page or any URL and choose 301 (permanent) or 302 (temporary). Every redirect also appears in a single list under Project settings → SEO & social → Search engines → Custom Redirects, where you can add redirects for old addresses that no longer have a page, such as /old-menu.
A few details that save real headaches:
- TeleportHQ refuses to save redirect loops, and tells you which pages are chasing each other.
- Redirects apply in every language: a redirect from
/old-menualso sends/es/old-menuto the Spanish version. - If you make a different page your homepage, the old address of that page automatically gets a 301 to
/. - Homepage and 404 pages cannot be redirected, which prevents a common self-inflicted wound.
One thing to verify on any static site, whatever the platform: that a missing URL returns a real 404 status and not a “Page not found” message served with a 200. After you publish, open a made-up address and check the status code in your browser's Network panel. A page that looks like an error but reports success is a soft 404.
8. Add structured data (schema markup)
Schema markup is JSON-LD code that describes your business and pages to Google and AI assistants. It can help pages qualify for richer results. On many static sites it means hand-writing JSON in templates and hoping every page type is covered.
TeleportHQ publishes schema on every page without setup:
- Every page: your organization, your website and the page itself.
- Inner pages: a breadcrumb trail, plus the right type for the content, such as a product, blog post, help article or list.
- FAQ pages: a page with at least two clearly formatted questions and answers also publishes FAQ markup.
Business details such as name, logo, contact details and social profiles are pulled from your project settings and filled in at each publish, so a new logo or phone number reaches every page automatically.
When you want a page to have its own schema, open its Page SEO Settings, scroll to Schema markup and click Generate schema markup (AI writes it from the page) or edit the JSON-LD yourself with live error checking. If a page changes a lot after its schema was written, TeleportHQ warns you that it is out of date. With Keep Schema Markup Up To Date on, which is the default, AI-written schemas that fell behind their pages are refreshed before each publish. Schema you edited by hand is never overwritten.
After publishing, test a live page with Google's Rich Results Test. Valid markup does not guarantee a rich result, and Google decides on its own whether to show one.
9. Set up social sharing tags
Open Graph tags control the title, description and image shown when a page is shared on Facebook, LinkedIn or X. Set a site-wide sharing image and description under Social sharing in Project settings, then override the image, title and description for any page in Open Graph Settings. If you need an image, Generate with AI can create one.
10. Build crawlable internal links, and fix broken ones before launch
Internal links tell search engines how your content is related and which pages matter. On static sites, different components often build URLs in slightly different ways, creating redirects and diluted signals. Broken links are even easier to ship, because the site builds successfully either way.
In TeleportHQ's editor, a yellow Issues button appears at the top left when a link or button points somewhere your site does not have. Click it to see every broken link across your pages, blog posts and Help Center articles, with a button that jumps to each one. It works before you publish, so broken links are caught at the source rather than after a crawl.
11. Optimize images for speed
Images are the quickest way to lose a static site's speed advantage, and the problem is easy to miss because the page can look perfect in preview.
TeleportHQ resizes each uploaded image to the size it is displayed at whenever you publish or export, on every plan. For lighter pages, turn on Advanced Image Optimisations in Project settings → Editor → Preferences → Advanced features. It converts uploaded images to WebP and creates smaller versions for phones (500px wide) and tablets (800px wide) so small screens download less.
The Assets Manager also helps you stay lean. It flags files as heavy from 300 KB and very heavy from 1 MB, and shows a line such as “1 heavy file on this page” at the top of the Uploads tab, with a list of what to replace. Add descriptive alt text to every informative image. Site Health reports images that lack it, and AI can write the missing text for you (more on that below).
12. Do blog SEO properly
A blog is often the main organic traffic engine for a static site, so it needs the same controls as any other page. Each TeleportHQ blog post and Help Center article has its own Meta Title, Meta Description, No Index, Custom Canonical and Custom Redirect fields, and these changes go live without republishing the site. Posts are described to Google as articles (BlogPosting or Article structured data) with title, description, main image, dates, author and your site name, and published posts are added to the sitemap automatically.
13. Be visible to AI assistants with llms.txt
Search is no longer only Google. TeleportHQ also writes an llms.txt file on each publish (on Trial, Pro and Premium workspaces) that describes your site to AI assistants such as ChatGPT and Claude (see how the SEO toolkit is built for AI search). On sites with a Blog or Help Center, it lists your articles by category, and llms-full.txt contains every article in full as Markdown. You can leave it on Auto, write your own text in Edit mode or turn it Off.
International SEO for static websites, built in
Multilingual SEO is where static sites usually get painful. You need a clean URL structure per language, hreflang annotations so Google serves the right version to the right audience, translated metadata, a way for visitors to switch language and translations that stay in sync as content changes. Doing that by hand across a generator, a translation tool and a host is a classic source of bugs.
In TeleportHQ, internationalization is part of the platform. Click the language button at the top left of the canvas, choose Enable internationalization, pick a main language, and add languages from the same menu. Here is what you get from an SEO point of view.
A clean URL structure. Your main language keeps the normal addresses (yoursite.com/about). Every other language adds its language code in front: yoursite.com/es/about for Spanish, yoursite.com/fr/about for French. Search engines get one distinct, crawlable address per language version, which is the subfolder approach many international SEO guides recommend.
Hreflang through the sitemap. The automatic sitemap lists every page once per language. For each page, it names all language versions with hreflang annotations and marks the main-language address as the default (x-default). That tells Google these pages are translations of each other, which helps it show Spanish searchers your Spanish page instead of the English one. There is nothing to maintain: keep Automatically Generate Sitemap on and republish.
Translated titles and descriptions. Each page's Meta Title and Meta Description can differ per language. In Page SEO Settings, pick the language you are editing. With Translate text elements automatically on, TeleportHQ translates the page settings you change in the main language. Blog posts also have translated titles, slugs and SEO text.
Translations that stay current. When you add a language, TeleportHQ can translate your content with AI, place a language switcher in the navigation and footer, and keep translations in sync when you edit text in the main language. In Manage Content, you can review every text side by side in each language, and export or import texts as CSV or XLIFF if a human translator will take over. A Glossary keeps brand names from being translated.
Language switching. By default, a visitor whose browser is set to a language you offer is taken to that version when they open your homepage. Everyone else sees the main language. If you prefer predictable behavior, tick Ignore browser language to always show the main language first. Either way, keep a language switcher visible (a dropdown or an inline “en / es” row) so visitors can choose, which is also in line with Google's guidance on not forcing users into a language.
Consistent site-wide controls. Show this site in search engines applies to every language, and redirects work in every language.
A few things to plan around, so there are no surprises. Page addresses are shared between languages, so /about cannot become /es/sobre-nosotros; only the language code changes. (Blog post slugs can be translated.) No Index, Custom Canonical and Custom Redirect on blog posts have one value for all languages. Each language beyond the main one needs a paid language slot, which Pro and Premium workspaces can add. And when languages are on, code downloads are limited to Next.js and HTML (an HTML download covers one language at a time).
Keep static content fresh without the publish-day surprises
On a static site, an edit is not live until the site is rebuilt and deployed. That is easy to forget when you update an old post, and it is why sitemaps and internal links can lag behind content.
TeleportHQ makes the model explicit. Publishing is a deliberate step: click Publish → Publish to Production, and a progress bar walks through generating the code, building and going live. When you edit after that, the Publish window shows an Unpublished changes badge, so you always know whether the live site matches the editor. Blog and Help Center content is the exception, as described above: posts and their sitemap entries go live without republishing.
For safer launches, use staging. Click Publish → Staging → Publish to Staging to put changes on a private test address that is always kept out of search engines. When you are happy, go back to Production and click Make it live to serve that exact build without rebuilding. The Deployments tab lists every publish with its status and lets you redeploy or promote one. After each publish, an After publishing line points out what visitors would hit, such as broken links, empty pages or images without alt text, and offers a button to check page loading speed on phones.
Audit and monitor your static site SEO
Shipping the right settings is half the job. The other half is verifying what the live site actually returns. TeleportHQ includes audit tools under Growth → SEO & Performance, so you do not need a separate crawler for the basics (more in our TeleportHQ SEO toolkit announcement). (These tools need a Trial, Pro or Premium workspace and a published site.)
Site Health. Click Run audit and in about a minute you get Performance, SEO, Accessibility and Best practices scores from 0 to 100, for desktop and mobile, powered by Google PageSpeed plus TeleportHQ's own checks. Those checks cover title and description length, the H1, images without alt text, the favicon, social tags, site language, canonical, structured data, robots.txt, sitemap.xml and homepage links that lead nowhere. At project level, it checks every page's SEO title and description (missing or duplicated), every image without alt text and a missing social image. Each issue is rated Critical, Warning or Suggestion, and you can download the report as JSON or CSV.
Fix with AI. From an audit report, click Apply fixes with AI (or Fix with AI on a single issue). AI writes missing SEO titles, descriptions, alt text, link labels and social images. You review the proposals, click Apply and publish.
Contrast. A separate audit finds text that is hard to read against its background and suggests fixes the AI Assistant can apply.
Keywords. Connect Google Search Console to see the searches, clicks, impressions and positions that bring visitors. If you do not have Search Console data yet, ask for AI keyword ideas, or click Analyze pages for page-by-page title, description and content suggestions.
Competitors. Add competitor sites and run a benchmark to compare Google PageSpeed scores with similar sites and get a prioritized to-do list.
Two notes for accuracy. Site Health scores measure your homepage, so use the Issues window for site-wide broken links. And you can run five audits per day per project, one per published version. The Monitoring tab for scheduled audits and alerts is marked as coming soon.
Whatever tool you use, keep one distinction in mind. “Published”, “eligible for indexing”, “indexed” and “getting traffic” are four different states. Fixing a technical problem makes a page eligible. Google decides whether and when to index it, and that can take days or weeks.
Moving to a static site without losing rankings
Migrating from a CMS to a static site is one of the riskiest moments for SEO, because the CMS was quietly doing a lot (redirects, sitemap rules, schema, canonicals) that nobody wrote down. Treat it as a full SEO migration, not a redesign:
- Inventory your URLs. Save every page that earns traffic, links or leads.
- Keep addresses where possible. In TeleportHQ you can set each page's address in Page SEO Settings, including nested paths such as
services/wedding-cakes. - Map every changed URL. Add 301 redirects in Custom Redirects, pointing each old address to its true equivalent, not blindly to the homepage.
- Carry over blog addresses. When a Blog or Help Center import file lists an article's old addresses, TeleportHQ adds a permanent redirect for each one automatically.
- Compare metadata. Check titles, descriptions, canonicals and schema on representative pages before and after.
- Test on staging first, then publish to Production.
- Verify the live site. Run Site Health, spot-check old URLs in a private window and connect Search Console to watch for crawl errors.
- Expect fluctuation. Rankings can move while Google recrawls changed URLs. No checklist can promise an instant, loss-free move.
If your current site is plain HTML, you do not have to rebuild it from scratch. You can import your existing HTML website into TeleportHQ, or follow our walkthrough on how to import HTML, CSS and JavaScript into an AI website builder, then apply the redirect and metadata checks above.
What if you still want the code?
Keeping everything in one platform does not lock you in. On a Pro or Premium plan, click Code at the top right of the editor, open the Download tab and choose a format such as HTML, React or Next.js. If you export, know the trade-offs: schema markup is included with TeleportHQ hosting and in the Next.js and React downloads, but not in HTML downloads, and web apps cannot be downloaded.
Most people never need to. Hosting, sitemaps, redirects, schema, audits and language handling are already part of publishing, which is the point of this guide.
Your static website SEO launch checklist
- Set a site-wide Meta Title and Meta Description.
- Give your most important pages their own titles and descriptions (use Fill with AI for the rest).
- Add a site-wide social sharing image.
- Review canonicals and set Custom Canonical only where pages truly duplicate each other.
- Mark thank-you and utility pages as No Index.
- Open the Issues window and fix every broken link.
- Check the Assets Manager for heavy files, add alt text and consider Advanced Image Optimisations.
- Add FAQ sections where they genuinely help, and generate custom schema for key pages.
- If you are going international, enable internationalization, add languages, review translations and translate each page's metadata.
- Add redirects for any old URLs.
- Publish to staging, review, then make it live.
- Open sitemap.xml, robots.txt and llms.txt on the live site.
- Run a Site Health audit and apply the fixes.
- Submit your sitemap in Google Search Console and check Keywords after a few weeks.
Frequently asked questions
Are static websites good for SEO?
Yes. Static sites are fast, secure and easy for crawlers to read, which supports the signals search engines care about. But they are not automatically optimized. You still need unique metadata, a correct sitemap, consistent canonicals, working redirects, real 404s and optimized images.
Do I need a plugin for static site SEO?
Not if the platform covers the basics. In TeleportHQ, titles, descriptions, canonicals, sitemaps, robots.txt, schema, social tags, redirects and audits are built into the editor and the publish process.
Is a static site generator better for SEO than a CMS?
Neither is inherently better. A generator gives you control and speed, but you build and maintain the SEO plumbing yourself. A CMS provides plugins for it. A platform that publishes static output and includes SEO tooling gives you the performance of the first with the convenience of the second. If you would rather pair a generator with a headless CMS, our guide to front end development for headless CMS explains how that setup works.
How do I handle SEO for a multilingual static website?
Use a consistent URL structure per language, hreflang annotations that link each translation to its counterparts, translated titles and descriptions and a visible language switcher. TeleportHQ provides all of these: language-code URLs such as /es/about, a sitemap that lists each language version with hreflang and x-default, translatable page settings and built-in switchers.
How long until changes show up in Google?
Publishing makes your changes live, but Google decides when to recrawl and reindex. It can take days or weeks. Submitting your sitemap in Search Console helps Google discover pages sooner.
Can I hide a static site while I build it?
Yes. Turn off Show this site in search engines, and use staging for private tests. Remember to switch it back on before launch.
Conclusion
SEO for static websites is the same SEO as everywhere else, with one big difference: the work shifts from plugins to your build and deployment process. That is great if you enjoy owning every detail, and a trap if you do not, because the failures are silent. The site builds, looks fine and quietly ships duplicate canonicals, a stale sitemap or a soft 404.
A platform that treats SEO as part of publishing removes most of that risk. With TeleportHQ, every page gets a title, description, canonical and schema automatically, sitemap.xml, robots.txt and llms.txt are written on every publish, noindex and redirects are one switch away and multilingual sites get language URLs and hreflang without a plugin. Audits, AI fixes, keyword data and competitor benchmarks live in the same editor. Nothing needs to be exported, hosted elsewhere or stitched together.
Ready to try it? Start from a static website template or build from scratch with the static website builder, publish it, then run your first Site Health audit and see exactly where you stand.
Comments
No comments yet. Be the first to share your thoughts.