Kage turns rendered websites into offline, script-free archives

GitHub Open Graph image for the tamnd/kage repository.GitHub
GitHub Open Graph image for the tamnd/kage repository.GitHub
Tools & Apps

Kage is an open-source Go tool that renders websites with headless Chrome, strips JavaScript, localizes assets, and packs the result as a folder, ZIM archive, or self-contained binary. It is useful for documentation snapshots, travel reading, and disaster-recovery copies, with clear caveats around crawl scope and dynamic sites.

Kage is an open-source tool for cloning a website into an offline copy after a real browser has rendered the page. Its GitHub README says it uses headless Chrome or Chromium, snapshots the final DOM, strips scripts, localizes CSS, images, and fonts, then can pack the mirror into a ZIM file or a self-contained executable. Trendshift separately tracks the same repository and describes it as a tool for offline website viewing with JavaScript stripped out.

Key takeaways

  • Kage targets whole-site snapshots, not just single-page saves.
  • The clone step renders pages in Chrome or Chromium before saving the script-free output.
  • The pack step can produce a ZIM archive, a single executable viewer, or desktop-app style bundles depending on platform and flags.
  • The repository states that Kage reads robots.txt, can resume interrupted crawls, and supports scope controls such as max pages, depth, path prefix, subdomains, and refresh behavior.
  • The strongest use cases are documentation, public wikis, reference sites, and travel/offline reading; complex authenticated apps still need careful testing.

Practical LinkLoot angle

Kage is worth testing if your team has web documentation that must survive outages, vendor changes, travel, or low-connectivity field work. It sits between classic mirroring tools and browser "Save As": it uses a browser first, but then removes the runtime JavaScript so the saved result is closer to static documentation.

Tool or formatBest useLimitationSource
Kage cloneRendered public sites, docs, essays, and wikis that need offline copiesRequires Chrome or Chromium and may need crawl limits on large sitesGitHub
Kage ZIM outputPortable archives readable through the wider Kiwix ecosystemKage notes that its ZIM output does not include the full-text search index shipped with some Kiwix packsGitHub
Kage binary outputHanding someone one executable that serves the archived siteThe executable includes Kage itself, so tiny sites still carry binary overheadGitHub
SingleFile / HTTrack comparisonsDeciding whether you need one page, a recursive crawl, or a rendered static mirrorHN discussion includes useful comparisons, but each tool handles dynamic sites differentlyHacker News

The operational use case is simple: pick one public documentation site, run a bounded crawl, and inspect the output offline. Check links, images, code samples, search boxes, and navigation before trusting it as a disaster-recovery copy.

What to verify before you act

Confirm the site allows crawling, then set conservative page, depth, concurrency, and scope limits before a first run. Test whether important content appears only after login, user actions, modals, infinite scroll, or API calls that Kage cannot preserve after scripts are stripped. If you package a binary for other people, verify the target operating system and architecture, and decide whether a ZIM archive is easier to audit and store.

Source check

The GitHub repository confirms Kage's purpose, install path, Chrome/Chromium dependency, clone and pack commands, ZIM/binary outputs, scope flags, resume behavior, and architecture. Trendshift independently identifies the repository and its offline, script-stripping purpose. The Hacker News thread confirms community attention and adds practical comparisons, but its comments are treated as untrusted discussion, not as proof of Kage's implementation.

For more tools that turn small workflows into reusable utilities, see LinkLoot's AI agent tools guide.

FAQ

Kage renders a website with headless Chrome, saves the final page state, strips JavaScript, localizes assets, and stores the site for offline browsing.