A high-performance, open private torrent tracker built for speed and control.
Manage your torrents and nodes effortlessly, and route client data to your own server if needed.
Easily create and manage torrents and nodes via web interface or API, giving you full transparency and flexibility.
Open Private Tracker acts as a secure proxy for your torrent network, providing fast, private, and reliable distribution.

Open Private Tracker is designed for speed and efficiency. No connection data is stored permanently, and no activity logs are kept.
By minimizing overhead and avoiding persistent logging, the system runs at maximum performance while maintaining full privacy.
This ensures your torrents and nodes are distributed quickly and reliably, without unnecessary delays or bottlenecks.
Open Private Tracker is designed to be fast, lightweight, and private, making torrent management effortless.
Your torrent clients connect securely to Open Private Tracker. Each client is verified using its unique token, IP address, or both.
Once verified, the client can receive peer connections.
Clients continuously report usage stats back to the tracker. You can optionally forward these stats to your own server for monitoring or analytics, giving you full visibility while keeping the tracker fast and lightweight.
If no server is configured to receive stats, the data is discarded immediately, keeping the system lightweight, fast, and fully focused on peer distribution.
Sign up for an account, log in, and follow the guides to start adding torrents and nodes within minutes. Designed to get you started quickly and safely.
After signup, you will receive a unique account key – save it! There’s no way to retrieve it again. Your key is required for login and API calls.
You can add torrents using either .torrent files or magnet links. You can create multiple torrents or delete existing ones at any time.
Authorized clients can be added either via their unique token or IP address. Stats from your clients are forwarded to your server if configured; otherwise, they are discarded.
curl -X POST https://www.openprivatetracker.org/add-torrent \
-H "Content-Type: application/json" \
-d '{
"account_key": "YOUR_ACCOUNT_KEY",
"torrent": "magnet:?xt=urn:btih:...",
"client_token": "UNIQUE_CLIENT_TOKEN"
}'
const fetch = require('node-fetch');
fetch('https://www.openprivatetracker.org/add-torrent', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
account_key: 'YOUR_ACCOUNT_KEY',
torrent: 'magnet:?xt=urn:btih:...',
client_token: 'UNIQUE_CLIENT_TOKEN'
})
})
.then(res => res.json())
.then(console.log);
import requests
data = {
"account_key": "YOUR_ACCOUNT_KEY",
"torrent": "magnet:?xt=urn:btih:...",
"client_token": "UNIQUE_CLIENT_TOKEN"
}
resp = requests.post("https://www.openprivatetracker.org/add-torrent", json=data)
print(resp.json())
using System.Net.Http;
using System.Text;
using System.Text.Json;
var client = new HttpClient();
var data = new {
account_key = "YOUR_ACCOUNT_KEY",
torrent = "magnet:?xt=urn:btih:...",
client_token = "UNIQUE_CLIENT_TOKEN"
};
var content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://www.openprivatetracker.org/add-torrent", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
To allow a client to connect to the tracker, you can use either a unique token or the client's IP address.
Generating a unique .torrent file for each user with their token appended to the announce URL is the recommended method.
This token-based approach removes the need to track or store IP addresses, and ensures users retain access even if their public IP changes (for example, when using a VPN).
Each user receives their own .torrent file from your server or website* with the token already included.
Alternatively, clients can be authorized by IP address. While this works, it is less flexible and requires updating if the user's IP changes.
* Your server or website refers to any endpoint where users can download their personalized .torrent files
it does not have to be the same server you used when creating your account.
# Edit existing torrent to add your token transmission-edit -a "http://tracker.openprivatetracker.org:1337/announce?token=UNIQUE_CLIENT_TOKEN" myfile.torrent
torrenttools edit -a http://tracker.openprivatetracker.org:1337/announce?token=UNIQUE_CLIENT_TOKEN my.torrent
btedit myfile.torrent set announce "http://tracker.openprivatetracker.org:1337/announce?token=UNIQUE_CLIENT_TOKEN" -o newfile.torrent
benpatch file.torrent announce "http://tracker.openprivatetracker.org:1337/announce?token=UNIQUE_CLIENT_TOKEN" > file.torrent
import bencodepy, sys
f = "myfile.torrent"
d = bencodepy.decode_from_file(f)
d[b'announce'] = b"http://tracker.openprivatetracker.org:1337/announce?token=UNIQUE_CLIENT_TOKEN"
with open("newfile.torrent", "wb") as out:
out.write(bencodepy.encode(d))
The accountKey parameter is used in JSON requests and is generated when your account is created.
Use this endpoint to create torrents linked to your account. Include your accountKey and one or more SHA-1 hashes in the infoHashes array, formatted as magnet:?xt=urn:btih:5813..., in JSON.
{
"accountKey": "GgxGb1115NitZ2XV9RnbyCt8NDs3+IUA7F5kAFOTsw1KQCl1z3Rs....",
"infoHashes": [
"magnet:?xt=urn:btih:93b4c33754944d811921cc0ec1a87846b4e32bd7",
"magnet:?xt=urn:btih:...",
"magnet:?xt=urn:btih:...",
]
}
Alternatively, you can upload .torrent files directly instead of sending infoHashes.
curl -X POST "/create-torrents" \ -F "accountKey=GgxGb1115NitZ2XV9RnbyCt8NDs3..." \ -F "torrentFiles=@myfile1.torrent" \ -F "torrentFiles=@myfile2.torrent"
/create-tokens
{
"accountKey": "GgxGb1115NitZ2XV9RnbyCt8NDs3+IUA7F5kAFOTsw1KQCl1z3Rs....",
"tokens": [
{ "token": "aB3dE7fG1H" },
{ "token": "kL9mN2pQ4R" }
]
}
/list-tokens
{
"accountKey": "GgxGb1115NitZ2XV9RnbyCt8NDs3+IUA7F5kAFOTsw1KQCl1z3Rs...."
}
/list-torrents
{
"accountKey": "GgxGb1115NitZ2XV9RnbyCt8NDs3+IUA7F5kAFOTsw1KQCl1z3Rs...."
}
Save the account key now!