user116147: Is there a way to find and plot every transaction fee ever paid on the blockchain/bitcoin?
Background
I have read about transaction fees:

Though the average Bitcoin transaction may be around $25, for example, the median is closer to what most users will likely need to pay.


At that rate, if you want to send a transaction right away, the fastest transaction fee is currently around 102 satoshis/byte, according to bitcoinfees.earn. For a median transaction size of 224 bytes, this results in a fee of 22,848 satoshis, or $11. If you don’t mind waiting roughly a half hour, the price would be 83 satoshis/byte, or about $9. The price continues to slide down from there if you’re willing to wait even longer.

So this gives very useful info, but if I want to see the distribution of all historical transaction fees on the blockchain, how could I do that?
Also, because the value of bitcoin has changed a great deal over the past several years, it would be sensible to measure the transaction fees in USD equivalent (like the article does).
Is this easy to do (or even possible at all)?

user117533: The transaction fees can be calculated by subtracting each transaction's inputs from its outputs – that difference is the fee. I would guess your best bet is to clone Bitcoin Core, download the entire blockchain, and start parsing the data yourself.
If that sounds like too much, I would start here and then ask another question once you get a full node up and running.
Best of luck!

user113494: I think we have exactly the plot you are looking for in our paper Full Bitcoin Blockchain Data Made Easy (Figure 7):

This is a cumulative distribution: for each amount on the horizontal axis, we plot the fraction of transactions that have fees lower than or equal to this value.
As suggested by Joseph, we downloaded the whole blockchain and computed the fees (difference between output and input amounts) of each transaction. The figure also displays the fee distribution for the last million transactions, since putting together all fees actually makes little sense, as discussed in comments above.
Code and data are publicly available. In particular, the 12GB compressed text file blockchain.distilled_amounts.gz contains a line per transaction, with its input and output amounts (see the paper for details).

user-1: 
So this gives very useful info, but if I want to see the distribution of all historical transaction fees on the blockchain, how could I do that?

The information doesn't look useful. Distribution of fee rates used by unconfirmed transactions can be checked on many websites like https://mempool.space/ https://mempool.observer/ https://btc.bitaps.com/

Fees per transaction (BTC) in last few years:

https://bitcoinvisuals.com/chain-fees-tx-btc
There is one open PR to add mempool stats chart in Bitcoin Core GUI as well:
https://github.com/bitcoin-core/gui/pull/108
If you want to get fee rate and fee used in all the bitcoin transactions until now, API for any block explorer can be used. There are also few open source explorers like Esplora, NBXplorer, mempool etc.

Also, because the value of bitcoin has changed a great deal over the past several years, it would be sensible to measure the transaction fees in USD equivalent (like the article does)

Depends on the usecase. Bitcoin protocol is not aware of exchange rate for BTC. I would prefer to use sat/vByte for fee rate and BTC for fees.

user5406: Transactions vary a lot in data size, so it's usually more useful to compare the feerates of transactions rather than absolute fees. For example, a transaction that batches fifty payments may pay the same feerate, but a significantly higher fee, while still having a lower fee per payment than a transaction that performs a single payment.
You may find this block feerate composition graph (via Bitcoin Optech Group) interesting to get a sense of how feerates changed historically. While the data is a bit noisy for single blocks beyond a day or two, the 12-block average gives a sense of how fee rates change over the course of a day and the week, while the 144-block average may be interesting for bigger timeframes:

There is also this graph by Anduck that splits out blocks more precisely, but only for the recent past:


116147: <p>Is there a way to find and plot every transaction fee ever paid on the blockchain/bitcoin?</p>
<h3>Background</h3>
<p>I have read about <a href="https://www.coindesk.com/saving-bitcoin-high-transaction-fees" rel="nofollow noreferrer">transaction fees</a>:</p>
<blockquote>
<p>Though the average Bitcoin transaction may be around $25, for example, the median is closer to what most users will likely need to pay.</p>
</blockquote>
<blockquote>
<p>At that rate, if you want to send a transaction right away, the fastest transaction fee is currently around 102 satoshis/byte, according to bitcoinfees.earn. For a median transaction size of 224 bytes, this results in a fee of 22,848 satoshis, or $11. If you don’t mind waiting roughly a half hour, the price would be 83 satoshis/byte, or about $9. The price continues to slide down from there if you’re willing to wait even longer.</p>
</blockquote>
<p>So this gives very useful info, but if I want to see the distribution of all historical transaction fees on the blockchain, how could I do that?</p>
<p>Also, because the value of bitcoin has changed a great deal over the past several years, it would be sensible to measure the transaction fees in USD equivalent (like the article does).</p>
<p>Is this easy to do (or even possible at all)?</p>
 117533: <p>The transaction fees can be calculated by subtracting each transaction's inputs from its outputs – that difference is the fee. I would guess your best bet is to clone <a href="https://github.com/bitcoin/bitcoin" rel="nofollow noreferrer">Bitcoin Core</a>, download the entire blockchain, and start parsing the data yourself.</p>
<p>If that sounds like too much, I would start <a href="https://bitcoin.org/en/full-node" rel="nofollow noreferrer">here</a> and then ask another question once you get a full node up and running.</p>
<p>Best of luck!</p>
 113494: <p>I think we have exactly the plot you are looking for in our paper <em><a href="https://arxiv.org/abs/2106.08072" rel="nofollow noreferrer">Full Bitcoin Blockchain Data Made Easy</a></em> (Figure 7):</p>
<p><a href="https://i.stack.imgur.com/NGb5S.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NGb5S.jpg" alt="enter image description here" /></a></p>
<p>This is a <em>cumulative distribution</em>: for each amount on the horizontal axis, we plot the fraction of transactions that have fees lower than or equal to this value.</p>
<p>As suggested by Joseph, we downloaded the whole blockchain and computed the fees (difference between output and input amounts) of each transaction. The figure also displays the fee distribution for the last million transactions, since putting together all fees actually makes little sense, as discussed in comments above.</p>
<p><a href="http://bitcoin.complexnetworks.fr" rel="nofollow noreferrer">Code and data are publicly available.</a> In particular, the 12GB compressed text file <a href="http://data.complexnetworks.fr/bitcoin/blockchain.distilled_amounts.gz" rel="nofollow noreferrer">blockchain.distilled_amounts.gz</a> contains a line per transaction, with its input and output amounts (see the paper for details).</p>
 -1: <blockquote>
<p>So this gives very useful info, but if I want to see the distribution of all historical transaction fees on the blockchain, how could I do that?</p>
</blockquote>
<p>The information doesn't look useful. Distribution of fee rates used by unconfirmed transactions can be checked on many websites like <a href="https://mempool.space/" rel="nofollow noreferrer">https://mempool.space/</a> <a href="https://mempool.observer/" rel="nofollow noreferrer">https://mempool.observer/</a> <a href="https://btc.bitaps.com/" rel="nofollow noreferrer">https://btc.bitaps.com/</a></p>
<p><a href="https://i.stack.imgur.com/o2ciu.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/o2ciu.png" alt="mempool-fee-dist" /></a></p>
<p>Fees per transaction (BTC) in last few years:</p>
<p><a href="https://i.stack.imgur.com/sUg0O.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sUg0O.png" alt="fee-per-tx" /></a>
<a href="https://bitcoinvisuals.com/chain-fees-tx-btc" rel="nofollow noreferrer">https://bitcoinvisuals.com/chain-fees-tx-btc</a></p>
<p>There is one open PR to add mempool stats chart in Bitcoin Core GUI as well:</p>
<p><a href="https://github.com/bitcoin-core/gui/pull/108" rel="nofollow noreferrer">https://github.com/bitcoin-core/gui/pull/108</a></p>
<p>If you want to get fee rate and fee used in all the bitcoin transactions until now, API for any block explorer can be used. There are also few open source explorers like <a href="https://github.com/Blockstream/esplora" rel="nofollow noreferrer">Esplora</a>, <a href="https://github.com/dgarage/NBXplorer" rel="nofollow noreferrer">NBXplorer</a>, <a href="https://github.com/mempool/mempool" rel="nofollow noreferrer">mempool</a> etc.</p>
<blockquote>
<p>Also, because the value of bitcoin has changed a great deal over the past several years, it would be sensible to measure the transaction fees in USD equivalent (like the article does)</p>
</blockquote>
<p>Depends on the usecase. Bitcoin protocol is not aware of exchange rate for BTC. I would prefer to use sat/vByte for fee rate and BTC for fees.</p>
 5406: <p>Transactions vary a lot in data size, so it's usually more useful to compare the feerates of transactions rather than absolute fees. For example, a transaction that batches fifty payments may pay the same feerate, but a significantly higher fee, while still having a lower fee per payment than a transaction that performs a single payment.</p>
<p>You may find this block feerate composition graph (via <a href="https://dashboard.bitcoinops.org/d/4Pm4uKFmk/fee-rate-comparison?orgId=1&amp;from=now-30d&amp;to=now" rel="nofollow noreferrer">Bitcoin Optech Group</a>) interesting to get a sense of how feerates changed historically. While the data is a bit noisy for single blocks beyond a day or two, the 12-block average gives a sense of how fee rates change over the course of a day and the week, while the 144-block average may be interesting for bigger timeframes:</p>
<p><a href="https://i.stack.imgur.com/6Q207.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6Q207.png" alt="Bitcoin Optech Group's block feerate percentile graph" /></a></p>
<p>There is also this <a href="https://anduck.net/bitcoin/fees/144_blocks.php" rel="nofollow noreferrer">graph by Anduck</a> that splits out blocks more precisely, but only for the recent past:</p>
<p><a href="https://i.stack.imgur.com/nQAPH.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/nQAPH.png" alt="Anduck's 144-block fee per transaction chart" /></a></p>
