(Scroll down to the numbered step-by-step process below for the simple version...)
First, not all wallets let you set your own fees. You should use one that does, unless you want to pay more than you have to every time you transact in bitcoin. This isn't because wallet devs are evil or stupid, it's because automated fee estimation is really difficult. Fortunately, doing so manually is actually pretty easy.
Disclaimer: While practicing this, using a wallet that also enables Replace-by-Fee transaction is a good idea. (Samourai wallet for Android is one example. Turn on RBF in transaction settings.) If your transaction takes too long to confirm, RBF allows you to submit a replacement transaction with a slightly higher fee to speed up confirmation.
We want to pay a high enough fee to get a confirmation within a reasonable timeframe, without overpaying. So how do we decide how much to pay? https://jochen-hoenicke.de/queue/#2h is a really good site to use. Load the link and then mouse over the right edge of the 3rd graph down. You'll see a table pop up that looks like this:
For simplicity, you can assume 1 MB blocks. Start at the top of this table, and scan down the right column. This column shows you the size of all of the unconfirmed (waiting) transactions with fees greater than the amount shown in the left column. In the example I showed above, if a miner tries fill the next block right now with the most expensive transactions, they will grab all of the 1000+, 700+, 500+, 300+, 200+, and 140+ sat/B transactions. After doing so, their new block will still only be half full! They will either have to mine a partially empty block, or include some transactions that pay less than 140 sat/B.
Let that sink in. Paying 140 sat/B will very likely get a transaction confirmed in the next block. Yet there are transactions pending that offer over 1000 sat/B. These people are paying approximately 10 times more than necessary. Your guess as to why is as good as mine. (Malice, charity, and incompetence are three possibilities that come to mind.) Anyway, we now know that 140 sat/B is sufficient, and 100 sat/B is too low. How do you find the sweet spot? Trial and error, and mousing over different points in the graph will give you some insight, but it'd be really nice if the table had a much finer resolution... (hint)
To sum up the process:
- Load the page https://jochen-hoenicke.de/queue/#2h
- Scroll down to the third graph (Mempool Size in MB) and mouse over the right edge of the graph to pop up a table.
- Set your transaction fee to the last entry in the left column that has an entry in the right column that is over 1 MB.
- (optional) If your transaction doesn't confirm soon enough, use RBF to bump up the fee slightly.
Check for yourself. What are the recommended fees in your wallet right now? Are they < 140 sat/B? I bet they aren't!