Why is there such a huge difference between provider.gasPrice and provider.maxFeePerGas?

EthereumEthereum
$1,989.55
4.65%
self.ethereum1m ago
When I call gasPrice and maxFeePerGas I am getting: var rates = await provider.getFeeData(); ethers.utils.formatUnits(rates.gasPrice, 9); //=15.3399 ethers.utils.formatUnits(rates.maxFeePerGas, 9); //= 30.1798 ethers.utils.formatUnits(rates.maxPriorityFeePerGas, 9); //=1.5 But according to Gas Tracker ( [https://etherscan.io/gastracker](https://etherscan.io/gastracker) ) I should be getting: Low: 14 gwei Medium: 15 gwei High: 15 gwei According to the Internet, `gasPrice` is a legacy method and overestimates the gas price. But as you can see above, it seems it produces a gas price that is closest to Gas Tracker. If in my code I used `maxFeePerGas` then wouldn't I be overpaying for gas?