Skip to content
Extensible profit switcher for crypto coins and algorithms
C# Batchfile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Update dotnetcore.yml Jan 13, 2020
Enums Add Claymore Eth miner Jan 13, 2020
Images Update logo Dec 12, 2019
ProfitSwitchingStrategies New CryptoProfitSwitcher Dec 12, 2019
.editorconfig New CryptoProfitSwitcher Dec 12, 2019
.gitattributes Initial commit Jun 4, 2018
.gitignore Initial commit Jun 4, 2018
CryptoProfitSwitcher.sln New CryptoProfitSwitcher Dec 12, 2019
Helpers.cs New CryptoProfitSwitcher Dec 12, 2019 Initial commit Jun 4, 2018 Create Jul 2, 2018
PublishLinux.bat fix publishing Dec 12, 2019
ThirdPartyLicenses.txt V. 2.5.0: More profit providers Jun 7, 2018
config.json fix config.json and add more delay Jan 7, 2020


Crypto Profit Switcher is an extensible open-source .Net Core console application that helps you to always mine the most profitable coin on a pool or an algorithm on NiceHash.




  • Profit switching: Between pool mined coins and NiceHash algorithms
  • GPUs + CPU: It supports mining with multiple GPUs (mainly AMD) and CPU.
  • Benchmarking: It helps you to find the expected hashrate.
  • Easy Configuration: Only one config file.
  • Performance: Resource friendly with 0%-CPU usage
  • Miners: TeamRedMiner, XmRig, Claymore's Dual Ethereum
  • Profit data: It supports a lot of profit providers e.g. CryptUnit, WhatToMine, NiceHash etc.
  • Manual mode: You can switch between automatic mode and manual mode

How to use?

  1. Download and extract the latest release of the app (Latest release)
  2. Edit the config.json to configure it.
  3. Start the app and profit.

How does it work?

  1. The app loads the configuration from the file config.json.
  2. It downloads the miners if they have not been downloaded already.
  3. It will benchmark all enabled algorithms that don't have a valid expected hashrate.
  4. It starts to mine the most profitable combination of device, algorithm and pool.

How to configure it?

All you need to do, is to edit the JSON file config.json.


Property Valid Values Explanation
ProcessPriority Normal | AboveNormal | BelowNormal | High | RealTime Sets the process priority
ProfitSwitchStrategy MaximizeFiat | PreferLowDifficulty MaximizeFiat: Will select the miner pool combination that has the most profit in USD per day.
PreferLowDifficulty: It will multiplicate the profit in USD per day with the relative coin difficulty and maximize this new value. If the profit provider of a pool does not have data about the relative difficulty, it will use a default value of 1.
EnableCaching true | false Enable or disable caching of JSON Api calls
EnableLogging true | false Enable or disable logging to a file
EnableManualModeByDefault true | false Set if the manual mode is enabled by default
DisableBenchmarking true | false Set if benchmarking on start should be disabled.
DisableDownloadMiners true | false Set if downloading of miners on start should be disabled.
StartMinerMinimized true | false Set if the miner should start minimized
MinerStartDelay integer number Delay in seconds before miner start
DisplayUpdateInterval integer number Time in seconds between display update
ProfitCheckInterval integer number Time in seconds between profit checks
ProfitSwitchInterval integer number Time in seconds between profit switch checks
ProfitSwitchThreshold decimal number Threshold between current profit and highest profit before switching (e.g. 0 means switch immediately, 0.1 means switch when the most profitable is 10% percent more profitable than current)
Algorithms array of Algorithm objects See Algorithm


Property Valid Values Explanation
DisplayName string Self defined name of the algorithm
Enabled true | false Set if algorithm is enabled
DeviceConfigs array of DeviceConfig objects See Device Config
Pools array of Pool objects See Pool

Device Config

Property Valid Values Explanation
DeviceType CPU | AMD | NVIDIA Type of the device
DeviceId string Most likely the index of the GPU
Enabled true | false Set if device config is enabled
ExpectedHashrate decimal number Expected hash rate in H/s
PrepareScript Path or empty A script that will be executed before the miner starts
Miner TeamRedMiner | XmRig | Claymore Type of the miner
MinerPath Path Path to the executable of the miner
MinerArguments arguments Arguments that will be forwarded to the miner. These should include the algorithm but not information about the pool or devices.
MinerDeviceSpecificArguments arguments Arguments like eth_config or cn_config that are device specific.
MinerApiPort integer number Port of the miner api or use 0 for auto port selection.


Property Valid Values Explanation
UniqueName string Self defined unique name. Used for the UI and identification of the pool
Enabled true | false Set if pool is enabled
ProfitTimeframe Live | Day Sets the time frame of the profit data
ProfitProvider NiceHashApi | CryptunitApi | MoneroOceanApi | MineXmrApi | MinerRocksApi | HeroMinersApi | WhatToMineApi Sets the profit provider
ProfitProviderInfo string see Profit provider info
PreferFactor decimal number On the determination of the most profitable pool, the actual estimated profit will be multiplied by this.
PoolUrl string Pool url including the port number
PoolUser string Pool user, most likely a wallet address
PoolPassword string Pool password, most likely empty or x.

Profit provider info

This value gives the profit provider information for which coin or algorithm you want to get the profit data. This value differs between the profit providers:

Profit provider Profit provider info
NiceHashApi The API-ID of the algorithm (see the value of order in
CryptunitApi The ticker value of the coin (see the value of ticker in
MinerRocksApi The name of the subdomain for the coin e.g. for it would be monero.
HeroMinersApi The name of the subdomain for the coin e.g. for it would be monero.
WhatToMineApi The key to the coin in e.g. for Ethereum it would be Ethereum.
MoneroOceanApi Not needed
MineXmrApi Not needed

Default configuration

If you download the latest release, there will be a default configuration, that is optimized for this config:

  • CPU: AMD Ryzen 9 3900X
  • GPU: AMD Vega 64 + AMD Vega 56

How can I help?

You can help me to make the app better. I'm open for pull requests. It is pretty easy to add support for more miners or profit providers. I did not test the app on Linux, so that would be something that would be helpful to do.

If you really liked the app you can donate me crypto coins (e.g. Monero) to one of the wallet addresses in the default config file. You could also mine to a wallet address of mine, for example while benchmarking.

BTW: There are no fees from my side in this app :)


You can’t perform that action at this time.