Brian's BitTorrent FAQ and Guide

Welcome! If you are new to BitTorrent, this site should help clear up a lot of commonly asked questions.

If you would like to contribute a question (and presumably the answer as well), please use the contact page and send me a note.

Disclaimer: I am a Windows user, and so by default the answers will tend to apply to Windows if not otherwise stated. I've tried to include as much Linux and Mac information as I can. If you have anything to add on those subjects, by all means please contribute.

Alternative Site

This FAQ is also available in a different form at btfaq.com. That site uses the FAQ-o-Matic script, which splits the FAQ up into individual sections, whereas this version is mostly all in a single large file. However, this site is the one that I maintain, so the btfaq.com site is likely to be a bit behind. I'm still debating if I want to drop one of the two, as maintaining both is hard. Please let me know if you have opinions on this matter.

Table Of Contents

Use these links to jump to specific parts of this document, or just page down if you'd prefer to browse the whole thing.

What is BitTorrent?

BitTorrent is a protocol designed for transferring files. It is peer-to-peer in nature, as users connect to each other directly to send and receive portions of the file. However, there is a central server (called a tracker) which coordinates the action of all such peers. The tracker only manages connections, it does not have any knowledge of the contents of the files being distributed, and therefore a large number of users can be supported with relatively limited tracker bandwidth. The key philosophy of BitTorrent is that users should upload (transmit outbound) at the same time they are downloading (receiving inbound.) In this manner, network bandwidth is utilized as efficiently as possible. BitTorrent is designed to work better as the number of people interested in a certain file increases, in contrast to other file transfer protocols.

One analogy to describe this process might be to visualize a group of people sitting at a table. Each person at the table can both talk and listen to any other person at the table. These people are each trying to get a complete copy of a book. Person A announces that he has pages 1-10, 23, 42-50, and 75. Persons C, D, and E are each missing some of those pages that A has, and so they coordinate such that A gives them each copies of the pages he has that they are missing. Person B then announces that she has pages 11-22, 31-37, and 63-70. Persons A, D, and E tell B they would like some of her pages, so she gives them copies of the pages that she has. The process continues around the table until everyone has announced what they have (and hence what they are missing.) The people at the table coordinate to swap parts of this book until everyone has everything. There is also another person at the table, who we'll call 'S'. This person has a complete copy of the book, and so doesn't need anything sent to him. He responds with pages that no one else in the group has. At first, when everyone has just arrived, they all must talk to him to get their first set of pages. However, the people are smart enough to not all get the same pages from him. After a short while they all have most of the book amongst themselves, even if no one person has the whole thing. In this manner, this one person can share a book that he has with many other people, without having to give a full copy to everyone that's interested. He can instead give out different parts to different people, and they will be able to share it amongst themselves. This person who we've referred to as 'S' is called a seed in the terminology of BitTorrent. There's more about the various terms in a later section.

How does BitTorrent compare to other forms of file transfer?

The most common method by which files are transferred on the Internet is the client-server model. A central server sends the entire file to each client that requests it -- this is how both http and ftp work. The clients only speak to the server, and never to each other. The main advantages of this method are that it's simple to set up, and the files are usually always available since the servers tend to be dedicated to the task of serving, and are always on and connected to the Internet. However, this model has a significant problem with files that are large or very popular, or both. Namely, it takes a great deal of bandwidth and server resources to distribute such a file, since the server must transmit the entire file to each client. Perhaps you may have tried to download a demo of a new game just released, or CD images of a new Linux distribution, and found that all the servers report "too many users," or there is a long queue that you have to wait through. The concept of mirrors partially addresses this shortcoming by distributing the load across multiple servers. But it requires a lot of coordination and effort to set up an efficient network of mirrors, and it's usually only feasible for the busiest of sites.

Another method of transferring files has become popular recently: the peer-to-peer network, systems such as Kazaa, eDonkey, Gnutella, Direct Connect, etc. In most of these networks, ordinary Internet users trade files by directly connecting one-to-one. The advantage here is that files can be shared without having access to a proper server, and because of this there is little accountability for the contents of the files. Hence, these networks tend to be very popular for illicit files such as music, movies, pirated software, etc. Typically, a downloader receives a file from a single source, however the newest version of some clients allow downloading a single file from multiple sources for higher speeds. The problem discussed above of popular downloads is somewhat mitigated, because there's a greater chance that a popular file will be offered by a number of peers. The breadth of files available tends to be fairly good, though download speeds for obscure files tend to be low. Another common problem sometimes associated with these systems is the significant protocol overhead for passing search queries amongst the peers, and the number of peers that one can reach is often limited as a result. Partially downloaded files are usually not available to other peers, although some newer clients may offer this functionality. Availability is generally dependent on the goodwill of the users, to the extent that some of these networks have tried to enforce rules or restrictions regarding send/receive ratios.

Use of the Usenet binary newsgroups is yet another method of file distribution, one that is substantially different from the other methods. Files transferred over Usenet are often subject to miniscule windows of opportunity. Typical retention time of binary news servers are often as low as 24 hours, and having a posted file available for a week is considered a long time. However, the Usenet model is relatively efficient, in that the messages are passed around a large web of peers from one news server to another, and finally fanned out to the end user from there. Often the end user connects to a server provided by his or her ISP, resulting in further bandwidth savings. Usenet is also one of the more anonymous forms of file sharing, and it too is often used for illicit files of almost any nature. Due to the nature of NNTP, a file's popularity has little to do with its availability and hence downloads from Usenet tend to be quite fast regardless of content. The downsides of this method include a baroque set of rules and procedures, and requires a certain amount of effort and understanding from the user. Patience is often required to get a complete file due to the nature of splitting big files into a huge number of smaller posts. Finally, access to Usenet often must be purchased due to the extremely high volume of messages in the binary groups.

BitTorrent is closest to Usenet, in my opinion. It is best suited to newer files, of which a number of people have interest in. Obscure or older files tend to not be available. Perhaps as the software matures a more suitable means of keeping torrents seeded will emerge, but currently the client is quite resource-intensive, making it cumbersome to share a number of files. BitTorrent also deals well with files that are in high demand, especially compared to the other methods.

Where can I download the BitTorrent program?

There are several choices here, because unlike some peer to peer applications (such as Kazaa), the BitTorrent implementation is open source. This means that programmers are free to take the source code to the program and modify it, if they feel there is something they'd like to change. Here are the various clients of which I am aware:

Microsoft Windows

Mac OS X

Max OS 9

There is no official support for Mac OS 9. Further, wxPython does not seem to be ported to Mac OS 9, which means you cannot run the GUI versions. However, there is hope: you can still use BitTorrent, although it will take a little bit of extra work.

  1. Download and install MacPython. Please refer to this page for more information on Python and Macs.
  2. Download and unpack the source code to the client.
  3. Option-Drag the file btdownloadheadless.py from the source code to PythonInterpreter. Then click Set unix-like command line interpreter, and enter "--url http://server/file.torrent", except substitute the actual URL of the .torrent file. This is the same as the "download" link on whatever web page offered the torrent. Select Go and the file should begin downloading. If you get an error message that ends in ImportError: cannot import name getpid, use the following procedure:

    1. Find the file download.py from the source code (it's in the subfolder named BitTorrent) and open it with any plain-text editor.
    2. Search near line 23 for the following:

      from os import getpid, path, makedirs

      And remove the getpid word so that the line now reads:

      from os import path, makedirs
    3. Search near line 177 for the following:

      myid = (chr(0) * 12) + sha(repr(time()) + ' ' + str(getpid())).digest()[-8:]

      and change it to the following:

      myid = (chr(0) * 12) + sha(repr(time())).digest()[-8:]
    4. Save the file, and retry the above procedure for downloading, hopefully this time without the error message.

Linux/Unix

Most of the clients that are pure Python/wxPython (e.g. the official BitTorrent client, Eike Frost's experimental, Shad0w's experimental) will run under *BSD/Linux without problems. The source code tarballs for all of these clients are available at the home pages; see the links above. Clients written in other cross-platform languages such as Java (e.g. Azureus) should also work.

The biggest challenge to running a BT client under *BSD/Linux is getting the required libraries installed. At a minimum you will need Python 2.2 or greater. If you want to use the '-gui' versions of the clients you will also need wxWindows, which has Python bindings called wxPython. These should all be available as packages for your system. Your first step should be to consult your distribution's package system and get these prerequisites installed.

For Debian systems there is a package called bittorrent, which requires the python 2.2 package. You should also install the packages libwxgtk2.4-python and mime-support, if you plan to use the GUI version of the client.

If you are using Mandrake with Cooker, you might want to try the RPMs listed here.

Below are some general instructions for installing on a Unix/Linux system.

Install Python, preferably version 2.2. You can run "python -V" to see what version you currently have installed, if any. Also, you may have multiple versions of Python installed, so you might check /usr/bin for commands like python2.2 if plain python says it's version 1.x. If your distribution uses packages, use the search tool to find prepackaged versions before trying to manually install. Try here and here for Python RPMs.

Install wxPython if you want to use the GUI version. Note that this will require the GLib and GTK+ libraries, which are probably already on your system if you have GNOME installed. (Start here or search your distribution's package manager if you need GTK+.) You'll want to find the wxPython package corresponding to the version of Python which you have installed. For RPM systems such as RedHat and Mandrake, you might try the following wxPython RPMs corresponding to version 2.1, version 2.2, and version 2.3 of Python. More RPMs are available at the Sourceforge site, and you can also consult the wxPython download page. Please be aware that the RPMs linked above assume that Python is installed under /usr and that the Python libs are in /usr/lib/python2.x/. If this is not the case, you will probably need to tell the installer this information.

Finally, install the source tarball for the BT client to a directory of your choice. To integrate the client with your web browser, it will be necessary to associate files of type "application/x-bittorrent" with the BitTorrent client. You will need to add a line such as the following to your /etc/mailcap file:

application/x-bittorrent; /usr/local/bin/btdownloadgui.py --responsefile %s; test=test -n "$DISPLAY"

Note that you should substitute the correct path for the location in which you installed the source tarball. If don't have wxPython or would prefer to use one of the text-mode clients you can replace btdownloadgui.py with btdownloadcurses.py or btdownloadheadless.py. Also note there's an error in the INSTALL.unix.txt file, which is missing the --responsefile argument.

Other web browsers may have a different way of associating a command with a MIME-Type, so you may want to try looking at the preferences or init file for details.

Java Clients (platform independent)

What other BitTorrent-related utilities are out there?

I've installed BitTorrent, now what? There's no program to run!

BitTorrent is not like other peer-to-peer applications (such as Winmx, Kazaa, Gnutella, etc.) in that it does not have its own "universe." Put another way, BT lives on top of the Web, which means that all of the searching/listing of available files is done on the web. When you find a file you want to download, you click on it and the BitTorrent client program will run and ask you where to put it, and then start downloading. See the links section for some starting points on the web if you're new.

I just installed BitTorrent but whenever I click on a link I just get a small file and nothing happens?

Try closing and restarting your web browser. When BitTorrent installs, it registers a new MIME-Type (application/x-bittorrent) and this change will not take effect until the next time the web browser is opened.

What is this Mandrake thing I'm invited to download after BitTorrent?

You don't need it. Mandrake is a full Linux distribution, a replacement Operating System. It is an example of the kind of thing that BitTorrent was designed to distribute -- large programs which, upon release, cause a flood of eager downloaders. In other words, it's not related to BitTorrent in any way, it's just something a lot of people might be interested in.

How do I uninstall BitTorrent?

MS Windows

Go to Add/Remove Programs in the Control Panel. There should exist an entry for BitTorrent. If it's not there, suspect an incorrect install. You can always reinstall the latest version and then uninstall it.

If you know what you are doing, you can manually remove BitTorrent by deleting the directory C:\Program Files\BitTorrent\ (substituting the actual location of your Program Files dir) and removing the following registry keys:

Mac OS X

Simply drag the application to the trash. If you also wish to delete the preferences, trash the file ~/Library/Preferences/BitTorrent.plist as well.

What do all these words mean? (seeding, uploading, share rating, etc.)

Here is a brief list of words associated with BitTorrent and their meanings.

torrent
Usually this refers to the small metadata file you receive from the web server (the one that ends in .torrent.) Metadata here means that the file contains information about the data you want to download, not the data itself. This is what is sent to your computer when you click on a download link on a website. You can also save the torrent file to your local system, and then click on it to open the BitTorrent download. This is useful if you want to be able to re-open the torrent later on without having to find the link again.
In some uses, it can also refer to everything associated with a certain file available with BitTorrent. For example, someone might say "I downloaded that torrent" or "that server has a lot of good torrents", meaning there are lots of good files available via BitTorrent on that server.
peer
A peer is another computer on the internet that you connect to and transfer data. Generally a peer does not have the complete file, otherwise it would be called a seed. Some people also refer to peers as leeches, to distinguish them from those generous folks who have completed their download and continue to leave the client running and act as a seed.
seed
A computer that has a complete copy of a certain torrent. Once your client finishes downloading, it will remain open until you click the Finish button (or otherwise close it.) This is known as being a seed or seeding. You can also start a BT client with a complete file, and once BT has checked the file it will connect and seed the file to others. Generally, it's considered good manners to continue seeding a file after you have finished downloading, to help out others. Also, when a new torrent is posted to a tracker, someone must seed it in order for it to be available to others. Remember, the tracker doesn't know anything of the actual contents of a file, so it's important to follow through and seed a file if you upload the torrent to a tracker.
reseed
When there are zero seeds for a given torrent (and not enough peers to have a distributed copy), then eventually all the peers will get stuck with an incomplete file, since no one in the swarm has the missing pieces. When this happens, someone with a complete file (a seed) must connect to the swarm so that those missing pieces can be transferred. This is called reseeding. Usually a request for a reseed comes with an implicit promise that the requester will leave his or her client open for some time period after finishing (to add longevity to the torrent) in return for the kind soul reseeding the file.
swarm
The group of machines that are collectively connected for a particular file. For example, if you start a BitTorrent client and it tells you that you're connected to 10 peers and 3 seeds, then the swarm consists of you and those 13 other people.
tracker
A server on the Internet that acts to coordinate the action of BitTorrent clients. When you open a torrent, your machine contacts the tracker and asks for a list of peers to contact. Periodically throughout the transfer, your machine will check in with the tracker, telling it how much you've downloaded and uploaded, how much you have left before finishing, and the state you're in (starting, finished download, stopping.) If a tracker is down and you try to open a torrent, you will be unable to connect. If a tracker goes down during a torrent (i.e., you have already connected at some point and are already talking to peers), you will be able to continue transferring with those peers, but no new peers will be able to contact you. Often tracker errors are temporary, so the best thing to do is just wait and leave the client open to continue trying.
downloading
Receiving data FROM another computer.
uploading
Sending data TO another computer.
share rating
If you are using the experimental client with the stats-patch, you will see a share rating displayed on the GUI panel. This is simply the ratio of your amount uploaded divided by your amount downloaded. The amounts used are for the current session only, not over the history of the file. If you achieve a share ratio of 1.0, that would mean you've uploaded as much as you've downloaded. The higher the number, the more you have contributed. If you see a share ratio of "oo", this means infinity, which will happen if you open a BT client with a complete file (i.e., you seed the file.) In this case you download nothing since you have the full file, and so anything you send will cause the ratio to reach infinity. Note: The share rating is just a number that is displayed for your convenience. It does not directly affect any aspect of the client at all. In general, out of courtesy to others you should strive to keep this ratio as high as possible, of course.
distributed copies
In some versions of the client, you will see the text "Connected to n seeds; also seeing n.nnn distributed copies." A seed is a machine with the complete file. However, the swarm can collectively have a complete copy (or copies) of the file, and that is what this is telling you. Referring again to the "people at a table" analogy, consider the case where the book has 10 pages, and person A has pp.1-5 and B has pp.6-10. Collectively, A and B have a complete copy of the book, even though no one person has the whole thing. In other words, even if there are no seeds, as long as there is at least one distributed copy of the file everyone can eventually get a complete file. Meditate on this, the Zen of BitTorrent, grasshopper.
choked
This is a term used in the description of the BitTorrent protocol. It 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 BT 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 --max_uploads active simultaneous uploads, the rest will be marked choked. (The default value is 4 and this is the same setting that experimental client GUI lets you adjust.) 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.
interested
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.
snubbed
If the client has not received anything after a certain period (default: 60 seconds), it marks a connection as snubbed, in that the peer on the other end has chosen not to send in a while. See the definition of choked for reasons why an uploader might mark a connection as choked. The real function of keeping track of this variable is to improve download speeds. Occasionally the client will find itself in a state where even though it is connected to many peers, it is choked by all of them. The client uses the snubbed flag in an attempt to prevent this situation. It notes that a peer with whom it would like to trade pieces with has not sent anything in a while, and rather than leaving it up to the optimistic choking to eventuall select that peer, it instead reserves one of its upload slots for sending to that peer. (Reference)
optimistic unchoking
Periodically, the client shakes up the list of uploaders and tries sending on different connections that were previously choked, and choking the connections it was just using. You can observe this action every 10 or 20 seconds or so, by watching the "Advanced" panel of one of the experimental clients.

Where can I go for support or to ask questions?

See the Links and Resources section of this page for mailing lists, web sites, forums, etc.

What ports does BitTorrent use? Will it work with a firewall/NAT?

The quick summary: You need to forward your ports if you have NAT in order to get the fastest speeds. This is probably the most common thing that people fail to do when using BitTorrent. Read on for more details of what all this entails, and if it's something that you need to do.

Prior to version 3.2, BitTorrent by default uses ports in the range of 6881-6889. As of 3.2 and later, the range has been extended to 6881-6999. (These are all TCP ports, BitTorrent does not use UDP.) The client starts with the lowest port in the range and sequentially tries higher ports until it can find one to which it can bind. This means that the first client you open will bind to 6881, the next to 6882, etc. Therefore, you only really need to open as many ports as simultaneous BitTorrent clients you would ever have open. For most people it's sufficient to open 6881-6889.

The port range that BitTorrent uses is configurable, see the section on command line parameters, specifically the --minport and --maxport parameters.

The trackers to which BitTorrent must connect usually are on port 6969, so the client must have outbound access on this port. Some trackers are on other ports, however.

BitTorrent will usually work fine in a NAT (network address translation) environment, since it can function with only outbound connections. Such environments generally include all situations where multiple computers share one publicly-visible IP address, most commonly: computers on a home network sharing a cable or xDSL connection. If you are unsure of whether you have NAT or not, then try this link which will try to determine if you are behind a NAT gateway.

However, you will get better speeds if you can accept incoming connections as well. To do this you must use the "port forwarding" feature of whatever is performing the NAT/gateway task. For example, if you have a cable or DSL connection and a router/switch/gateway/firewall, you will need to go into the configuration of this device and forward ports 6881-6889 to the local machine that will be using BitTorrent. If your device makes it hard to enter a range of ports (if you must enter each one separately), then you can just do the first 10 or so ports, or however many simultaneous clients you plan to ever have open. If more than one person behind such a gateway wishes to use BitTorrent, then each machine should use a different port range, and the gateway should be configured to forward each port range to the corresponding local machine.

If you have one of these broadband router/NAT devices (such as the Linksys BEFSR41, D-Link DI-701/704, Netgear RT311, SMC Barricade, 3Com Home Ethernet Gateway, etc.) you will usually need to enter the web configuration of the device. If you're not sure, try http://192.168.1.1 or sometimes http://192.168.0.1. If you can't figure it out, try the manual for the device -- they are often on the manufacturer's web site in PDF form. You can also try the forums at places like Broadband Reports or Practically Networked. To see an example of what you're looking for, this is a link to the Linksys BEFSR41 manual. Look at page 55, under the section "Port Range Forwarding."

If you are using Microsoft's ICS (Internet Connection Sharing), this article on mapping ports might be useful.

If you are using a software firewall, then you must also enable incoming connections to be answered by the BitTorrent client program. Note that Windows XP includes a primitive firewall ("Internet Connection Firewall" or ICF) which you may have to configure for BitTorrent. Here are the directions for opening ports in the Windows XP firewall:

  1. Open the 'Network Connections' folder (click Start, then Control Panel, then Network and Internet Connections, then Network Connections.)
  2. Click the shared connection or the Internet connection that is protected by Internet Connection Firewall, and then, under Tasks, click Change settings of this connection.
  3. On the Advanced tab, click Settings.
  4. For each port you wish to forward, (i.e. 6881, 6882, ... 6889) do the following:

    1. On the Services tab, click Add and enter all of the following information:
    2. In Description of service, type an easily recognized name for the service, such as "BitTorrent".
    3. In Name or IP address of the computer hosting this service on your network, enter 127.0.0.1 (this means "the local machine.")
    4. In both External and Internal port number for this service, enter the port number, e.g. 6881.
    5. Select TCP, then OK.

See this link or this link for more information about the XP firewall.

If you are running another type of software firewall (such as Zone Alarm Pro, Norton Firewall, McAfee Firewall, BlackICE Defender, etc.), you may have to do something similar to allow inbound access on ports 688x to the BitTorrent client (usually btdownloadgui.exe.)

For example, in Zone Alarm Pro, in the Program Listings, click on the program's name (btdownloadgui.exe) and then click the Options button and then enter the ports to use. If you're having trouble connecting, you might try giving BitTorrent access to all ports.

To open ports in the Mac OS X firewall, do the following:

  1. Open System Preferences.
  2. Click Sharing.
  3. Select the Firewall tab.
  4. Click the New... button.
  5. Click the popup menu in the dialog that appears, and choose Other....
  6. In the Port Number, Range, or Series field, enter 6881-6999.
  7. In the Name field, enter BitTorrent (or any other identifying string.)
  8. Click OK.

Can I use a proxy server with BitTorrent?

First, note that there are two types of connections that the BitTorrent program must make:

A web proxy can only be used for the first type of connection, since the second type is not HTTP. Theoretically, you could use the HTTP CONNECT command to tunnel them through an HTTP proxy, but this would require additional code support in the client. There is a possible workaround for this scenario, however; see the final point below.

That having been said, here is how to configure an HTTP proxy for the tracker connections:

What if I need to use SOCKS to access the Internet?

Look into a program called SocksCap. It can be used to socksify any normal program. The complication here is that you have to give SocksCap a command line to run, and the btdownloadgui command line will be different for each torrent. One suggestion would be to setup a command line in SocksCap of btdownloadgui.exe --responsefile "c:\downloads\file.torrent". (Substitute any suitable directory in the command.) Now, when you want to open a torrent, save it as "file.torrent" in "c:\downloads" (or whatever you used) and then run the command in SocksCap.

BitTorrent says I'm uploading, what files am I sharing? What's being sent?

Don't worry. When you are downloading a particular torrent, you are also uploading that torrent at the same time. The parts of the file(s) that you have already downloaded are uploaded to other peers. This is normal, and it's how the protocol works. There is no "shared directory" setting as with other peer-to-peer applications. If you have a certain file (or files) that you want to make available to others, you must first create a .torrent file and upload it to a server, and then seed the file. See the section creating a new torrent for the detailed procedure.

What happens if I cancel a download? How can I resume?

BitTorrent fully supports stopping and later resuming a partial download. You don't have to do anything special. If you cancel a download before it's finished, the partial download remains on your hard drive. To resume the transfer, just click on the same torrent link again and when asked where to save the file, select the same location as last time. BitTorrent will see that the file exists and check it to see how much has already been downloaded. It will then pick up where it left off the last time. See also the section regarding file size.

Note: To resume properly, you must make the same selection when prompted as you made the first time. For torrents consisting of a single file, this is rather straight-forward: simply select the file. However, torrents that consist of a folder of multiple files can be a bit more confusing. To resume, you must select the folder that contains the BitTorrent folder.

Here's an example of resuming a folder-type torrent. Let's suppose that you downloaded a torrent called SomeCoolBand, and selected to put it in the folder Downloads. So your directory structure resembles something like \Downloads\SomeCoolBand\file1, \Downloads\SomeCoolBand\file2, and so on. The important part of this example is that should you resume this transfer, when asked to select a destination folder you must select the \Downloads folder and NOT \Downloads\SomeCoolBand. It may seem a bit counter-intuitive, but just remember to always make the same selection as the original choice. When you first started the transfer there was no SomeCoolBand folder; you instead selected \Downloads and BT created the SomeCoolBand folder.

Why is my downloaded file huge even though I only downloaded a small bit?

When BitTorrent starts, it allocates space for the entire file(s). That is what you see at startup as the progress bar moves across the screen and the disk drive goes crazy. The reason it does this is because it downloads the file in pieces, and those pieces arrive in an arbitrary order. Unlike http or ftp, which download the file from start to finish, BT downloads it in random order.

Why does my hard drive go crazy at the beginning of a resumed download?

When you open a torrent and give BitTorrent a filename/directory that already exists, it must check the file to see how much of it is useful data and how much is junk. (Recall that BT allocates space for the entire file when you first start a torrent.) To do this it must read the entire contents of the file, and generate what's known as a hash for each piece of the file. A hash is a cryptographic function that creates a small summary or digest of a large amount of data. BitTorrent uses the SHA hash function to determine which parts of the file are good and which are bad.

What is seeding? How do I do it? Why should I leave the client open after it finishes downloading?

First, you may want to review the answers to the question on terminology. A seed is a client which has a complete file. Seeding is the process of connecting to a torrent when you have a complete file. There are two ways to do this:

It's generally considered a good idea to leave your client open as long as possible, since it helps other users. Some communities have guidelines on when it's permissible to disconnect, typically after the ratio of bytes received to bytes sent reaches 1:1, or 24 hours after the download completes. Please be nice, and do what you can to contribute to other users.

I'm getting an error message, what does it mean?

The best thing to do in general if you're having connectivity problems is just wait. Often trackers are unavailable or slow to respond, usually due to high load or sometimes DDoS attacks. Some torrents can take a while to get up to speed, so patience is a virtue. That being said, below are some common error messages with explanations and what to do about them.

Note: Often you will get a red error message when there's a problem connecting to the tracker, but the client will keep on retrying. This is normal. It can result in the download progressing normally and successfully, even with an error message displayed on the screen. Make sure to note the time-stamp on the error, and if it's more than 5 to 10 minutes old, you can ignore it. The newer versions of the experimental client "age away" the error messages after 5 minutes to deal with this situation.

Problem getting response info - [Errno 2] No such file or directory: "C:\\Documents and Sett..."
For some reason, Internet Explorer sometimes doesn't save the torrent file in the Temporary Internet Files directory properly. The solution seems to be to right click on the link and choose Save As..., and save the torrent file to disk, and then double-click the file to launch the client. Clearing the IE cache seems to help if this problem is recurring. It seems to be related to torrent files with square brackets (']' and '[') in the filename.
Too many args - 0 max.
This error in indicative of a bad command line. See the section on setting the command line and ensure that the arguments to the BitTorrent program include --responsefile "%1".
A piece failed hash check, re-downloading it
This is a benign message, you can safely ignore it. It means that you received a piece of the file that didn't check out as being correct, so it will be downloaded again. Probable cause of this might be someone incorrectly using the "skip hash check" option.
bad data from tracker -
Usually you can ignore this, it seems to happen when the tracker is overloaded or otherwise flaky.
Problem connecting to tracker - timeout exceeded
Problem connecting to tracker - HTTP Error 503: Connect failed
Problem connecting to tracker - [Errno socket error] (10061, "Connection refused")
Problem connecting to tracker - (111, 'Connection refused')
There was a problem contacting the tracker. Trackers tend to be heavily loaded, and connections sometimes fail. The best thing to do is just be patient and leave the client open. If you find you're getting this a lot, you can try increasing the HTTP request timeout by adding the parameter "--http_timeout 120" (the default is 60, unit is seconds.) See the section on changing the command line if you need help doing this.
Problem connecting to tracker - HTTP Error 400: Not Authorized
This indicates that the administrators of this tracker are not allowing it to be used for this torrent. Some trackers will only track torrents that are also posted in their forums/website, for example. Usually this indicates a stale torrent -- try going to the web site associated with the tracker and see if you can find an updated torrent.
Problem connecting to tracker - HTTP Error 404: Not Found
Probably a stale torrent. Try to find a new link to the torrent.
Problem connecting to tracker - HTTP Error 407: Proxy Authentication Required
You may need to configure a username and password for your proxy server setting in order to contact the tracker. See this section for details.

What can I do if I get a blue screen error, spontaneous reboot, or lockup?

Some network cards and DSL modems have buggy drivers. Common symptoms include a blue screen (with a DRIVER_IRQL_NOT_LESS_OR_EQUAL error) or a spontaneous reboot. Here are some common culprits:

If your network interface card (NIC) or DSL/cable modem were not listed above, then check with the manufacturer's website and make sure you have the latest drivers.

My internet connection drops, often during very fast downloads. What can I do?

This issue is still unresolved, but my guess is that it's due to buggy firmware in the xDSL/cable modem or router. Reports on the mailing list seem to indicate that transfers complete without issue if the download rates are low. It seems that some people have come up with some very creative workarounds to deal with this, such as stopping the transfer if it gets too fast and restarting.

Limiting the download rate is much harder than limiting the upload rate, because one can only really control the rate at which packets leave the system. The rate at which they arrive is determined by the originating systems and any routers, gateways, or traffic shapers along the path. However, there are several ways that software can achieve the effect of limiting the download rate -- they amount to basically dropping some packets if they're coming in too fast, which will cause the TCP/IP stack of the sender to back off somewhat.

For those having these sorts of problems, here are the methods of which I'm aware to limit the download rate:

Note: Please let me know of any successes or failures at using these methods to cure the disconnect issue. I have no personal experience with the issue so I don't know what's worth trying.

My download speed seems slow, what can I do to increase it?

Here are some general guidelines to getting fast connections with BitTorrent.

How can I get a list of the people to whom I'm connected?

Try the command "netstat -an" from a command prompt. This should work for Windows, Linux/Unix, and Mac OS X. It will give you a list of all the network connections on your machine. Generally, you are only interested in connections where the state is ESTABLISHED. Also, connections with the local address of "127.0.0.1" are usually not interesting, as they indicate local-only connections.

For Windows, there is a much better tool for this that gives a more informative output with a GUI instead of a command line interface. Download TCPView, a free program. It will show an output similar to the netstat command, but it will also list the program name and PID (process ID) of which program "owns" each connection. Try the Show Unconnected Endpoints button to hide connections that are not in a state of ESTABLISHED. The Resolve Addresses command will perform a reverse-DNS lookup, which will display the hostname of the machines to which you are connected (if available), instead of their numeric IP addresses. TCPView even has an option to close a specific connection, if you right click on the desired row and choose Close Connection.

Using either netstat or TCPView, you can figure out which connections are inbound and which are outbound. Those with a Local Address ending in ":6881" through ":6999" (or any port number in the port range that you have specified) are inbound connections. The rest are probably outbound, especially if it has a Remote Address that ends in ":6881" through ":6999".

In the latest build of the experimental client (3.2.1b-2), if you click on the Advanced button you will get a screen showing details about each of the machines you are connected to for the current torrent.

Is there a way to preview a file before it's finished?

There is no good way to do this. Because the BitTorrent protocol downloads pieces in arbitrary order, there is no guarantee that the part of the file necessary for previewing (usually the beginning of the file) is present. To further complicate matters, some torrents are packaged as an archive, which would be quite difficult to extract until it's complete.

Still, if you want to attempt to view the file periodically, you may eventually get lucky. First, make sure the file you are downloading is not an archive. If it's a ZIP or RAR (R00, R01, ...) file, forget it. Next, you'll have to interrupt the download, since BitTorrent locks the file in an exclusive mode until the file is complete. You can now try opening the file in whatever application is meant to be used to view it, but don't be surprised if very strange things happen. Finally, you'll want to resume the transfer, unless you've determined that you no longer want the file.

I just downloaded a file ending in .xyz, how do I open it?

Below is a list of common file types you will encounter with BitTorrent, and how to handle them.

.R00, .R01, .Rnn If you find a directory with a bunch of files ending in .Rnn, it's a RAR archive split into multiple parts. This is commonly done for posting to Usenet newsgroups. Open the .RAR file and extract the contents with WinRAR (Windows) or UnRarX (OS X.) Either program should automatically see all the parts if they are in the same directory.
.CBR, .CBZ These are comics in a compressed archive. For Windows, download the free program CDisplay. Or simply rename them (CBR to RAR, CBZ to ZIP) and open with your usual archive program, such as WinRAR or WinZIP. For OS X, try Book Image Viewer after extracting with unrar or unzip.
.PAR, .P01, .Pnn These are parity files, used to reconstruct any missing parts of the archive. Ordinarily you will not have to do anything with them -- they are extraneous unless a part is missing or bad, in which case the torrent's creator should have fixed the archive before distributing the torrent. If WinRAR does give you a message about a missing or corrupt part, then get SmartPAR (Windows) and open the .PAR file. The program will then check all the files and recreate any missing or damaged parts. For OS X, UnRarX should also process the PAR file.
.NFO Files that end in .NFO are plain text files that often contain very useful information about the files you have just downloaded. Always read the NFO file if you are having a problem! Unfortunately, the .NFO extention also has another meaning to Windows, so sometimes when you try to open these files you will get an error from MS System Information about a corrupt file. If this is the case you will also probably see the file listed with a type of "MSInfo File" or something similar. You should open the NFO file in Notepad, or any plain-text editor. More info here.
.SFV Simple File Verification file - used to verify the integrity of a set of files, this is a text file containing file names and typically CRC32 checksums. For Windows, try a program such as QuickSFV or fsum to verify the integrity. Mac OS X users should try MacSFV. Normally these files should not be necessary with BitTorrent, since the BT protocol has its own error checking method (on top of TCP's checksumming.) If you find some file that doesn't match the checksum in its SFV file, blame the torrent's creator, since he or she should have fixed it before creating and distributing the torrent.
.BIN, .CUE, .ISO These are images of a CD. If the file is a movie, they are most likely VCDs or SVCDs. There are several ways to deal with these. For Windows:
  • Use a program such as Nero to burn the images to a CDR and then view them in your standalone DVD player, or your DVD drive with your DVD player software. Some instructions for burning BIN files with common software applications can be found at this link.
  • If you know it's a VCD/SVCD, you can use a tool such as VCDGear to extract the MPEG data. VCDs will be MPEG-1 type files, and SVCDs will be MPEG-2 type files. Usually the easiest way to view these is with a DVD player such as PowerDVD which can read input from a file.
  • Use a program such as Daemon Tools or Alcohol 120% to 'mount' the file as a virtual disk. Then you can use PowerDVD or whatever application is appropriate to view the data from that drive.
For OS X:
  • Use FireStarter FX to burn (S)VCDs from CUE or BIN files.
  • Play (S)VCD files, and most others, with VLC.

How do I change the command line parameters in Windows?

The command line that Windows sends to the BitTorrent program is stored in the registry, with the file-type association for TORRENT files. It can be changed as follows:

  1. Go to Folder Options in the Control Panel.
  2. Select the File Types tab at the top of the dialog.
  3. Wait a moment for Windows to load the list, then scroll down and select the TORRENT extension. Tip: press the 't' key to jump to entries starting with t. Note: The file extension column might be truncated to just TORR...
  4. Click the Advanced button.
  5. In the list of Actions, select open, probably at the top of the list, then click the Edit button.
  6. The contents of Application used to perform action is the command line. By default it should be:

    "C:\Program Files\BitTorrent\btdownloadgui.exe" --responsefile "%1"

    Note the double-quotes around %1, and your Program Files directory might be different. To add more command line parameters, simply change this string. For example, to change the port range, you might use:

    "C:\Program Files\BitTorrent\btdownloadgui.exe" --minport 10000 --maxport 10100 --responsefile "%1"

    See this section of the FAQ for a list of all the available command line arguments and their defaults.
  7. Finish by clicking OK to close all the dialogs.

Also note that if you are using TorrentSpy to launch BitTorrent, the command line used is contained in the TorrentSpy configuration. Use the System tab in TorrentSpy to modify the command line parameters used in this case.

How can I make Internet Explorer ask me if I want to save the torrent link rather than automatically opening the download GUI?

Some people like to save the .TORRENT files to disk, so that it's easy to restart transfers without finding the original link. It's possible to make Internet Explorer ask you if you want to save the file or open it in place, rather than automatically running the GUI. To do this, follow steps 1 through 4 under the section above about changing the command line parameters. On the dialog now on your screen you should see a check box labeled Confirm open after download. Put a check in this box and IE will ask you what you want to do when you click on a torrent link. Use this as an alternative if you find yourself always right clicking and choosing Save As....

What are the command line parameters for BitTorrent?

I have moved this section to a seperate page as this one is getting quite large. Click Here for the list of command line parameters.

How do I create a new torrent (share a file I have with others)?

Sharing files that you have with others is relatively easy with BitTorrent, but a little extra work is required compared to marking a directory as "shared" as with some other file sharing applications. There are essentially three elements necessary to sharing a file with BitTorrent:

  1. The tracker, which coordinates connections among the peers. Bandwidth required is very moderate compared to the size of the files being shared.
  2. The web server, which stores and serves the .torrent file. This is usually a quite small file, and is only requested once by each peer before initiating the transfer. The web server also serves to index and organize the torrents, since there is no built-in search capability in the BitTorrent protocol -- existing web techniques are instead used.
  3. At least one seeder. This is the only element of the three that contains any of the file's actual contents. The seeder is almost always an end-user's desktop machine, rather than a dedicated server machine.

In earlier periods of BitTorrent, the process was somewhat more difficult because frequently you had to run your own tracker (and possibly web server) in addition to the seeder. Recently, however, torrent communities have sprouted which take care of many of the details of running a tracker and distributing the .torrent metadata file. For most purposes, using one of these communities is the quickest and easiest way to share data.

For the purposes of this part of the FAQ, we will assume you already have a tracker and web server, or access to them. Most of the sites listed in the links section run trackers and web servers that you are welcome to use. The rule of thumb here is to never create a torrent for a tracker which you do not have permission to use. In most cases that simply means that if you intend to use a tracker, you should also post your .torrent file to the website associated with the tracker, so that the whole community can benefit.

If you still desire to run a tracker or web server, see the following questions on running a tracker and configuring a web server.

Below are the steps to create and distribute the .torrent file, and begin the seeding.

  1. Decide what you want to share. A torrent can contain either a single file, or a directory of many files. This is often quite convenient, since it avoids the step of creating an archive (.zip, .rar, etc.) if you need to store multiple files. For example, if you are sharing a 2-CD movie, put both of the files in a directory and create a torrent for that, rather than zipping the files and then creating a torrent for the single archive file.

    IMPORTANT NOTE! Despite what I would call common sense and courtesy, I see people doing stupid things at this point all the time! For example, if the file you are sharing was originally posted to Usenet and came in a number of parts (.RAR, .R00, .R01), do not put those parts in an archive and then create a torrent of that. Most media files are already compressed, and rar-ing or zip-ing them just adds an additional step for everyone that receives the files. And for the love of $DEITY, do not include the parity files in your torrent! In summary, if the end product you are sharing is an .AVI file, create a torrent for that. This makes it easier for people to hold on to the original form of the torrent, and this tends to lead to it being shared longer. If you distribute your AVI file as an RAR containing 33 parts, which itself contains a ZIP, then people will trudge through the processing of the files to get the AVI, and then most likely delete the original since it's in a form that is useless to them. Therefore, they cannot (re-)seed the torrent since they've lost the original format. Finally, you do your part to put an end to the neverending stream of "How do I open .R00 files?" questions. (end opinionated rant)
  2. Run maketorrent. (See this section of the FAQ if you haven't installed it.) If you are sharing a single file, click the (file) button, otherwise click the (dir) button. In either case a file dialog will appear, and you should select the file/directory that you wish to share.
  3. Enter the tracker's announce url in the space provided, or use the drop-down list to select from one of a common list of trackers. Remember, if you use a site's tracker when creating a .torrent file, plan to upload/post the file to that community. You can also add a comment, but it's optional.
  4. Select the piece size, or just accept the default value of (auto). In general, the smaller the piece size, the more efficient the BitTorrent download will be, but will result in a larger .torrent file. 256 kB seems to be the most common piece size in use these days, but you can experiment with other settings if you want. Avoid very large piece sizes for small files; likewise avoid small piece sizes for very large files.
  5. Click create torrent to begin the process of creating the file. You can then select if you want to create a single .torrent for all the files in the directory, or a number of separate .torrents. Most of the time you want a single .torrent for the whole folder, unless you know what you're doing. When finished, you should find a newly created .torrent file in the same directory as the file/directory you selected to share.
  6. Upload this .torrent file to a web server. Usually this means going to the web page of the site whose tracker you used and clicking the "Upload torrent" link. The procedure varies from site to site, but it's usually always explained in a FAQ link or forum posting. If you are running your own web server (and have configured it appropriately) then upload the file to your server's public web space, or whatever method you use to put files on your server.
  7. Finally, you must seed the file. Until this step, nothing but metadata has been transferred. Seeding is necessary to actually transmit your file to others. There are several ways to do this, but the simplest is to use your ordinary BitTorrent client just as you would with any other file. Navigate to the page on the web server where your .torrent is posted, click the link, and when the BitTorrent client starts be sure to select the same file/ directory that you used in maketorrent in step 2 above. The client should check the files and verify that they are complete, and then connect to the tracker and begin seeding. There are several important points about this step:

How do I run a tracker?

There are several options for running a tracker, as explained below. However before going to the trouble of installing and running your own tracker, you should first consider whether you actually need to run a tracker in the first place. There are many public BitTorrent trackers out there at the moment, see the links section for a good list. Unless you have some compelling reason why you want to run your own tracker, it's probably best to use someone else's. Hosting a tracker on a workstation-type machine with a dynamic IP address is possible but can be very tricky. In short, if you're not sure whether you need to run a tracker or not, then you don't need to.

Before starting on your tracker, make sure you've read and understand the section on making and uploading a torrent, especially the part about the need for the --ip parameter for seeding machines on the same side of a NAT gateway as the tracker.

Below are the common ways to run a tracker:

How do I configure a web server for .torrent files?

You must associate files ending in .torrent with the Content-Type application/x-bittorrent. For Apache, you should add the line:

AddType application/x-bittorrent .torrent

to your httpd.conf configuration file. If you cannot modify the main httpd.conf file (such as in the case of a shared or virtual hosting scenario), you can also put the above AddType directive in a .htaccess file. This presumes that the server's administrator has enabled this ability with the AllowOverride FileInfo directive. Also note that settings in a .htaccess file only apply to the directory containing the file, so make sure this is the directory that will contain the .torrent files.

Alternatively, you can add the line:

application/x-bittorrent .torrent

to your mime.types file, which is used if the TypesConfig directive is present in httpd.conf.

To add MIME types with Microsoft's IIS web server:

  1. Right-click the Web site and choose Properties.
  2. Select the HTTP Headers tab.
  3. In the MIME Map box, click File Types, and then click New Type.
  4. Enter the extension ".torrent" and the MIME type "application/x-bittorrent" in the appropriate boxes.
  5. Select OK to close all the dialogs.

If you cannot configure the application/x-bittorrent type, you could place the .torrent files in an archive (.zip, .rar, etc.) and serve that instead. Doing so will forfeit the ability to click on a torrent link and automatically launch the BitTorrent client, however. The user must manually unpack the .torrent file and then launch it to start the transfer.

Is there a way to download or seed a number of files at once without launching a bunch of copies of the client?

section under construction

Major BitTorrent Sites

BitTorrent sites come and go often. In the past I had attempted to keep a set of links in this section, but this requires constant maintenance. Therefore, I will simply point you to the three main BT link sites out there:

Most every BitTorrent site out there is bound to be listed on one or more of the above sites, so if you're looking for interesting things try those links. If you're looking for a particular thing and want to search for it, you can try one of the following: NovaSearch, watchen.tv, and torrent-episodes.cjb.net. But be aware that things offered with BitTorrent tend to be short-lived and so take all search results with a grain of salt. Any listing that's older than a few weeks is likely to be useless.

Another good source for torrents are the various Forums, such as: Filesoup.com, Digital Update, Bytemonsoon.net (completely unrelated to the old bytemonsoon.com), p2pforums.com, btrocks.com, and probably many others.

Finally, there are a number of web sites that offering 100% legitimate BitTorrent files: BitTorrent Files for Slashdot Effect Victims, TradeFriendly torrents at etree.org, Colorado Tapers community site, Phishhook, Musicfreaks

More BitTorrent Help

Mailing Lists

There are a handful of BitTorrent-related mailing lists maintained on Yahoo Groups. There are surely many more BitTorrent related YahooGroups than what I've listed below, so you may want to search for "torrent" or "bittorrent" at the yahoogroups.com site and see what's out there. To join these lists, either click on the link and use the web interface, or send an email message to group-subscribe@yahoogroups.com where group is the name of the group. Please ensure that your post is on-topic and sent to the correct list.

Newsgroups

IRC

A more complete list of torrent-related channels can be found on this page as well as this page. Additionally you can search for torrent channels using netsplit.de and searchirc.com.

If you have a web site or other resource not listed here, send it to me and I'd be happy to add it to the list.