Nuclear Powered Macros

    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/create-torrent package

    5.0.2 • Public • Published

    create-torrent ci npm downloads javascript style guide

    Create .torrent files


    This module is used by WebTorrent! This module works in node.js and the browser (with browserify).


    npm install create-torrent


    The simplest way to use create-torrent is like this:

    const createTorrent = require('create-torrent')
    const fs = require('fs')
    createTorrent('/path/to/folder', (err, torrent) => {
      if (!err) {
        // `torrent` is a Buffer with the contents of the new .torrent file
        fs.writeFile('my.torrent', torrent)

    A reasonable piece length (approx. 1024 pieces) will automatically be selected for the .torrent file, or you can override it if you want a different size (See API docs below).


    createTorrent(input, [opts], function callback (err, torrent) {})

    Create a new .torrent file.

    input can be any of the following:

    • path to the file or folder on filesystem (string)
    • W3C File object (from an <input> or drag and drop)
    • W3C FileList object (basically an array of File objects)
    • Node Buffer object
    • Node stream.Readable object

    Or, an array of string, File, Buffer, or stream.Readable objects.

    opts is optional and allows you to set special settings on the produced .torrent file.

      name: String,             // name of the torrent (default = basename of `path`, or 1st file's name)
      comment: String,          // free-form textual comments of the author
      createdBy: String,        // name and version of program used to create torrent
      creationDate: Date        // creation time in UNIX epoch format (default = now)
      filterJunkFiles: Boolean, // remove hidden and other junk files? (default = true)
      private: Boolean,         // is this a private .torrent? (default = false)
      pieceLength: Number,      // force a custom piece length (number of bytes)
      announceList: [[String]], // custom trackers (array of arrays of strings) (see [bep12](
      urlList: [String],        // web seed urls (see [bep19](
      info: Object,             // add non-standard info dict entries, e.g. info.source, a convention for cross-seeding
      onProgress: Function      // called with the number of bytes hashed and estimated total size after every piece

    If announceList is omitted, the following trackers will be included automatically:

    • udp://
    • udp://
    • udp://
    • udp://
    • udp://
    • wss://
    • wss://
    • wss://

    Trackers that start with wss:// are for WebRTC peers. See WebTorrent to learn more.

    callback is called with an error and a Buffer of the torrent data. It is up to you to save it to a file if that's what you want to do.

    Note: Every torrent is required to have a name. If one is not explicitly provided through, one will be determined automatically using the following logic:

    • If all files share a common path prefix, that will be used. For example, if all file paths start with /imgs/ the torrent name will be imgs.
    • Otherwise, the first file that has a name will determine the torrent name. For example, if the first file is /foo/bar/baz.txt, the torrent name will be baz.txt.
    • If no files have names (say that all files are Buffer or Stream objects), then a name like "Unnamed Torrent " will be generated.

    Note: Every file is required to have a name. For filesystem paths or W3C File objects, the name is included in the object. For Buffer or Readable stream types, a name property can be set on the object, like this:

    const buf = Buffer.from('Some file content') = 'Some file name'

    command line

    usage: create-torrent <directory OR file> {-o outfile.torrent}
    Create a torrent file from a directory or file.
    If an output file isn\'t specified with `-o`, the torrent file will be
    written to stdout.


    MIT. Copyright (c) Feross Aboukhadijeh and WebTorrent, LLC.


    npm i create-torrent

    DownloadsWeekly Downloads






    Unpacked Size

    25.8 kB

    Total Files


    Last publish


    • alxhotel
    • feross
    • mafintosh
    • flet
    • watson
    • diegorbaquero
    • hicom150
    • jhiesey
    • webtorrent-bot