# Is there any way to do a correct word count of a LaTeX document?

Often assignments (or even papers) have a word count limit. That is not a big deal when using Word, but I don't know how to do that using LaTeX. My solution has been so far to compile the document and then do a rough word count of my pdf file, sometimes even copying the contents of the pdf file and pasting in Word to get a mostly correct Word count.

Is there any tool (maybe even an online tool), package, script or software to do that directly from my .tex document and still get the right word count (i.e., ignore commands, equations, etc)?

-
Same question on Stack Exchange: stackoverflow.com/questions/2974954/… –  Charles Stewart Jun 18 '11 at 12:07
Under Linux I normally do it over the PDF to get a rough count: pdftotext file.pdf - | wc -w, but this also counts page numbers etc. as words. –  Martin Scharrer Jun 29 '11 at 18:27
Word count is never perfectly defined: How much words in can't? In an algorithm? In a figure with several texts? So, the notion of correct word count does not exist... –  Paul Gaborit Jul 17 '12 at 11:43
Emacs native tex-mode has a word count function: M-x tex-count-words. –  giordano Jun 4 '13 at 8:33
watches your LaTeX word limit as you type and save: % watch -d "detex index.tex | wc -w" –  Vaibhav Bajpai Feb 28 '14 at 19:43

This is in the UK TeX FAQ. The solutions suggested are:

• detex filename (which tries to strip LaTeX commands), then use any word count tool. (E.g. wc)

• latexcount.pl, a Perl script for word count

• texcount, another script even has an online interface

• wordcount, which has a script that runs LaTeX with some settings, then counts word indications in the log file.

-
texcount is pretty neat, especially the friendly online interface. One caveat: it recognizes align, equation, [ ], and as defining math environments (and possibly more). But it somehow misses align*. – Willie Wong Jul 29 '10 at 1:01 Just want to address my previous comment: the author got back to me and it will be fixed in the next version (2.3) – Willie Wong Jul 29 '10 at 11:19 Do these methods ignore all the words inside math environments? – Malabarba Sep 28 '10 at 16:33 If you use texcount you'll want to run it with options like -inc -incbib -sum to get a more accurate total. – Seamus Jul 17 '12 at 9:56 @Jeff though quite often word limits exclude the references. – Chris H Jan 1 '14 at 16:25 Here’s an excerpt from my .vimrc that gives me a comfortable word count in Vim: function! WC() let filename = expand("%") let cmd = "detex " . filename . " | wc -w | tr -d [:space:]" let result = system(cmd) echo result . " words" endfunction command WC call WC()  Now I can invoke :WC in command mode to have the word count echoed in the status line. - I cannot help but think that calling perl just to do chomp and a regex is way too much of an overkill. =) Why not just ' ... | wc -w | tr -d [:space:]'? – Willie Wong Aug 4 '10 at 0:06 @Willie: good call. Don’t remember why I used Perl here. – Konrad Rudolph Aug 4 '10 at 8:38 now I would be much happier if you had given me something I can use in Emacs! :P – Vivi Aug 4 '10 at 9:45 – Seamus Feb 15 '12 at 12:05 @Vivi: odd name for an Emacs user! :P – naught101 Apr 24 '12 at 4:29 The Texmaker integrated pdf viewer offers a word count feature since version 3.4. Just right-click in the pdf document, then click Number of words in the document. - Wow, I’ve been using that editor for a while but didn’t know this! I just played around with it for a little bit and it seems that the word count includes everything that has a space between itself and the next thing, i.e. the page numbers, the section numbers and titles, the section numbers and titles in the ToC, the ToC title, and even every dot in the dotted line for the \subsections in the ToC. – doncherry Apr 7 '13 at 17:08 issue 593 has been deleted from the issue tracker, but is archived in the internet archive: web.archive.org/web/20130502001436/https://code.google.com/p/… – matth Jul 10 at 8:00 Way back in the depths of time, I scribbled my own perl script to do this. My reason for doing this myself was that sometimes I wanted to count words in command arguments and sometimes not, so I built in a selection routine. Plus I figured that a bit of maths was worth a word so added that in. As the script is really simple, I'm copying it here (which automatically makes it some sort of free-to-use, I guess!). I don't think that I've used it for years, though - it's been a long time since "number of words" mattered to me at all. #!/usr/bin/perl -w @ARGV andARGV[0] =~ /^-+h(elp)?$/ && die "Usage:\t$0 files\n\t$0 < files\n\t$0\n";

my $count = 0; my$first = "";
my $tex = 0; while ($first =~ /^\s*$/) {$first = <>;
}

if ($first =~ /^\$$input|section|setlength|documentstyle|chapter|documentclass|relax|contentsline|indexentry|begin|glossaryentry)/) { tex = sub { r = _[0]; m = _[1]; r =~ s/\\(emph|textbf|textit|texttt|em)\{//g; r =~ s/\\(sub)*section\*?\{[^\}]*\}//; r =~ s/\\title\{[^\}]*\}//; r =~ s/\\\(.*?\\$$/maths/g;$r =~ s/\\$$.*?/maths/; r =~ s/^.*?\\$$/maths/;

%TC:ignore
\dotfill End of the example \dotfill

\subsubsection*{Counts of words}
\wordcount

%TC:endignore

\end{document}

-
@Louis, I have done what you suggested, but this only displays the contents of the file at the end of the document. Where can I find out the number of words? –  Edy Jo Jan 27 at 20:32
@EdyJo I am not sure if I understand your question, but the macro \wordcount produce it where it says Words in text: 75 or the other statistics below or above that line gives you the sum and in other areas of the document. The detail report below provide the information per chapter, section, etc. I use it in compiling a large document for my own motivation and purposes, but when I send a revision to the reviewers I comment it out before compilation. I even added some lua code yesterday to produce real tables. –  Louis Jan 27 at 21:13
Good answer – personally I wouldn't give the output a .tex extension, though – that's traditionally reserved for user-generated content. –  Sean Allred Apr 21 at 13:47

The last time I had to worry about this, I compiled my LaTeX document to PDF and ran it through pdftotext.

-
This approach cannot deliver reliable results due to unreliable conversion by pdftotext. –  helcim Aug 6 '10 at 15:26
Do you have an example of how pdftotext fails? I got reasonable results when I used it, but the documents I was using were not particularly elaborate (I don't think they had figures, for example). –  Blake Stacey Aug 8 '10 at 18:46
This will count headers and page numbers in your word count. This will also count lots of words in mathmode. Try doing pdftotext and then wc on a file containing the equation $x+y=z$. That counts as something like 5 words for this method… –  Seamus Jul 17 '12 at 9:55
@Seamus For documents without much logic or maths, though, I've found it more accurate than alternatives when combined with a script to remove headers, footers etc. For documents with a lot of logic or maths, it would be hopeless. (I have no idea how those should be calculated, either.) –  cfr Sep 12 '14 at 23:45

For Windows users, the LaTeX Word Counter is pretty neat.

-
The Sourceforge page says it's also available for Linux and Mac. –  doncherry Feb 15 '12 at 10:41

If you are on Windows and do not mind purchasing software, use WinEdt. It has a built in word count feature (Document->word count).

-

In general the answer is NO.

Nearly all requesters of word counts are not interested in the number of words but rather in the amount of space (pages) that the document will need when printed. If there are figures should the words in captions be counted without the space required by the illustration being taken into account? Are equations words, and if so is it one 'word' per variable/symbol or one 'word' per equation? If a paper consists of nothing more than title, author, a sentence and 100 math expressions is that about 50 or 500 'words'? Is a hyphenated word one or two? Does a document that mainly consists of 3 or 4 letter words compare equally with one that has a preponderance of 8 to 10 letter words?

I think that the traditional method is best: print the document, count the average number of 'words' per line in a typical page and multiply by the average number of lines per page and by the number of pages.

It is highly unlikely that the recipient of your work will actually count the number of words.

-
:@peterwilson: i don't think that's the case; universities are notorious for setting word counts for dissertations, and then employing a menial to count the words when the copy is submitted. in this case, they don't (really) care about the printed size, they care about the idiot letter of their idiot regulations. (iirc, my university (cambridge) has recently followed down that crazy path, having previously set a page limit.) –  wasteofspace Jul 17 '12 at 10:40

I use texcount with the following parameters:

texcount file.tex -inc -incbib -sum -1


Output is simple like this:

9079


word count (#headers/#floats/#inlines/#displayed)
3996+48+99 (22/9/0/0) Included file: parts/blup.tex

-

You can try Microspell. It's a very robust software that knows if you have a main tex document and other subsidiary ones.

-

For Mac users, TeXShop (at least version 3.26) has a line, word and character count under Edit>Statistics. I never tested how well it works, but since TeXShop recognises syntax for colour-coding, I assume it is able to ignore most commands for the text.

-

kile the latex editor for the kde (ubuntu) desktop has a word count. It is under the statistics menu

-
To have that clear, kile has pretty much nothing to do with ubuntu, or its desktop. –  mafp Jan 8 '13 at 0:42
It is not at all accurate. It is OK to get a rough sense of whether document 1 has more words than document 2 but you could not use it for anything requiring an actual count, even an approximate one. –  cfr Sep 12 '14 at 23:39

Combining texcount + knitr + R allows for dynamic in-text word count estimation. The code chunk below works on a Mac by calling the Texcount perl script, running it on "myfile.tex" and then returning a limited set of stats (the -total option) including the sum of all words (the -sum) option. As noted elsewhere in this thread, you may want to adjust the texcount options to include things like the bibliography. Once word count is extracted, a comma is added (if appropriate) and can then be referenced inline with the Sweave command \Sexpr{}.

The word count will always be for the second-to-last compile but compiling twice will solve that (much as with bibtex or table/figure references). I believe the code to call perl from within R varies by platform so you may need to adjust system() command below for non-Macs.

<<wordcount, echo=FALSE, cache=FALSE>>
library(stringr)

{ n<-nchar(x)
if (n==7 | n==8 | n==9 )
return(paste(substr(as.character(x),1,n-6),",",substr(as.character(x),n-5,n-3),",",substr(as.character(x),n-2,n), sep=""))
if (n==4 | n==5 | n==6 )
return(paste(substr(as.character(x),1,n-3),",",substr(as.character(x),n-2,n), sep=""))
if (n==1 | n==2 | n==3 )
return(x)
}

texcount.out <- system("texcount -total -sum myfile.tex", intern=TRUE)
sum.row <- grep("Sum count", texcount.out, value=TRUE) # extract row
pattern <- "(\\d)+" # regex pattern for digits
count <- add.comma(as.numeric(unlist(str_extract(sum.row, pattern) ) ) ) # extract digits + add comma
@

Word count: \Sexpr{count} % reference R variable in Latex prose

-
Welcome to TeX SE! –  cfr Apr 21 at 4:10

Better method. Copy text into MS Word. Let Word do the word count.

-
This would most certainly include headers & footers. –  Werner Feb 27 '13 at 7:14
The answer could be improved by replacing MS Word by word processor programs in general, if the user isn't bound to Microsoft. –  Stefan Kottwitz Feb 27 '13 at 11:59