Please Note: This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, and 2016. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Generating a Count of Word Occurrences.

Generating a Count of Word Occurrences

Written by Allen Wyatt (last updated April 10, 2023)
This tip applies to Word 2007, 2010, 2013, and 2016


As you are analyzing your documents, you may wonder if there is a way to create a count of the number of words in the document. Unfortunately, Word doesn't include such a feature, but there are a couple of things you can do.

First, if you want to know the number of times a specific word or phrase is used, you can follow these steps:

  1. Press Ctrl+H to display the Replace tab of the Find and Replace dialog box. (See Figure 1.)
  2. Figure 1. The Replace tab of the Find and Replace dialog box.

  3. In the Find What box, enter the word or phrase you want counted.
  4. In the Replace With box, enter ^&. This character sequence tells Word that you want to replace what you find with whatever you placed in the Find What box. (In other words, you are replacing the word or phrase with itself.)
  5. If you are searching for individual words, make sure you click the Find Whole Words Only check box.
  6. Click on Replace All. Word makes the replacements and shows you how many instances it replaced. That is the number you want.

This approach works great if you just have one or two words or phrases you want to know about. You can automate the process a bit by using a macro to search through the document and count for you. The following macro prompts the user for a word, and then counts the number of times that word appears in the document. It will continue to ask for another word until the user clicks on the Cancel button.

Sub FindWords()
    Dim sResponse As String
    Dim iCount As Integer

    ' Input different words until the user clicks cancel
        ' Identify the word to count
        sResponse = InputBox( _
          Prompt:="What word do you want to count?", _
          Title:="Count Words", Default:="")
        If sResponse > "" Then
            ' Set the counter to zero for each loop
            iCount = 0
            Application.ScreenUpdating = False
            With Selection
                .HomeKey Unit:=wdStory
                With .Find
                    .Text = sResponse
                    ' Loop until Word can no longer
                    ' find the search string and
                    ' count each instance
                    Do While .Execute
                        iCount = iCount + 1
                End With
                ' show the number of occurences
                MsgBox sResponse & " appears " & iCount & " times"
            End With
            Application.ScreenUpdating = True
        End If
    Loop While sResponse <> ""
End Sub

If you want to determine all the unique words in a document, along with how many times each of them appears in the document, then a different approach is needed. The following macro will do just that.

Sub WordFrequency()
    Const maxwords = 9000          'Maximum unique words allowed
    Dim SingleWord As String       'Raw word pulled from doc
    Dim Words(maxwords) As String  'Array to hold unique words
    Dim Freq(maxwords) As Integer  'Frequency counter for unique words
    Dim WordNum As Integer         'Number of unique words
    Dim ByFreq As Boolean          'Flag for sorting order
    Dim ttlwds As Long             'Total words in the document
    Dim Excludes As String         'Words to be excluded
    Dim Found As Boolean           'Temporary flag
    Dim j, k, l, Temp As Integer   'Temporary variables
    Dim ans As String              'How user wants to sort results
    Dim tword As String            '
    Dim aword As Object            '
    Dim tmpName As String          '

    ' Set up excluded words
    Excludes = "[the][a][of][is][to][for][by][be][and][are]"

    ' Find out how to sort
    ByFreq = True
    ans = InputBox("Sort by WORD or by FREQ?", "Sort order", "WORD")
    If ans = "" Then End
    If UCase(ans) = "WORD" Then
        ByFreq = False
    End If
    Selection.HomeKey Unit:=wdStory
    System.Cursor = wdCursorWait
    WordNum = 0
    ttlwds = ActiveDocument.Words.Count

    ' Control the repeat
    For Each aword In ActiveDocument.Words
        SingleWord = Trim(LCase(aword))
        'Out of range?
        If SingleWord < "a" Or SingleWord > "z" Then
            SingleWord = ""
        End If
        'On exclude list?
        If InStr(Excludes, "[" & SingleWord & "]") Then
            SingleWord = ""
        End If
        If Len(SingleWord) > 0 Then
            Found = False
            For j = 1 To WordNum
                If Words(j) = SingleWord Then
                    Freq(j) = Freq(j) + 1
                    Found = True
                    Exit For
                End If
            Next j
            If Not Found Then
                WordNum = WordNum + 1
                Words(WordNum) = SingleWord
                Freq(WordNum) = 1
            End If
            If WordNum > maxwords - 1 Then
                j = MsgBox("Too many words.", vbOKOnly)
                Exit For
            End If
        End If
        ttlwds = ttlwds - 1
        StatusBar = "Remaining: " & ttlwds & ", Unique: " & WordNum
    Next aword

    ' Now sort it into word order
    For j = 1 To WordNum - 1
        k = j
        For l = j + 1 To WordNum
            If (Not ByFreq And Words(l) < Words(k)) _
              Or (ByFreq And Freq(l) > Freq(k)) Then k = l
        Next l
        If k <> j Then
            tword = Words(j)
            Words(j) = Words(k)
            Words(k) = tword
            Temp = Freq(j)
            Freq(j) = Freq(k)
            Freq(k) = Temp
        End If
        StatusBar = "Sorting: " & WordNum - j
    Next j

    ' Now write out the results
    tmpName = ActiveDocument.AttachedTemplate.FullName
    Documents.Add Template:=tmpName, NewTemplate:=False
    With Selection
        For j = 1 To WordNum
            .TypeText Text:=Trim(Str(Freq(j))) _
              & vbTab & Words(j) & vbCrLf
        Next j
    End With
    System.Cursor = wdCursorNormal
    j = MsgBox("There were " & Trim(Str(WordNum)) & _
      " different words ", vbOKOnly, "Finished")
End Sub

When you open a document and run this macro, you are asked if you want to create a list sorted by word or by frequency. If you choose word, then the resulting list is shown in alphabetical order. If you choose frequency, then the resulting list is in descending order based on how many times the word appeared in the document.

While the macro is running, the status bar indicates what is happening. Depending on the size of your document and the speed of your computer, the macro may take a while to complete. (I ran it with a 719-page document with over 349,000 words and it took about five minutes to complete.)

Note that there is a line in the macro that sets a value in the Excludes string. This string contains words that the macro will ignore when putting together the word list. If you want to add words to the exclusion list, simply add them to the string, between [square brackets]. Also, make sure the exclusion words are in lowercase.

If you don't like to use macros for some reason, there are other programs you can use to create word counts. For instance, the NoteTab text editor (the "light" version can be downloaded free at includes a feature that provides a word count. All you need to do is copy your entire document and paste it into NoteTab. Then, within NoteTab, choose Tools | Text Statistics | More. It presents an analysis of the word frequency, including percentages.


If you would like to know how to use the macros described on this page (or on any other page on the WordTips sites), I've prepared a special page that includes helpful information. Click here to open that special page in a new browser tab.

WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (10761) applies to Microsoft Word 2007, 2010, 2013, and 2016. You can find a version of this tip for the older menu interface of Word here: Generating a Count of Word Occurrences.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...


Specifying Different Weekends with NETWORKDAYS

The NETWORKDAYS worksheet function can be used to easily determine the number of work days (Monday through Friday) within ...

Discover More

Protecting Headers and Footers

If you don't want the information in a header or footer to be changed by users of your document, there are a couple of ...

Discover More

Inserting a Watermark Behind Merged Cells

If you have a group of merged cells into which you want a user to enter information, you may want some sort of ...

Discover More

The First and Last Word on Word! Bestselling For Dummies author Dan Gookin puts his usual fun and friendly candor back to work to show you how to navigate Word 2013. Spend more time working and less time trying to figure it all out! Check out Word 2013 For Dummies today!

More WordTips (ribbon)

Creating Many Index Entries at Once

Word makes it fairly easy to create an index. It is creating the index entries that can be tedious, especially if you ...

Discover More

Understanding Master and Subdocuments

Most people use Word to create regular documents that you edit, view, and print. The program also allows you to create a ...

Discover More

Moving Master and Subdocuments

If you need to move master documents or subdocuments from one place to another on your computer, you have to keep in mind ...

Discover More

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.


If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is five more than 6?

2024-03-26 01:35:22


Will this work for Version 16.83 (word for Mac)?
If not what can I use to achieve a list of words, the frequency of their use? Putting the list into a table is really cool but I would be happy with just a list.

2024-01-12 12:43:55


The macro for word frequency is brilliant. I am writing my dissertation in Law and this will be very helpful in my analysis of cases and articles.

While the list of excluded words is useful, is it possible to specify a set of words that excludes ALL EXCEPT the included words? Doing tFor example, I would like to count the occurrence of only

2023-06-21 15:28:52

Pat Shaw-Allen

I would like to use the macro to count acronyms of two or more letters. I have not been able to figure out how to modify the exclude statement. I used

Excludes = "[<[a-z]{1,}>]"


SingleWord = Trim(aword)

to no avail

2023-04-10 07:48:01


You can also use the Find tab. In the later versions of Word, Ctrl + f opens a sidebar, but if you go to Ctrl + h and open the Find tab from there (see Figure 1 in the article), you can find your word that way. The key is to use the alternate options: Find In (which gives you Current Selection, Main Document, Footnotes, and Comments). You can Highlight All. Or you can jump through them by using Find Next (although the sidebar is a better solution to see all the instances). You still have all the options through the More button.
So if you are looking for your word, you'll open the options for Find In (Main Document). Then the number of instances is revealed at the bottom of the white space under the "Find What" box.
With this method, you are not replacing any text.
(Also, out of curiosity, I closed the Find dialogue box, and it left the words highlighted. Then I went to the Word Count box via that ribbon, and it gave me the same number of instances.)

2023-02-22 10:04:29



You always have the best stuff! Is there any way I can ensure that the capitalization is retained when using the Sub WordFrequency() macro? I would like to use it to spot unecessary acronyms (i.e. if used less than 5 times, write out the word)


2023-01-17 13:45:07


This is amazing, thank you!

just wondering, would it be possible, instead of counting every single word, it can refer to a list of short phrases instead? Essentially I'm trying to automate the process of generating a glossary, so I need a count of words or multiple words or acronyms.

Thanks again!


2021-10-17 11:53:50



What about the compound words, like "well-dressed"?

The macro counts two words ("well" and "dressed") and ignores the compound word "well-dressed".


2021-10-05 07:57:17


How could I change this macro to include Korean characters in the word count?

2021-09-20 04:49:22


The problem is that many words end in "s" but are not plural. It would be nice to be able to use the spelling dictionary which can distinguish plurals but it is in coded form (however, the custom dictionary is stored as text).

The best that can be done is to sort the words alphabetically which will put consecutively the two versions of the word.

2021-09-19 04:42:05

Paul Z.

Singular and plural word forms are counted as separate words. A contraction and its root word are also counted as separate words. How can I modify the macro so that they can come out as one word?

2021-06-28 04:46:06


The macro does not include words beginning with "z" for some reason.

Can this be changed please.

2021-06-09 10:09:52

Navneet Rafaliya

What modifications I would have to make to macro for it to work for another language? I am trying to do it for 'Gujarati' and dialogue box shows: There were 0 different words.

This is how gujarati looks like
ધોળી છીંટની ડગલી પહેરી હતી તથા ધોળો સુરવાળ પહેર્યો હતો તથા ધોળો ફેંટો મસ્તક ઉપર બાંધ્યો હતો ને પોતાના

2020-11-18 20:27:09

Philip Bennett

I really enjoyed using this WORD+FREQ Macro for Word.
Can it be modified to include numerals in the count? i.e. show frequencies for the numerals 0-9 in a piece of text?

2020-11-13 15:45:39


If you run the macro, it will give you a list of all the words and their number of occurrences, so you would see all those related words like march, marched, marches etc. together. It also will show you words as they occur, so misspellings appear as well...very handy for a word close to march but misspelled.

2020-11-12 12:30:07

J Harwell

How would I modify word count macro for unique words to include the count for a list of specific words or acronyms that I specify. It seems like a set of commands that says only list words between [brackets] would be needed somewhere to accomplish this task.

2020-11-01 14:27:47


Thanks for the Tip. It looks great.
One Question:
Is there any way for it to pick up on words where there are different forms of basically the same word, e.g. plurals and singulars (tree and trees), possessive forms (palace and palace's), verb forms (march, marched, marches, marching) and group the different forms together?

2020-10-16 03:24:58


After Or on the same line add a space and underscore.

They setup continuation onto the next line.

2020-10-15 20:06:44

Abraham Hernandez

Hello, I am new to macros and tried running bu got a syntax error in the last two lines below.
WOuld you mind helping me fix it?

' Now sort it into word order
For j = 1 To WordNum - 1
k = j
For l = j + 1 To WordNum
If (Not ByFreq And Words(l) < Words(k)) Or
(ByFreq And Freq(l) > Freq(k)) Then k = l

2020-08-09 18:41:29

Valery Belyanin

' Set up excluded words
Excludes = "[the][a][of][is][to][for][by][be][and][are]"
I need to exclude more words, but the strings should be short and i can not make a long string. is there a solution like?
' Set up excluded words
Excludes = "[the][a][of][is][to][for][by][be][and][are]"
' Set up excluded words
Excludes = "[one][twof]three]"
It did not work for me though

2020-07-02 09:32:25


Tjasa - Subject to what Ken said, you can try changing the line

SingleWord = Trim(LCase(aword))


SingleWord = Trim(aword)

Then when you sort by WORD all the similar words should be together in the list . Or you could use Words sort mechanism to re-sort the list. There are a lot of subtleties to selecting and sorting words, so you might not get quite what you want, but this could be a good start.

2020-07-01 03:59:52


The problem with producing a case sensitive count is that a word can be capitalised at the start of a sentence but not in the body in which case it would be meaningless to list as two different words. The best that could be done would be to list separately words that have all capitals.

2020-06-30 17:56:55


Thanks for the tip.
I would like to use the frequency option but with case sensitive results.

2020-05-09 20:46:13


Thank you so much for this precious tip. The only concern I have is that this tip did not work with Right-to-left languages.
Any suggestion for that?
Thank you in advance,

2020-03-13 15:32:23

David Cohen

Here's another easy way to get a word count with search and replace. First, create a copy of the document and use it just as a working piece. Enter the same word in both the search and replace boxes. Change the format of the font of replaced word (red, bold, whatever). As noted above, Word will tell you how many words have been replaced (thus, how many occurrences). And then you can scroll through the document and easily spot the occurrences. If you are working with the original document, not a working document, you can undo the format change.

2020-03-12 14:11:31

Glen Slee

Much appreciate the Tip, and your group that I have 'been with' since the late '90's - I have learnt heaps (even though a lot of Q&A is over-my-head: stuff for which I have no immediate need; but when I do have a Q, I feel very comfortable in asking).

2019-09-13 10:13:00


Thank you.

2019-09-09 18:00:34


Oh my goodness, THANK YOU! I copied and pasted the macro to find and count frequency of all repeated words and it worked like a charm! Thank you for this! (When your company mentions itself 150 times ina proposal....there's a problem. HaHa!)

2019-08-11 08:03:18

Robert Kinnell

Hi will there be an update on this VBA macro as their seems to be errors running from word 2019

2019-06-12 13:58:35


Hi Allen,

Thanks for creating these macros as they work great! How would I implement a case-sensitive search for the word frequency macro? There's not much information on forums or other sites to explain any sort of usage for Word VBA scripts.


2019-06-08 05:24:58

Timo Ericsson

Thanks! This macro was just what I needed and worked with Word for Mac 2016.

2019-06-08 00:24:27

Phiodias Marthias

For me, not IT guys, not familiar with VBA, it is a great formula. It is very helpful to accomplish my task.
Thank you so much.

2019-05-14 17:19:55


Hello,thanks for this article. As I tried it worked with the English Text but did not do so with texts of other encoding for example for Georgian text (utf 8). Any solution ?

Thanks in advance for your attention

2019-02-27 20:13:11


Thank you, Allen Wyatt, for all your wonderful articles. The Find and Replace With tip of using ^? is something I use on a daily basis. It has saved me so much time that I say a little prayer for you every time I use it. Before ^?, I copied the Find value into the Replace With field to guard against typos. How did ^? come to your attention? Except for your article, I can't find anything about it. Are there other hidden gems akin to ^? that are virtually unknown?

2019-02-07 16:46:52

Doug Loud

This is very helpful, but in very long documents it comes up with a long list. In Word 2016 Is there a way to make it look for only a specific group of words, such as all words starting with TAR or IDIP, which are the beginning of document identifiers?

I am a subscriber and your Excel and Word letters are very helpful.

2018-11-25 23:25:38


Thank you for creating this Macro.

Unfortunately, I'm unable to get this to do it's thing... I'm confident that I created and ran the Macro correctly, but the end result is a new blank window that has a message at the top window bar that states, Not Responding...

I waited a good 5 minutes with no results.

I would be grateful if you could assist.

I'm running the latest version of Microsoft WORD on Windows 10.


2018-07-27 01:08:11


Thanks for the great solution above.

I need to generate a table at the end of a document which lists occurrences of specific words in the text. This list is predetermined, I do not need to input it every time I use the macro.

Is this possible? How can I adjust the macro above to achieve this?

2018-03-05 21:37:58


Sorry for the probably ignorant question, but how exactly do I input this macro into word once I've clicked "record macro." Do I need to type it all in? Is there a different menu I open to input it? I've found a couple instructional things about inputting macros, but none of the examples used anything like this. Any guidance would be much appreciated. Thank you

2017-12-10 05:22:10


@James Thomas

This page includes good information on how to use Macros' code work into MS Word.

2017-12-10 05:19:04


Thanks man! I used longer code to auto find duplicates, your solution is irreplaceable!! Keep up good work +

2017-10-28 12:03:31

Patricia Boyd

Thanks for this info. Another nonmacro way is to press Ctrl + F to open the Find box. Then type in the word you want to find. Then click on the "Find in" dropdown menu, and pick "main document." (Or, press Alt+i, m) This will tell you the number of occurrences of the word. (('d hesitate to use the "Replace" method you describe, because I'm usually editing for a client, and I don't want to show the replacement of the word with itself either as a tracked change or a non-tracked changed. If I turn track changes off, I run the risk of hiding the fact that I inserted a term as a track change. If I turn track changes on, then every single occurrence is going to show up as a tracked insertion of the same word.

2017-10-28 06:07:41


Thank you for these wonderful tips!

2017-10-28 05:16:16

James Thomas

That Macro looks amazing. And scary. Do you have Tips page that tells us how to get this Macro into our MS Word programs? Thanks - text stats are quite important to me and I had no idea they could be done within Word. Many thanks.

This Site

Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.


FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.