OpenSignup

What is BitTorrent?

BitTorrent is a peer-to-peer file sharing (P2P) protocol facilitating the transfer of files directly between individuals. It differs from client-server methods of filesharing which generally involve transfer of the entire bundle of data (file, webpage, application, etc.) from the computer hosting the data to the recipient of the data. In a client-server transfer, the recipient can only download as fast as the computer hosting the complete file can upload. If three or ten or a hundred people all try to download the file at once, the host must transfer that same data three or ten or a hundred times over.

In contrast BitTorrent allows a file's recipient to grab lots of small pieces of the bundle, from many different hosts (seeders), as well as from people who are also downloading the file (peers). This reduces the strain on everybody hosting or downloading the file (collectively called the swarm), while hypothetically ensuring that everyone can download at their full download speed. The BitTorrent protocol is the brainchild of programmer Bram Cohen, who designed it in April 2001 and released a first implementation on 2 July 2001. It is now maintained by Cohen's company BitTorrent, Inc.

Torrent Trackers

The term Tracker has two uses in the world of torrenting. Formally, a BitTorrent tracker is a piece of software that helps individual peers of a torrent to find one another; it keeps tabs on who is seeding a file as well as who wants it, and helps these two groups to connect. Many private trackers use tracker software like Ocelot or similar implementations. The tracker also collects data about who has uploaded how much to whom, how many peers have downloaded (or leeched) a torrent and whether or not they've downloaded 100%. It then reports these stats back to the tracker website, which uses them to update user statistics, track top downloads, update peer lists, and so on.

When people refer to a site as a tracker, they don't mean it in the same way as the tracker software itself. Instead they use the term as a shorthand for the entire torrent ecosystem on the site. This includes the .torrent files that have been registered with or 'uploaded to' the site (what you see when you go to a torrent page) and the body of users that have been granted permission to download data from other users via a passkey. Not all torrents require a tracker (in either sense of the word) to connect users to one another, but most private sites that want users to have access to good content and good speeds will require a tracker to enforce ratio requirements.

Other Terms

Choked, unchoked: This is a term used in the description of the BitTorrent protocol, and refers to the state of an uploader, i.e. the thread that sends data to another peer. When a connection is choked, it means that the transmitter doesn't currently want to send anything on that link. A BitTorrent client signals that it's choked to other clients for a number of reasons, but the most common is that by default a client will only maintain some 'max_uploads' number of active simultaneous uploads, the rest will be marked choked. A connection can also be choked for other reasons, for example a peer downloading from a seed will mark his connection as choked since the seed is not interested in receiving anything. Note that since each connection is bidirectional and symmetrical, there are two choked flags for each connection, one for each Tx endpoint.

Hash check: Rechecking the existing torrent data in a client. When you perform a hash check, your client goes through the process of generating a hash again and checking it against the .torrent file. If you fail a hash check, that's typically an indication that you have modified something in the file, renamed, or moved the directory. Until you rectify the problem, you will be unable to completely seed the file to other users, and you may have to redownload those sections of the file that failed a hash check.

Hash: The hash is the verifying method for checking pieces. In general terms, a hash is any function that converts a large amount of data to a short string that uniquely represents that data. When a user downloads a .torrent file to add to their client, it contains a list of hashes for each bundle. Then, when it begins downloading those bundles of data from other peers, it can generate hashes for the data and ensures the data is bit-for-bit identical to what is listed in the .torrent file. It can then also arrange this into the single, usable file that the downloader expects to receive at the end of the process.

Interested, disinterested: Another term used in the protocol specification. This is the corollary to the choked flag, in that interested refers to the state of a downloader with respect to a connection. A downloader is marked as interested if the other end of the link has any pieces that the client wants, otherwise the connection is marked as not interested.

Leech: Synonymous with 'downloader', a leech is any peer in the swarm that does not have the entire file. Sometimes also referred to as a peer.

Passkey: A passkey identifies individual users on private trackers. Each user's passkey is unique, and it is contained in the announce url in every .torrent file they download from the site. The tracker looks for this passkey and compares it to its database of passkeys before it will distribute the necessary peerlist to that user. The passkey is also how the tracker knows which user to credit upload and download stats to. For this reason, your passkey must be kept strictly personal, and you should NEVER share your .torrent files with anyone. A malicious user who obtains your passkey could put yours in their .torrent files and thus have their download stats count against you. If you ever accidentally share your passkey, you must reset it immediately on your tracker's settings page. Most trackers have a "Reset passkey" option in the user settings or security section.

Peer: Any client inside the swarm, to which other clients can connect and transfer data to or from. Depending on context, peer can refer either to any client in the swarm, or more specifically to a leech - a client that has only parts of the file.

Peerlist: The peerlist is how the tracker helps clients to find other clients to download from. It consists of a list of IP addresses that have some or all of the file available to download, from which a user's client automatically selects some and starts requesting pieces of the file. The peerlist only updates when the client announces to the tracker (roughly every half hour), but if the user is connectable and new peers join the swarm before then, it will see their requests and adds them to the peerlist automatically.

Pieces: Pieces are how the file is broken in to many, extremely small bundles of data to be distributed to and from numerous peers. Each piece has a corresponding hash in the .torrent metafile, and is verified by a hashcheck after downloading it. Multiple small files (for example, a ripping.log, album.cue, album.m3u, and a release.nfo) can all be assigned to a single piece. If one file in part of the piece is corrupt, the whole piece will need to be redownloaded.

Seed: A client that has a complete copy of a certain torrent, and is allowing other clients in the swarm to download from them. This is known as being a seed, or seeding.

Swarm: The collective group of clients that are connected for a particular torrent. For example, if the tracker returns 10 leeches and 3 seeds, then the swarm consists of you and those 13 other people.

Torrent Client: The application you run on your computer or server that handles the interactions necessary for communicating with the tracker and downloading files from others.

Flags

You may notice a Flags field under your client's peer list. These letters refer to the state between your client and theirs. Depending on your client, you may also hover over their set of flags for a tooltipped explanation

? = Your client unchoked the peer but the peer is not interested
D = Currently downloading (interested and not choked)
d = Your client wants to download, but peer doesn't want to send (interested and choked)
E = Peer is using Protocol Encryption (all traffic)
e = Peer is using Protocol Encryption (handshake only)
F = Peer was involved in a hashfailed piece (not necessarily a bad peer, just involved)
H = Peer was obtained through DHT.
h = Peer connection established via UDP hole-punching
I = Peer is an incoming connection
K = Peer is unchoking your client, but your client is not interested
L = Peer is local (discovered through network broadcast, or in reserved local IP ranges)
O = Optimistic unchoke (was choked and is now getting a "second-chance")
P (or T) = Peer is using μTP (UDP-based transport, instead of the default TCP)
S = Peer is snubbed
U = Currently uploading (interested and not choked)
u = Peer wants your client to upload, but your client doesn't want to (interested and choked)
X = Peer was included in peerlists obtained through Peer Exchange (PEX)

Note: decentralised peer discovery methods such as DHT, LPD, and PeX are all force-disabled for private torrents to ensure your client only finds peers through the centralised tracker. As such, you will not see any flags associated with these services on private torrents.


Credit

This article is adapted from Redacted's wiki. Thanks to the Redacted community for creating this comprehensive guide.

Last Updated: Dec 16, 2025