According to ZipRecruiter, the average annual salary of an ESL teacher is $36,796. This is equivalent to 18 dollars an hour. The average salary ranges based on location, position, and experience.