- Vrealmatic
- Web
- Simple Search
Simple Web Search, without the heavy stack
Site search anyone can run — a static, browser-side index instead of databases, caches, and real-time APIs. Open source, free for everyone.

Search on a website doesn't have to be a big project.
Say the word “search” and most of us picture the heavy architecture around it: a dedicated search engine such as Elasticsearch or OpenSearch (or a hosted service like Algolia), a cache layer for speed, a real-time API behind the autocomplete, an indexing pipeline, and a server to run it all. A lot of work, a lot of technology, and a lot of database queries.
Yet most websites need just one thing: a visitor types a few letters and quickly finds the right page. You don't need an entire search backend for that.
Our open source tool SimpleWebSearch deliberately takes the opposite path. It generates a search index from your site, serves it as a plain file, and runs the whole search in the browser. No database, no cache, no API.
Vrealmatic/SimpleWebSearchOpen source · free to use · MITView on GitHub →Anyone can have search on their website — without complex technical solutions. The index is generated ahead of time, deployed as a static file, and searched directly in the visitor's browser.
Why search is usually complex
The classic search setup was built for large, constantly changing applications. Content is indexed into a search engine, results are kept in a cache for speed (Redis, for instance), the autocomplete calls a real-time API, and the whole thing has to be deployed, monitored, and kept up to date.
For a website that changes page by page rather than second by second, that's needlessly heavy. You pay for a running server and infrastructure maintenance just to let people search the site.
A website's content is largely static. If the content is static, the index can be static too. And a static index needs no database and no running backend.
How the tool simplifies it
SimpleWebSearch splits search into two separate steps: generating the index, and searching in the browser. That removes the entire “live” layer in between.
During generation, the tool follows the site's sitemap, fetches server-rendered HTML, extracts page titles and h1–h6 headings, and builds a ready-to-use search index (powered by MiniSearch) together with audit files for transparency.
Those files are deployed as ordinary static assets. In the browser the index is lazy-loaded — only when a visitor focuses the search field — and search and autocomplete then run entirely client-side, without a single request to a server.
Instead of “database → cache → API → browser”, the result is “index file → browser”. The index is rebuilt when the site's content changes, not on every search.
“Static” here means the search runs against a prepared file, not that the file is frozen. Generation can run whenever you want — on every deploy, on a schedule, or on demand after a content change — so the index stays in sync with the site without any live infrastructure.
Where that file lives is just an integration choice. You can ship it alongside the site, or store it independently — for example in object storage such as Cloudflare R2 or S3 — and update it without redeploying the website at all.
The index can be regenerated and replaced at any time. Decoupling it from your deploys — e.g. serving it from object storage — lets search update on its own cadence, independently of the website.
What the tool does
Even with simplicity as the goal, the tool handles what you actually expect from site search.
Generated from the sitemap
Walks the sitemap tree, including nested sitemaps, handles cycles and duplicate URLs, and respects noindex and canonical links.
Search in the browser
Search runs fully client-side on MiniSearch — with fuzzy matching (typo tolerance) and prefix matching for autocomplete.
Content selection
CSS selectors decide which parts of a page to index and which to skip. Per-heading weights control what matters most in results.
Multiple languages
Multilingual sites share one client with separate data per language, including custom stop words (English, Czech, and others).
The tool is built around progressive enhancement: the search field can include a plain <form> as a fallback, so it works even before the client script has loaded.
What if the site content changes?
You regenerate the index — and that can happen whenever it suits you: on every deploy, on a schedule, or triggered on demand right after you publish new or edited content. The new file simply replaces the old one.
Because the output is just a file, it doesn't have to be tied to your deploy pipeline. Stored in object storage such as Cloudflare R2, the index can be refreshed on its own, independently of when the website itself is deployed — with no server and no maintenance.
Open source for everyone
SimpleWebSearch is open source and anyone can use it. The code and the approach are publicly available on GitHub, so you can inspect, deploy, and adapt the tool to your own site.
It isn't just a demo. We use the same tool ourselves as part of our web services — which is why we know it works in practice and why we keep developing it.
Simple search shouldn't be a privilege of large projects with an infrastructure budget. That's why the tool is open source and free for anyone to use.
Summary
Search on a website can be simple. SimpleWebSearch generates an index from your sitemap, serves it as a plain file, and searches directly in the browser — with no database, cache, or real-time API. Regenerate it whenever the site changes; store it wherever suits your setup.
That removes most of the work, technology, and cost usually tied to search, and leaves you with fast, practical site search.

Want simple search on your website?
We can help you add fast, static site search without a search backend — generated from your sitemap, served as plain files, and running entirely in the browser. Open source and free to use.
