selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
Web Rendering Proxy (WRP) logo

Self-host Web Rendering Proxy (WRP)

4.10.3

Proxy that renders the modern web for vintage browsers

ReleaseOpen SourceApache-2.0
docker run -d --rm -p 8080:8080 tenox7/wrp:latest
Updated2 months ago
LanguageGo
Setup difficultyEasy
Stars
1 307
Port
8080 (HTTP listener serving the WRP web form UI and proxy endpoint)
Requires
Google Chrome / Chromium / Brave Browser
Docker
tenox7/wrp

What is Web Rendering Proxy (WRP)?

WRP is a proxy server that lets old and historical web browsers reach today's web: Chrome on your modern gateway machine renders each page, and the legacy client gets back either a picture of it (GIF, PNG or JPEG) wired up as a clickable image map, or a stripped-down simplified HTML version that is easier to read. It runs either as a browser-in-browser gateway the old browser points at directly, or as an HTTP proxy with automatic configuration via /proxy.pac. The served web form exposes width, height, colour count, zoom, image type, history back, remote reload and a keystroke box, so typed input reaches fields inside the rendered page; whole pages can also come back as one very tall image you scroll client-side. Self-hosting means downloading a binary, or using the tenox7/wrp container, and listening on port 8080; command line flags set rendering mode, image geometry, JPEG quality, render delay, user agent, headless operation and a Chrome profile directory that keeps cookies and the full session between runs. Notable limits: sites that block headless browsers stay a moving target, HTTPS URLs through proxy mode lose functionality, the UI template only applies to the gateway form, and HTTPS-only hosts such as Cloud Run tend to defeat the purpose for old clients.

Should you self-host Web Rendering Proxy (WRP)?

Web Rendering Proxy (WRP) scores 53/100 on selfhost.directory (how scoring works) and ranks #11 of 25 in Proxy. It has 1 307 GitHub stars.

It shipped 4 stable releases in the past year. The latest, 4.10.3, came out on 23 April 2026. New versions land roughly every 7 days.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is Apache-2.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is frp (85/100, 110 230 stars). It scores higher overall, so compare the two before you pick. See Web Rendering Proxy (WRP) vs frp side by side.

Features

  • Clickable image map page rendering
  • Customizable UI template
  • Headless rendering on the server
  • HTTP proxy mode with PAC
  • Images in simplified HTML output
  • Multiple image output formats
  • Page scrolling and zoom controlThe zero-height tall image is called experimental, buggy and demanding of client memory.
  • Persistent logins via browser profileLog in once with -h=false then restart headless, on the same machine, since the cookie key lives in the OS keychain.
  • Remote keystroke input
  • Screenshot re-capture and remote reload
  • Search box alongside URL entry
  • Session save and restore
  • Simplified HTML reader mode
  • User agent override

Web Rendering Proxy (WRP) README

How to install Web Rendering Proxy (WRP)

Install Web Rendering Proxy (WRP) with Docker

$ docker run -d --rm -p 8080:8080 tenox7/wrp:latest

Published at https://hub.docker.com/r/tenox7/wrp; image is based on chromedp/headless-shell and has arm64/aarch64 builds (no armv6).

How to configure Web Rendering Proxy (WRP)

  • -bpath to the browser executable (for example Brave Browser)

    path to the browser executable (for example Brave Browser)

  • -g1152x600x216image geometry WxHxC; height 0 means unlimited, and the colour count C only applies to GIF

    image geometry WxHxC; height 0 means unlimited, and the colour count C only applies to GIF

  • -htrueheadless mode, hides the browser window on the server

    headless mode, hides the browser window on the server

    values: true, false

  • -l:8080listen address:port

    listen address:port

  • -mrendering mode, ismap (graphical) or html

    rendering mode, ismap (graphical) or html

    values: ismap, html

  • -nfalsedo not free maps and images after use

    do not free maps and images after use

    values: true, false

  • -profileChrome user-data dir; persists cookies, logins and the session between runs

    Chrome user-data dir; persists cookies, logins and the session between runs

  • -q75%JPEG image quality

    JPEG image quality

  • -s2sdelay after the page is rendered, before the screenshot is taken

    delay after the page is rendered, before the screenshot is taken

  • -tgifimage type

    image type

    values: gif, png, jpg

  • -uauser agent override for the built-in headless agent; ISMAP mode only

    user agent override for the built-in headless agent; ISMAP mode only

  • -uiwrp.htmlHTML template file used for the UI

    HTML template file used for the UI

  • -vncpageflag named in the session docs; skips reopening saved tabs

    flag named in the session docs; skips reopening saved tabs

Web Rendering Proxy (WRP) releases & version history

FAQ

What is the GIP image format?

GIP is an optimized GIF flavour: no dithering, a fast colour palette and parallel encoding.

Why isn't there a Docker image for armv6?

The container is built on the chromedp/headless-shell image, which publishes no armv6 build.

Does WRP save and restore the session?

Yes, with -profile it keeps a wrp-session.json holding UI settings and open tabs and restores them next run; command line flags win.

How do I stay logged in to Gmail and other sites?

Run WRP with -profile pointing at a Chrome user-data dir, sign in once with -h=false, then restart headless on the same machine.

What can I do when websites block headless browsers?

It is a known, ongoing cat-and-mouse problem; WRP by default fetches a current-looking UA string instead of HeadlessChrome, and -ua lets you set your own.

Why are pages chopped off?

Click St to re-capture the picture, and raise the post-render delay with the -s flag if the page needs longer to load.

Why can't I get it to run?

WRP has no GUI and is started from the command line; on Unix you may have to set the executable bit on the downloaded binary before running it.

More in Browser Automation

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…