> ## Documentation Index
> Fetch the complete documentation index at: https://mkbrr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# create

> Create a new torrent file from a file or directory.

## Usage

```bash theme={null}
  mkbrr create /path/to/content [flags]
```

<Note>
  Create torrents in two modes:

  * Single file/directory mode (default)
  * [Batch mode](/features/batch-mode) using a YAML config file

  Common settings can be saved and reused with [presets](/features/presets).

  By default, when a tracker URL is provided, the output filename will be prefixed with the tracker domain (e.g. "example\_filename.torrent"). Use `--skip-prefix` to disable this behavior.
</Note>

## Arguments

* `/path/to/content`: (Required unless using `-b`) The path to the source file or directory.

## Flags

### Input & Output

<ParamField query="--tracker, -t" type="string[]">
  Tracker URL. Can be specified multiple times to add several trackers. Optional.
</ParamField>

<ParamField query="--name" type="string">
  Set torrent name (default: source filename).
</ParamField>

<ParamField query="--output, -o" type="string">
  Optional. Set output path (default: `<n>.torrent` or `<tracker-prefix>_<n>.torrent`).
</ParamField>

<ParamField query="--output-dir" type="string">
  Output directory for created torrent.
</ParamField>

<ParamField query="--skip-prefix" type="boolean" default={false}>
  Don't add tracker domain prefix to output filename.
</ParamField>

### Advanced Input (Batch & Presets)

<ParamField query="--batch, -b" type="string">
  Batch config file (YAML). Cannot be used with a path argument.

  <Info>
    For creating multiple torrents in one go. See the [Batch Mode](/features/batch-mode) documentation for details.
  </Info>
</ParamField>

<ParamField query="--preset, -P" type="string">
  Use preset from config.

  <Info>
    For reusing common settings across torrents. See the [Presets](/features/presets) documentation for details.
  </Info>
</ParamField>

<ParamField query="--preset-file" type="string">
  Preset config file (default `~/.config/mkbrr/presets.yaml`).

  <Info>
    Set custom path to presets.yaml. See the [Presets](/features/presets) documentation for details.
  </Info>
</ParamField>

### Content Selection

<ParamField query="--exclude" type="array">
  Exclude files matching these patterns (e.g., `"*.nfo,*.jpg"` or `--exclude "*.nfo" --exclude "*.jpg"`).

  <Tip>
    Use this to filter out unwanted files like NFOs, samples, or extras that shouldn't be in the torrent. See the [filtering guide](/features/filtering) for detailed pattern rules and examples.
  </Tip>
</ParamField>

<ParamField query="--include" type="array">
  Include only files matching these patterns (e.g., `"*.mkv,*.mp4"` or `--include "*.mkv" --include "*.mp4"`).

  <Tip>
    Using include patterns activates whitelist mode. See the [filtering guide](/features/filtering) for detailed pattern rules and examples.
  </Tip>
</ParamField>

### Torrent Internals

<ParamField query="--private, -p" type="boolean" default={true}>
  Make torrent private.

  <Note>
    Private flag is enabled by default for tracker compliance. Only disable if you're creating a public torrent.
  </Note>
</ParamField>

<ParamField query="--piece-length, -l" type="number">
  Set piece length to 2^n bytes (16-27, automatic if not specified).
</ParamField>

<Tip>
  Let mkbrr automatically calculate the piece size unless you have specific requirements. The automatic calculation optimizes for both performance and compatibility.
</Tip>

<ParamField query="--max-piece-length, -m" type="number">
  Limit maximum automatically calculated piece length to 2^n bytes (14-27).
</ParamField>

<ParamField query="--target-piece-count" type="number">
  Target approximate number of pieces. Calculates optimal piece length automatically.
  Mutually exclusive with `--piece-length`.
</ParamField>

<ParamField query="--entropy, -e" type="boolean" default={false}>
  Randomize the torrent's info hash by adding or updating a unique, random `entropy` key in the info dictionary before hashing.

  <Info>
    Cross-seeding is the practice of seeding the same content on multiple trackers. Using the entropy flag helps avoid conflicts between trackers.
  </Info>
</ParamField>

### Seeding & Metadata

<ParamField query="--web-seed, -w" type="array">
  Specify web seed URLs. Can be used multiple times.

  <Info>
    Web seeds provide an HTTP fallback source for the torrent content, improving availability.
  </Info>
</ParamField>

<ParamField query="--source, -s" type="string">
  Specify the source string.

  <Info>
    Some trackers require or recommend specific source tags. Check your tracker's rules.
  </Info>
</ParamField>

<ParamField query="--comment, -c" type="string">
  Specify a comment.
</ParamField>

<ParamField query="--no-date, -d" type="boolean" default={false}>
  Omit the creation date from the torrent metadata.
</ParamField>

<ParamField query="--no-creator" type="boolean" default={false}>
  Omit the creator string from the torrent metadata.
</ParamField>

### Season Pack Detection

<ParamField query="--fail-on-season-warning" type="boolean" default={false}>
  Exit with error if season pack completeness check detects missing episodes.
</ParamField>

### Execution & Output Control

<ParamField query="--workers" type="number">
  Manually specify the number of concurrent goroutines used for hashing.

  <Tip>
    Experimenting with different worker values *might* yield better performance than the default automatic setting.
  </Tip>
</ParamField>

<ParamField query="--verbose, -v" type="boolean" default={false}>
  Be verbose.
</ParamField>

<ParamField query="--quiet, -q" type="boolean" default={false}>
  Enable quiet mode, printing only the final torrent file path upon success. Useful for scripts.
</ParamField>

<ParamField query="--info-only, -i" type="boolean" default={false}>
  Display only torrent info without progress (implies verbose).
</ParamField>
