How I Made $4000 in a Single Month Freelance Writing on the Side


Photo by JESHOOTS.COM on Unsplash

A few years ago, I was looking for a side hustle. I have been a developer for years and have worked on a few projects after hours and really didn’t want to do that anymore. I wanted a change and didn’t want to spend my whole day writing code. Yes, it can be enjoyable, but not after 12 hours. And I was tired of clients not knowing what they wanted until they saw what they didn’t.

My History with Writing

I was interested in writing before I got interested in coding. I have written a lot since I was around 14 and when I was 14, that was what I was going to do for a living. But things change. I kept writing, but found no real way to make a living with it, especially without going to college and then maybe getting a corporate job writing.

So I wrote in notebooks. I have two plastic tubs full. I eventually started my blog and got some traffic in the early days (2007-2008), but never made much money doing that. I made the most money through affiliate marketing, which I automated, but never put links in my content.

Packt eventually contacted me after they saw a blog I wrote on Piwik Analytics, now known as Matomo, and asked me to write a book on Piwik. I wrote around 60,000 words in 6 months. I thought that was hard work, but was amazed that I could get it done. I have started books before and never finished them. The money helped, even though, after some calculations and taking only the advance into account, it came to around $5 an hour.

After that, I wrote a book on the Phalcon PHP framework for Packt. It was a shorter book, and I got it done quicker, but, for the work put in, the pay still wasn’t that great. They offered me another book, but I turned it down. By that time, I had some development side hustles and publishing two books got me a better day job.

Inspiration is for Amateurs

I didn’t consider writing those books really writing. Well, not the type of writing I wanted to do at least. The process started with creating a code project. Then I would simply explain it. There wasn’t much creativity involved. They were technical books.

Writing had to be creative. You had to wait for inspiration and now and then you would hit gold. And that happened. Some of my blog posts from back in the day are still my favorites, but they were few and far between.

But one thing that knowing I would get paid to write did for me is make me write. When I had a deadline and got paid, it got done. There is also the story about Hemingway honing his writing skills by becoming a reporter. Reporters can’t wait for inspiration. They have to write every day or look for another job.

So a little over two years ago, I thought content writing could do the same for me. I also signed up at Medium around the same time, wrote a few posts there, imported others from my blog, started getting writing assignments, and put Medium on the back burner. This month I finally had some time to write this post.


Photo by Rohan Makhecha on Unsplash

How I Started Freelance/Content Writing

If you want to get started freelance writing, the easiest way is to sign up with a content writing agency. I do get the difference between standard freelance writing and what is now called content writing, but with many of these agencies, you actually get a mix, especially in the technology and internet category that I write in the most.

Sometimes the articles you are assigned are in that gap between “standard” articles and copy writing. But often you get assignments to write articles that actually provide good information and are indistinguishable from the articles you would write for your own blog. Most of the time, you will ghostwrite, but often, if you work in the industry you write about, you will get a byline. And the process I use for either content writing or freelance writing doesn’t change that much, so I will use the terms interchangeably.

To start, I hunted down some places where I could be paid to write content. I probably had found a few listicles on Medium on content writing. I am not sure now. To start, I just wanted to find a place where I could get paid decently to write articles when I had time. I didn’t really want to pitch things. Just give me the option of accepting an assignment that already had a topic or an outline.

My eventual goal is to pitch my own articles to various websites directly, but first I just wanted to learn my own writing process and do a lot of writing. But I also didn’t want to be overwhelmed. So I signed up for one place at a time.

The first place I signed up for was Content Writers and I would have to say I lucked out on choosing them first. Their assignments are industry specific. To be approved for an industry, you have to submit writing samples. I submitted a technical article I had written for my blog and two articles on blockchain technology that I wrote for cryptocurrency bounties for the Tech and Internet category. A few days later, I got a phone call from Content Writers where they got to know me, asked me a few more questions, and let me know I would start getting assignments.

It took me a few months to come up with a writing process, the set of tools I use when I write, and an efficient way of scheduling my time. I started out slow, with maybe an article a week, so I had time to figure this out. That even seemed like a lot. I was overwhelmed by it. I was writing during lunch breaks and at random times of the day to get the work done. It took me hours to complete a draft. I really wasn’t sure it was worth my time. But I stuck with it, figured things out, and have written 7 times that many articles for weeks and months in a row since then.

Tools I Use for Freelance Writing

I have been a coder for a couple of decades now, so a lot of the tools I use reflect that. I got used to them and used to working in a software development workflow, so I just stuck with that. Other tools I read about in blog posts. Some I searched for when I needed a new tool.

Atom with Extensions


I used to use Atom for development, but then I found VScode and it became my main coding tool, but I kept Atom around because there were quite a few Atom extensions for writing and themes that make it look less like an IDE. I initially wrote articles in Atom. Now I mainly use it for organizing and tracking my writing assignments.

I create a folder for each company or website I write for and then in that folder I put:

  • docs: Style guides, white papers, slide decks, and other supporting documents
  • pitches: Pitches I have submitted or am working on
  • drafts: Articles I am writing in markdown format
    • done: Articles that have been submitted to keep them out of view in the side panel
  • log.csv: A log of articles I have written for the client with due date, pay, time I spent writing, title, and word count

Since I wasn’t using Atom for development any more, I only installed extensions that would help me with my freelance writing.

  • Zen: Distraction free writing.
  • atom-focus-mode: Fades editor content and highlights only the lines you are working on.
  • atom-hemingway: Hemingway mode for Atom. Emulates a typewriter. Disables backspace, cursor movement, text manipulation. All you can do is type. Only forward progress.
  • auto-save-on-idle: Saves the current file when you stop typing.
  • language-markdown: Adds grammar support for Markdown
  • markdown-preview-enhanced: A markdown previewer.
  • markdown-writer: Various tools for markdown
  • open-file: Opens files in their respective default app
  • open-in-typora: Opens files in my preferred markdown editor.
  • pandoc-convert: You also have to have pandoc installed. With it, I can convert markdown to HTML, a Word doc, or a PDF. I mainly use it to convert articles to Word when clients request that.
  • pdf-view: Allows me to view any style guides, etc. in Atom itself instead of launching another application.
  • project-manager: I turn each client folder into a project and then can switch between them in Atom.
  • prompt-big-file: Avoid opening big files by accident which might cause Atom to stop responding
  • rainbow-csv: Makes editing my csv log files in the text editor easier by making each column a different color
  • sync-settings: Synchronizes package settings, keymap and installed packages so I can have the same Atom configuration on multiple computers
  • title-case: Properly title case selected text
  • wordcount: Counts the words (and characters) in your current document, as well as in your selections and displays it in the status bar.


First, let me say something. Git does not work well as version control for the written word. In markdown, each paragraph is one line, so change one character in the line and Git assumes the entire line has been changed. I have done a little research to find a better way to do a word-by-word comparison of changes, but haven’t found a suitable solution yet.

But I put each client folder in Git version control because it integrates with Atom well and I can use it to signify work in progress. When an article has been submitted, I commit. When there are unstaged files, there is still work to do on something.


I have used Dropbox for many years now. There might be better cloud storage services out there, but it has worked for me, so I have stuck with it. I have a writing folder there where I keep all the folders of my writing clients and can work on articles wherever, including on my phone, which I have done a couple of times when deadlines clashed with dentist appointments.



Typora, in my opinion, is hands-down the best markdown editor. It used to be free, but I got so used to using it, I paid the $15 when it became a paid app.

I started using it because although I like writing in markdown, I also like writing in something that looks good. Most markdown editors have preview mode, but Typora lets you actually write in preview mode. You will see all the markdown characters in the line you are currently writing, but the rest of the document will be formatted.

It also has shortcuts that make it easy to add hyperlinks and images without having to remember the markdown code. For images, you can browse to the image location and Typora will insert the markdown for you.


I wanted to make sure that I was submitting the best work possible, so I checked out a few grammar tools. I chose ProWritingAid (affiliate link) because it had a lot of features and was one of the few programs that offered a Lifetime License, so I paid $299 for that and was done. Every other app only offered monthly subscriptions. It has these features:

  • Writing Style Report
  • Grammar Report
  • Overused Words Report
  • Cliches and Redundancies Report
  • Sticky Sentence Report
  • Readability Report
  • Repeats Check
  • Sentence Length Report
  • Pronoun Report
  • Transition Report
  • Consistency Check
  • Pacing Check
  • Dialogue Tags Check
  • Contextual Thesaurus
  • Diction Report
  • Alliteration Report
  • Homonym Check
  • Acronym Check
  • House Style Check
  • Plagiarism Report (with the lifetime license, you have to buy credits to use it, but they are cheap)

While I don’t fix everything that ProWriting Aid tells me to fix, I think it has actually made me a better writer. The Repeat Check was really eye opening. I realized I used the same words over and over. I also noticed that I made the same grammar mistakes over and over. After I used the tool for a while, I started making fewer mistakes in my first draft.

Natural Reader

I think I learned about Natural Reader from a blog post and it has been a lifesaver. The best way to find any clumsy writing, repeated words, and other issues with your writing is reading it aloud, but when we read our own words aloud, we miss the mistakes and read what we expect it to be. I know I did. So I let Natural Reader read my article to me as my last editing step and catch a lot of issues that made it through my first edit. And the voices sound natural, which makes it easier to recognize clumsy writing.

tabXpert Chrome Extension


I could have anywhere from 5 to 50 tabs open in my browser when I am writing an article. It also may take me more than one writing session to finish an article. And I may switch computers during the process. Or the article may come back to me to edit.

For all of these reasons, I hunted down a way to store all of my Chrome sessions and found tabXpert. It automatically stores each session, which you can give a name. If a session remains unnamed, I set it to be deleted after a few days. I create a session for each article and can pick up wherever I left off. It also keeps a list of the last 100 closed tabs per each session, so you can find tabs you may have closed by mistake.

There is a sync feature available if you pay for a subscription, but you can also export the session data and re-import it. I just do that and save the session files in a Dropbox folder if I know I am going to switch computers, which only happens twice a week.

Word Counter Plus Chrome Extension

There really isn’t much to this the Word Counter Plus extension but it is very handy. It simply allows you to highlight a section of a page and click to get the word count of what you highlighted. I use this when I am coming up with pitches at a certain word count. If a client wants a 1000 word article, I look for articles online in the clients wheelhouse and use this to determine if my ideas fit the word count they want by counting the length of what will be competing articles.


IAWriter is my favorite mobile markdown writing app, and I have used it a few times to write part of an article on my phone when I was getting close to deadline and my laptop was somewhere else.


Dillinger is an online markdown editor I found when I was using someone else’s computer and needed to meet a deadline. With it, I could connect to my Dropbox account to finish writing articles I had stored there.

It is the first result when you search “title case online” on Google, because that’s what I did to find it. I kind of know the rules of title case, but am never sure. They seem pretty arbitrary and there are differences depending on the style guide the client goes with. This site helps. Most of the time, the title and the headings of articles are in title case, though some clients prefer sentence case for headings.

I found in the same way, but it comes in handy when you have to write in Google Docs in a document that not only has the content your are writing but also the writing brief. Just copy and paste your article here to get a word count.

Scheduling Writing Time

For the first few months, I just got familiar with the process, but I wanted to make sure that writing was worth my while. I was learning things, but I also got paid well as a developer and could do that on the side instead, so my writing still had to pay the bills. The way I saw it was that I had to make around $50 an hour from writing. Sometimes that dips to $20 an hour and a few times it has been over $100.

To know that this was happening, I had to track things. This is the reason I drop a log.csv file in each client folder. I used csv format because I knew I could crunch the data later (which I didn’t do until this article). I could also look back and get a rough idea of what topics I wrote quicker, what type of projects took too much time for the money (for me, social media posts), and see how many articles I was writing each month. The rainbow csv extension for Atom also made it easy to log the data.


I have these columns in the file:

  • Description: The title of the article
  • Due date: The due date in YYYY-MM-DD format
  • Pay: How much I am getting paid
  • Word Count: Word count when I submit the article
  • Hours: The time I spent writing it in hours. This is manual. I look at the time when I start and when I stop and track time down to a quarter hour.

After I got used to the agency’s process and created my own process, I figured out I wouldn’t write an article for less than 10 cents a word if I wanted to get paid $50 an hour and there were some topics that weren’t worth it to me because they took too long. If it was a topic I knew and only had to do some internet research, I could write and edit about 500 words an hour. If it was an article that required me to create a sample code project to describe how to use a specific technology, then it was somewhere around 30 cents a word.

Scheduling my time was not much of a problem at the beginning when I was getting a few articles a month, but in 2021, I wrote a 1000 word article each day on average, so I made a schedule for writing. On weekdays, I write from 6 to 9 at night and on Saturday I wrote up to 6 hours, usually in the afternoon. I tried to keep Sunday free, but there were times I would write 2 to 4 hours on Sunday.

By knowing how fast I could write, what topics worked best for me, and what time I had available, I could accept or reject assignments pretty accurately. In 3 years of content writing, I have only missed a due date maybe a dozen times, usually by less than a day, and could squeeze a lot of writing out of the time I had.

The peak so far was in November 2021, when I wrote over 40,000 words that got published. I would have thought that was impossible when I started. It is the most I have ever written in a month. The 60,000 word book I wrote took 6 months. Below is the chart of my time, pay, and word count per month over the last three years.


My Writing Process

It took a while to build a writing process. At first, I would dive right into the article, starting at the first sentence and writing until I got to the last sentence. But this resulted in a lot of rewriting. I would get to the end and there would either be too many words or not enough.

Throw Away Writing Tips that Don’t Work for You

At first, I tried to follow write fast and edit slow method, but the problem was when I tried to write fast, the articles actually took longer to write. I spent too much time trying to write fast. For a while, I thought something was wrong with me. After all, all the books and articles I read on writing told me to write this way, and it usually worked really well for blog posts and articles I wrote.

Then I read Dear Writer, You Need to Quit (Amazon affiliate link). It is a great book. Unlike other books on writing, it didn’t tell me I had to write in a specific way. Some methods work for some people. Some work for others. And some work for one type of writing and some don’t, depending on the person. So I had to find out my own best way to write these articles. Yes, it took work and experimentation. It was probably harder than just following another writer’s instructions, but in the end, it worked. I do a lot of editing as I write, at least for topics I am assigned, and this was one of the first books that told me that was ok.

So throw out anything that doesn’t work for you, including anything in this article.

Write in Plain Text

Early in my freelance writing journey, I decided I would always write locally in markdown using plain text files. If there was a form to submit, I would copy and paste into the form when I was done. If clients wanted a Microsoft Word document, I would just convert the markdown to that. This did a few things for me:

  • I didn’t have to mess with formatting in Word, which can take a lot of time away from writing.
  • I had a record of everything I wrote for reference. Some clients I have written dozens of articles for and it helped to know what worked for them before.
  • Online forms are still not the best. I have written articles over a couple of days and left the browser window open, only to be directed to the login page when I submitted the article.
  • I could convert the markdown to any format.

Plan Your Writing

I usually write the titles and headings first as an outline. Often, I do this by looking at competing articles, seeing what topics they cover, and use that research to create the headings. After a while, I got good at guessing how many there would be. For an article of 1000 words, there would be from 3 to 5 H2 headings, but it all depends on what the client was used to, which I could figure out by visiting their site.

Once I have the H2 headings in place, then I see if there needs to be any H3 headings. Many times, these are “listicle” sections. Not all articles are listicles, but many articles have listicle sections. For example, an H2 heading like “What is Javascript Used For?” is a listicle section. I write these sections last because they give me flexibility with word count. If I am getting close to the count, I could add three H3s under it. If I was running short, I could add five. Often, I just put a bunch of H3 placeholder headings in and fill those out at the end too.

After I have an outline as H2 and H3 and sometimes H4 headings, then I estimate how long each section had to be. There is usually always an introduction before the first H2. For the average 1000 word article, these run 75-150 words and I usually estimate 100. Usually there is a conclusion that is about the same size. Sometimes it was the last H2, sometimes just a paragraph at the end.

As for the rest of the H2s, sometimes they are balanced and sometimes some sections are shorter than the others. You can get a feel for it by looking at similar articles online and seeing how long each section is. I then set a target word count for each section before I write to keep me from getting too wordy or from having to come back and add more content. There is nothing like being done and needing 100 more words somewhere or being at the word count when there is 25% of the article left to write.

I usually write the introduction and conclusion first. If the article is longer, like 1500-2500 words, I may hold off on the conclusion until the last because I may not be sure what I will cover and would end up rewriting it anyway. Then I write the H2 sections from top to bottom, skipping listicle sections.

As I go, I check the word count at the end of each section and re-estimate the word count for each remaining section quickly. I mainly see if I can run short or I need to make the sections longer.

And finally, at the end, I finish any listicle section. Maybe there are 5 specific things I must cover and the count of list items is not flexible. In that case, if I have 300 words left to hit my word count, I shoot for 60 words in each section. Or the count of items may be flexible. In that case, I estimate the opposite way. If I think a suitable length for each section is 100 words, and I have 300 left to write, then I write three sections.

After writing hundreds of articles, I realized I could just about write an article of any length for any topic that I was assigned. I have written 500, 1000, and 2500 word articles on the same topic. But I had to plan beforehand. When I use the method above, I usually hit my word count pretty accurately.

Use Tools to Help With Editing

After that, I open the article up in ProWritingAid and fix any of the obvious errors there. Sometimes the suggestions are wrong and while you should try to use active voice, there are still some places where passive voice works better. But using a tool helps a lot.

Then I copy and paste the article into Natural Reader and let it read the article to me. Sometimes I can edit as it is read, but other times I write really badly and pause it until I get a section right.

After that, it is time to submit the article. If the client wants a Word doc, I use the Pandoc Atom extension to create the Word doc right in Atom. If I am submitting to a web form or pasting the content in a Google doc, then I copy and paste from Typora using “Copy without Theme Styling”, which preserves the headings and paragraph breaks, but removes Typora styles.


My Pitching Process

Sometimes clients don’t assign me a specific topic. I have to pitch them article ideas and then the agency gets back to me with the ideas they choose. I usually pitch two to three times the amount of article ideas that get chosen. Since I don’t get paid for pitches, just the final article, I don’t want to waste much time.

The client will send out a pitch request. Usually, it suggests a very general topic and maybe some competing blogs. The client could request pitches for short blogs in the 500 range, longer blogs of over 1000 words, or white papers, which usually run 2500 words or more.

The first time I pitch a client, I create a session in tabXpert specifically for pitching that client now and in the future. If they gave me a list of competing blogs, I open them all as well as the client’s own blog, so I have a referenced of the type of posts they’ve published in the past. Then I look through the articles in those blogs, using the Word Counter Plus Chrome extension I mentioned in the tools section to determine if the topics covered in those blogs would fit the word count of my pitches.

I also keep local copies of all my pitches. The first reason is so I can look back at them and not pitch the same idea over again. Some clients I have pitched a dozen articles monthly, and it is hard to keep track of what I have already pitched. The second reason is to store the links that inspired the pitches, so when I get assigned the article a month later, it jogs my memory.

Sometimes clients know their competitors in the market, but not their competitors for content. So most of the time, I have to find other blogs for article ideas instead of just the ones they suggest. So if I am writing an article for an accounting blog, I will search Google with terms like:

  • popular accounting blogs
  • top accounting blog posts
  • automated accounting blog post

This part takes some time, because you will have to fight through all the SEO work other blogs have done to get what you want. But if I find blogs that publish content consistently on the same topic, I open another tab to that blog permanently in the tabXpert session. Another trick I use is searching Google for the whole title of a blog post from the client’s blog to see what comes up as competitors and that yields more results. When I am done with the pitches, tabXpert saves the session and for the next pitch, I may not have to do as much hunting because I already have a good list of competing blogs to research.

As for the pitches themselves, I just give each one a title and bullet points, where the bullet points are the eventual H2 headings. Sometimes I add more description to each bullet point for clarity. In my local copy of the pitch, I keep the links where I got the idea and then send the pitch to the agency without the links.

Pitching first takes more spec time, but often, the writing is quicker because I came up with the idea and have the reference links I kept, so the time put in comes out about even.

Results from Freelance Writing for 3 Years

It hasn’t been quite 3 years yet, but close. Here is how things changed over those three years.

More Writing Clients and Agencies

For the first year, I stuck to one agency to get used to everything. I probably could have branched out earlier, but I didn’t realize I could write as much as I did part time. I told the agency 2-3 articles a week and thought that was my limit.

But a year later, I signed up to write for Dev Spotlight, which paid a lot more, but also required research. The articles I write for them are really technical, usually explaining how to do something with a specific technology, framework, or language. And they pay enough, I can spend 8-12 hours on an article if I need to.

A few months after that, TripleByte contacted me out of the blue to write for them. I said yes before I even knew how much they would pay. I had actually written six articles already for them through the agency and they tracked me down by name. I said yes because I loved writing those articles. Although they gave me a general topic, they wanted me to write about my experience. They basically said, “Write a blog post like you would for your own blog”.

That one article I wrote for them was the most I have been paid to write an article ever, 7 times what I was getting paid through the agency. In my head, I was doing the calculations. If I had four clients like that, that would be the only side hustle I would have to do. And then before I could write an article the next month, they shut down the program.

But then the editors at Log Rocket read that article and contacted me to write for their blog and they pay about 3 times what the agency would for the same word count.

Agencies are nice, because when the work is flowing, you don’t have to look for more work or pitch every article you write. Writing directly for clients is nice because it pays a lot more. Writing for TripleByte was the best, because I not only got paid well, I could also write in my voice, and I had so much time I really got into editing to make it just right.

I Could Write a Lot

I didn’t know I could write this much at the beginning or for the whole first year. I probably would have never found out if I hadn’t written for an agency. When they started sending me an assignment every day of the month, I just gave it a shot. That is another reason agencies are good if you haven’t yet found that out about yourself yet.

So my plan worked. I knew I needed pressure to write a lot and thought content writing could do it for me. I essentially did a boiled frog experiment on myself. As the heat went up, I didn’t notice because it was so gradual. By the time I noticed, I was writing 40,000 words a month as a side hustle when I initially set my limit to less than 10,000 words. That is the rough draft of a full-sized book or novel in less than two months.

I Could Write Better

Well, I mean, in my opinion. This is the first article I wrote for myself since this writing odyssey began.

You can look through my blog posts and barely find any posts over 500 words. I would have an idea, write it from beginning to end immediately, and now and then, I was happy with the results. I did barely any editing, no planning, and hit publish as soon as I could to get it over with and published. I depended on “inspiration” and I would have streaks of inspiration that would last for a few days or weeks at a time. I was still trying to be an “artist”.

For this article, my experience with all that writing took me in a different direction. So many people have asked how I managed this with a full-time job that I figured I should cover every aspect and I knew that would not come in a half-hour burst of inspiration. Why would I spend two hours on someone else’s article and cut my own off in 30 minutes?

I have been buying note cards for years to use them for writing, but never have. And I had the idea for this article in my mind for a while. So when I saw a gap in my assignments coming up, I started writing things I wanted to cover on the cards and did that for two weeks. Once I thought I had everything covered and the gap in work came, I took the cards out and created a heading outline. And when I had time, I would write the article a section at a time.

I say two weeks, but I probably spent 6-8 hours on this article, writing and all. For over 6000 words, that is not bad. So by writing better, I mean:

  • More stamina
  • More patience
  • Longer, more complete articles
  • More direction, with a basic outline

Now What?

After I started working in the corporate world as a software engineer, I learned to expect changes at every quarter. You may get a bonus. You may get contacted by dozens of recruiters. You may have to look for a job. It is the same with content writing. I wrote over 350,000 words last year and then January came and the client I wrote for through Content Writers responsible for more than half of that work decided they didn’t need any more content. You can see that in the dip in the graph above.

For months, I had been telling myself I need more clients I work with directly, but I was getting work that took all of my time, so I wasn’t worried. Then when I started getting fewer assignments, I freaked out. I had time but had to direct it myself. I figure my apprenticeship is over. After all, I only signed up for two agencies and then happened to get contacted by two clients. Now it’s time to take it further and do some real work.

Stephan Miller

Written by

Kansas City Software Engineer and Author

Twitter | Github | LinkedIn