# nitter | Zed | Knowledge Base | Instagit

Alternative Twitter front-end

GitHub Stars: 14k

Repository: https://github.com/zedeus/nitter

---

## Articles

### [How Nitter Implements Asynchronous HTTP Requests and Connection Pooling](/zedeus/nitter/how-does-nitter-support-asynchronous-http-requests-and-connection-pooling)

Discover how Nitter uses a custom HttpPool module in Nim to achieve asynchronous HTTP requests and connection pooling for efficient, non-blocking I/O with reusable connections.

- Tags: internals
- Published: 2026-09-04

### [Understanding the replaceTwitter Preference in Nitter: Custom URL Rewriting Explained](/zedeus/nitter/what-is-the-purpose-of-the-replacetwitter-preference-in-nitter)

Learn how the Nitter replaceTwitter preference lets you rewrite Twitter and X URLs to your own instance for a privacy-focused experience. Customize your link rewriting.

- Tags: deep-dive
- Published: 2026-09-04

### [What Are the Available Theme Options in Nitter?](/zedeus/nitter/what-are-the-available-theme-options-in-nitter)

Explore Nitter's nine theme options, from Twitter and Dracula to automatic modes. Customize your Nitter experience with these CSS-driven visual styles selectable on the preferences page.

- Tags: how-to-guide
- Published: 2026-09-04

### [How to Pass Nitter User Preferences via URL Parameters](/zedeus/nitter/how-can-nitter-user-preferences-be-passed-as-url-parameters)

Learn how to pass Nitter user preferences via URL parameters. Customize your Nitter experience for any request by adding query strings like ?theme=dark to any Nitter URL.

- Tags: how-to-guide
- Published: 2026-09-04

### [Where Are Nitter User Preferences Stored? Cookie-Based Configuration Explained](/zedeus/nitter/where-are-nitter-user-preferences-stored)

Discover where Nitter user preferences are stored. Learn how Nitter uses cookie-based configuration for your settings, ensuring a personalized experience.

- Tags: internals
- Published: 2026-09-04

### [How Nitter Performs Cache Migration on Startup: Redis Cleanup Explained](/zedeus/nitter/how-does-nitter-perform-cache-migration-on-startup)

Learn how Nitter performs cache migration on startup. Discover the Redis cleanup routine that scans and deletes legacy cache keys once per namespace for efficient operation.

- Tags: internals
- Published: 2026-09-04

### [How Nitter Handles Compression for Cached Data: Snappy, Redis, and Gzip Optimization](/zedeus/nitter/how-does-nitter-handle-compression-for-cached-data)

Discover how Nitter optimizes cached data with Snappy compression and Redis. Learn about gzip handling for efficient memory and bandwidth usage.

- Tags: internals
- Published: 2026-09-04

### [Redis Cache Key Design in Nitter: Namespace Prefixes and Sharded Buckets](/zedeus/nitter/what-is-the-redis-cache-key-design-used-in-nitter)

Discover Nitter's Redis cache key design featuring namespace prefixes like p: and pid: and sharded buckets for efficient Twitter data organization.

- Tags: internals
- Published: 2026-09-04

### [How Nitter Handles Cursor-Based Pagination in Its API Requests](/zedeus/nitter/how-does-nitter-handle-cursor-based-pagination-in-its-api-requests)

Discover how Nitter manages cursor-based pagination in API requests. Learn how it extracts cursor tokens, injects them into GraphQL queries, and updates 'Show more' links for a seamless user experience.

- Tags: api-reference
- Published: 2026-09-04

### [Main Twitter GraphQL API Endpoints Used by Nitter: A Code-Level Analysis](/zedeus/nitter/what-are-the-main-twitter-graphql-api-endpoints-used-by-nitter)

Discover the main Twitter GraphQL API endpoints Nitter uses. Analyze the Nim code in zedeus/nitter to understand how it fetches user profiles, timelines, tweets, and more.

- Tags: analysis
- Published: 2026-09-04

### [How Nitter Handles Rate Limiting for Twitter API Requests: Session-Based Throttling Explained](/zedeus/nitter/how-does-nitter-handle-rate-limiting-for-twitter-api-requests)

Discover how Nitter manages Twitter API rate limiting with session based throttling. Learn how it parses rate limit headers and halts traffic proactively to prevent quota exhaustion.

- Tags: internals
- Published: 2026-09-04

### [Nitter Session Pool Algorithm: How HttpPool Manages HTTP Connections](/zedeus/nitter/what-is-the-session-pool-algorithm-used-in-nitter)

Explore Nitter's HttpPool session algorithm. Learn how this lightweight LIFO connection pool efficiently manages HTTP connections, retries errors, and optimizes X API requests.

- Tags: internals
- Published: 2026-09-04

### [Where Are Nitter Sessions Stored? File Paths and Configuration Guide](/zedeus/nitter/where-are-nitter-sessions-stored)

Discover where Nitter sessions are stored. Learn about the sessions file path and configuration using the NITTER_SESSIONS_FILE variable for secure authentication management.

- Tags: how-to-guide
- Published: 2026-09-04

### [How Nitter Manages User Sessions and Authentication: A Technical Deep Dive](/zedeus/nitter/how-does-nitter-manage-user-sessions-and-authentication)

Discover how Nitter manages user sessions and authentication with its file backed session pool, OAuth, and cookie credentials. Learn about concurrency limits and rate limit recovery.

- Tags: deep-dive
- Published: 2026-09-04

### [How Nitter Generates and Executes Twitter GraphQL API Calls](/zedeus/nitter/how-does-nitter-generate-and-execute-twitter-graphql-api-calls)

Discover how Nitter generates and executes Twitter GraphQL API calls. Learn about its variable construction, authentication methods, and robust request execution with automatic retries for efficient Twitter data access.

- Tags: internals
- Published: 2026-09-04

### [What Is the Entry Point for the Nitter Application?](/zedeus/nitter/what-is-the-entry-point-for-the-nitter-application)

Discover the Nitter application's entry point at src/nitter.nim. Learn how configuration, routes, and runApp() launch the Jester HTTP server for Nitter.

- Tags: internals
- Published: 2026-09-04

### [How Nitter Routes User Requests: A Deep Dive into the Jester Framework](/zedeus/nitter/how-does-nitter-route-user-requests)

Discover how Nitter routes user requests using the Jester framework. Explore URL pattern matching, modular routers, and endpoint dispatch for a fast, privacy-focused experience.

- Tags: deep-dive
- Published: 2026-09-04

### [Nitter Architecture Explained: A Technical Deep Dive into the Privacy-Focused Twitter Frontend](/zedeus/nitter/what-is-the-architecture-of-nitter)

Explore Nitter architecture a privacy focused Twitter frontend built with Nim. Learn about its modular MVC design, Jester framework, Redis caching, and efficient API proxying.

- Tags: architecture
- Published: 2026-09-04

### [How Nitter Achieves User Privacy: Server-Side Architecture and Zero-Client-Tracking Design](/zedeus/nitter/how-does-nitter-achieve-user-privacy)

Discover how Nitter ensures user privacy. Learn about its server-side architecture and zero-client-tracking design that shields your IP and browser from Twitter.

- Tags: architecture
- Published: 2026-09-04

### [What Programming Language Is Nitter Written In? A Complete Nim Breakdown](/zedeus/nitter/what-programming-language-is-nitter-written-in)

Discover that Nitter is written in Nim, a powerful systems programming language. Learn about Nim's features and why it's ideal for fast, asynchronous applications.

- Tags: deep-dive
- Published: 2026-09-04

### [What Instruction Types Does Nitter's parseGraphSearch Handle?](/zedeus/nitter/what-instruction-types-does-nitters-parsegraphsearch-handle)

Discover the GraphQL instruction types TimelineAddEntries TimelineAddToModule and TimelineReplaceEntry handled by Nitter's parseGraphSearch for efficient data extraction from Twitter API responses.

- Tags: deep-dive
- Published: 2026-08-29

### [How Nitter Identifies and Marks Pinned Tweets in Timeline Parsing](/zedeus/nitter/how-are-pinned-tweets-identified-and-marked-in-nitters-timeline-parsing)

Learn how Nitter identifies and marks pinned tweets during timeline parsing. Discover the technical details behind the pinned tweet flag and its distinct label.

- Tags: internals
- Published: 2026-08-29

### [How Nitter's parseGraphTimeline Function Handles GraphQL Timeline Entries](/zedeus/nitter/how-nitters-parsegraphtimeline-function-handles-timeline-entries)

Learn how Nitter's parseGraphTimeline function in src/parser.nim processes raw GraphQL JSON to create structured profile objects, extracting tweets, conversations, and pagination data.

- Tags: internals
- Published: 2026-08-29

### [How Nitter Parses GraphQL Tweet Types: Handling TweetUnavailable, TweetTombstone, and Visibility Results](/zedeus/nitter/how-nitter-parses-different-tweet-types-in-the-graphql-format)

Discover how Nitter parses GraphQL tweet types like TweetUnavailable and TweetTombstone. Learn about specialized parsing branches and legacy fallbacks in src/parser.nim.

- Tags: internals
- Published: 2026-08-29

### [How Nitter Parses the Legacy Twitter API Tweet Format](/zedeus/nitter/how-nitter-parses-the-legacy-twitter-api-tweet-format)

Discover how Nitter parses the legacy Twitter API tweet format by inspecting JSON payloads and routing nested objects to extract core fields and media. Learn the technical details of zedeus/nitter's approach.

- Tags: internals
- Published: 2026-08-29

### [What Is the Nitter Function Responsible for Searching Tweets?](/zedeus/nitter/what-nitter-function-is-responsible-for-searching-tweets)

Discover the Nitter function getGraphTweetSearch in src/api.nim that handles tweet searches, query construction, and response parsing. Learn how Nitter searches tweets.

- Tags: deep-dive
- Published: 2026-08-29

### [How Nitter Fetches a Single Tweet Conversation Using the GraphQL API](/zedeus/nitter/how-nitter-fetches-a-single-tweet-conversation-using-the-graphql-api)

Discover how Nitter fetches single tweet conversations using the GraphQL API. Learn about constructing requests and parsing JSON responses to reconstruct tweet threads.

- Tags: internals
- Published: 2026-08-29

### [How Nitter Fetches a User Profile by Username: The fetchProfile Function Explained](/zedeus/nitter/what-nitter-function-is-used-to-fetch-a-user-profile-by-username)

Discover how Nitter uses the fetchProfile function in timeline.nim to retrieve user profiles by username. Understand the process and data returned by this essential Nitter routine.

- Tags: internals
- Published: 2026-08-29

### [Nitter Cookie API vs OAuth API: Understanding the Authentication Variants](/zedeus/nitter/what-is-the-difference-between-nitters-cookie-api-and-oauth-api-variants)

Explore Nitter's Cookie API vs OAuth API authentication differences. Understand how Nitter handles browser-style tokens and cryptographically signed requests for API access.

- Tags: deep-dive
- Published: 2026-08-29

### [What Does Nitter Show for a Rate Limit Error (HTTP 429)?](/zedeus/nitter/what-nitter-shows-for-a-rate-limit-error-http-429)

Discover what Nitter shows for a rate limit error HTTP 429. Learn how Nitter displays rate limiting and offers alternative instances for uninterrupted access.

- Tags: how-to-guide
- Published: 2026-08-29

### [How Nitter Handles Malformed URL Paths in Requests: 400 Bad Request vs 404 Not Found](/zedeus/nitter/what-happens-to-malformed-url-paths-in-nitter-requests)

Discover how Nitter handles malformed URL paths. Learn when Nitter returns a 400 Bad Request versus a 404 Not Found for invalid requests.

- Tags: internals
- Published: 2026-08-29

### [How Nitter Organizes Route Handlers: Modular Architecture with Jester](/zedeus/nitter/how-are-different-route-handlers-organized-in-nitters-codebase)

Discover how Nitter organizes route handlers in discrete, feature-focused modules using Jester. Learn about router registration and endpoint initialization from the main entry point.

- Tags: architecture
- Published: 2026-08-29

### [What Web Framework Does Nitter Use for Its Routing?](/zedeus/nitter/what-web-framework-does-nitter-use-for-its-routing)

Discover the Nitter web framework: learn how Jester for Nim handles routing and request processing for its privacy-focused Twitter frontend. Find out more today!

- Tags: internals
- Published: 2026-08-29

### [How Nitter Performs Cache Migration for Outdated Redis Key Patterns](/zedeus/nitter/how-nitter-performs-cache-migration-for-outdated-redis-key-patterns)

Learn how Nitter performs Redis cache migration for outdated key patterns. Discover automatic startup checks, non-blocking scans, and batch deletion for efficient cache management.

- Tags: internals
- Published: 2026-08-29

### [What Compression and Serialization Formats Does Nitter Use for Redis Caching?](/zedeus/nitter/what-compression-and-serialization-formats-does-nitter-use-for-redis-caching)

Discover Nitter's Redis caching strategy learn about its flatty binary serialization and supersnappy compression for efficient data storage and retrieval.

- Tags: internals
- Published: 2026-08-29

### [What Is the TTL for User Profile Cache in Nitter?](/zedeus/nitter/what-is-the-ttl-for-user-profile-cache-in-nitter)

Discover the TTL for user profile cache in Nitter. Learn how Nitter caches profiles for one hour (3600 seconds) using the baseCacheTime constant.

- Tags: internals
- Published: 2026-08-29

### [How to Enable and View Nitter's Session Logging for Debugging](/zedeus/nitter/how-to-enable-and-view-nitters-session-logging-for-debugging)

Debug Nitter easily by enabling session logging. Learn how to set enableDebug to true in nitter.conf for real-time diagnostics and monitoring. Improve your Nitter experience today.

- Tags: how-to-guide
- Published: 2026-08-29

### [How Nitter Handles Rate Limiting for Authenticated API Requests](/zedeus/nitter/how-nitter-handles-rate-limiting-for-its-authenticated-api-requests)

Discover how Nitter manages authenticated API requests with a session-based rate limit system. Learn about quota management and graceful account rotation.

- Tags: internals
- Published: 2026-08-29

### [Where Is the Session Pool Management Logic Located in Nitter's Codebase?](/zedeus/nitter/where-is-the-session-pool-management-logic-located-in-nitters-codebase)

Discover where Nitter's session pool management logic resides. Find the core components in src/http_nim and supporting types in src/experimental/types/session.nim for efficient HTTP session handling.

- Tags: internals
- Published: 2026-08-29

### [What Are the Different Session Token Types Nitter Uses for Authentication?](/zedeus/nitter/what-are-the-different-session-token-types-nitter-uses-for-authentication)

Discover the two session token types Nitter uses for authentication: OAuth 1.0a tokens and web session cookies. Learn how Nitter secures your access.

- Tags: internals
- Published: 2026-08-29

### [How Nitter Authenticates with Twitter Without Official API Keys](/zedeus/nitter/how-nitter-authenticates-with-twitter-without-official-api-keys)

Discover how Nitter bypasses official API keys to authenticate with Twitter. Learn about its private guest endpoints, hard-coded bearer tokens, and dynamic guest token generation.

- Tags: internals
- Published: 2026-08-29

