DuckFind - The Modern Web in Plain HTML for Vintage Browsers

Date: 2026-07-06

It started with an iBook.

I wanted my Mac OS 9 machine to browse the modern web — not a museum snapshot, but today’s internet. The first wall you hit is encryption: nearly everything is HTTPS now, and a browser from the TLS-1.0 era can’t complete the handshake. The fix for that is a wonderful little tool called Crypto Ancienne (carl) — an HTTPS-over-HTTP proxy that does the modern TLS on behalf of the old browser. I set it up on my homelab, pointed Classilla 9.3.4b at it, and suddenly the iBook could reach HTTPS sites.

Reach them, but not read them. Because the second wall is the web itself. A modern page is megabytes of JavaScript, CSS, web fonts, and lazy-loaded images — a layout engine from 2001 takes one look and falls over. Encryption was only half the problem. The pages themselves are the other half.

So I built DuckFind.

The Idea

DuckFind does all the hard work on a server and hands the old browser something it actually understands: clean HTML 3.2 — no CSS, no scripts, no web fonts. It fetches the real, modern, TLS-only page, strips it down to its bones, and re-serves it as the kind of markup a System 7 Mac, a Windows 3.1 box, or even an Apple II with a text browser can render.

If you know FrogFind by Action Retro, the concept will be familiar — but DuckFind is my own independent take (none of FrogFind’s code), and it does quite a bit more.

What It Does

  • Search — DuckDuckGo results, reformatted as plain HTML with pagination.
  • Reader — point it at any page and it distills the article down to readable HTML with a home-grown Readability-style extractor. Tables keep their borders, multi-page articles get stitched together, and anti-bot “checking your browser” pages are detected and skipped.
  • Inline images — an image proxy downscales JPEG/PNG/WebP/AVIF and re-encodes to GIF, the one format every old browser renders. There are grayscale and dithered black-and-white modes for 1-bit displays, so a 4000px DSLR photo becomes a 3 KB GIF a compact Mac can show.
  • Wayback mode — read any page as it existed in a past year, with images and links kept in the same era. Archived pages that were built for old browsers render in their original table layout instead of being flattened.
  • AI answers — type !ai your question and get a concise, plain-text answer rendered in HTML 3.2. A large language model, on a 1994 laptop. It still feels like a magic trick.
  • News, weather, a dictionary, plain-text output for terminal browsers, a site-wide dark mode, and character-set handling for non-English pages — all in markup that works on the oldest machines.

How It’s Built

DuckFind is a single-file-per-page PHP app with zero dependencies — no Composer, no frameworks, just PHP with the standard curl, dom, gd, and mbstring extensions. The browser only ever speaks plain HTTP to DuckFind; DuckFind handles the TLS, the JavaScript-free fetching, the content extraction, the image conversion, and the character-set normalization, then emits minimal HTML.

vintage browser ──HTTP/1.0, plain HTML── DuckFind (PHP) ──modern TLS/HTTP2── the web

Because it fetches arbitrary user-supplied URLs, it’s hardened against SSRF: it resolves DNS itself, rejects any non-public IP, pins connections to the validated address to defeat DNS rebinding, and re-validates every redirect hop.

Try It

It’s live at duckfind.com, and the full source is on GitHub under the MIT license — self-host it, point your own vintage machine at it, or just poke around the code.

There’s something genuinely satisfying about watching an iBook from the Clinton administration load a current news site, cleanly, in a browser that shipped before the iPhone existed. The old hardware was never the problem. The web just forgot how to be simple.

duckfind.com | GitHub