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.

txtdot logo

Self-host txtdot

v1.10.6

HTTP proxy extracting text and images to save bandwidth

ReleaseOpen SourceMIT
Updated8 hours ago
LanguageTypescript
Setup difficultyEasy
Stars
213
Port
8080 (HTTP proxy server)
Docker
ghcr.io/tempoworks/txtdot
Install with Docker Compose
Main page with URL input fieldSearXNG search results page

What is txtdot?

txtdot is a Node.js HTTP proxy that simplifies web pages on the server side using Mozilla's Readability library. It fetches a target URL, extracts the main content (text, links, images, tables), compresses images with Sharp, and serves a clean, minimal HTML page with no client-side JavaScript. It can also render JavaScript-heavy sites via the companion WebDer service and integrate with SearXNG for search. The project is designed for users on slow or metered connections who want to read articles without downloading megabytes of scripts and ads. It runs as a single container (Docker Compose) or via npm, listens on port 8080 by default, and is configured through environment variables. Development of the v1 branch is discontinued; active work continues on the v2 branch.

Should you self-host txtdot?

txtdot scores 47/100 on selfhost.directory (how scoring works) and ranks #19 of 25 in Proxy. It has 213 GitHub stars.

It shipped 5 stable releases in the past year. The latest, v1.10.6, came out on 25 October 2026. New versions land roughly every 3 days.

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

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 txtdot vs frp side by side.

Features

  • Ad and tracker removal
  • Image Compression
  • JavaScript rendering via WebDerRequires separate WebDer instance
  • Material Design 3 UI
  • Media proxy
  • No client-side JavaScript
  • Plugin System
  • REST API endpoints
  • SearXNG search integrationRequires separate SearXNG instance
  • Server-side page simplification

txtdot README

How to install txtdot

Install txtdot with Docker Compose

Environment variables
HOST, PORT, TIMEOUT, REVERSE_PROXY, PROXY_RES, IMG_COMPRESS, SWAGGER, SEARCH_BY_DEFAULT, SEARX_URL, WEBDER_URL

docker compose up -d

Uses ghcr.io/tempoworks/txtdot:latest image; mounts .env file into container

How to configure txtdot

  • HOST0.0.0.0Server bind address

    Server bind address

  • IMG_COMPRESStrueEnable image compression with Sharp (requires PROXY_RES)

    Enable image compression with Sharp (requires PROXY_RES)

    values: true,false

  • PORT8080Server port

    Server port

  • PROXY_REStrueEnable proxying of resources (images, etc.)

    Enable proxying of resources (images, etc.)

    values: true,false

  • REVERSE_PROXYfalseWhether running behind a reverse proxy

    Whether running behind a reverse proxy

    values: true,false

  • SEARCH_BY_DEFAULTfalseShow search page instead of URL input on homepage

    Show search page instead of URL input on homepage

    values: true,false

  • SEARX_URLhttps://searx.dc09.ruSearXNG base URL to enable search integration

    SearXNG base URL to enable search integration

  • SWAGGERfalseEnable API documentation route

    Enable API documentation route

    values: true,false

  • TIMEOUT0Request timeout in milliseconds (0 = no timeout)

    Request timeout in milliseconds (0 = no timeout)

  • WEBDER_URLhttp://webder.example.comWebDer base URL to enable browser rendering of JS-heavy sites

    WebDer base URL to enable browser rendering of JS-heavy sites

txtdot releases & version history

More in Web Scraping

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…