RatioForge is a modern, .NET 10-powered torrent client simulator that allows you to simulate upload and download statistics with BitTorrent trackers.
Note: This project is a fork and modernization of RatioMaster.NET by Nikolay Kostov. See NOTICE.md for full attribution.
- Standalone Application: Does NOT rely on your BitTorrent client (uTorrent, qBittorrent, etc.)
- No Real Transfer: Does NOT download/upload actual files - only simulates stats
- Wide Client Support: Data-driven emulations for popular BitTorrent clients:
- uTorrent (multiple versions)
- BitComet, Azureus/Vuze, BiglyBT
- ABC, BitLord, BTuga
- BitTornado, Burst, BitTyrant, BitSpirit
- Deluge, Transmission, KTorrent
- And more!
- Current default identity: qBittorrent 5.2.3, the latest stable release verified by the project
- Persistent settings: Cross-platform session defaults and named profiles with JSON import/export, automatic/dark/light appearance, IPv4/IPv6 source selection, HTTP/SOCKS5 proxy, speed randomization, activity logging, and opt-in debug logs
- Release updates: Automatic and manual checks with release notes, platform-aware downloads, and SHA256 verification
- Session controls: Immediate manual announces, clean reset, lifecycle events, live completion/ratio/time, and configurable automatic stopping
- Diagnostics: Privacy-filtered activity/debug logs, filterable CSV/JSON announce history with per-attempt request details, and pre-session DNS/IP/TLS/proxy checks
- Cross-platform: Native desktop builds for Windows, Linux, and macOS
- Tracker networking: HTTP, HTTPS, and UDP trackers over IPv4 or IPv6,
announce-listtiers, failover, automatic routing, and explicit local-address binding - Modernized: Rebuilt for .NET 10 and Avalonia UI
- Windows 10/11 x64, Linux x64, or macOS 15+ on Intel or Apple Silicon
- Self-contained downloads do not require a separate .NET installation.
- Much smaller Lite downloads require the .NET 10 Runtime for the matching platform and architecture.
- Download the latest release from the Releases page.
- Choose the asset for
win-x64,linux-x64,osx-x64, orosx-arm64. - Choose the
-liteexecutable for the smallest download when .NET 10 is already installed. - Otherwise choose the self-contained executable or archive. Linux uses
tar.gz, macOS archives containRatioForge.app, and Windows useszip. - On Linux or macOS, make the raw executable runnable after download with
chmod +x RatioForge-*.
- .NET 10 SDK
- Visual Studio 2026 version 18.0 or later, or Rider with .NET 10 support
# Clone the repository
git clone https://github.com/tsautier/RatioForge.git
cd RatioForge
# Restore dependencies
dotnet restore Source/RatioForge.sln
# Build
dotnet build Source/RatioForge.sln --configuration Release
# Run
dotnet run --project Source/RatioForge.Desktop/RatioForge.Desktop.csprojdotnet test Source/RatioForge.sln- Load a
.torrentfile - Select the BitTorrent client to emulate
- Configure upload/download speeds and ratio
- Click "Start" to begin sending fake stats to the tracker
For support, use the built-in Help menu to open the GitHub repository or create an issue.
RatioForge loads its built-in emulations from clients.json. Settings can export the effective catalog and import a versioned replacement without rebuilding. The imported file is installed at the configuration path shown in Settings; existing names are replaced and new names are appended immediately.
{
"clients": [
{
"name": "ExampleClient 1.0",
"userAgent": "ExampleClient/1.0",
"defaultPeerCount": 200,
"key": { "kind": "Hex", "length": 8, "upperCase": true },
"peerIdPrefix": "-EX1000-",
"peerId": { "kind": "UrlSafe", "length": 12 },
"headers": ["Host: {host}", "User-Agent: ExampleClient/1.0", "Connection: close"],
"query": "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&key={key}{event}&numwant={numwant}&compact=1"
}
]
}Supported random kinds are Alphanumeric, LowerAlphanumeric, Numeric, Hex, Random, UrlSafe, TransmissionChecksum, and HexRange. A malformed custom file is ignored, reported in Activity, and never replaces the built-in catalog.
- Compatibility guardrails: Differential tests compare refactored announces with historical parameter output
- Portable profiles: Import and export session and client profiles from Settings without exposing proxy passwords
- Attempt diagnostics: Inspect and copy a privacy-filtered request and protocol diagnostic for every announce attempt
- Broader fixtures: Cover CDN-style passkeys, IPv6 UDP, complex tracker tiers, nested paths, and large torrents
- Measured releases: Strict Lite size budgets and per-runtime startup, memory, and size metrics
See CHANGELOG.md for full version history. The current compatibility review is recorded in the September 2026 client profile audit.
RatioForge is based on RatioMaster.NET by Nikolay Kostov:
- Original Development: 2006-2016
- Original Author: Nikolay Kostov (NikolayIT)
- Original Repository: https://github.com/NikolayIT/RatioMaster.NET
This fork was created in 2026 to modernize the project for current .NET standards while preserving all original functionality.
This project is licensed under the MIT License - see the LICENSE file for details.
- Original Work (2006-2016): Copyright © Nikolay Kostov
- Derivative Work (2026-present): Copyright © Thomas SAUTIER
See NOTICE.md for full attribution details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This software is for educational purposes only. Use at your own risk. The developers are not responsible for any misuse or damage caused by this program.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with ❤️ using .NET 10
Based on RatioMaster.NET by Nikolay Kostov