Fees are an essential part of the Bitcoin economy. They help prioritize transactions and support miners with an extra incentive. And as the mining rewards get halved every 4 years, transaction fees are going to play an increasingly significant role in the security of the Bitcoin network. As Satoshi Nakamoto himself said in his 2008 whitepaper:
In other words, in order for Bitcoin to succeed as a project, the mining fees need to keep mining profitable. Furthermore, fees are also needed to keep the network censorship-resistant – as an irrefutable financial incentive, they eliminate political, geographical, and other types of criteria that may discriminate between transactions. As long as there is a fee to collect, miners will not have to undergo a selection or arbitrary prioritization of which transaction gets added to the next block and which one gets stalled.
But this doesn’t mean that you should pay a lot or that you must always bid the amount required to have your transaction included in the next block. You have means to leverage this fee market according to your own time preference – so if you’re not in a hurry, you can pay less and wait more for the first confirmation.
This article is meant to guide you towards confidently using a wallet which allows you to manually set fees, and also help you discover how Bitcoin can be used with minimal costs. Do your own research and you can save some precious bits by lowering your time preference and leveraging the mempool system in your own advantage.
If you’re feeling like you can take the extra challenge, you can onboard the Lightning Network to always have smaller fees with instant confirmation times. At the end of the article I will provide a short guide on how you can get started.
How do Bitcoin fees work and why are they sometimes high?
The answer is simple: Bitcoin transactions get stored in a public ledger that’s divided into blocks. These blocks get discovered by miners that run complex computations, and validating nodes verify the miners’ activity to make sure that their work is honest. But the available block space is limited and can only fit about 3000 transactions (though not all transactions are equal in complexity and size, so the number can vary). Under this framework of scarcity, we get a free market in which all participants bid to have their transactions included in a future block.
When will your transaction confirm? Well, that depends on how much you’re willing to pay and how long you’re willing to wait. So it’s a matter of time preference. You can pay a very low fee if you’re willing to wait for a few weeks, or you can pay the bitcoin equivalent of $10 to make sure that miners prioritize your transaction. Of course, the $10 example is only relevant as of March 2021 – as Bitcoin’s valuation in USD increases, the same amount of bits will have a greater monetary value (hence the paid fees will also be “higher”).
If this explanation is a little bit too difficult for you to understand, then think about airplane seats: each plane has a limited number of seats, so if you want to catch the next one you must always pay more than you normally would. When the seats for the next flight get scarce, you should expect to pay 2-3 times more to get on board. But if time is not a problem and you can afford to plan ahead, you’re always going to pay less.
In the case of both Bitcoin and plane tickets, it all comes down to supply and demand. If the supply of block space is limited, then you should expect to pay more. If you’re in a hurry to have your transaction confirmed, then you should also provide a greater incentive for miners to pick it up and write it in a block as fast as possible – hence a higher fee.
As a rule of thumb, you should never pay for the transaction fee more than 10% of the amount you’re moving. And you probably shouldn’t make a transaction on the base layer if the amount you’re sending is lower than the fee you must pay (for example, send $1 when the fee is going to cost just as much). The same applies to centralized wire transfer services such as Western Union and Money Gram: if the amount is very low, you’re going to get charged a fixed rate nonetheless; this disincentivizes small transfers.
So before you make your Bitcoin transaction, you should think about how much you’re sending and how much you’re willing to pay for the transaction to make it to the recipient. Then you should also check the state of the mempool.
Wait, what is the Bitcoin Mempool?
The mempool is the place where all unconfirmed Bitcoin transactions wait for confirmation. Depending on the fees they’re set to pay, these transactions can wait in the mempool until the next block or for a longer amount of time.
It’s Bitcoin nodes that verify, store and broadcast these transactions across the network. When miners discover a new block, they take the ones that pay the highest fee and include them. And after the first block containing a transaction gets mined, every other block that gets added serves as another confirmation which ossifies existing transactions.
In other words, the Bitcoin mempool is like a purgatory for unconfirmed transactions. These transactions won’t cross River Styx to get to the other side unless they pay a toll to the rower.
Usually, nodes keep transactions in the mempool for a few weeks. But more recently, the infrastructure has improved significantly and various optimization has been made to increase the memory bandwidth of nodes. Libbitcoin developer Eric Voskuil explains a little bit how these optimizations work in this episode of the Bitcoin Takeover Podcast.
So even if it takes months, transactions won’t get dropped (though, historically speaking, it’s very unlikely for this to happen). Bitcoin developers have created two ways to mitigate very low fees: RBF (replace by fee, which allows participants to bump the fee of a transaction), and Child Pays for Parent. You can find out more about this situation from Andreas Antonopoulos’ recent video on the topic.
To summarize, the mempool is a database of unconfirmed transactions, which nodes store and propagate to one another until miners find the transaction fee attractive enough to write it in a block.
Where and how do I watch the Bitcoin Mempool?
A Bitcoin transaction mempool exists on every node. Depending on the decisions of each sovereign node, transactions get stored or dropped according to a threshold for maximum storage and minimum relay amount. Essentially, there is a very high chance for nodes to have identical mempool – especially if the settings in the Core/qt client are default.
So if you’re running a full node, then you can easily check what’s going on with a few simple console commands. After opening the console, type in getmempoolinfo and you will see details about the size of the mempool in bytes, as well as the minimum fee you must pay to get your transaction confirmed in the next block.
For more specific verifications, you can type in getmempoolentry, followed by your transaction’s ID. For example, if Satoshi Nakamoto wanted to see his historic transaction to Hal Finney in the mempool, he would have had to type getmempoolentry f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16.
But let’s assume that you’re not running a full Bitcoin node or that you’re too lazy to use it for such information. It may be that you also need more information about the median fee in previous blocks and you are better at processing visual data. Well, you’re in luck: mempool.space is the perfect resource that will help you determine how much you want to pay for the Bitcoin fee.
The graphic interface on mempool.space doesn’t just tell you the recommended fee. It simultaneously displays information for which you would have had to type in lots of console commands. You get to see the fees that users paid to have their transactions included in previously-mined blocks, and you also receive an estimation that’s based on existing mempool entries. Furthermore, you get an estimation for priority which helps you determine how much you’re willing to pay according to your time preference.
Yet one of the major drawbacks of this kind of estimation is that unforeseen events can happen. Sometimes blocks get mined faster or slower, depending on the current hashrate. If the blocks get mined fast, then the transaction fees will temporarily lower. Conversely, if it takes a longer time to mine a block, then you will also see more high-fee transaction appearing and therefore slowing down the confirmation of all the others that pay less.
In spite of these variables, you should still be able to make accurate estimations to help you save money on Bitcoin transactions. Also, mempool.space is not the only resource: you also have mempool.observer and the good old Johoe’s Bitcoin mempool size statistics (which bitcoiners have been using for years before friendlier options came along).
Keep in mind that mempool.space also works as a blockchain explorer. So if you paste your transaction ID in the search box that you find in the top right corner, you will see the state of your transaction and an estimation on when you get the first confirmation.
How To Set Bitcoin Transaction Fees Manually (in Bitcoin Core, Wasabi, Blockstream Green & Blue Wallet)
Unfortunately, many Bitcoin wallets will not allow you to set the fees yourself. On the grounds of it being “too hard” and “for power users”, they will make the judgment themselves. This means that lots of popular wallets (most of them belonging to exchanges) will try to include your transaction in the next Bitcoin block.
Sometimes it’s good, as you withdraw without having to worry for longer than 10 minutes. But if you understand that Bitcoin is a global internet network and you know that all transactions get stored in the mempool until miners pick them up, you will never worry that your coins got “lost”.
It may be that the newbie-friendly wallets are keeping users under a veil of ignorance instead of providing education on how they should use their bitcoins to maximize sovereignty. But then again, lots of these services are custodians of your coins and they may even engage in some fractional reserve practices (meaning that not all customers can withdraw at the same time, as the company has used the coins to diversify in other assets).
Let’s not open that can of worms and get back on track. Setting your Bitcoin transaction fees manually should be available in all wallets. But in this article I will present 4 wallets: two for desktop and two for mobile phones.
A. Setting Custom Transaction Fees in Bitcoin Core
In Bitcoin Core (the full node wallet you should be using on your computer), the “Send” tab has an entire section that’s dedicated to transaction fees. Since fees are essential for maintaining the security of the Bitcoin network, they get the royal treatment they deserve. So you can either use the built-in estimation or use the research you’ve done yourself on mempool.space. But since the automatic estimation is only based on your nodes’ own observation, it’s a lot safer to set the transaction fee yourself.
Notice that the unit measurement is BTC, bits, or satoshis per kilobyte. So if you’re used to a measurement such as sats/byte, then you’re going to have to multiply by 100 to get to the kilobyte level. Therefore, if you were going to type in 3 sats (or 0.03 bits) per byte, then you should write 300 sats/kb or 3 bits/kb. To better understand denominations, read this article.
Also, take into account the measurements on mempool.space. Your safest bet to save on fees is to use the “Low Priority” recommendation. You can also go lower, but during bull markets you shouldn’t go lower than 2 sats/byte.
B. Setting Custom Bitcoin Transaction Fees in Wasabi Wallet
Another desktop wallet that makes it easy to set transaction fees manually is Wasabi. By default, Wasabi uses time preference as the fundamental unit of measurement and also does the automatic conversion to US dollars. So instead of measuring confirmation time in Bitcoin network blocks, you get actual estimations in hours, days, and weeks.
But if you go to the “Settings” menu and enable the “Manual fee entry” option, you will also be able to type in a fee according to your own observation on a service such as mempool.space. The added complexity only consists of an extra box which allows you to type the fee amount.
Notice that unlike Bitcoin Core, the unit of measurement is per byte, as opposed to the kilobyte. It’s a major difference, as in the latter case you must multiply your amount by 100. In this regard, Wasabi keeps it simple: if you want to pay 5 sats/byte for your transaction (which in this market would probably confirm in about a week), then you can definitely do it.
Find out more about how Wasabi works from this interview with the wallet’s creator, Nopara73.
C. Setting Custom Transaction Fees in Blockstream Green and Blue Wallet
It’s fascinating how Bitcoin wallets get named after colors, isn’t it? I’ve chosen these two because they are some of the most scrutinized and popular mobile wallet options. They are both available on Android and iOS, and they feature lots of interesting power user features which range from multisig setups to connecting your own full node or hardware wallet.
But if you want to set a custom transaction fee in Blockstream Green and/or Blue Wallet, then you’re only one touch away. In the “Send” menu, after you set the amount, you will see an interface which recommends you to use three different types of fees according to time preference (notice how this approach is very popular). But at the bottom you can also opt to have your transaction sent with a fee that you set yourself, based on your own research on a website such as mempool.space.
In Blockstream Green, you must first type, paste, or scan the recipient’s Bitcoin address. In Blue wallet, everything is on the same screen. Also notice that, despite the fact that I’ve taken the screenshots just a couple of minutes apart, the estimations are different. And there are two reasons for it: firstly, it’s likely that a Bitcoin block got mined in the meantime and the estimation for fees has adjusted accordingly; secondly, we should remember that these estimations are based on the observation of the node which provides blockchain information, so there is room for a slight relativity.
Usually, these wallets recommend higher Bitcoin fees by default to avoid unpleasant situations where they deal with angry users who contact support. But if you know what you’re doing and have analyzed the mempool in advance, you can definitely save some precious bits – especially if you’re not in a hurry and you don’t mind if the transaction receives its first confirmation a little later.
Switching to the Lightning Network
If you constantly want to pay less than a cent for your transaction fee and have it confirmed instantly, then you should consider switching to the Lightning Network. For microtransactions, it’s very hard to beat and it also have better privacy than the Bitcoin base layer.
Sure, using Lightning requires opening channels and for these you have to pay on-chain transactions. But for the price of one on-chain transaction you can perform thousands of low-cost Lightning transactions (as long as your channels remain open and there is a route to get you to the destination). And when you want to take your bitcoins to the main chain, you close all the channels (a series of actions that will also get charged as base layer transactions with higher fees).
If you make transactions frequently and need instant confirmations, then you should definitely get on Lightning. But if you’re a HODLer who makes only a few transactions every month, then it’s probably better to stay on the main chain and pay higher fees – it’s also the more secure method.
Using the Lightning Network requires a Lightning node. And you can either set up your own or use somebody else’s (trust a custodial service). Ideally, you should get a low-powered computer like a Raspberry Pi and set it up to be your 24/7 Lightning node (since it doesn’t consume a lot of energy and it’s quiet, you won’t notice the difference on the electricity bill or while you sleep). Here’s a guide to get you started with an investment of about $250.
You can also buy a Lightning node from companies such as Fulmo, Lightning in a Box, myNode, and Nodl. But for the purpose of understanding how Bitcoin works, it’s better to do it yourself by following a simple guide. You’re also likely to get support from the community if you get stuck, and this journey will feel rewarding as soon as you realize what you’ve built on your own. But then again, feel free to buy “node in a box” solutions if you don’t have the time or willingness to experiment yourself.
If you’d rather trust someone else with your Lightning channels and funds, you have services such as Tippin.me, Bottle Pay, Blue Wallet, and Wallet of Satoshi. Tallyco.in and Blue Wallet also let you connect your node to the service, while Bitrefill allows you to rent Lightning channels to send and receive payments (they’re called Thor).
Jack Mallers, lead developer of Strike, has also found a way to send Lightning transactions around the world by charging his bank account. So you should definitely check out his work if you want to see what the future of Bitcoin and Lightning may look like. This is only part of the reason why Mallers was included in Bitcoin Takeover’s “Top 7 Bitcoin Wallet Developers of 2020” article.
Also, Breez offers a service which opens Lightning channels for free (at least for the time being, until they build a customer base). Under an intuitive user interface, the affairs concerning inbound capacity for your channels happens behind the scenes. This means that you don’t have to worry about the technical aspects involved in using the Lightning Network. If you’d like to try Breeze, it’s available on both the iOS AppStore and the Android Google Play.
Lightning is definitely a great option that will get more traction when the number of Bitcoin users increases, the price becomes less volatile, and there is more merchant adoption to accept payments. So we shouldn’t be surprised if every store in the shopping mall runs its own Lightning node on a Raspberry Pi. If the fees really matter to you and you transact frequently, then you should try Lightning.
Acknowledgments: special thanks to Matthew Haywood for suggesting improvements to the article. He identified a few typos, provided further technical assistance to remove some ambiguities, and helped make this article truly evergreen. You can also thank him by following him on Twitter and listening to his interview on the Bitcoin Takeover Podcast (S5 E9).
Did you find this guide useful? Donate to Bitcoin Takeover!
And while you’re at it, make sure that you set a low transaction fee because I’m in no hurry. If you’re experimenting with sending small amounts for smaller fees, I definitely wouldn’t mind if you demonstrated your mastery of the manual fee setting principles by sending a donation to support my work.
You can use this Bitcoin address: 3JceSzH1r4RyLdyE2watWW7Z6REDwvo4KH
If you’re using the Lightning Network, then you can make a donation on my Tippin.me page. And if you want your name to get included in the Hall of Patrons, then please send me an e-mail and I will make sure that you get added there as a form of acknowledgment for your support.