Self-hosted service
redlib-org/redlib avatar
redlib-org/redlib

Redlib: a private Reddit front-end you can self-host

Private front-end for Reddit

3,805 stars275 forksRustAGPL-3.0

At a glance

What is it?
Redlib proxies Reddit through a server written in Rust, strips the JavaScript and ads, and hides your browser behind its own requests. Here is how it installs, what it deliberately does not do, and where it breaks.
Who is it for?
Self-host Redlib if you want Reddit's signed-out content with no JavaScript and no direct requests from your browser to Reddit, and if you can carry the cost of a server that Reddit can rate-limit. Do not adopt it if you need to post, vote or comment, or if you need a promise that it will keep working.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 160 days ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem Redlib solves, and who it is for

Reddit's web interface loads scripts, ads and tracking that run in the reader's browser. Redlib moves that work to a server. The README describes it as "a private front-end like Invidious but for Reddit", and the comparison table in the README lists what Reddit's privacy policy says it logs: IP address, user-agent string, browser type, operating system, referral URLs, device information, pages visited, links clicked and search terms. Redlib's answer is architectural rather than contractual: the browser talks to the Redlib instance, and the instance talks to Reddit. The README states that all requests are proxied through the server, including media, and that a Content Security Policy prevents browser requests to Reddit.

The audience is narrower than "everyone who reads Reddit". Redlib implements most of Reddit's signed-out functionality, and the README says it still lacks a few features tracked in the issue list. So it suits readers: people who follow subreddits, read comment threads and open media, and who do not need to post, vote or moderate. It also suits operators who want to run one instance for a small group. The README's own framing is blunt about the benefit: browse r/unpopularopinion "without being tracked".

How Redlib proxies Reddit: Rust, Hyper and OAuth token spoofing

Redlib is written in Rust. The README lists Hyper for the HTTP server and client, Askama for templating and Rustls for TLS. Cargo.toml confirms the same stack and adds the pieces that matter for behaviour: tokio for async runtime, cached for caching, route-recognizer for routing, and rust-embed for shipping templates and static assets inside the binary. Templates live in templates/ and assets in static/, so a compiled binary carries its own UI.

The interesting mechanism is how Redlib avoids being blocked. The README's Libreddit comparison section describes three measures. OAuth token spoofing makes Redlib's requests look like those of the official mobile apps; the README says both iOS and Android clients were explored but only the Android client was chosen, because the anonymous iOS client came with content restrictions. The authentication token is refreshed every 24 hours, emulating the official Android app. And Redlib sends as many of the official app's HTTP headers as it can, to reduce the chance of Reddit cracking down on its requests.

That is the honest core of the project: it is not a Reddit API client in the sanctioned sense, it is a client that impersonates a mobile app. Every reliability property follows from that. If Reddit changes its mobile client headers or tightens rate limits, Redlib's requests start failing, and the fix is a code change plus a release, not a configuration tweak.

Installing Redlib with Docker Compose and reaching the settings page

The README's deployment section covers Docker, Docker Compose, Docker CLI, Podman quadlets, a prebuilt binary, building from source, Replit/Heroku/Glitch and launchd on macOS. The repository ships compose.yaml, Dockerfile, Dockerfile.alpine and Dockerfile.ubuntu, plus .env.example. The compose file pins the published image quay.io/redlib/redlib:latest, maps port 8080 and reads environment variables from .env.

Start by copying the example environment file, then bring the service up:

bash
cp .env.example .env
docker compose up -d

The compose file sets a healthcheck that requests http://localhost:8080/settings every five minutes, so a working container answers that path. Open http://localhost:8080/settings in a browser to see the instance and default user settings. The compose file also runs the container as nobody, with read_only: true, cap_drop: ALL and no-new-privileges, so the process has no writable filesystem and no Linux capabilities. If you put a reverse proxy in front, the file's comment says to bind 127.0.0.1:8080:8080 instead of exposing 8080 on all interfaces.

Configuration is environment-driven. .env.example documents keys such as REDLIB_SFW_ONLY, REDLIB_BANNER, REDLIB_ROBOTS_DISABLE_INDEXING and REDLIB_PUSHSHIFT_FRONTEND for the instance, and defaults such as REDLIB_DEFAULT_THEME (system, light, dark, black, dracula, nord, laserwave, violet, gold, rosebox, gruvboxdark, gruvboxlight), REDLIB_DEFAULT_FRONT_PAGE (default, popular, all), REDLIB_DEFAULT_LAYOUT (card, clean, compact), REDLIB_DEFAULT_POST_SORT and REDLIB_DEFAULT_COMMENT_SORT. To change the shipped defaults, edit the lines already present in .env.example after copying it, for example:

bash
REDLIB_DEFAULT_THEME=system
REDLIB_DEFAULT_LAYOUT=card
REDLIB_ROBOTS_DISABLE_INDEXING=off

Restart the container after editing .env. The README also points at LibRedirect and Privacy Redirect for people who want Reddit links to open in Redlib automatically, and at the redlib-instances repository for a list of public instances if you would rather not run one.

What Redlib cannot do, and when it is the wrong tool

Redlib is a reader. The README states it currently implements most of Reddit's signed-out functionality but still lacks a few features. Anything that requires an account session, posting, voting, commenting, moderation or private messages, falls outside that description. If your workflow is participating in a subreddit rather than reading it, Redlib is the wrong tool and no configuration changes that.

The second limitation is structural. Because Redlib impersonates the Android client to get around rate limits, its availability depends on Reddit not noticing or not caring. A self-hosted instance on a residential IP may be rate-limited sooner than a large public instance, and nothing in the README offers a fallback mode. The README's own comparison table for speed is dated "Last tested on January 12, 2024", using Google PageSpeed Insights on redlib.matthew.science, so treat those figures as a historical measurement of one instance, not a property you should expect from your own deployment.

The third is the instance question. Redlib is self-hostable, so running it means you are the operator: you carry the server, the uptime and the consequences of Reddit-side changes. Public instances exist and are listed in the redlib-instances repository, but using someone else's instance means trusting that operator with the same request metadata you were trying to keep away from Reddit.

Redlib against Teddit and Libreddit

The README names two comparisons directly. Teddit is described as another open source alternative front-end to Reddit with no connection to Redlib. The stated differences are design and language: Redlib is themed around Reddit's redesign, while Teddit sticks closer to Reddit's old design, and Redlib is written in Rust using Hyper for a lightweight HTTP server and client. If you prefer the old Reddit look, Teddit is the closer fit; if you want the redesign's layout, Redlib is.

Libreddit is the closer comparison, because Redlib originated as a fork of it. The README explains the rename: Reddit only allows use of its name when structured as "XYZ For Reddit", so the project adopted Redlib to avoid legal issues. The technical differences listed are the ones described above: OAuth token spoofing against the Android client, token refreshing every 24 hours, and HTTP header mimicking. That means the practical difference between the two is not the interface but the request strategy, and therefore how the project behaves when Reddit changes its mobile endpoints.

Neither comparison settles deployment. Both are self-hosted front-ends with the same fundamental dependency on Reddit continuing to serve requests to non-browser clients.

Maintenance, releases and the AGPL-3.0 licence

The repository is not archived, and the last push was on 2026-04-24. Releases are infrequent: v0.36.0 on 2025-03-20, and before that v0.35.1 and v0.35.0 on 2024-06-29. Cargo.toml sets version 0.36.0 and rust-version 1.81, so building from source needs a Rust toolchain at or above that. The release cadence matters operationally: because the project's survival depends on matching Reddit's mobile client behaviour, the gap between the last release and the last push is the window in which fixes may exist in the repository but not in a published artifact.

The licence is AGPL-3.0-only, per Cargo.toml and the LICENSE file. The practical implication for operators is that the AGPL's network clause covers software offered to users over a network, so if you modify Redlib and let others use your instance, the licence's source-availability terms are relevant to you. That is a description of the licence's scope, not legal advice; read the licence text or ask a lawyer about your situation.

Upgrade cost is low in the common case. The compose file references quay.io/redlib/redlib:latest, so pulling a new image and restarting the container is the whole procedure, and configuration lives in .env rather than in the image. Building from source is the heavier path, and the README documents it separately from the binary and Docker routes.

Editorial conclusion

Self-host Redlib if you want Reddit's signed-out content with no JavaScript and no direct requests from your browser to Reddit, and if you can carry the cost of a server that Reddit can rate-limit. Do not adopt it if you need to post, vote or comment, or if you need a promise that it will keep working. Before committing, verify that the instance you deploy returns content for your subreddits, and check the redlib-instances list for an existing public instance that already covers your use.

Frequently asked questions

Is Redlib safe to use?

The README's privacy section is written to describe how Redlib handles user data, and the architecture is the argument: all requests are proxied through the server, including media, and a Content Security Policy prevents browser requests to Reddit. Whether that is safe for you depends on who operates the instance, since a public instance's operator sees the proxied traffic.

Is Redlib free to use?

The source is published under AGPL-3.0-only, and the README's deployment section documents self-hosting via Docker, Podman, a prebuilt binary or building from source, so there is no licence fee described. Running an instance still costs you a server.

How do I install Redlib?

The README documents Docker, Docker Compose, Docker CLI, Podman quadlets, a binary, building from source, Replit/Heroku/Glitch and launchd on macOS. The repository's compose.yaml runs quay.io/redlib/redlib:latest on port 8080 and reads configuration from .env.

How do I access Redlib?

You either visit a public instance from the redlib-instances list, or you self-host and open the instance in a browser; the compose file's healthcheck targets http://localhost:8080/settings. For automatic redirection of Reddit links, the README points at LibRedirect and Privacy Redirect.

What is Redlib?

Redlib is an alternative private front-end to Reddit, with its origins in Libreddit, written in Rust. It proxies requests to Reddit through its own server so the browser does not contact Reddit directly.

How is Redlib different from Libreddit?

Redlib began as a fork of Libreddit and was renamed because Reddit only permits its name in the form "XYZ For Reddit". The README lists the technical additions as OAuth token spoofing against the Android client, token refreshing every 24 hours, and HTTP header mimicking.

Official sources

  1. Issues
  2. License: AGPL-3.0
  3. README
  4. redlib-org/redlib on GitHub
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/redlib-org-redlib.svg)](https://hysenlabs.com/projects/redlib-org-redlib)