Following legal advice, the Nitter project will continue

Sep 07, 2026 12:51 AM - 1 week ago 7

Note

On 24 August 2026, cease and desist letters were sent by X Corp. demanding a imperishable takedown of Nitter instances and the project's repository.
UPDATE: Following ineligible advice, the Nitter task will continue. More specifications will beryllium announced soon.

A free and unfastened root replacement Twitter front-end focused connected privateness and performance.
Inspired by the Invidious project.

Test Matrix Test Matrix License

  • No JavaScript required
  • Zero ads
  • All requests spell done the backend, customer ne'er talks to Twitter
  • Prevents Twitter from search your IP aliases JavaScript fingerprint
  • Uses Twitter's unofficial API (no developer relationship required)
  • Lightweight (for @nim_lang, 60KB vs 784KB from twitter.com)
  • RSS feeds (instance-specific, often abnormal owed to abuse)
  • Themes
  • Mobile support (responsive design)
  • AGPLv3 licensed, nary proprietary instances permitted
  • Embeds (see https://github.com/zedeus/nitter/wiki/Embeds-guide)
  • Account strategy pinch timeline support
  • Archiving tweets/profiles

GitHub Sponsors Patreon Liberapay Ko-fi

BTC: bc1qpqpzjkcpgluhzf7x9yqe7jfe8gpfm5v08mdr55
ETH: 0x24a0DB59A923B588c7A5EBd0dBDFDD1bCe9c4460
XMR: 42hKayRoEAw4D6G6t8mQHPJHQcXqofjFuVfavqKeNMNUZfeJLJAcNU19i1bGdDvcdN6romiSscWGWJCczFLe9RFhM3d1zpL
SOL: FF5bheiD5AqPEdc3eyjymJ8AoMRF1hS78Ht6FiSZZF1t
$Nitter: 4fSxCKc91ELQYVdv3tmHW8R15KoALPwEngyoQe1Xpump
ZEC: u1vndfqtzyy6qkzhkapxelel7ams38wmfeccu3fdpy2wkuc4erxyjm8ncjhnyg747x6t0kf0faqhh2hxyplgaum08d2wnj4n7cyu9s6zhxkqw2aef4hgd4s6vh5hpqvfken98rg80kgtgn64ff70djy7s8f839z00hwhuzlcggvefhdlyszkvwy3c7yw623vw3rvar6q6evd3xcvveypt

The wiki contains a database of instances and browser extensions maintained by the community.

It's intolerable to usage Twitter without JavaScript enabled, and arsenic of 2024 you need to motion up. For privacy-minded folks, preventing JavaScript analytics and IP-based search is important, but isolated from utilizing a VPN and uBlock/uMatrix, it's impossible. Despite being down a VPN and utilizing heavy-duty adblockers, you tin get accurately tracked pinch your browser's fingerprint, no JavaScript required. This each became particularly important aft Twitter removed the ability for users to power whether their information gets sent to advertisers.

Using an lawsuit of Nitter (hosted connected a VPS for example), you tin browse Twitter without JavaScript while retaining your privacy. In summation to respecting your privacy, Nitter is connected mean astir 15 times lighter than Twitter, and successful astir cases serves pages faster (eg. timelines load 2-4x faster).

In the early a elemental relationship strategy will beryllium added that lets you travel Twitter users, allowing you to person a cleanable chronological timeline without needing a Twitter account.

nitter

  • libpcre
  • libsass
  • redis/valkey

To compile Nitter you request a Nim installation, see nim-lang.org for details. It is possible to instal it system-wide aliases successful the personification directory you create below.

To compile the scss files, you request to instal libsass. On Ubuntu and Debian, you tin usage libsass-dev.

Redis is required for caching and successful the early for relationship info. As of 2024 Redis is nary longer unfastened source, truthful utilizing the fork Valkey is recommended. It should beryllium disposable connected astir distros arsenic redis aliases redis-server (Ubuntu/Debian), aliases valkey/valkey-server. Running it pinch the default config is fine, Nitter's default config is group to usage the default larboard and localhost.

Here's really to create a nitter user, clone the repo, and build the project along pinch the scss and md files.

# useradd -m nitter # su nitter $ git clone https://github.com/zedeus/nitter $ cd nitter $ nimble -l build -d:danger --mm:refc $ nimble -l scss $ nimble -l md $ cp nitter.example.conf nitter.conf

Set your hostname, port, HMAC key, https (must beryllium correct for cookies), and Redis info successful nitter.conf. To tally Redis, either run redis-server --daemonize yes, aliases systemctl alteration --now redis (or redis-server depending connected the distro). Run Nitter by executing ./nitter or using the systemd work below. You should tally Nitter down a reverse proxy such arsenic Nginx or Apache for information and performance reasons.

Page for the Docker image: https://hub.docker.com/r/zedeus/nitter

NOTE: The published image is multi-arch — zedeus/nitter:latest runs natively connected some amd64 and arm64.

To tally Nitter pinch Docker, you'll request to instal and tally Redis separately before you tin tally the container. See beneath for really to besides tally Redis using Docker.

First create your config file. The Docker commands equine it into the container, so it has to beryllium connected the big beforehand. If you've cloned the repo:

cp nitter.example.conf nitter.conf

If you're utilizing the prebuilt image without a section clone, download nitter.example.conf and prevention it arsenic nitter.conf instead.

To build and tally Nitter successful Docker:

docker build -t nitter:latest . docker tally -v $(pwd)/nitter.conf:/src/nitter.conf -d --network big nitter:latest

A prebuilt Docker image is provided arsenic well:

docker tally -v $(pwd)/nitter.conf:/src/nitter.conf -d --network big zedeus/nitter:latest

Using docker-compose to tally some Nitter and Redis arsenic different containers: Change redisHost from localhost to nitter-redis successful nitter.conf, past run:

Note the Docker commands equine nitter.conf (and sessions.jsonl for docker-compose) from the directory you tally them in. If a mounted record doesn't exist, Docker silently creates a directory successful its spot and the instrumentality fails with not a directory: Are you trying to equine a directory onto a file. Remove that directory and create the record arsenic shown above.

To tally Nitter via systemd you tin usage this work file:

[Unit] Description=Nitter (An replacement Twitter front-end) After=syslog.target After=network.target [Service] Type=simple # group personification and group User=nitter Group=nitter # configure location WorkingDirectory=/home/nitter/nitter ExecStart=/home/nitter/nitter/nitter Restart=always RestartSec=15 [Install] WantedBy=multi-user.target

Then alteration and tally the service: systemctl alteration --now nitter.service

Nitter presently prints immoderate errors to stdout, and location is nary existent logging implemented. If you're moving Nitter pinch systemd, you tin cheque stdout like this: journalctl -u nitter.service (add --follow to spot conscionable the past 15 lines). If you're moving the Docker image, you tin do this: docker logs --follow *nitter instrumentality id*

Feel free to subordinate our Matrix channel. You tin email maine astatine [email protected] if you wish to interaction maine personally.

For ineligible inquiries and DMCA requests, interaction [email protected]

More