Bitcoin is made up of blocks.
Blocks are a set of transactions, and currently restricted to be less than or equal to 1,000,000 bytes and designed so that on average only 1 block per ~10 minutes can be created. The groups that create blocks are known as Bitcoin miners. These miners can pick whichever transactions they want in the block they create.
Bitcoin miners get paid all the transaction fees in the block they mine. So as such, it is in their interest to maximize the amount of money they make when they create a block. So what they do is pick the 1,000,000 bytes of transactions that result in them getting paid the most money.
From a Bitcoin miner's perspective, they don't care about the value of a transaction, but just the size (amount of bytes), because they are only allowed to create blocks of 1,000,000 bytes or less. So miners don't consider the absolute fee a transaction has, but rather, the fee per byte.
Bitcoin fees are determined by the amount of data the transaction uses, and not the value being sent. You can use the calculator above to determine the cost of any transaction for any amount.
Eye-balling it, sometimes it looks like the fee estimates are super high.
The reason for that is because they use 95% confidence. If a block was found now maybe you'd only need 20 satoshi/byte, but it might be an hour before the next block, and in the subsequent time a large amount of new transactions come in.
Sometimes you don't need such high confidence (e.g. it's not important, or you have a way of fee bumping), so you can get away with much lower fees.
For instance, if you perform a Child-Pays-For-Parent transaction or your transaction is capable of Replace-By-Fee.
In these cases, you can get away with starting with a lower fee to see if it gets through. If it doesn't you can use either of these methods to increase the fees and get your transaction into a block faster.
Sometimes fees are high when there is a lot of demand for blockspace due to new investors coming in. Remember that there can be only so many transactions per block. And there is a sort of auction that occurs to determine who's transactions make it in and who's don't. If there are a lot of people who need to get into the next block, they will pay for the privilege. Wait for demand to die down and fees will be almost 0.
It's because a high-fee paying transaction depends on it, and reprioritizes it. i.e. the only way for the miner to get the money from the "good" transaction, is to include a "bad" one first. It's known as Child-Pays-For-Parent (CPFP), but note that some old versions of bitcoin core, and bitcoin unlimited don't support it (and leave those transactions for smarter miner software).
The way we calculate our fee estimates is by calling
estimatesmartfee $n on bitcoin core (0.16.0). The
chart is generated by dumping the mempool and doing some smart sorting.
We built a Bitcoin ATM fee calculator to determine how much premium a Bitcoin ATM is charging.