've directly hired quite a few full-time SEO employees, freelancers, consultants, contractors, etc. So I'm pretty well-versed on this topic.
What the internet says
BrightLocal did a study on this topic where they surveyed their users and found that freelance SEOs make, on average, $49,422 per year, compared to agency SEOs who make, on average $66,617 per year.
I don't know about you, but $49k a year isn't very appealing to me.
Those averages are probably accurate. The agency number I can vouch for from personal experience. I can't tell you what most freelance SEOs I've worked with make a year, but I could definitely see it being lower than they could make at an agency.
What the internet doesn't tell you
In my experience, however, those averages are low compared to what I know most professional SEOs make.
Let's start with agency SEOs
Starting pay at agencies tends to be pretty low, but it ramps up quickly, particularly at larger agencies.
In my experience, an SEO with 2 years experience might make $50-60k / yr in an inexpensive market like Cincinnati or Indianapolis.
That'll ramp up to $80-90k per year for more senior production people (in other words, non-managers or managers supervising only 1 or 2 people).
After 5-7 years or so you might expect to earn anywhere from $90k - 110k / yr doing SEO at a larger agency, although at this point you'll probably be managing a team.
In my experience, SEO is poorly understood almost across the board and there are very few people doing it well at larger agencies. Because of that, if you're good, you can probably command quite a bit more than $110k after 7 years.
Unless you're at a larger agency that primarily does SEO, after 7-10 years you start getting into director job roles and probably won't be doing as much SEO specific work anymore.
Freelancers are another story altogether. What I'm about to say applies to the lower price range for agencies as well...
There is pretty much zero barrier to entry to becoming a freelancer in any digital specialty, SEO included.
Because of that there are A LOT of freelancers out there, most of which have very little experience.
Being a freelancer is hard. You aren't just doing SEO, you're also the business owner, the accountant, the account executive, the sales person, the administrative assistant...you play every role.
Because of all that, in my experience, maybe 10% of freelancers figure all that out well enough to command a reasonable price. Most of the problems I see are due to selling, pricing, negotiating, and managing scope.
If you have any idea what you're doing, you should be able to charge $70-100 per hour as an SEO freelancer. If you assume 1,440 hours per year billable time, that's between $100,000 and $144,000 per year.
1,440 hours per year might sound aggressive; that assumes you're billing 30 hours a week, 4 weeks off a year. But I did almost 3 times that when I was solo so it's not only possible, I'd say that if you're good at your job and you stick with it, you'll undoubtedly hit $144k/yr.