How Etherscan knows my tokens?

So I can go to Etherscan, type my ETH address and then it shows me all the ERC20 tokens I have linked to my address. How does it do it?
If I understand correctly, ERC20 token is just a smart contract on EVM. Token itself doesn't exist as Ether, the token is just a variable, and some state within the smart contract. So how does the Etherscan know what tokens I have? That information is scattered in many different smart contracts deployed on Ethereum, isn't it? Does the etherscan query all the ERC20 smart contracts with "balanceOf(address)" to receive the info which tokens do I have? THat would seem like a LOT of work just to print my balance
submitted by /u/Draqqonfly
[link] [comments]