Skip to content

Introducing Dead Simple Search

February 16, 2026

There are plenty of search solutions out there. Elasticsearch, Meilisearch, Algolia, Typesense — all excellent tools built by talented people. So why build another one?

Because sometimes, you don't need another one. You need a simpler one.

The problem we noticed

Many website owners want search on their site. The usual path looks something like this:

  1. Sign up for a search-as-a-service provider
  2. Install their JavaScript widget
  3. Configure indexing via their dashboard
  4. Pay a monthly fee

For large sites with complex needs, this makes perfect sense. But for a personal blog, a small business site, or an internal knowledge base? It can feel like hiring a moving company to carry a suitcase.

We wanted something different: a tool you install on your own server, point at your website, and forget about. No accounts, no dashboards, no monthly invoices.

What Dead Simple Search does

At its core, Dead Simple Search does three things:

Crawl. You give it a URL. It visits that page, follows links, reads sitemaps (those XML files that list all the pages on a site), and discovers your content. It's polite about it — it checks robots.txt (the file that tells bots what they're allowed to visit) and waits between requests so it doesn't overwhelm your server.

Index. For every page it visits, it extracts the important parts: the title, headings, description, and the main body text. It strips out navigation menus, scripts, and other noise. Then it stores everything in a MySQL database with a full-text index — a special kind of database index that makes searching through large blocks of text very fast.

Search. You send a query to the API (an "API" is just a way for programs to talk to each other over HTTP — the same protocol your browser uses). It returns a list of matching pages, ranked by relevance.

What it doesn't do

Just as important as what Dead Simple Search does is what it doesn't try to do:

  • No user interface. It's an API-only backend. You connect your own front-end to it.
  • No user accounts or authentication. If you need access control, put it behind a reverse proxy (a server that sits in front of your app and controls who gets access).
  • No analytics or tracking. It doesn't collect any data about your users.
  • No machine learning or AI-powered ranking. It uses MySQL's built-in full-text search, which has been battle-tested for decades.

These aren't missing features — they're deliberate choices to keep the tool focused and small.

The tech stack

We chose the most boring, reliable technologies we could:

  • Python 3.13 — one of the most widely known programming languages in the world
  • Flask — a lightweight web framework that does exactly what you need and nothing more
  • MySQL — a database that runs on practically every server on the planet
  • aiohttp — an asynchronous HTTP library for efficient crawling

The entire codebase is about 800 lines across 7 files. You can read the whole thing in an afternoon.

Who is this for?

Dead Simple Search is for people who value:

  • Control — your data lives on your server, in your database
  • Simplicity — no complex setup, no external services, no vendor lock-in (that means you're never stuck depending on a specific company)
  • Transparency — every line of code is open source under the MIT license
  • Cost savings — the only cost is the server you're already running

If that sounds like you, we'd love for you to try it out.

Get involved

Dead Simple Search lives on Codeberg, a free and open platform for code hosting based in Europe. Check out the code, open an issue, or submit a pull request. Every contribution, no matter how small, makes the project better.

→ View the project on Codeberg