Labsco
sub-techie09 logo

Render-fetch

β˜… 2

from sub-techie09

Drop-in upgrade to Claude's WebFetch that auto-detects JS-rendered pages and fetches them with Playwright headless browser

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeQuick setup

render-fetch

MIT License npm version CI

Drop-in upgrade to Claude Code's WebFetch β€” handles JS-rendered pages automatically.

Claude's built-in WebFetch doesn't execute JavaScript. Modern SPAs return empty skeletons. render-fetch auto-detects whether a page needs a real browser and routes accordingly β€” no config needed.

How it works

URL in
  β”‚
  β”œβ”€ GET page (fast, reuses response)
  β”‚
  β”œβ”€ Score for JS-rendering signals
  β”‚     <div id="root/app/__next">  +3
  β”‚     thin body (<500 chars)      +2
  β”‚     data-reactroot / ng-version +2
  β”‚     window.__REDUX_STATE__      +2
  β”‚     bundled JS patterns         +1
  β”‚     .md / docs domain           -3
  β”‚
  β”œβ”€ Score < 3 β†’ Static path
  β”‚     HTTP β†’ cheerio β†’ Readability β†’ markdown
  β”‚
  └─ Score β‰₯ 3 β†’ Browser path
        Playwright headless β†’ networkidle β†’ Readability β†’ markdown

Tools

ToolWhat it doesKey paramsReturns
fetchFetch page as markdown (auto-detects mode)url, mode (auto/static/browser), maxLength (default 50k), timeout (default 30s)Clean markdown
fetch_rawFetch page as raw HTMLurl, mode, timeoutRaw HTML string
screenshotTake a viewport screenshoturl, fullPage (default false), timeoutBase64 PNG (max 2MB)

Why not always use the browser? Static path averages ~200ms. Browser path averages 2–3s plus Chromium launch overhead on first request.

Contributing

See CONTRIBUTING.md.

License

MIT Β© 2026 sub-techie09