The Complete Guide to Bitcoin Fees
By: Ofir Beigel | Last updated: 1/16/24
This guide will explain the basics of Bitcoin fees, from how they are calculated, what they are used for, and how to speed up a slow transaction.
Don’t like to read? Watch our video guide instead
Bitcoin Fees Guide Summary
Bitcoin transaction fees (sometimes referred to as mining fees) allow users to prioritize their transactions (sometimes referred to as tx) over others and get included faster into Bitcoin’s ledger of transactions known as the blockchain.
To determine whether a transaction in the blockchain is worth their while to include, miners will take a look at which transaction has the highest fee attached. Not paying enough fees can sometimes get your transaction stuck for a very long time.
That’s Bitcoin fees in a nutshell. For a detailed explanation, keep on reading. Here’s what I’ll cover:
- What are Bitcoin Transaction Fees?
- How are Bitcoin Fees Calculated?
- Calculating Transaction Size
- Reducing Transaction Fees
- How Wallets Deal with Fees
- Frequently Asked Questions
Fees are what Bitcoin owners pay to Bitcoin miners whenever they transfer funds to another Bitcoin address. But in order to understand fees in detail, we first need to understand what happens when you send Bitcoins to another address:
1. The transaction is checked by every computer holding a copy of the Bitcoin blockchain for validity (these computers are also known as nodes).
Basically, at this stage, the nodes are checking Bitcoin’s transaction history to prove that you actually have the Bitcoins you want to spend in your balance.
2. After a transaction is deemed valid, it goes into the Mempool (short for Memory Pool). This is sort of a “waiting room” where the transaction sits and waits for a miner to pick it up and pack it into a block of transactions.
At this point, the TX is considered an “unconfirmed transaction” or a “0 confirmation transaction.” You can view the current state of the Mempool here.
3. Once a miner picks up the transaction and includes it in a successfully mined block, the transaction is considered to be confirmed.
This short video explains the whole process:
A block can only hold a finite amount of transactions (at the moment, the average amount is around 3000). At times when the network is crowded and there are a lot of transactions waiting to be confirmed, the miner will prioritize which transactions to pick up based on the miner fee attached to the transaction.
Transaction fees of pending transactions inside the mempool
So fees are a way of signaling to the miner how urgent your transaction is. If you want to get confirmed faster, you can submit your transaction with a larger fee. This will ensure your order is prioritized ahead of others using only the standard fee. If you’re not so time-sensitive, you can make do with a smaller fee.
It’s important to note that fees are always paid for by the sender of the transaction.
How fees show up on the blockchain
The Bitcoin blockchain doesn’t list the fee paid for each transaction explicitly. The only way to deduce what fee was paid by the sender is to calculate the difference between how many Bitcoins were sent minus how many were received and how many were returned as change (explained in Chapter 3).
Every Bitcoin transaction requires a fee in order to get mined.
Calculating the appropriate Bitcoin transaction fee isn’t as straightforward as it seems, so let me explain a bit about how it’s done:
Every transaction has a size, just like a file size on your computer. Since miners want to maximize their profit, they will prioritize transactions that have a larger fee-to-size ratio, or feerate, for short.
Let’s explain this with an example from a different market.
When you buy or rent an apartment, there’s usually a cost per square foot. The apartment price is similar to the total fee you pay, but how you measure the apartment’s expensiveness is through how much you are willing to pay per square foot.
Feerate is Bitcoin’s cost per square foot.
Feerate is measured in Satoshis per byte. It basically means how many Satoshis (the smallest unit of account in Bitcoin) you are willing to pay for every byte (unit of size) of your transaction.
At any given moment, you can check here what the estimated required feerate that will get your TX included in the next block. This rate varies depending on how crowded the network is with transactions (congestion).
When the network isn’t crowded, you can get confirmed in the next block with 1 Sat/byte as shown above
The transaction size itself depends on a number of different factors. The most significant ones are:
Number of inputs
Each Bitcoin you own, at its core, is just a reference to past transactions that were sent to you, adding up to the amount you own. These references are known as inputs.
When you send Bitcoins to someone, you are basically selecting different inputs sent to you in the past and forwarding them to the recipient as outputs. The more inputs your transaction consists of, the bigger its size.
For example, let’s say you own 1 Bitcoin. That Bitcoin is actually comprised of references to many transactions sent to you in the past (assuming you accumulated that one Bitcoin from several sources).
When you send this 1 Bitcoin to someone else, your transaction will be composed of all of these previous references. Here’s a short video explaining this:
Number of outputs and change
Simply put, outputs are the number of addresses you’re paying.
For example, if you’re only paying one address, it’s highly likely you’ll actually generate two outputs. One for the address you’re sending to, and another one to “pay yourself back” the change from your initial payment (explained in the video above).
Note: If the sum of your inputs equals exactly how much you need to pay, there will be no change in output.
Some transactions use special features like multisig. These features increase the transaction size.
Having said all that, it is still very difficult for the average user to calculate the transaction size based on these factors. Luckily, your Bitcoin wallet will do this for you and suggest the fee you should pay, based on the average feerate at the moment of transaction.
There are several ways you can avoid paying high fees. Let’s explore some of them:
Avoid sending transactions when the network is busy
When the Bitcoin network is extremely busy (e.g., when the price spikes and many people are looking to buy Bitcoin), users will manually bid up their fees in order to prioritize their transactions.
This can cause fees to become ridiculously expensive. If you can delay a transaction to a time when the network is less crowded, you may be able to save a lot of money on fees.
Use a wallet that supports SegWit
SegWit (short for Segregated Witness) is a Bitcoin protocol upgrade that configures the transaction’s data in such a way as to create a file that is smaller in size. Many wallets already support this feature, and it can cut costs substantially.
Group your inputs
The more inputs you need to create your transaction, the bigger its size = the more fees you’ll need to pay for it. If you want to keep fees low, every once in a while, you can consolidate your inputs.
This is done by sending many small inputs to an address you own at a time when fees are low. This way, you will significantly reduce your future fees since you will only have one input.
Grouping your outputs
Aside from consolidating inputs, you can also group multiple outputs (or payments) into one transaction. Not all wallets support this feature, but if your wallet allows this, you will be able to send payments to several addresses in one transaction, which will reduce the required fee.
Bitcoin wallets attempt to recommend a reasonable fee based on the current and recent levels of activity on the Bitcoin network. Some wallets and services manage fees poorly and overbid fees, which in turn drives up the fees for everyone else as well.
Most wallets allow you to adjust your fees or at least set a general fee preference (low, medium, or high). As I said earlier, to choose the right fee, you’ll first need to know your transaction size.
If your wallet supplies you with that info, you can then use the feerate estimation table to figure out how much you need to pay in order to be included in the next block.
Here’s an example:
If your transaction size is 16,000 bytes and at the moment of the transaction, the average feerate to be included in the next block is 10 Satoshis/byte, you’ll need to pay 10 X 16,000, i.e., 160,000 Satoshis as a transaction fee, for a good chance to be included in the next block.
Why is My Bitcoin Transaction Stuck or Unconfirmed?
While reading this guide sheds some light on the topic of fees, most Bitcoin users aren’t “fee experts.” Therefore, more often than not (and especially when the price rallies and the network is crowded), you’ll hear of people complaining that their transaction is stuck as “unconfirmed” or “pending.”
What gets a transaction “stuck?” One of two things:
- You didn’t pay a high enough fee, so miners prioritize other transactions over yours.
- You are trying to send coins from a transaction you received that hasn’t been confirmed yet (yes, some wallets allow this).
So what can you do?
Method #1: Wait
Sometimes, waiting is the best thing to do. If your transaction isn’t urgent, take a break and forget about it for at least 72 hours. There’s a good chance that it’ll sort itself out—one way or another.
Method #2: Replace by Fee (RBF)
Replace-by-fee (RBF) is a feature that allows a wallet to rebroadcast a transaction with a higher fee. Bear in mind that only a few wallets support RBF, and in certain wallets, RBF is an opt-in feature.
If your wallet does support RBF, it can save you a lot of fee-related headaches, and there’s really no downside to using it.
Method #3: Transaction (TX) accelerators
There are different TX accelerators that are operated by mining pools. They’ll add your transaction to the next block they mine if they have the capacity to do so.
Some are free, while others are free below certain size limits. Some pools charge upfront, while some pools request tips.
In order to get your transaction into an accelerator, you’ll need your TX ID. This is your unique transaction identifier, and it can usually be found inside the list of transactions in your wallet.
Here is a recommended transaction accelerator:
- Founded in 2016, ViaBTC’s accelerator is free, but it’s often unavailable, as it only accepts 100 free transactions per hour. Therefore, in order for it to be accepted, you will likely have to repeatedly resubmit your TX ID at the top of every hour. ViaBTC also offers a paid option, but they only accept BTC, LTC, and Bitcoin Cash.
Double-spending (last resort only)
This action sends the same transaction again but with a higher fee. It’s much like RBF but with one big difference.
RBF transactions conform to established protocol rules and are incorporated in several wallet designs. On the other hand, double-spending is explicitly considered something you shouldn’t do.
It’s actually one of the major problems that Bitcoin was created to solve, and all wallets are designed to prevent.
Child Pays for Parent (last resort only)
In Child Pays for Parent (CPFP), you essentially spend coins that are incoming but are not yet unconfirmed, which is something I previously advised against.
The idea behind this is that the fees on a new outgoing transaction will be high enough to cover both themselves and the unconfirmed incoming transactions they depend on.
A miner may be enticed to mine the old, low-fee, unconfirmed transaction in order to claim the new, high-fee CPFP transaction (as it’s impossible to claim the new transaction before the old one is confirmed).
Both these processes are rather difficult procedures that may place your funds at risk and are not intended for the average user, so we won’t go over them in this guide. This Bitcoin wiki details the methods for both processes.
Can my Bitcoin Transaction be Stuck Forever?
Short answer – no.
Earlier in this post, I talked about the transaction waiting in the mempool to get picked up by a miner.
Well, the mempool doesn’t exist in just one place. Each computer (or node) that validates transactions has a part in its hard drive that is dedicated to storing pending transactions. So, different nodes have different versions of the mempool, depending on which transactions they know about and remember.
If a transaction is not confirmed for a long period of time, it will eventually be erased from a node’s mempool. The current default timeout is 72 hours, but nodes may set their own duration.
The transactions with the lowest value will also be dropped from the mempool, as higher fee transactions are entered, and the mempool is limited in size.
This is why waiting for at least 72 hours will probably yield one of two results: Either your transaction will get confirmed, or it will get erased from all of the mempools in the network, and the funds will be returned to your wallet.
Having said that, it’s possible that a certain node will never forget about your transaction and may even occasionally rebroadcast it, which reminds other nodes about it.
Is it Free to Send Bitcoin?
No. In the past, fees had different rules than what they do today. You could even send transactions for free if your transaction was small enough in size or if it had “priority.” Today, every Bitcoin transaction requires a TX fee.
Who Gets the Bitcoin Transaction Fee?
The Bitcoin transaction fee is paid to the miner who entered the transaction into a successfully mined block.
Why are Bitcoin Fees so High?
At times when a lot of people are sending Bitcoin, a queue of unconfirmed transactions is formed (congestion).
People who want to get their transactions approved faster attach a higher fee. This creates a “fee war” between participants who want to get confirmed as soon as possible.
Having said that, at times when the network is relatively “quiet,” it can be fairly cheap to send Bitcoin.
How Much Does Bitcoin Charge Per Transaction?
To calculate the appropriate fee for your transaction, you will need to multiply your TX size with the feerate required to enter the next block.
However, while the required fee rate can be deducted from this page, the transaction size isn’t something you’ll be able to view beforehand.
As you can see, the issue of fees is pretty complex and can be a topic for a lot of controversy.
In fact, the main reason Bitcoin Cash was created was to address the Bitcoin block size, which limits the amount of transactions Bitcoin can process with each block. This, in turn, generated a very long queue of pending transactions, resulting in extremely high transaction fees.
Keeping fees low is important since having a cheap peer-to-peer payment system is one of the goals Bitcoin was created to achieve, but as always, there are other considerations to take into account aside from low fees.
As Bitcoin grows in popularity, more and more people will be using it, and the network needs to find new solutions to handle the demand. One solution was the Lightning Network.
Do you have any experience with calculating Bitcoin transaction fees? Do you have any best practices for ensuring the lowest transaction fees possible? I’d love to hear about it in the comments below.