Tracker comparison · BoT-SORT vs TrackTrack

BoT-SORT vs TrackTrack

A head-to-head of BoT-SORT and TrackTrack for multi-object tracking behind YOLO: how fast each runs across 10 NVIDIA GPUs and how steadily it holds object IDs, measured on the same clip and the same detector.

Faster overall
TrackTrack

Higher FPS on 10 of the 10 GPU tiers tested.

Steadier IDs
TrackTrack

Only 4 ID fragmentations, versus 16 for BoT-SORT.

Speed by GPU

BoT-SORT and TrackTrack, ranked fastest-first. Pick any GPU to see which one leads on that hardware.

NVIDIA H100High-end (Hopper)
Frames per secondhigher is better →
TrackTrack
14.2 fps
BoT-SORT
9.8 fps
#TrackerApproachFPSms / frame
1TrackTrackMotion + Re-ID14.270.6
2BoT-SORTMotion + camera comp.9.8101.7

Measured on a 200-frame clip with yolo26n.pt on NVIDIA H100. FPS is end-to-end detection + tracking. ID-stability is a property of the algorithm, not the GPU, so it’s shown separately below.

BoT-SORT vs TrackTrack: FPS on every GPU

End-to-end detection + tracking throughput (frames per second, higher is better) for BoT-SORT and TrackTrack across all 10 GPU tiers. GPUs are ordered flagship-first.

Tip: Bold marks the faster tracker on each GPU. Measured with yolo26n.pt on a 200-frame clip.

TrackerB200H200H100RTX PRO 6000A100 80GBA100 40GBL40SA10L4T4
BoT-SORT10.59.29.814.78.38.69.37.39.66.3
TrackTrack14.911.114.221.711.312.513.010.513.39.1

ID-stability: the same on every GPU

How well a tracker holds a single, consistent ID on each object is a property of the algorithm, not the GPU, so these numbers barely move across hardware; we report them once (measured on the NVIDIA H100). This clip has no MOT ground truth, so instead of MOTA/IDF1 we report the raw stability signals: how many distinct IDs the tracker created, how many times a track was broken (fragmentations), and the average track length. Fewer IDs and fewer fragmentations mean steadier identities.

Tip: Lower unique-ID and fragmentation counts (and longer average tracks) mean more stable identities on this footage. These are relative signals on one clip, not published MOT17/MOT20 accuracy scores.

TrackerApproachUnique IDsFragmentationsAvg track length
TrackTrackMotion + Re-ID7467.4
BoT-SORTMotion + camera comp.141661.7

How to choose the right tracker

You need real-time speed

Pick ByteTrack or FastTracker: both run past 100 FPS on modern GPUs and stay lightweight with no Re-ID model, ideal for live video, edge devices and high-throughput pipelines.

Your camera moves

Pick BoT-SORT. Its global motion compensation was built for drones, dashcams and handheld footage where the whole scene shifts between frames.

Scenes are crowded or occluded

Pick Deep OC-SORT. Its appearance Re-ID recovers an object's original ID after it's briefly hidden, instead of assigning a brand-new one, and it posted the highest raw FPS on most GPUs here.

Correctness beats speed (offline)

Pick TrackTrack. It produced the fewest ID breaks of any tracker here, great for post-hoc analytics, labeling and research where you can afford lower FPS.

Methodology

  • Same input for everyone. Every tracker ran on the identical 200-frame test clip with the same yolo26n.pt detector, so only the tracker changes.
  • Speed, per GPU. FPS and ms/frame are the end-to-end detection + tracking rate measured on each of the 10 GPU tiers, so you can match a tracker to the hardware you actually run.
  • Stability, measured once. ID-stability is hardware-independent, so unique-ID, fragmentation and track-length figures are reported from a single GPU. We do not publish MOTA/IDF1 because this clip has no MOT ground truth; those belong on a labeled dataset like MOT17.
  • Reproducible. All six trackers ship inside Ultralytics; the same run works on your own footage by pointing the code below at a different clip.

Measure it yourself

The exact local recipe behind these numbers: load a YOLO model once, run one tracker frame by frame, and collect FPS, latency and ID-stability. Swap the single tracker line to compare any of the six.

import time
from collections import defaultdict

import cv2
from ultralytics import YOLO

# 1. Load the detector once, then reuse it for every tracker you compare.
model = YOLO("yolo26n.pt")

# swap: botsort / fasttrack / deepocsort / ocsort / tracktrack
tracker = "bytetrack.yaml"

# 2. Read a short clip into memory (128-300 frames is plenty).
cap = cv2.VideoCapture("clip.mp4")
frames = []
while cap.isOpened() and len(frames) < 200:
    ok, frame = cap.read()
    if not ok:
        break
    frames.append(frame)
cap.release()

# 3. Run the tracker frame by frame, timing only the track() call.
unique_ids, last_seen, track_len = set(), {}, defaultdict(int)
fragmentations, total_time = 0, 0.0

for i, frame in enumerate(frames):
    t0 = time.perf_counter()
    preds = model.track(frame,
                        tracker=tracker,
                        persist=True,
                        verbose=False)
    total_time += time.perf_counter() - t0

    boxes = preds[0].boxes
    if boxes is None or boxes.id is None:
        continue

    for tid in boxes.id.int().tolist():
        # A fragmentation = an ID that
        # vanished for >=1 frame, then came back.
        if tid in last_seen and i - last_seen[tid] > 1:
            fragmentations += 1
        last_seen[tid] = i
        unique_ids.add(tid)
        track_len[tid] += 1

# 4. The metrics reported on this page.
print(f"FPS:            {len(frames) / total_time:.1f}")
print(f"ms/frame:       {total_time / len(frames) * 1000:.1f}")
print(f"unique IDs:     {len(unique_ids)}")
print(f"fragmentations: {fragmentations}")
print(f"avg track len:  {sum(track_len.values()) / len(track_len):.1f}")

Install once with pip install ultralytics opencv-python, then run it on your own clip.

Blog

From the blog

Tutorials, code, and notes on computer vision, deep learning, and applied AI.

Ultralytics object trackers comparison: ByteTrack, BoT-SORT & More
Object TrackingJune 27, 202612 min read

Ultralytics object trackers comparison: ByteTrack, BoT-SORT & More

How do the six Ultralytics trackers actually behave on the same footage? A look at BoT-SORT, ByteTrack, OC-SORT, Deep OC-SORT, FastTrack, and TrackTrack, their internals, trade-offs, and side-by-side results on ID switches, ID stability, and FPS.

Object tracking and trajectory forecasting with YOLO26 and ByteTrack
YOLO26June 25, 202610 min read

Object tracking and trajectory forecasting with YOLO26 and ByteTrack

Detect, track, and predict the future path of people and vehicles using Ultralytics YOLO26, ByteTrack, and a lightweight velocity-based forecasting model.

Real time bird detection and tracking using YOLO11
YOLO11June 24, 20265 min read

Real time bird detection and tracking using YOLO11

Learn how to detect and track birds using Ultralytics YOLO11 for real-time monitoring and ecological research through computer vision.

How to count people in zones with YOLO26 and OpenCV
YOLO26June 23, 202613 min read

How to count people in zones with YOLO26 and OpenCV

A practical walkthrough of a compact Python script that detects, tracks, and counts people inside polygon zones using Ultralytics YOLO26 and OpenCV.

Ultralytics object trackers comparison: ByteTrack, BoT-SORT & More
Object TrackingJune 27, 202612 min read

Ultralytics object trackers comparison: ByteTrack, BoT-SORT & More

How do the six Ultralytics trackers actually behave on the same footage? A look at BoT-SORT, ByteTrack, OC-SORT, Deep OC-SORT, FastTrack, and TrackTrack, their internals, trade-offs, and side-by-side results on ID switches, ID stability, and FPS.

Object tracking and trajectory forecasting with YOLO26 and ByteTrack
YOLO26June 25, 202610 min read

Object tracking and trajectory forecasting with YOLO26 and ByteTrack

Detect, track, and predict the future path of people and vehicles using Ultralytics YOLO26, ByteTrack, and a lightweight velocity-based forecasting model.

Real time bird detection and tracking using YOLO11
YOLO11June 24, 20265 min read

Real time bird detection and tracking using YOLO11

Learn how to detect and track birds using Ultralytics YOLO11 for real-time monitoring and ecological research through computer vision.

How to count people in zones with YOLO26 and OpenCV
YOLO26June 23, 202613 min read

How to count people in zones with YOLO26 and OpenCV

A practical walkthrough of a compact Python script that detects, tracks, and counts people inside polygon zones using Ultralytics YOLO26 and OpenCV.

Frequently asked questions

Which YOLO tracker is the fastest?
Deep OC-SORT posted the highest FPS on most GPUs in this benchmark, leading on 8 of the 10 tiers, with ByteTrack fastest on the H100 and FastTracker on the T4. All three clear roughly 100 FPS on an H100 with YOLO26n. TrackTrack and BoT-SORT (with Re-ID and camera-motion compensation enabled) were the slowest, often under 15 FPS.
Which tracker keeps object IDs the most stable?
TrackTrack produced the fewest ID fragmentations of any tracker, followed by BoT-SORT, ByteTrack and FastTracker. Motion-only OC-SORT produced by far the most unique IDs and fragmentations on this clip, because without an appearance model it starts a new ID whenever an object is briefly occluded. ID-stability is a property of the algorithm, so it is essentially the same on every GPU.
Does a more expensive GPU make tracking more accurate?
No. A faster GPU only makes tracking run faster; it does not change how accurately the tracker follows objects. Accuracy and ID-stability depend on the tracking algorithm and your detector, not the hardware. That is why this page reports speed per GPU, but ID-stability only once.
How was this YOLO tracker benchmark run?
Every tracker ran on the same 200-frame clip with the same yolo26n.pt detector, on each of the 10 GPU tiers. FPS is the end-to-end detection-plus-tracking rate. All six trackers are built into Ultralytics, so results are reproducible with a single script.
Which tracker should I use for a real-time application?
For real-time or edge deployments, ByteTrack and FastTracker are the safe defaults: they run well past real time (100+ FPS on modern GPUs) and stay lightweight with no Re-ID model to load. Deep OC-SORT actually posted the highest raw FPS on most GPUs here, so test it too if you want its Re-ID for steadier IDs through occlusion. If your camera moves (drones, dashcams), BoT-SORT's motion compensation is worth the extra compute. Reserve TrackTrack for offline analysis where identity correctness matters more than speed.