There are Fees and there are Rates. Remember in the past when Rick said to look at both. "Places with no fees have lousy rates; the good rates come with high fees." A fee is a fixed charge to do something, like make the exchange - $2 to $5 to use an out-of-system ATM. The rate is how many euro you get per dollar. The rate is generally "discounted" 1% by the "Network (Plus, Cirrus, et al). Bigger banks, those with foreign currency operations, pay the Network in euro, avoiding the 1% for currency exchange, then add about 3% of their own. Some smaller institutions pass along the 1%, others "eat it" as a service to their customers. One of my banks passes along the 1% and charges me a $2 fee for the ATM usage.
When a bank says "no fees", they technically could still discount the exchange rate, although some use fees generically, meaning anything that subtract from what you ultimately get.
My United Explorer (credit) card recently announced they were eliminating the currency exchange rate discount for European transactions. But that is only for use of a credit card, for which they extract 4% or more from the merchants. I can't use it to get cash without paying a "cash advance charge". My Wells Fargo account, as a customer benefit, does waive all charges, fees and rate discounts, for two ATM withdrawals per month.
And, as I have previously mentioned, in Germany, the less expensive restaurants and accommodations don't take credit cards, only cash, so if you are using a credit card, you're paying more. Essentially, that "fee" is built into the price.