The Flesch index: An easily programmable readability analysis algorithm
Authors: John Talburt
Venue: Proceedings of the 4th annual international conference on Systems documentation (1986)

This paper is an exposition of an algorithm for text analysis that can be of value to writers and documentalists. The simplicity of this algorithm allows it to be easily programmed on most computer systems. The author has successfully implemented this test as a function within a text editing system written in RPG II. Included in this paper is a sample program written for the VAX 11/780 in PL/I. In 1949 Dr. Rudolph Flesch published a book titled &ldquo;The Art of Readable Writing.&rdquo; In this book, he described a manual method of reading ease analysis. This method was to analyze text samples of about 100 words. Each sample is assigned a readability index based upon the average number of syllables per word and the average number of words per sentence. This Flesch Index is designed so that most scores range from 0 to 100. Only college graduates are supposed to follow prose in the 0 - 30 range. Scores of 50 -60 are high-school level and 90 - 100 should be readable by fourth graders. Though crude, since it is designed simply to reward short words and sentences, the index is useful. It gives a basic, objective idea of how hard prose is to wade through. This test has been used by some state insurance commissions to enforce the readability of policies. Flesch's algorithm was automated in the early 1970s by the Service Research Group of the General Motors Corporation. The program, called GM-STAR (General Motors Simple Test Approach for Readability) was used so that shop manuals could be made more readable. GM-STAR was originally written in BASIC language. The key to this program is a very simple algorithm to count the number of syllables in a word. In general the text analysis portion of the program uses the following rules: Periods, explanation points, question marks, colons and semi-colons count as end-of-sentence marks. Each group of continuous non-blank characters counts as a word. Each vowel (a, e, i, o, u, y) in a word counts as one syllable subject to the following sub-rules: Ignore final -ES, -ED, -E (except for -LE) Words of three letters or less count as one syllable Consecutive vowels count as one syllable. Although there are many exceptions to these rules, it works in a remarkable number of cases. The Flesch Index (F) for a given text sample is calculated from three statistics; The total number of sentences (N), The total number of words (W), The total number of syllables (L), according to the following formula: F = 206.835 - 1.015 &times; (W/N) - 84.6 &times (L/W). The Grade Level Equivalent (G) of the Flesch Index is given by the following table: If -50 F 50, then G = (140 - F)/6.66 If 50 F 60, then G = (93 - F)/3.33 If 60 F 70, then G = (110 - F)/5.0 If 70 F , then G = (150 - F)/10.0 A PL/I program that implements this algorithm is listed below along with sample output. For simplicity, this program assumes all letters are in upper case. Processing text with lower case letters can be accomplished by either modifying the program to test for lower case as well as upper case, or by preprocessing the text sample to translate all letters to upper case. There are a multitude of other refinements and amenities that can be added to the basic analysis. Among these are: Nothing which characters are considered sentence terminators. Ignoring periods that are used for abbreviations rather than sentence terminators. Ignoring word connecting hyphens in compound words. Noting which character groups should probably be spelled out, such as numerals and dollar amounts. Sharpening the syllable counting routine to detect exceptional cases.