Build precise search queries with exact phrases, site filters, exclusions, date ranges, filetypes, and one-click links across search engines and vertical search targets.
This is not a search engine, metasearch aggregator, scraper, or API proxy. It is a local static query builder that opens the search engine you choose.
The app has five surfaces:
- Simple: the everyday exact-search builder at
index.html. - Advanced Search Lab: a pro operator builder at
advanced.htmlfor Google dorks, filetype searches, site/path filters, title/URL/body operators, date ranges, presets, and raw operator lines. - Shodan: a Shodan query builder and search helper at
shodan.htmlfor banner terms, org/net scopes, ports, TLS certificate filters, HTTP metadata, screenshots, and defensive exposure review. - crt.sh: a crt.sh query builder and search helper at
crtsh.htmlfor certificate transparency searches, wildcard domains, expired certificate cleanup, deduped results, JSON exports, and certificate ID pivots. - Wayback: a Wayback query builder and search helper at
wayback.htmlfor CDX API URLs, match types, date ranges, status codes, MIME filters, collapsed captures, and archive research.
Web:
- Google (with
udm=14to skip the AI Overview) - Google Verbatim
- Brave
- Kagi
- DuckDuckGo
- Bing
- Marginalia (small-web, non-commercial index)
- Mojeek (independent crawler)
Technical and forums:
- Hacker News
- GitHub Issues
- GitHub Code
- Stack Overflow
- Reddit via Google
Research and archives:
- arXiv
- Google Scholar
- Wayback Machine (Internet Archive web captures)
- Exact: quote the whole input.
- Old Google: quote the input and prioritize stricter web searches.
- Technical Error: quote the full error and recommend GitHub Issues, Stack Overflow, HN, and code search.
- Forums: prioritize human discussion surfaces.
- Old Web: add a
before:date, with quick presets for 2022, 2020, 2016, and 2010. - PDFs / Docs: add
filetype:pdf. - Exclude Sludge: apply an editable local blocklist for
-site:filters and recurring junk terms.
npm install
npm run devThe dev command builds the static app once and serves dist at http://127.0.0.1:4173.
There is no HMR. Re-run npm run dev (or npm run build && npm run preview) after changes.
The build compiles the TypeScript app, copies static assets, and emits sitemap/robots files.
npm run buildOutput goes to dist/. The app can also be opened directly from dist/index.html.
Set PUBLIC_SITE_URL at build time for correct canonical URLs and sitemap entries. The default is https://goodoldsearch.com.
PUBLIC_SITE_URL=https://goodoldsearch.com npm run buildThe included Dockerfile builds the app, then serves dist with the existing Node static server.
Coolify settings:
- Build pack: Dockerfile.
- Exposed port:
3000. - Build arg or environment during build:
PUBLIC_SITE_URL=https://goodoldsearch.com. - Runtime env: Coolify can provide
PORT; otherwise the image defaults to3000.
npm test
npm run smoke
npm run smoke:live
npm run smoke:live:strictnpm testbuilds the app, runs the single-process assertion suite, and runs query-type smoke checks.npm run smokeverifies every supported engine URL builder, host, engine-specific query syntax, key recipe behavior, and share URL round trip.npm run smoke:livealso tries live reachability for every target and reports external warnings without failing the structural smoke.npm run smoke:live:strictfails on external reachability warnings too. Some engines may rate-limit, redirect, or bot-block automated requests even when browser links work.
src/
main.ts
styles.css
lib/
queryModel.ts
queryBuilder.ts
recipes.ts
shareUrl.ts
blocklist.ts
bookmarklet.ts
engines/
index.ts
google.ts
googleVerbatim.ts
bing.ts
brave.ts
duckduckgo.ts
kagi.ts
hn.ts
redditGoogle.ts
stackoverflow.ts
githubIssues.ts
githubCode.ts
arxiv.ts
utils.ts
tests/
query.test.mjs
scripts/
build-seo-files.mjs
clean-dist.mjs
copy-static.mjs
serve-dist.mjs
smoke-engines.mjsMIT. See LICENSE.
- Google can match quoted terms in hidden page text, URLs, or stale indexed content.
- DuckDuckGo may show related results if exact matches are sparse.
- Bing may ignore punctuation or limit how many terms affect results.
- Kagi may require login.
- Vertical searches ignore web-only operators where their engine does not support them.