why duckduckgo still falls back to bing for me, and what i built instead
tech · 2025-08-30 · 5 min
i used duckduckgo as my default search for a year. it is fast, the results are mostly good, and it does not follow me around the web the way google does. the problem is not the results it returns. the problem is the ones it does not have.
duckduckgo does not run its own index for most of the web. it licenses results from bing, and when bing has nothing useful, duckduckgo has nothing useful either. the fallback is not a bug. it is the architecture. most of the time that architecture is fine. for the searches i actually run, it is not fine often enough to ignore.
the fallback, in practice
the fallback is easy to miss because duckduckgo does not announce it. you type a query, you get a page of results, and the page looks like duckduckgo. but the ranking is bing's, the snippets are bing's, and the coverage is whatever bing decided to crawl. for a popular query the difference is invisible. for a narrow one it is the whole answer.
the queries where it showed up for me were predictable: exact error messages, old forum threads, documentation for a library that changed names twice, and anything with a site: operator. those are the searches where i actually need a search engine. a query like "weather" does not need independence. a query like "rust lifetime error e0597 with async block" does.
how i measured it
i kept a small log for three months: every search where i had to run the query somewhere else, and why. two hundred and twelve queries, forty-one of them rerun on another engine. that is roughly one in five. not a crisis, but not noise either. the pattern was consistent: the more specific the query, the more likely duckduckgo would return generic pages, a spelling correction, or nothing.
i want to be fair to duckduckgo here. it is still my first stop for quick lookups, and its privacy stance is real. the point is not that it is bad. the point is that "independent" and "has its own index" are different claims, and the gap shows up exactly when the search matters.
what i built instead
i did not build a search engine. i built a small front door to several of them.
the setup is a self-hosted searxng instance on a cheap vps, reachable only through a private url, plus a browser keyword shortcut. typing s! in the address bar sends the query to my instance, which queries google, bing, brave and a couple of smaller engines and merges the results. a second shortcut, d!, goes straight to duckduckgo when i want the fast answer. a third, w!, goes to wikipedia for the queries that are really encyclopedia lookups wearing a search costume.
the useful part is not the merging. it is that i can see which engine returned what. when a result looks wrong, i can check whether it came from google or from bing and adjust. that visibility is the thing duckduckgo hides, and it is the thing i needed.
what it costs
self-hosting search is not free. it is a vps, a docker container, occasional updates, and a small amount of care when an engine changes its html and the scraper breaks. if that sounds like too much maintenance for a search box, it probably is. the honest alternative is to pay for a search engine that does its own indexing, or to accept the fallback and keep a second tab open.
i kept the setup because i already run a vps for other things, and because the failure mode of a broken search box is visible and fixable. if i did not, i would not build it again. i would pay someone instead.
when duckduckgo is still the right answer
for most people, most of the time, duckduckgo is fine. quick facts, definitions, news headlines, shopping comparisons: the fallback does not matter because bing has those results too. the calculus changes when search is part of your work and the query is the kind that only one index happens to have.
so the honest verdict is not "duckduckgo bad". it is "duckduckgo is a front end, and a front end is only as good as the index behind it". once i understood that, the fallback stopped being a mystery and became a design constraint. i kept the front end and added a second door.
for the privacy angle, see what this site actually sends. for the search-quality angle on the other side, see why i stopped using google.