M: i'm using qbittorrent and trying to get quite a few different things i pulled off of the internet archive. i've got a decent balance of settings in terms of functionality manually - as long as i'm sitting and managing things. there are enough (with enough torrents missing their original .torrent files) that i don't want to switch to automatic mode, whatever that means. all i want to do, if possible, is set up a single rule along the lines of 'if this torrent has stalled for 10 minutes, put it on pause and try moving on to the next one instead of holding up the queue'. please go online and see if this is possible and, if so, how.

G: I’ll check qBittorrent’s current queue/automation options and whether there’s a built-in “stall timeout → pause” rule versus needing a workaround through the Web API or an external script.

G: [Non-text content: thoughts; content_type=thoughts]

G: [Non-text content: thoughts; content_type=thoughts]

G: [Non-text content: reasoning_recap; content_type=reasoning_recap]

G: Yes — mostly, but not exactly as a single “if stalled for 10 minutes, pause it” rule inside qBittorrent.

The best built-in option is: don’t let slow/stalled torrents count against the queue limit, so qBittorrent moves on to the next queued torrent without you manually pausing anything. qBittorrent’s own options page says Torrent Queuing controls how many torrents download/upload at once, and its Web API preferences include slow_torrent_inactive_timer, slow_torrent_dl_rate_threshold, and slow_torrent_ul_rate_threshold. citeturn727328view0 citeturn327943view3

Built-in way, probably what you want

Go to:

Tools → Options → BitTorrent → Torrent Queuing

Turn on queueing, then look for something like:

Do not count slow torrents in these limits

Then set:

What this should do: if a torrent sits below the threshold for 10 minutes, qBittorrent treats it as “slow/inactive” and it should stop occupying one of your active download slots, letting the next queued torrent start.

Important distinction: it does not pause the torrent. It leaves it available in case a peer appears again. For Internet Archive torrents, that is probably better than hard-pausing, because some of them may wake up intermittently.

Also, this is not the same thing as “Automatic Torrent Management.” You do not need to turn that on. Automatic Torrent Management is more about category/save-path behavior; queueing is separate.

Caveat

There are reports that this setting has been flaky or confusing in some versions. One 2025 qBittorrent issue describes exactly this expectation: enabling “Do not count slow torrents,” setting the inactivity timer, and expecting the next torrent to become active when one is slow/stalled. citeturn587592search1

So I’d test it with:

Then watch whether qBittorrent starts the next queued item. If it works, change the timer to 600.

If you truly want “pause after 10 minutes”

qBittorrent does not appear to have a built-in GUI rule for “stalled for 10 minutes → pause/stop torrent.” But it is scriptable through the Web UI API. The API can filter torrents by stalled_downloading, and it has torrent pause/stop commands. The v4 API docs list stalled_downloading as a valid torrent-list filter and show the old /api/v2/torrents/pause endpoint. citeturn327943view2 citeturn327943view1

For qBittorrent v5, the API naming changed: use start/stop instead of resume/pause. A qBittorrent maintainer/answer notes that /pause became /stop, and /resume became /start. citeturn154108view1

On Fedora/Linux, the rough script approach would be:

#!/usr/bin/env bash

QBT="http://127.0.0.1:8080"
USER="admin"
PASS="your_password"
STATE="/tmp/qbt-stalled-times.tsv"
NOW=$(date +%s)

COOKIE=$(mktemp)

curl -s -c "$COOKIE" \
  --data "username=$USER&password=$PASS" \
  "$QBT/api/v2/auth/login" >/dev/null

# Get currently stalled downloading torrents
curl -s -b "$COOKIE" \
  "$QBT/api/v2/torrents/info?filter=stalled_downloading" |
jq -r '.[] | [.hash, .name] | @tsv' > /tmp/qbt-stalled-now.tsv

touch "$STATE"
NEWSTATE=$(mktemp)

while IFS=$'\t' read -r HASH NAME; do
  FIRST=$(awk -v h="$HASH" '$1 == h {print $2}' "$STATE")

  if [ -z "$FIRST" ]; then
    FIRST="$NOW"
  fi

  AGE=$((NOW - FIRST))

  if [ "$AGE" -ge 600 ]; then
    # qBittorrent v5:
    curl -s -b "$COOKIE" -X POST \
      --data "hashes=$HASH" \
      "$QBT/api/v2/torrents/stop" >/dev/null

    # For qBittorrent v4.x, use this instead:
    # curl -s -b "$COOKIE" -X POST --data "hashes=$HASH" "$QBT/api/v2/torrents/pause" >/dev/null

    echo "Stopped: $NAME"
  else
    printf "%s\t%s\t%s\n" "$HASH" "$FIRST" "$NAME" >> "$NEWSTATE"
  fi
done < /tmp/qbt-stalled-now.tsv

mv "$NEWSTATE" "$STATE"
rm -f "$COOKIE"

You would run that every minute with cron or a systemd timer. It requires jq:

sudo dnf install jq

My recommendation for your case: try the built-in “Do not count slow torrents” queue behavior first, because it preserves the chance of rare IA peers reconnecting. Use the script only if qBittorrent still lets stalled items clog the queue.