Self-hosted service
zedeus/nitter avatar
zedeus/nitter

Nitter: A JavaScript-free Twitter front-end that now faces a legal shutdown

Alternative Twitter front-end. It's impossible to use Twitter without JavaScript enabled, and as of 2024 you need to sign up.

14,471 stars1,351 forksNimAGPL-3.0

At a glance

What is it?
Nitter is an AGPL-3.0 Nim-based alternative Twitter front-end that renders timelines without JavaScript or ads. A 2026 cease and desist from X Corp. makes its future uncertain, so evaluate it with that risk in mind.
Who is it for?
Adopt Nitter if you run your own instance for personal or small-scale use, need RSS feeds from Twitter, and can accept the maintenance burden of Nim builds and Redis. Do not adopt it if you need a stable, legally guaranteed service, account-based timelines, or a project with active development; the repository is archived and X Corp. has demanded a takedown.
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?
No. The owners have archived the repository on GitHub, so it is read-only and no longer receives changes.
What is it written in?
Mainly Nim, according to GitHub's language statistics.

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

DEEP OPEN-SOURCE ANALYSIS

The problem Nitter solves: browsing Twitter without JavaScript or an account

Twitter, as of 2024, requires JavaScript and a sign-up to view content. That blocks users who disable scripts for privacy or accessibility, and it exposes every visitor to fingerprinting and IP tracking. Nitter addresses this by acting as a server-side proxy. The client browser never talks to Twitter directly. All requests go through the Nitter backend, which fetches data from Twitter's unofficial API and renders a static HTML page. The result is a page that works without JavaScript, contains no ads, and prevents Twitter from seeing your IP or browser fingerprint. The README states that for the account @nim_lang, Nitter serves 60KB versus 784KB from twitter.com, and that timelines load 2-4x faster. This is a concrete solution for privacy-minded users, journalists, or researchers who need to read tweets without creating an account or exposing their device.

How Nitter works: proxy, caching, and the unofficial API

Nitter is written in Nim and uses Twitter's unofficial API, which means no developer account is required. The backend makes requests to Twitter on behalf of the user, parses the response, and generates clean HTML. Redis (or the Valkey fork) is used for caching. The README says Redis is required for caching and, in the future, for account info. The client never receives Twitter's JavaScript, so tracking scripts never execute. The architecture is simple: a Nim server, a Redis cache, and a reverse proxy in front. The README recommends running Nitter behind Nginx or Apache for security and performance. There is no account system yet; the roadmap lists an account system with timeline support, archiving tweets, and a developer API as future work. That roadmap has not been completed, and the repository is now archived.

Getting Nitter running: build from source, Docker, or systemd

The README gives three installation paths. For a source build, you need libpcre, libsass, redis or valkey, and a Nim installation. The commands are: clone the repo, then run `nimble -l build -d:danger --mm:refc`, `nimble -l scss`, and `nimble -l md`. Then copy `nitter.example.conf` to `nitter.conf` and edit hostname, port, HMAC key, https, and Redis settings. Run Redis with `redis-server --daemonize yes` or `systemctl enable --now redis`, then start Nitter with `./nitter`. For Docker, the README warns that the config file must exist on the host before running the container, because Docker silently creates a directory if the file is missing, causing a `not a directory` error. The Docker command mounts `nitter.conf` and uses `--network host`. There is also a docker-compose example that runs Nitter and Redis as separate containers, requiring you to change `redisHost` from `localhost` to `nitter-redis`. A systemd service file is provided, and you can check logs with `journalctl -u nitter.service`.

Limitations and failure modes: no logging, no accounts, and a legal threat

Nitter has several real limitations. First, logging is minimal: the README says it prints errors to stdout and has no real logging implemented. That makes production debugging hard. Second, there is no account system, so you cannot follow users or get a personalized timeline. The roadmap lists that as future work, but the project is archived. Third, the reliance on Twitter's unofficial API means Nitter can break whenever Twitter changes its endpoints or adds stricter rate limiting. Fourth, the biggest failure mode is legal: the README contains a note dated 24 August 2026 stating that X Corp. sent cease and desist letters demanding a permanent takedown of Nitter instances and the repository. The repository is archived, which means no more updates. If you run a public instance, you expose yourself to legal action. Even a private instance may violate Twitter's terms of service, though that is a separate matter from the cease and desist.

Why the AGPL-3.0 license matters for deployment

Nitter is licensed under AGPL-3.0, and the README explicitly says 'no proprietary instances permitted.' That is a strong copyleft condition. If you modify Nitter and run it as a network service, you must make your modified source code available to users. This is a key difference from MIT or BSD licensed projects. For a small personal instance, this is unlikely to matter. For a company or a commercial service, it means you cannot wrap Nitter in a proprietary layer without releasing your changes. The license also affects how you can use the Docker image: the image is published as `zedeus/nitter:latest` and is multi-arch for amd64 and arm64, but the AGPL applies to the software inside. You should read the license text before deploying, but the README's statement is clear about the intention.

Alternatives: Invidious, official Twitter, and other front-ends

The README explicitly says Nitter is inspired by Invidious, which is an alternative YouTube front-end. Invidious takes a similar approach: a server-side proxy that strips JavaScript and ads, with an AGPL license. The difference is that Invidious is for YouTube, not Twitter, and it has a more active development history. For Twitter specifically, the official web client is the obvious alternative, but it requires JavaScript and an account. There are other unofficial front-ends like Pterotype or Fritter, but the README does not mention them. The key difference between Nitter and Invidious is the target platform and the legal exposure: YouTube has not sent a cease and desist to Invidious as far as the material shows, while X Corp. has done so for Nitter. If you need a Twitter front-end, Nitter is currently the most well-known, but its legal status makes it risky.

Maintenance and upgrade cost: archived project, no releases

The repository is archived, and no recent releases were retrieved. The last push is unknown, but the archive status means no future maintenance. This is a high upgrade cost: if Twitter changes its API, Nitter will not be updated. You will need to fork the project and maintain it yourself, or rely on community patches. The README's roadmap items, such as embeds and a developer API, are not implemented. The build process requires Nim and libsass, which adds a toolchain dependency. The Docker image is prebuilt, but you still need to manage Redis and the config file. The systemd service file is simple, but the lack of logging means you will have to build your own observability. For a long-term deployment, this is a serious concern. The legal threat makes maintenance even more uncertain, because even if you fork it, X Corp. could target your fork.

Editorial conclusion

Adopt Nitter if you run your own instance for personal or small-scale use, need RSS feeds from Twitter, and can accept the maintenance burden of Nim builds and Redis. Do not adopt it if you need a stable, legally guaranteed service, account-based timelines, or a project with active development; the repository is archived and X Corp. has demanded a takedown. Before deploying, verify the current legal status of the project, check whether your jurisdiction treats the cease and desist as binding, and confirm that your chosen instance or self-hosted setup does not violate X's terms. The concrete next step is to read the archived repository's wiki for instance lists and extensions, then decide if the risk is worth the privacy gain.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
Community notes

Community notes