How to Mine Monero on Windows (2026): XMRig (CLI) + P2Pool + GUI Options
Introduction
Monero mining in 2026 is primarily CPU mining because Monero uses RandomX, a proof-of-work algorithm designed to be CPU-friendly and ASIC-resistant. That means most “GPU mining” advice for Monero is either outdated or misses the point.
This guide is Windows-focused and written so a technically curious beginner can follow it end-to-end: first the concepts, then two concrete setups: (1) XMRig + a pool (simplest) and (2) P2Pool mini (more decentralized). If you want the broader cross-platform context (CPU vs GPU, general expectations), see How to Mine Monero in 2026 – CPU Mining & the GPU Reality.
Before mining, you need a wallet address to receive payouts. If you do not already have one, start with How to use the Monero GUI wallet or (more advanced) How to create a Monero command line wallet.
Core explanation
What “mining” is in Monero (and why RandomX matters)
Mining is how new blocks are produced and how the network reaches consensus. Miners do computational work, and when a valid block is found the protocol issues a block reward according to the rules described in the official Monero mining guide.
RandomX is designed to run efficiently on general-purpose CPUs by using memory-heavy techniques and executing randomized code, making specialized hardware less effective. The trade-off is that your hashrate depends heavily on CPU architecture, memory latency, and system stability.
What a “config.json” is (and why it’s better than long command lines)
XMRig can be configured by command-line flags, but the safer Windows workflow is a configuration file
(usually config.json) stored next to the miner executable. This is preferred because:
- It reduces mistakes (you are not retyping long commands).
- You can change one setting at a time and keep a working baseline.
- You can keep separate configs (pool mining vs P2Pool, low-power vs full-speed).
In this guide you will create a working config file manually (and you can also compare it to the output of the XMRig configuration wizard).
Pools vs P2Pool vs Solo
There are three common ways to mine. Each has a different trust model and setup complexity. As an editorial default for Windows users: start with a reputable pool if you want the simplest setup, and consider P2Pool mini once you are comfortable and want a more decentralized approach.
Comparison (expert view)
- Centralized pool: easiest to set up, but you rely on a pool operator’s infrastructure and policies.
- P2Pool: decentralized pool design (no pool custody). More moving parts (node + p2pool), but aligns strongly with decentralization goals.
- Solo mining: most independent, but payouts are highly irregular unless you have very large hashrate.
P2Pool’s project documentation and overview are here: SChernykh/p2pool (GitHub). P2Pool also publishes the “mini” mode concept and connectivity notes at p2pool.io/mini.
Who should choose what?
Choose a centralized pool if:
- You want the fewest steps and do not want to run a Monero node.
- You are mining on a normal desktop and want to validate the basics first (hashrate, stability, payouts).
Choose P2Pool mini if:
- You are willing to run a Monero node (or already do) and want a more decentralized mining model.
- You want payouts without pool custody and prefer a “no pool operator” trust model.
Choose solo mining if:
- You fully understand payout variance and can tolerate very long gaps between rewards.
- You already run a reliable node and have substantial hashrate.
Further information about P2Pool can be found in our article P2Pool for Monero: How It Works, Why It Matters, and Who Should Use It.
Mining Monero on Windows using the command line (recommended)
Procedure A (simplest): XMRig + a pool using config.json
You are about to download XMRig, verify it, create a config.json, and start mining to a pool.
This is the best “first success” path on Windows because it has the fewest dependencies.
Prerequisites
- A Monero wallet address (from Monero GUI wallet or another trusted wallet)
- Windows 10/11 (64-bit)
- A text editor (Notepad is fine; Notepad++ is convenient)
- Basic comfort with Command Prompt or PowerShell
Step-by-step
-
Create a folder for mining tools.
Example:C:\MoneroMining\(avoid “Program Files” to reduce permissions friction). -
Download XMRig from an official source.
Use either: xmrig.com/download (includes published SHA256 hashes) or the XMRig GitHub releases page. -
Extract the ZIP into
C:\MoneroMining\xmrig\. -
Verify the download hash (recommended).
On Windows, you can compare SHA256 withcertutil.
Compare the output to the SHA256 shown on xmrig.com/download. If it does not match, do not run the file.
-
Create a config file named
config.jsonin the same folder asxmrig.exe. - Paste a minimal working config (then edit the pool and wallet fields).
What these fields mean:
url is the pool endpoint (many pools publish a TLS port like 443/5555).
user is your public wallet address (never your seed).
pass is usually a worker name (or just x) depending on the pool.
- Run XMRig once as Administrator (recommended on Windows) so huge pages can work more reliably. You can do this by right-clicking Command Prompt → “Run as administrator”.
-
Start mining by running XMRig. If
config.jsonis next toxmrig.exe, XMRig will automatically load it.
What to expect (success indicators)
- You should see that XMRig detected RandomX and initialized threads.
- You should see a pool connection message and then lines indicating accepted shares.
- Hashrate appears as a running figure (H/s) in the console.
Common problems (and fixes)
- Windows Defender flags the miner: this is common for mining software. Only use official sources and verify hashes. If you allow it, allow only the specific folder (do not disable Defender globally).
- No accepted shares: pool URL/port may be wrong, TLS mismatch (try
"tls": falseif the pool does not support TLS on that port), or firewall issues. - Very low hashrate: you may be thermally throttling, running on battery mode, or competing with heavy background tasks. Also ensure huge pages are working (XMRig will usually report it).
Safety notes
- Never download “bundled miners” from random sites. Stick to official sources and verify hashes. If you want general hygiene guidance, see Avoiding sites with poor reputation.
- Never paste your 25-word seed into any mining tool. Mining only needs a public address.
- Monitor temperatures; sustained CPU mining is a long-running load.
If you want a rough estimate of expected output, use the site’s Monero mining calculator (but treat calculators as estimates, not guarantees).
Procedure B (more decentralized): P2Pool mini on Windows (node + p2pool + xmrig)
You are about to run a local Monero node (monerod), run P2Pool in “mini” mode, and point XMRig at it.
This aligns well with Monero’s decentralization goals because there is no pool operator custody.
The steps below are adapted from the P2Pool project’s Windows instructions.
Prerequisites
- Windows 10/11 (64-bit)
- Enough disk space for a node (or a plan for pruning). For node basics, see How to Run a Monero Node.
- A Monero wallet address (payouts go directly to your wallet)
Step-by-step
-
Create a base folder, e.g.
C:\MoneroMining\p2pool\. - Download P2Pool binaries from the official project: SChernykh/p2pool (use the releases/binaries referenced there).
- Download XMRig from an official source: xmrig.com/download or XMRig GitHub releases.
- Download Monero CLI (for monerod) from the official Monero downloads page: getmonero.org downloads.
-
Extract everything so you end up with something like:
C:\MoneroMining\p2pool\p2pool.exeC:\MoneroMining\p2pool\xmrig.exeC:\MoneroMining\p2pool\Monero\monerod.exe(copy Monero CLI binaries into aMonerosubfolder)
- Unblock SmartScreen “downloaded from the internet” friction (if needed). If Windows blocks execution, open file Properties → “Unblock”, or run PowerShell as Admin and unblock the folder.
- Start the Monero node with ZMQ enabled (required for P2Pool). This command format is documented by the P2Pool project (Windows section).
- Wait for the node to sync. This can take hours on first sync. If you need help speeding up initial sync, see How to speed up initial blockchain sync.
- Start P2Pool in mini mode and set your wallet for payouts.
- Wait for P2Pool to finish its initial sync (typically minutes once monerod is synced).
- Start XMRig and point it to your local P2Pool stratum port.
- Confirm it’s working. You should see XMRig connect locally and begin reporting accepted shares. P2Pool will also log share activity.
What to expect (success indicators)
monerodshows it is synchronized (or close) and maintains peers.p2poolshows it is synchronized and listening.xmrigconnects to127.0.0.1:3333and reports accepted shares.
Common problems (and fixes)
- P2Pool says it cannot connect to monerod: ensure
monerodis running and includes--zmq-pub tcp://127.0.0.1:18083. - Firewall prompts: allow private network access for monerod/p2pool when Windows asks, otherwise peers may be limited.
- “It runs but payouts seem slow”: P2Pool payouts depend on shares in the PPLNS window and network luck; “mini” is designed to help smaller miners with payout frequency trade-offs.
Safety notes
- Keep everything in a dedicated folder and avoid random “all-in-one” miners from unknown sites.
- Never expose your wallet seed; P2Pool needs only your public address.
- Running a node is real infrastructure: keep Windows updated and avoid running unknown software alongside your node/miner.
For additional official context and ongoing documentation, see: P2Pool documentation (GitHub) and the connectivity notes at p2pool.io.
GUI mining on Windows (when it makes sense)
A GUI can be useful if you want fewer knobs and a lower chance of typos. However, many “easy miners” are closed-source or bundle unwanted software. The safer pattern is: choose a GUI that simply orchestrates well-known open-source components (like XMRig and P2Pool).
In the P2Pool ecosystem, one example project that aims to provide a GUI for P2Pool + XMRig is mentioned in the P2Pool documentation: see “GUI for P2Pool” in the P2Pool README. Treat GUIs as convenience wrappers; verify what they run underneath.
When you are learning, the command-line approach in this guide is recommended because it makes each dependency and trust assumption explicit.
FAQs
Is GPU mining Monero worth it in 2026?
Usually not. Monero’s proof-of-work is RandomX, which is intentionally optimized for CPUs and designed to make specialized hardware less advantageous. While it is technically possible to involve GPUs in some setups, most users see worse efficiency (hashes per watt) compared to straightforward CPU mining. A common misunderstanding is to assume “GPU always beats CPU” because that is true for other algorithms; RandomX is specifically designed to break that assumption.
What exactly is an “accepted share” and why does it matter?
A share is proof to the pool (or P2Pool) that your miner is doing valid work. “Accepted” means the pool validated it and credited it toward payouts. Shares are not blocks; they are smaller units of work used for fair accounting. A common misunderstanding is thinking “no blocks found” means “not mining”—most miners will never personally find a block, but they can still earn payouts through shares in pooled/P2Pool mining.
Do I need to run XMRig as Administrator on Windows?
Not strictly, but it often helps. One of the biggest reasons is enabling “huge pages,” which can improve RandomX performance and reduce memory overhead. Running once as Administrator is also a practical troubleshooting step if you see messages indicating huge pages could not be enabled. A common misunderstanding is that Administrator mode is required “for mining”; it’s mainly about performance and OS-level memory permissions, not about network access.
What’s the safest default: pool mining or P2Pool?
For a first-time Windows setup, a reputable pool is the simplest path because it does not require running a full node. Once you’re comfortable, P2Pool mini is often the better long-term choice if your priority is decentralization and avoiding pool custody. The key trade-off is complexity: P2Pool adds monerod + p2pool services you need to keep stable and synced. A common misunderstanding is that P2Pool is “just another pool”; it is a decentralized pool design with different trust assumptions.
Can I use a remote node with P2Pool to avoid syncing the blockchain?
In practice, P2Pool is typically run with a local node for reliability and performance, because your P2Pool instance needs consistent access to node data and benefits from good connectivity. While there are advanced configurations (including different node connectivity modes), beginners should treat “local monerod” as the default to avoid hard-to-debug issues. A common misunderstanding is thinking P2Pool is “lightweight like a wallet”; it is infrastructure and behaves more like running a service. If you want a remote-node experience, start with pooled mining first, then graduate to a local node + P2Pool.

monero.how