In my campaign we track ammo using dice. It's a bit different, a bit weird and probably not balanced but it's worked really well in our campaign.
Basically every time you take a shot, you roll a die. So starting with a full quiver you roll 1d20. On a roll of 2-20 you lose no arrows, on a 1 you drop down 1 die tier. So then you'd roll 1d12 for every shot, dropping down again on a 1, repeat until you roll a 1 on a d4 and that's when you are completely out of arrows/shots.
Our ranger has run out of arrows a couple times but generally this allows him to go much longer without having to constantly track his ammo/worry about refilling. Worst case scenario you roll a 1 on every die and that would result in only 6 shots but the chances are so low of that it's not an issue.
I like that the lower the die, the higher chance of running out sooner is, so it puts a bit of urgency on the player without them having to think "oh I only have 5 shots left cause that's how many arrows I have" so it becomes "I'm rolling a d4 so I could run out at any moment so I should make these shots count". Magic arrows are counted individually.
Of course this method might seem super overpowered because it means a ranged weapon may not run out of arrows for a LONG time if they roll well but generally our ranged weapon users run out when it seems reasonable. I just know we all hate tracking ammo and this solution has worked wonders for us in our game although it's not for everyone.