Search has been the reason sites were treated as dynamic for twenty years. Pagefind ended that argument. It runs once, after your build, and indexes the HTML files you already have. The result is a chunked index of small JSON files the browser fetches lazily.

Three commands

npm i -D pagefind
npx pagefind --site out
# serve the search UI wherever you like

That's the whole pipeline. On a modest personal site the index weighs a few kilobytes, and the browser loads only the fragments it actually needs, so the search page stays light even with hundreds of articles.

What makes it gacor

  • Multilingual stemming out of the box, so 'translating' finds the same page as 'translated' in your index of four languages.
  • Highlighting of the matched phrase on arrival, without extra markup work.
  • Zero backend, zero cost, zero chance of leaking a search log.

Wire it up at your own pace: run it in CI after your favourite static build, and drop the UI in a page as a plain script tag. The index lives in the output folder, so every deploy refreshes it. For a site like ours, that is everything a search feature was supposed to do.