mathr / blog / #

buildtorrent-0.8 released

buildtorrent is a simple command-line .torrent file creation tool.

buildtorrent 0.8 (2010-01-31) comfy chair

Changes since buildtorrent 0.7 (2008-04-13):

Fixed bugs:

  • announce-list segfault on 64bit

New features:

  • webseed url-list (-w)
  • piece length as a power of 2 (-L)
  • torrent name (-n)
  • external file list (-f)

New homepage:

New repository:

The transition from 0.7 to 0.8 involved some extensive code reorganisation to make it possible to add the new features: as with any such extensive change, this may have introduced new bugs. If you find a bug, please report it.

Download the release tarball: buildtorrent-0.8.tar.gz


3bba072cc89d2b8b4198c85734e39302 *buildtorrent-0.8.tar.gz
32694478ddef91453dc85ab7a2e659132adadeb6 *buildtorrent-0.8.tar.gz

Manual page:


buildtorrent [OPTIONS] -a announceurl input output

buildtorrent [OPTIONS] -a announceurl -f filelist -n name output


buildtorrent is a torrent file creation program. Given an announce url and an input file or directory, buildtorrent generates an output .torrent file that can be used by torrent clients.


-a announce--announce=url
Announce URL (required).
-f filelist--filelist=filelist

A text file (or - for standard input) containing a list of files to add to the output torrent file, together with the path to use inside the torrent. One file is given per line, use / as path separator for the torrent path, use | to separate the filesystem path from the torrent path. Backslash \ can be used to escape newlines and | characters inside names. For example:


Using this option requires that the --name option be used.

-n name--name=name
Specify the name for the torrent. Usage of this option is required when the --filelist option is used, in which case it specifies the name of the torrent directory. Usage without a file list overrides the name of the directory or file given on the command line.
-A announces--announcelist=announces

Additional announce URL list. Use , to separate outer level lists, and | to separate inner level items; for example:

-w webseeds--webseeds=webseeds

Additional WebSeed URL list. Use , to separate items; for example:

-l length--piecelength=length
Piece length in bytes (default 262144).
-L size--piecesize=size
Use 2size as piece length in bytes (default 18) (overrides -l).
-c comment--comment=comment
User comment (omitted by default).
-p private--private=private
Private flag (either 0 or 1).
-D, --nodate
Omit the creation date field.
-C, --nocreator
Omit the created by field.
-m, --md5sum
Add an md5sum field for each file.
-s, --show
Show generated torrent structure.
-S, --showall
Show generated torrent structure, including piece data.
-q, --quiet
Quiet operation with reduced output.
-V, --version
Show the version string.
-h, --help
Show a help screen with brief usage information.

See also

Feature comparison matrix:

announce urlYY
announce listYY
webseed listYY
piece lengthany2N
output fileYY, implicit
no dateYY
no creatorYN
file listYN

buildtorrent is more flexible, especially with the external file list feature, but mktorrent's threaded hashing wins if you want to exploit multi-core CPUs.