Design wechseln

Pagefind-Suche für Astro-Blogs: Kostenlos, schnell und mehrsprachig – vollständiger Leitfaden

Easton editorial illustration: deployment dock

Je mehr Blogartikel Sie veröffentlichen, desto öfter kommt die Frage: „Könnten Sie eine Suche einbauen? Ich erinnere mich an etwas zu XX, finde es aber nicht.“

Lange habe ich die Suche aufgeschoben – Algolia ist teuer (für persönliche Blogs unerschwinglich), Elasticsearch selbst zu betreiben zu aufwendig. Dann entdeckte ich Pagefind: einfache Konfiguration, Index nur wenige Dutzend KB, völlig kostenlos, native Mehrsprach-Unterstützung inklusive Chinesisch.

Was ist Pagefind? Kurz gesagt: eine Suchmaschine speziell für statische Websites. Beim Build wird automatisch ein Suchindex erzeugt, die Suche läuft vollständig im Browser – kein Backend, keine Drittanbieter-API. Entscheidend: kostenlos, sehr schnell, supereinfach einzurichten.

In diesem Artikel zeige ich Ihnen Schritt für Schritt:

  • Warum Pagefind für persönliche Blogs besser passt als Algolia
  • Wie Sie Pagefind in 10 Minuten einrichten
  • Fortgeschrittene Optimierung und Feintuning für mehrsprachige Suche
  • Lösungen für häufige Probleme

Wenn Sie Ihren Blog mit Astro betreiben und eine Suche ohne laufende Kosten wollen, ist dieser Artikel für Sie.

Warum Pagefind?

Bevor ich meinem Blog eine Suche hinzufügte, habe ich gängige Lösungen verglichen. Pagefind gewann aus drei Gründen: Kosten, Datenschutz und Performance.

Die Vorteile statischer Suche

Pagefind gehört zur Kategorie „statische Suche“ – der Index entsteht beim Build, wird mit der Site deployed, Abfragen laufen im Browser. Das bringt klare Vorteile:

Völlig kostenlos. Anders als Algolia gibt es keine Gebühren pro Suchanfrage. Egal wie viel Traffic Ihr Blog hat – die Suche kostet nichts.

10 Minuten
Konfigurationszeit
Von Installation bis Live
Unter 100 KB
Indexgröße
Unter 300 KB bei 10.000 Seiten
Kostenlos
Monatliche Kosten
Unbegrenzt kostenlos

Datenschutzfreundlich. Suchanfragen gehen nicht an Drittserver, alles passiert lokal. Für datenschutzbewusste Leser ein wichtiger Punkt.

Kein Backend. Klassische Suchlösungen brauchen Server, Datenbank und Hochverfügbarkeit. Pagefind ist statisch, läuft auf dem CDN – so stabil wie Ihre Seiten.

On-Demand-Laden. Der Index ist in kleine Chunks aufgeteilt; beim Suchen werden nur passende Teile geladen. First Paint bleibt unbeeinträchtigt.

Pagefind vs. Algolia im Vergleich

VergleichPagefindAlgolia
Monatliche KostenKostenlosFree Tier begrenzt, Standard ab $1/1.000 Suchen
DatenschutzVollständig lokal, keine UploadsGesamter Content auf Algolia-Server
IndexgrößeUnter 300 KB bei 10.000 SeitenGrößerer Vollindex
LademodusOn-Demand, nur Treffer-ChunksLive-API-Aufrufe
KonfigurationWenige Zeilen CodeAPI-Key, Daten-Upload
EinsatzMittelgroße Blogs, DocsE-Commerce, Enterprise

Algolia ist stark – Geschwindigkeit, Toleranz bei Tippfehlern, Analytics auf Top-Niveau. Für persönliche Blogs oft Overkill. Und bei steigendem Traffic steigen die Algolia-Kosten schnell.

Praxisbeispiele und Zahlen

Pagefind performt sehr gut. Laut BryceWray.com: bei 10.000 Seiten unter 300 KB Index. Die meisten Blogs liegen bei ~100 KB.

Offizielle Pagefind-Tests: 19 Seiten in 0,043 Sekunden indexiert. In Rust geschrieben – Builds für Blogs mit tausenden Seiten dauern nur Sekunden.

Astro Starlight nutzt Pagefind als Standard-Suche in der offiziellen Doku. Wenn Astro es wählt, ist das ein gutes Zeichen.

Pagefind in 5 Schritten einrichten

Genug Theorie – jetzt Praxis. Ich führe Sie Schritt für Schritt durch; wirklich nur ~10 Minuten.

Schritt 1: Abhängigkeiten installieren

Zuerst zwei npm-Pakete:

npm install astro-pagefind pagefind

Warum zwei Pakete?

astro-pagefind ist die Astro-Integration und startet Pagefind beim Build. pagefind ist die Kernbibliothek mit UI und API. Beide werden gebraucht, weil wir später direkt auf pagefind-Ressourcen verweisen.

Schritt 2: astro.config.mjs konfigurieren

Öffnen Sie astro.config.mjs und fügen Sie die Pagefind-Integration hinzu:

import { defineConfig } from 'astro/config';
import pagefind from 'astro-pagefind';

export default defineConfig({
  integrations: [pagefind()],
});

So einfach. Nach npm run build indexiert Pagefind automatisch Ihre Inhalte.

Schritt 3: Suchkomponente erstellen

Legen Sie unter src/components/ eine Search.astro an:

---
// src/components/Search.astro
---

<link href="/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/pagefind/pagefind-ui.js"></script>
<div id="search"></div>

<script>
  window.addEventListener('DOMContentLoaded', () => {
    new PagefindUI({
      element: "#search",
      showSubResults: true,
      showImages: false
    });
  });
</script>

Wichtige Optionen:

  • element: DOM-Element für die Such-UI
  • showSubResults: Sekundärtreffer (z. B. passende Absätze)
  • showImages: Seiten-Thumbnails (meist aus – schnelleres Laden)

Bei ViewTransitions transition:persist setzen, damit die Komponente beim Seitenwechsel nicht neu initialisiert wird:

<div id="search" transition:persist></div>

Schritt 4: Suchkomponente einbinden

Zwei Varianten:

Variante 1: In der Navigation

In Header.astro oder Navbar.astro:

---
import Search from '../components/Search.astro';
---

<header>
  <nav>
    <!-- Ihre Nav-Links -->
  </nav>
  <Search />
</header>

Variante 2: Eigene Suchseite

src/pages/search.astro:

---
import Layout from '../layouts/Layout.astro';
import Search from '../components/Search.astro';
---

<Layout title="Suche">
  <main>
    <h1>Artikel suchen</h1>
    <Search />
  </main>
</Layout>

Link in der Navigation auf /search. Persönlich bevorzuge ich das – die Nav bleibt aufgeräumt.

Schritt 5: Build und Test

Fertig konfiguriert – jetzt bauen:

npm run build

Bei Erfolg etwa:

Running Pagefind...
Indexed 42 pages
Indexed 3,582 words
Created 5 index chunks
Finished in 0.234 seconds

Lokal testen:

npm run build && npx pagefind --site dist --serve

Browser: http://localhost:1234 – Suche ausprobieren.

Wenn Suchfeld und Treffer erscheinen: Glückwunsch, es funktioniert!

Fortgeschrittene Konfiguration und Optimierung

Die Basis-Suche läuft. Für präzisere, schnellere Ergebnisse nach Ihren Wünschen:

Index-Bereich präzise steuern

Standardmäßig indexiert Pagefind alles in <body> – Navigation, Sidebar, Footer landen im Index und verfälschen Treffer.

Beispiel: Footer mit „Über mich“ – Suche nach „Autor“ trifft jede Seite wegen identischem Footer.

Lösung: data-pagefind-body für den indexierbaren Bereich:

<body>
  <nav data-pagefind-ignore>
    <!-- Navigation nicht indexieren -->
  </nav>

  <main data-pagefind-body>
    <!-- Nur Hauptinhalt -->
    <article>
      <h1>Artikelüberschrift</h1>
      <p>Artikelinhalt...</p>
    </article>
  </main>

  <aside data-pagefind-ignore>
    <!-- Sidebar nicht indexieren -->
  </aside>

  <footer data-pagefind-ignore>
    <!-- Footer nicht indexieren -->
  </footer>
</body>

Mit data-pagefind-body nur dieser Bereich; einzelne Elemente mit data-pagefind-ignore ausschließen.

Vorteile:

  1. Präzisere Suche – nur Fließtext, weniger Rauschen
  2. Kleinerer Index – ohne wiederholte Nav/Footer oft 30–50 % weniger Volumen

Eigene Metadaten und Titel

Pagefind wählt standardmäßig das erste <h1> als Titel und Anfangstext als Snippet – manchmal ungenau.

Mit data-pagefind-meta überschreiben:

<!-- Standard-Titel überschreiben -->
<h1 data-pagefind-meta="title">Astro-Suche implementieren – Leitfaden</h1>

<!-- Snippet festlegen -->
<p data-pagefind-meta="description">
  So binden Sie Pagefind in Astro-Blogs ein – inkl. Setup und Optimierung für mehrsprachige Inhalte.
</p>

<!-- Bild -->
<img data-pagefind-meta="image[src]" src="/cover.jpg" alt="Cover">

Suchgewichtung anpassen

Titel-Treffer weiter oben:

<h1 data-pagefind-weight="10.0">Artikelüberschrift</h1>
<p data-pagefind-weight="1.0">Fließtext</p>

Höheres Gewicht = höhere Rankings. Standard 1,0; Titel oft 5,0–10,0.

Mehrsprachige Suche in der Praxis

Pagefind ist ein internationales Tool – wie gut ist Chinesisch?

Gute Nachricht: Mehrsprachigkeit inklusive Chinesisch ist eingebaut, oft ohne Extra-Setup. In Tests:

  • Tokenisierung: „Astro Suche“ trifft „Astro“, „Suche“, „Astro-Suchfunktion“
  • Fuzzy Match: „Blog Suche“ trifft „Suche zum Blog hinzufügen“
  • Kein Pinyin: „boke“ findet nicht „博客“ – für Tech-Blogs meist vernachlässigbar

Eigene Such-UI

Die Standard-UI reicht oft. Für tiefes Styling oder Filter die JavaScript-API:

// Pagefind initialisieren
const pagefind = await import("/pagefind/pagefind.js");

// Suche ausführen
const search = await pagefind.search("Astro");

// Ergebnisdetails
const results = await Promise.all(
  search.results.map(r => r.data())
);

// Custom UI rendern
results.forEach(result => {
  console.log(result.url);      // Seiten-URL
  console.log(result.meta.title); // Titel
  console.log(result.excerpt);   // Snippet
});

Vorteil: volle UI-Kontrolle. Nachteil: eigenes Rendering – für die meisten reicht die Standard-UI.

Häufige Probleme und Lösungen

Problem 1: Falsche Titel oder Snippets in den Ergebnissen

Symptom: Titel ist nicht der Artikel-Titel, Snippet stammt aus der Navigation.

Ursache: Pagefind nimmt erstes <h1> und Anfangstext – bei unüblicher Struktur falsch.

Lösung: data-pagefind-meta:

---
// BlogPost.astro Layout
const { title, description } = Astro.props;
---

<article>
  <h1 data-pagefind-meta="title">{title}</h1>
  <p data-pagefind-meta="description">{description}</p>
  <!-- weiterer Inhalt -->
</article>

Problem 2: Suche bricht mit ViewTransitions

Symptom: Nach Astro ViewTransitions funktioniert die Suche auf der Suchseite nicht.

Ursache: ViewTransitions führt Skripte neu aus, DOM wurde geleert – Initialisierung schlägt fehl.

Lösung: transition:persist:

<div id="search" transition:persist></div>

Astro behält das Element beim Seitenwechsel.

Problem 3: pagefind-Befehl beim Build nicht gefunden

Symptom: npm run build meldet: pagefind: command not found

Ursache: Nur astro-pagefind, nicht das Kernpaket pagefind.

Lösung: Beide installieren:

npm install astro-pagefind pagefind

Integration in astro.config.mjs prüfen.

Problem 4: Suche liefert 404 nach Deployment

Symptom: Lokal OK, auf Cloudflare Pages/Netlify 404 für /pagefind/pagefind.js.

Ursache: Kein pagefind-Ordner im Build – falsches Build-Skript.

Lösung: Build muss Pagefind-Indexierung enthalten. Mit astro-pagefind automatisch; sonst in package.json:

{
  "scripts": {
    "build": "astro build && npx pagefind --site dist"
  }
}

Deployment mit diesem Build-Befehl.

Problem 5: CSP-Fehler oder zu großer Index

CSP (Content Security Policy)

Konsolenfehler Refused to load WebAssembly: Pagefind nutzt WebAssembly – in CSP wasm-unsafe-eval:

Content-Security-Policy: script-src 'self' 'wasm-unsafe-eval'

Bei Cloudflare Pages in _headers:

/*
  Content-Security-Policy: script-src 'self' 'wasm-unsafe-eval'; default-src 'self'

Index zu groß

Mehrere MB in pagefind/ – zu viel indexiert. Nur Hauptinhalt:

<body>
  <nav data-pagefind-ignore>...</nav>
  <main data-pagefind-body>
    <!-- Nur hier indexieren -->
  </main>
  <footer data-pagefind-ignore>...</footer>
</body>

30–50 % kleinerer Index. On-Demand-Laden lädt ohnehin nur passende Chunks.

Praxisbeispiele und Best Practices

Index-Qualität überwachen

Beim Build gibt Pagefind Statistiken aus:

Running Pagefind...
Indexed 42 pages       ← Anzahl Seiten
Indexed 3,582 words    ← Wortanzahl
Created 5 index chunks ← Index-Chunks
Finished in 0.234 seconds

Interpretation:

  • pages sollte Ihrer Artikelzahl entsprechen – weniger? Prüfen Sie data-pagefind-ignore
  • Weniger index chunks = kompakterer Index; typisch ein Chunk pro 1.000–2.000 Seiten
  • Build über 5 Sekunden: viel Content oder zu breiter Index-Bereich

Deployment-Checkliste

Vor Production:

1. pagefind-Ordner vorhanden

ls dist/pagefind

Erwartet: pagefind.js, pagefind-ui.js, pagefind-ui.css usw.

2. Suche testen

  • Häufige Keywords
  • Chinesische Begriffe (falls relevant)
  • Nicht existierende Begriffe → „Keine Ergebnisse“

3. Indexgröße

du -sh dist/pagefind

Typisch 50 KB–500 KB. Über 1 MB: Index-Bereich optimieren.

4. Mobile

Suche auf dem Smartphone – Standard-UI ist responsive; Custom UI selbst anpassen.

SEO-Hinweise

Suchseiten müssen nicht indexiert werden – in search.astro noindex:

<head>
  <meta name="robots" content="noindex, follow">
</head>

Suchmaschinen indexieren die Suchseite nicht, folgen aber Links darauf.

Performance-Tipps

1. Suchkomponente lazy laden

Suchfeld in der Nav, aber selten genutzt:

<div id="search"></div>

<script>
  // Pagefind erst beim Klick auf Such-Icon laden
  document.getElementById('search-icon').addEventListener('click', async () => {
    const pagefind = await import("/pagefind/pagefind-ui.js");
    new PagefindUI({ element: "#search" });
  });
</script>

First Paint ohne Pagefind-Ressourcen.

2. CDN-Caching

# _headers (Cloudflare Pages)
/pagefind/*
  Cache-Control: public, max-age=31536000, immutable

3. Preload

Auf der Suchseite häufige Keywords vorladen:

const pagefind = await import("/pagefind/pagefind.js");

// Beliebte Keywords preloaden
pagefind.preload("Astro");
pagefind.preload("React");

Fazit

Kurz zusammengefasst: Pagefind ist eine der besten Optionen für Astro-Blog-Suche – kostenlos, einfach, performant, mehrsprachig inklusive Chinesisch.

Im Vergleich zu Algolia (hunderte Dollar/Jahr) sparen Sie viel, ohne Server oder API. Wirklich „einbinden und loslegen“.

Noch unsicher? Probieren Sie 10 Minuten Pagefind – einfacher als gedacht, oft besser als erwartet.

Bei Problemen gerne in den Kommentaren melden. Schon erfolgreich eingerichtet? Teilen Sie Ihre Erfahrung!

Weiterführend:

Vollständiger Ablauf: Pagefind-Suche für Astro-Blogs

In 10 Minuten kostenlose, schnelle Volltextsuche mit Chinesisch-Unterstützung einrichten

⏱️ Estimated time: 10 min

  1. 1

    Step 1: Pagefind-Vorteile verstehen und mit anderen Lösungen vergleichen

    Pagefind-Vorteile:
    • Völlig kostenlos (keine Gebühren pro Suchanfrage wie bei Algolia – egal wie viel Traffic, es kostet nichts)
    • Datenschutzfreundlich (Suchanfragen gehen nicht an Drittserver, alle Abfragen lokal im Browser)
    • Kein Backend nötig (vollständig statisch, auf CDN deployed – so stabil wie Ihre Webseite)
    • On-Demand-Laden (Index in kleine Chunks aufgeteilt, nur relevante Teile werden beim Suchen geladen)

    Pagefind vs. Algolia:
    • Kosten: Pagefind kostenlos; Algolia Free Tier 10.000 Suchen/Monat, danach nutzungsbasiert
    • Datenschutz: Pagefind lokal, keine Daten-Uploads; Algolia erfordert Upload aller Inhalte
    • Indexgröße: Pagefind unter 300 KB bei 10.000 Seiten; Algolia braucht größeren Vollindex
    • Konfiguration: Pagefind in 10 Minuten; Algolia braucht API-Schlüssel und Setup
  2. 2

    Step 2: 10-Minuten-Setup: Installation und Index-Erstellung

    Pagefind CLI installieren:
    • npm install -D pagefind ausführen
    • Nach der Installation erzeugt Pagefind CLI beim Build automatisch den Suchindex

    Index erstellen:
    • Build-Skript in package.json ergänzen
    • pagefind-Befehl nach dem Build-Skript ausführen
    • Beispiel: "build": "astro build && pagefind --site dist"
    • Nach dem Build wird der Suchindex automatisch generiert

    Such-UI integrieren:
    • Suchkomponente auf der Seite einbinden
    • Suchbutton und Suchfeld erstellen
    • Pagefind-UI-Komponente für Ergebnisse nutzen

    Chinesisch konfigurieren:
    • Pagefind unterstützt Chinesisch nativ, keine Extra-Konfiguration nötig
    • Sprachoption setzen genügt

    Suche testen:
    • npm run build ausführen
    • Suche im Browser testen
    • Sicherstellen, dass alles funktioniert
  3. 3

    Step 3: Fortgeschritten: Custom UI und Performance-Optimierung

    Such-UI anpassen:
    • Suchfeld und Ergebnisliste an Ihr Design anpassen
    • Pagefind-Standardstyles per CSS überschreiben

    Suchbereich konfigurieren:
    • Nur Titel, nur Inhalt oder Volltext
    • Je nach Bedarf einstellen

    Indexgröße optimieren:
    • Unnötige Seiten ausschließen (404, Testseiten)
    • Nur durchsuchbare Inhalte indexieren

    Such-Highlighting:
    • Treffer hervorheben, damit Nutzer Inhalte schneller finden

    Performance:
    • Lazy Loading: Pagefind-Ressourcen erst beim Klick auf Suche laden
    • CDN: Index-Dateien statisch, Cache-Control in _headers setzen
    • Preload: Auf der Suchseite häufige Keywords vorladen

FAQ

Warum Pagefind? Welche Vorteile hat es?
Pagefind-Vorteile:
• Völlig kostenlos (keine Gebühren pro Suchanfrage wie bei Algolia)
• Datenschutzfreundlich (Suchanfragen bleiben lokal – wichtig für datenschutzbewusste Leser)
• Kein Backend (kein Server, keine Datenbank, keine HA-Komplexität – statisch auf CDN)
• On-Demand-Laden (Index in Chunks, First Paint unbeeinträchtigt)

Pagefind ist „statische Suche“ – Index beim Build, Deployment mit der Site, Suche im Browser. Im Vergleich zu Algolia (hunderte Dollar/Jahr) sparen Sie viel Geld, ohne Server oder API-Setup – einfach einbinden und nutzen.
Was ist der Unterschied zwischen Pagefind und Algolia?
Pagefind vs. Algolia:

Kosten:
• Pagefind: kostenlos
• Algolia: Free Tier 10.000 Suchen/Monat, Standard ab $1/1.000 Suchen

Datenschutz:
• Pagefind: lokal, keine Uploads
• Algolia: vollständiger Content-Upload auf Algolia-Server

Indexgröße:
• Pagefind: unter 300 KB bei 10.000 Seiten
• Algolia: größerer Vollindex

Konfiguration:
• Pagefind: ~10 Minuten
• Algolia: API-Schlüssel und Setup

Gegenüber Algolia sparen Sie erheblich – ohne Server-Wartung und API-Konfiguration.
Wie konfiguriere ich Pagefind? Was ist der 10-Minuten-Ablauf?
Pagefind CLI installieren:
• npm install -D pagefind
• Index wird beim Build automatisch erzeugt

Index erstellen:
• Build-Skript in package.json, z. B. "build": "astro build && pagefind --site dist"

Such-UI integrieren:
• Suchkomponente, Button, Feld, Pagefind-UI

Chinesisch:
• Nativ unterstützt, Sprachoption setzen

Testen:
• npm run build, Browser-Test

Wenn Sie noch zögern: 10 Minuten Pagefind ausprobieren – einfacher als gedacht, bessere Ergebnisse als erwartet.
Wie optimiere ich die Pagefind-Suchperformance?
Performance-Optimierung:

Lazy Loading:
• Pagefind-Ressourcen erst beim Klick laden
• Dynamischer Import: import('pagefind/pagefind-ui.js').then(({ PagefindUI }) => { new PagefindUI({ element: '#search' }); })

CDN:
• Index statisch, CDN-Cache
• _headers: Cache-Control: public, max-age=31536000, immutable

Preload:
• Häufige Keywords auf der Suchseite vorladen

Fortgeschritten:
• Custom UI, Suchbereich, Indexgröße, Highlighting – siehe Artikel
Unterstützt Pagefind Chinesisch?
Ja:
• Chinesisch nativ, keine Extra-Konfiguration
• Index meist unter 100 KB
• Schnelle Suche, gute UX

Sprachoption setzen – Pagefind erkennt und verarbeitet chinesische Inhalte automatisch.

9 Min. Lesezeit · Veröffentlicht am: 3. Dez. 2025 · Aktualisiert am: 14. Juli 2026

Ähnliche Beiträge

Kommentare

Melde dich mit GitHub an, um einen Kommentar zu hinterlassen

Easton BlogEaston Blog