You get HM02 Fly on Route 16, just west of Celadon City in Pokémon FireRed.

Quick Scoop: Where to Get Fly in FireRed

  • Head to Celadon City.
  • Leave Celadon through the west exit onto Route 16.
  • Make sure you have a Pokémon that knows Cut , because you need it for a small tree blocking the way.
  • On Route 16, cut down the small tree blocking the side path behind the gatehouse, then go through.
  • You’ll find a small secluded house ; go inside and talk to the girl there. She gives you HM02 Fly as a reward for finding her hidden spot.

Using Fly After You Get It

  • Teach HM02 Fly to a compatible (usually Flying-type) Pokémon from your Bag.
  • You must have the Thunder Badge from Lt. Surge in Vermilion City to use Fly outside battle.
  • Then open the menu, select the Pokémon that knows Fly, choose Fly , and pick any previously visited town or city to fast travel there instantly.

In short: west of Celadon → Route 16 → Cut the tree → secret house → talk to the girl → get Fly.

Information gathered from public forums or data available on the internet and portrayed here.