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

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.
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
| Vergleich | Pagefind | Algolia |
|---|---|---|
| Monatliche Kosten | Kostenlos | Free Tier begrenzt, Standard ab $1/1.000 Suchen |
| Datenschutz | Vollständig lokal, keine Uploads | Gesamter Content auf Algolia-Server |
| Indexgröße | Unter 300 KB bei 10.000 Seiten | Größerer Vollindex |
| Lademodus | On-Demand, nur Treffer-Chunks | Live-API-Aufrufe |
| Konfiguration | Wenige Zeilen Code | API-Key, Daten-Upload |
| Einsatz | Mittelgroße Blogs, Docs | E-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-UIshowSubResults: 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:
- Präzisere Suche – nur Fließtext, weniger Rauschen
- 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:
pagessollte Ihrer Artikelzahl entsprechen – weniger? Prüfen Siedata-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
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
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
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?
• 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?
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?
• 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?
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?
• 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
Astro-Leitfaden
Wenn du über die Suche hier gelandet bist, kommst du am schnellsten weiter, indem du zum vorherigen oder nächsten Beitrag dieser Serie springst.
Vorheriger
Astro-Bildoptimierung: 5 Praxis-Tipps für 50 % schnellere Ladezeiten
Astro-Bildoptimierung aus der Praxis: Image-Komponente, WebP/AVIF-Formate, Lazy Loading und Cloudflare-CDN. Mit Codebeispielen – First Paint von 6 s auf 1,8 s, Lighthouse von 62 auf 95 Punkte.
Teil 15 von 18
Nächster
Migration von Hugo/Hexo/Next.js zu Astro: Detaillierter Leitfaden in 3 Tagen
Möchten Sie von Hugo, Hexo oder Next.js zu Astro wechseln? Dieser Leitfaden bietet vollständige Migrationsanleitungen für drei gängige Frameworks – mit Schritt-für-Schritt-Anweisungen, typischen Fallstricken und Best Practices für eine reibungslose Migration in 1–3 Tagen, deutlich besserer Performance und ohne SEO-Verlust.
Teil 17 von 18
Ähnliche Beiträge
Was ist Astro? In 3 Minuten Zero JS, Islands Architecture und Content-First verstehen

Was ist Astro? In 3 Minuten Zero JS, Islands Architecture und Content-First verstehen
Astro-Blog von Grund auf: In 1 Stunde von der Startseite bis zum Deployment


Kommentare
Melde dich mit GitHub an, um einen Kommentar zu hinterlassen