{'fraction_non_alphanumeric': 0.031864000117039486, 'fraction_numerical': 0.020452650212865565, 'mean_word_length': 4.893602345231937, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 2, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Privacy Policies Across the Ages: Content and Readability of Privacy Policies 1996--2021

It is well-known that most users do not read privacy policies, but almost all users tick the box to agree with them. In this paper, we analyze the 25-year history of privacy policies using methods from transparency research, machine learning, and natural language processing. Specifically, we collect a large-scale longitudinal corpus of privacy policies from 1996 to 2021 and analyze the length and readability of privacy policies as well as their content in terms of the data practices they describe, the rights they grant to users, and the rights they reserve for their organizations. We pay particular attention to changes in response to recent privacy regulations such as the GDPR and CCPA. Our results show that policies are getting longer and harder to read, especially after new regulations take effect, and we find a range of concerning data practices. Our results allow us to speculate why privacy policies are rarely read and propose changes that would make privacy policies serve their readers instead of their writers.


INTRODUCTION
A website's privacy policy is a legal document that explains what data the site collects from its users, how and for what purpose it processes the data, and with what other parties it shares the data. In addition, privacy policies can explain the users' rights regarding opting in or out of data collection, data correction, and data deletion. Privacy policies are notorious for being lengthy documents that are hard to understand [1], [2], [3]. They are rarely read by users, but website owners assert that by visiting their site users agree to their privacy policy. This gap in understanding between users and website owners deserves closer study: why are policies not read more frequently, what obstacles are there, and which data practices do users unwittingly agree to?
In the 25-year history of website privacy policies, the privacy and data protection rules have changed several times and in different jurisdictions, and privacy policies were updated to accommodate new requirements. For example, when the General Data Protection Regulation (GDPR) came into force in 2018, privacy policies became longer and many websites introduced new privacy policies [4], [5].
However, research into privacy policies has been limited to studying single points in time or short periods, e.g., across the GDPR introduction. In contrast, this paper analyzes longitudinal changes in privacy policies over the last 25 years, in terms of length, readability, and content. Studying longitudinal changes in privacy policies is important to understand whether new privacy regulations lead to increased user privacy or not; to understand whether privacy regulations lead to substantive changes in data practices or whether they merely result in corporate box-ticking exercises; to understand the state of privacy on the web and the extent to which websites respect user privacy; to guide the design of new privacy protections; and to guide the design of nextgeneration privacy regulations.
We leverage recent advances in machine learning and natural language processing [6] to automate the analysis of privacy policies at scale. In this paper, we answer the following research questions: • How user-friendly are privacy policies in terms of their length and readability?
• What was the effect of the GDPR and California Consumer Privacy Act (CCPA) on the privacy policy landscape?
• How have the terminology and jargon in privacy policies evolved, for example in terms of the use of key terms?
• How has the content of privacy policies evolved in terms of covered privacy practices and user rights?
To answer these research questions, we collect a corpus of more than 50,000 unique privacy policy texts spanning 25 years, from 1996 to 2021. To the best of our knowledge, we are the first to apply BERT to classify the attributes of privacy policy segments and the first large-scale longitudinal study of the contents of privacy policies. We find that the length of the average privacy policy has approximately doubled in the last ten years and quadrupled since 2000. Both GDPR and CCPA have led to significant increases in policy length. Similarly, privacy policies have become less readable over time, particularly around the times when new privacy regulations were introduced. In 2021, the average Flesch Reading Ease of privacy policies in our corpus was 31, which is similar to academic articles (e.g., the Harvard Law Review has scores in the low 30s [7]), compared to 34 in 2011 and 37 in 2001.
Analyzing the content of privacy policies, we identify several concerning trends, including the increasing use of location data, increasing use of implicitly collected data, lack of meaningful choice, lack of effective notification of privacy policy changes, increasing data sharing with unnamed third parties, and lack of specific information about security and privacy measures. Overall, our results show that recent privacy regulations have not substantially improved the privacy of users online, but rather led to more bloated privacy policies that describe more and more invasive data practices. Our policy corpus, including readability data and policy content labels, is available as an open access dataset [8].
The remainder of this paper is structured as follows. Section 2 discusses background information and related work. Section 3 explains our methodology for collecting and analyzing privacy policies. Our results on the readability and content of privacy policies are described in Sections 4 and 5, respectively. Limitations of our approach are discussed in Section 6, and Section 7 concludes.

BACKGROUND AND RELATED WORK
In the last two decades, the landscape of privacy regulations has seen significant changes (see Figure 1), including the introduction of Europe's GDPR in 2018 and California's CCPA in 2020.

Privacy regulations
The OECD privacy principles, introduced in 1980, encompass collection limitation, data quality, purpose specification, use limitation, security safeguards, openness, individual participation, and accountability [9]. These principles were intended to be implemented into national law by member countries. For example, European privacy legislationmost recently the GDPR-closely follows these principles. In contrast, privacy rules in the United States are more closely aligned to the Federal Trade Commission's fair information practice principles (FIPPs), which are based on notice/awareness and choice/consent. The FIPPs are seen as less comprehensive than the European privacy regime.
The International Safe Harbor Privacy Principles were developed between 1998 and 2000 as a way to reconcile the stricter European privacy regime with the FIPPs. The Safe Harbor decision by the European Commission in 2000 ruled that the Safe Harbor principles complied with the EU Data Protection Directive, and as a result companies who complied with the principles could register their (self-)certification and transfer data from EU to US. However, the Safe Harbor decision was invalidated by the European Court of Justice (ECJ) in October 2015. In its place, the EU-US Privacy Shield was agreed in February 2016, introducing stronger obligations on US companies, stronger monitoring, and stronger enforcement. However, in 2020 the Privacy Shield was again declared invalid by the ECJ. As a result, EU-US data transfers are now governed for example by Article 49 of the GDPR which allows data transfers subject to explicit informed consent, or by contracts between EU data subjects and US data controllers. The CCPA, passed in 2018 and taking effect in 2020, was the first US state law that introduced comprehensive privacy rules in the European sense [10].

Length and readability of privacy policies
Privacy policies have been studied for more than a decade. For example, in 2008, the annual economic opportunity cost for reading privacy policies was estimated at $781 billion for US internet users [3]. In 2009, privacy policies were found to have Flesch Reading Ease (FRE) scores between 32 and 46 [7], which is consistent with our finding that 50% of policies from 2009 have scores between 29 and 39. In 2018, privacy policies from the top 1 million websites had an average Flesch Reading Ease of 39.8 [1], which indicates better readability than the policies from 2018 in our corpus (FRE=32.2). This may be due to a different FRE implementation (we evaluate the influence of implementations on FRE scores in Appendix A). In addition, higher-ranked policies were found to be longer (2,000+ words) than lowerranked policies (1,400 words on average) [1]. In comparison, policies from 2018 in our corpus had an average length of 3,200 words, but almost all were higher-ranked policies. An analysis of a longitudinal corpus of policies from 130k websites [11] shows a steady increase in policy length with the word count doubling between 2009 and 2019, which is similar to our findings. However, the average length of policies is shorter than in our corpus (e.g., for March 2019: 2178 words vs. 3599 words), which could be due to our effort in retrieving full policy texts (see Section 3) or to their inclusion of many lower-ranked policies which tend to be shorter. Similar to our findings, [11] found a decrease in readability over the years.
After the GDPR came into effect, more than 84% of European websites had a privacy policy and 62% displayed a cookie consent notice, an increase of 4.9% and 16%, respectively [4]. Policies became significantly longer, increasing from 2,145 words on average in 2016 to 3,603 words on average in May 2018 [4]. In addition, the use of GDPRrelated terms, such as complaint, data portability, or erasure, increased between 6 and 12% between January and May 2018. In comparison, our longitudinal approach allowed us to observe increases for the same terms, but finding larger increases (15-25%) if the period beyond May 2018 is taken into account. Even though some studies find improvements in readability of privacy policies after introduction of the GDPR, [5] conclude that privacy policies are still not understandable by the general public.

Machine-readable privacy policies
The Platform for Privacy Preferences (P3P) was introduced in 2001 as a W3C recommendation. P3P aimed at making privacy policies machine-readable, opening complex privacy policies to automated analysis and matching against user preferences. P3P relied on two components: the serverside component provides a policy following P3P's XML schema, and the user-side component retrieves and analyzes the policy, matches it against user preferences, and displays the result to the user. However, P3P was never mandated and as a result was never widely adopted [12]. In addition, many P3P policies were erroneous and seldom corrected or updated [12], and there were no mechanisms to ensure that the natural-language and P3P policy versions were equivalent, or that a website's actual practices conformed to the stated policy [13].
Standardized presentation of privacy policies has also been proposed. For example, a tabular presentation can significantly increase comprehension and usability [14]. However, in 2021 natural-language policies are still the norm and neither standardized presentations nor machine-readable policies have been adopted. The application of machine learning to label the contents of privacy policies may be a way to realize the intended benefits of P3P purely on the client-side. The first machine learning classifiers for privacy policies were based on support vector machines and hidden Markov models [15], presented together with the OPP-115 corpus of labeled privacy policies. Classifiers based on convolutional neural networks [6] and BERT models [16] improved the classification performance. These classifiers were used to build a user interface that maps privacy icons to policy statements [6] and to analyze GDPR-related changes in the policy landscape using queries that assess the specificity and compliance of privacy policies [2]. However, to the best of our knowledge, these classifiers have not yet been applied to analyze the content of privacy policies on a large scale.
Natural language processing (NLP) has been used to identify contradictory statements in privacy policies of mobile apps [17], where 14% of policies contained misleading statements, including redefinitions of common understandings of terms and conflicts between terms used in different privacy regulations. NLP was also used to study the flow-topolicy consistency of mobile apps and their privacy policies, showing that the behavior of 40% of apps was not consistent with the app's privacy policy [18].

METHODOLOGY
Our methodology for collecting and analyzing a longitudinal corpus of privacy policies consists of 4 steps: (1) crawling websites to find links to their privacy policies, (2) retrieving the policy texts, relying on the Wayback Machine to retrieve historical policy texts going back to 1996, (3) evaluating readability based on length, use of obfuscating words, passive-voice sentences, and readability formulas, and (4) evaluating the data practices described in policies using a hierarchy of machine learning classifiers.
We do not use the corpus published by [11], because their policy collection ended in 2019 and thus does not reflect the policy updates made after the CCPA came into effect. In addition, their corpus contains fewer unique policy texts per website than our corpus.
For all crawls, we use computers on our university campus between January 2020 and December 2021. In cases where access to privacy policies was filtered by our university firewall (e.g., for pornographic websites), we used supplementary crawls from a residential internet connection. We use the Wayback Machine to retrieve policies between 1996 and February 2020, and monthly live crawls between March 2020 and December 2021.

Selecting websites and dates to crawl
To select websites for our longitudinal analysis of privacy policies, we combine two approaches. First, we select sites from two recent versions of the Tranco list [19]. We use the Tranco list from 1 October 2019 1 and select the top 1,000 websites plus an additional 1,000 sites drawn uniformly at random from the top 1k to 10k. In addition, we select the top 1k sites from the Tranco list from 31 March 2021 2 .
Second, we add sites from the historical Alexa toplist for each year [20]: for 2010-2021, we use the top 1k sites of the Alexa top one million; between 2003 and 2009, we scrape the top 500 sites from the Alexa website as archived by the Wayback Machine; and for 2002, we use the top 100 sites from the archived Alexa website. This process resulted in a total of 4,997 sites.
For each site, we retrieve the list of available snapshots for the landing page using the Wayback Machine's CDX API. To pick up when a site's privacy policy moves to a new URL, we select one snapshot per year between 1996 and 2008, quarterly snapshots between 2009 and 2017, and monthly snapshots after that. In addition, we retrieve the category for each site from Alexa.

Finding privacy policy links
We use Firefox, automated with Selenium, to load the landing page snapshots and parse the HTML with BeautifulSoup 4 [21]. To locate links to privacy policies, we search through link titles and link URLs in reverse order. Because there is no standard naming scheme for privacy policy links, we search for each of the terms privacy polic, privacy, terms of service, web policies, cookie polic, data polic and legal. Across all snapshots, we found 27,329 privacy policy links.

Retrieving the policy text
To retrieve the privacy policy text, we identify available snapshots for each policy link using the Wayback Machine's CDX API and fetch one snapshot per month, as far back as available. For each snapshot, we load the link with Firefox/Selenium, scroll to the bottom, and save the resulting HTML. We follow HTTP redirects within the Wayback Machine. If a page has not loaded completely after two minutes, we trigger a timeout and extract the policy text from the partially loaded page. This often succeeds when the page was waiting for embedded resources. To extract the policy text from HTML pages, we use both Firefox's reader mode and the readability-lxml library to strip navigational elements, page headers, and page footers. We compare the length of both extracted texts and keep the longer of the two.
Some sites only display a short summary of the policy instead of the full policy when clicking on the landing page's privacy policy link. To catch these cases, we search for links within policies whose titles contain privacy or policy as well as full, entire, or complete, plus titles that contain privacy statement, privacy polic, privacy notice, or privacy, and add these links to our list.
In total, we fetched 1,068,683 documents as potential privacy policies, with 120,265 unique documents (an average of 39.1 policy instances and 4.4 unique policy texts per link).

Data cleaning
Because the readability formulas and machine learning classifiers we use are based on English text, we remove all non-English policies from our database. In particular, we use the PYCLD2 package [22] for language detection and remove all policies where English was not the language detected with highest confidence. In addition, we remove short policies with fewer than 100 words because they usually contain brief summaries or error messages, not policy text.
In addition, we implemented the classifier from [2] to identify which of the documents in our corpus are privacy policies. We trained the classifier with the same corpus of 1,000 privacy policies as [2], but used our own set of non-policy documents because theirs was not available. We trained three versions of the classifier with different sets of non-policy documents: (1) a selection of 1,000 landing pages from our crawls, (2) landing pages longer than 5,000 characters, and (3) a selection of 1,000 subsites crawled from the landing pages of the Tranco top 500 sites. When the non-policy corpus contains legal documents that are not privacy policies but use similar language (such as terms of service), the classifier performs well on the training data, but mis-classifies many true privacy policies. Therefore, we filter the non-policy corpus so that it does not include keywords expected in privacy policies (using the same list of keywords as above). We remove policy texts that have a low probability to be a privacy policy according to all three classifiers, using empirically determined thresholds of 0.9 for classifier (1), 0.6 for classifier (2), and 0.1 for classifier (3).
After filtering, our corpus contains 56,416 unique privacy policy texts. Figure 2 shows how many policy snapshots and unique policies were collected for each year. The peaks for unique policy texts in 2018 and 2020 (Figure 2b) show that the introductions of the GDPR and CCPA, respectively, caused many organizations to update their privacy policies.

Readability measures
We analyze the readability of privacy policies based on length, obfuscating terms, passive-voice sentences, and readability formulas.

Length
We measure length as the number of syllables, words, and sentences in a privacy policy. The length measure allows us to compare our results with prior work such as [2], [11]. We evaluate open source implementations for length measures in Appendix A.

Obfuscating words
The use of obfuscating words is a measure for language accessibility [23]. Obfuscating words, such as acceptable, significant, mainly, or predominantly make text harder to understand because they reduce the clarity of statements in a privacy policy. We have used the list of obfuscating adjectives and adverbs published in [23]. In particular, we preprocess both our policy texts and the list of obfuscating words with the gensim preprocessor [24], which strips punctuation and numbers, removes whitespace and stop words, converts text to lowercase, and applies the PorterStemmer algorithm [25]. We then count instances of obfuscating words in the policy text.

Passive-voice sentences
The use of passive-voice sentences can make text harder to understand because it makes it difficult to determine who is doing what. To detect passive-voice sentences we use the same pattern for the spaCy [26] pattern matcher as [2], i.e. we match a sequence of nominal subject (nsubjpass), auxiliary (aux), and passive auxiliary (auxpass).

Readability formulas
Readability formulas estimate the difficulty of texts, such as reading material for schools or health information. Many different formulas have been developed since the 1940s [27]. They generally combine a measure for sentence complexity with a measure for word complexity. Sentence complexity is most often measured as the average sentence length, i.e., the average number of words per sentence. Word complexity can be measured as the number of syllables per word, the number of characters per word, or the fraction of complex or difficult words.
We consider seven readability formulas with open source Python implementations. Next, we introduce these formulas and explain our selection of three: the Flesch Reading Ease (FRE), Coleman-Liau score (CL), and Simple Measure Of Gobbledygook (SMOG). In Appendix A, we evaluate the Python implementations and find that they have subtle differences in how they compute word and sentence complexity, which can significantly alter the resulting readability scores. It is therefore important to document the choice of readability library and version.
3.5.4.1 Syllables as word complexity measure: The Flesch Reading Ease (FRE) measures word complexity based on the average number of syllables in a word. FRE is perhaps the most commonly used readability formula. FRE scores are commonly between 0 and 100, although negative scores are possible for very difficult texts, and scores above 100 are possible for very easy texts. Scores above 60 are interpreted as plain English, while scores below 30 are best understood by university graduates. The Flesch-Kincaid Grade Level (FKG) uses the same components as the FRE, but because they are weighted differently the two scores are not comparable. FKG outputs a grade level, i.e. an indicator for how many years of education are needed to understand the text. From the readability formulas that use syllables as word complexity measure, we selected FRE for comparability with prior work [1], [23]. The Dale-Chall and Gunning-Fog formulas both count words that are defined as difficult or complex. Difficult words, according to the Dale-Chall score (DC), are words that are not known by 80% of fourth-graders. To make this notion more precise, the authors have published a list of 3000 familiar words, and difficult words are all those not on the list. It is important to note that the DC formula and word list have been updated in 1995, but the versions circulating on the Internet refer to the 1948 version 3 . In addition to the word list, DC has a list of rules that govern in which cases words should not be counted as difficult. For example, regular plurals and possessives of words on the word list are not counted as difficult, and neither are words with other regular word endings, e.g., -d or -ing. In addition, short numbers are not counted as difficult, and proper names and places are only counted once per 100-word sample. 3. We make our implementation of the 1995 DC word list available on request. DC = 0.1579 difficult words words × 100 +0.0496 words sentences The Gunning Fog (GF) formula uses the notion of a complex word. Complex words are generally words with three or more syllables. However, if a word is a proper noun, familiar jargon, or a compound word, it is not counted as complex. In addition, common suffixes such as -es, -ed, or -ing are not counted as a syllable. GF = 0.4 words sentences + 100 complex words words For both DC and GF, their additional rules make it difficult and computationally expensive to correctly implement the formulas. We selected SMOG because its word complexity measure can be implemented efficiently. 3.5.4.4 Calibration of readability formulas: It is important to note that these formulas do not have a common zero point because they were calibrated differently. The calibration of readability formulas is generally based on reading comprehension tests with human users. The participants read a text and are then given either a multiple-choice comprehension test or a test in which they have to fill in the blanks. The formulas are then calibrated to indicate the level of a reader who can answer a set percentage of questions correctly, e.g., 75% for Flesch or 100% for SMOG [27]. As a result, the formulas are not expected to report exactly equal estimates of the readability level; in fact, it is expected that SMOG consistently estimates higher grade levels than Flesch or Dale-Chall because its calibration assumes a higher level of text comprehension.

Classifying content of privacy policies
To evaluate which data practices are described in privacy policies, we follow Harkous et al. [6]. Specifically, we implement a hierarchy of classifiers so that the top-level classifier labels the topic, or category, of each segment of a privacy policy, and the lower-level classifiers label the attributes described in each segment.
For example, consider the segment: "As you navigate through and interact with our Website, we may use automatic data collection technologies to collect certain usage information about your equipment, browsing actions, and patterns, including: details of your visits to our Website, including traffic data, location data, logs, and other communication data and the resources that you access and use on the Website." This segment is labeled as First Party Collection/Use, and its 9 attribute-value pairs are Does/Does Not=Does, Collection Mode=Implicit, Action First-Party=Collect on website, Identifiability=Unspecified, Personal Information Type=Location and User online activities, Purpose=Unspecified, User Type=Unspecified, Choice Type=Unspecified, Choice Scope=Unspecified.
To train these classifiers, we rely on the OPP-115 corpus [15], which is a labeled collection of 115 privacy policy texts. Each privacy policy segment was labeled with one or more of ten top-level categories, and then further labeled with attribute-value pairs that represent its data practices in detail. Each policy in this corpus was annotated independently by three legal experts. The inter-rater consistency as measured by Fleiss' Kappa ranged between 0.91 and 0.49, depending on the top-level category.

Preprocessing
To prepare the OPP-115 corpus for training, we ensure consistent spelling of all attribute labels, in particular consistent use of upper-/lower-case (e.g., "User Profile" vs. "User profile"). We use the full set of annotations (i.e., the annotations folder), but apply majority vote consolidation [16], i.e., we only include labels if at least two annotators agree on the label. This is applied for top-level category labels as well as for attribute labels.
In addition, we restrict attribute labels to those reported in [6]. The omitted labels have very small support and would therefore be difficult to train correctly. Accordingly, restricting attribute labels improves the performance of our classifiers. The labels for all classifiers are one-hot encoded using a multi-label binarizer, that is, all policy segments can be assigned more than one label. For example, it is possible that a policy segment covers more than one top-level category, and that it describes several lower-level attributes.

Classifier training
We train one top-level classifier and 21 attribute-level classifiers using the fast-bert library [28], which is based on HuggingFace transformers [29]. We first fine-tune the bertbase-uncased language model using all unique policy texts in our corpus (4 epochs, batch size=8). Fine-tuning is a computationally expensive step (33 hours per epoch on our hardware), but improves classifier performance.
For the top-level classifier, we use the train-testvalidation split reported in [16], which is a random split with a 3:1:1 ratio using the majority-vote version of the OPP-115 dataset. We train the classifier for 100 epochs with a batch size of 8 using the train portion of the dataset. We use the validation portion of the dataset to evaluate the loss after each epoch. Table 1 shows the performance of our top-level classifier based on the test portion of the dataset in terms of F1 score, compared with prior work. The performance on average is slightly better than the fine-tuned BERT model reported in [16] (differences are due to the fine-tuning step, where we used a different corpus, and possible differences in the batch size and number of epochs). Our results are slightly worse than the results from [6] which may be due to differences in their train/test split and data augmentation process. Overall, the classifier performance is at about the same level as the inter-rater consistency reported for the OPP-115 dataset [15].
For the attribute-level classifiers, the train-test-validation split from [16] results in imbalanced splits where some attribute labels are missing from some splits. Therefore, we create a separate stratified 3:1:1 split for each attribute. Because we have multi-label data, we apply an algorithm for multi-label stratification instead of the default stratifiers in scikit-learn [30], [31]. We tune the number of training epochs by comparing training loss and validation loss and selecting the final epoch as the one just before the two losses start to diverge. Table 2 shows the macro F1 scores of all 21 attributelevel classifiers, compared with prior work. On average, our BERT classifiers outperform the CNN-based prior work by 10%. Detailed performance results for all attribute classifiers are in Appendix B.

Policy segmentation
To apply these classifiers to policy texts from our corpus, we have to split each policy into semantically coherent segments. We find that the list aggregation technique proposed in [6], which relies on HTML tags, does not work consistently on our policy corpus, in part due to our reliance on reader mode and readability-lxml. Instead, we use Graph-Seg [32] (relatedness threshold 0.25, minimal segment size 1). Instead of the default word embeddings in GraphSeg, we use custom word embeddings that are specific to the privacy policy domain. Specifically, we use an unsupervised fastText model (model type: skipgram, dimensions: 300, minimum word count: 5) based on our corpus of unique policy texts.

Policy content labeling
Before labeling the policy segments, we discard non-English segments. This step improves labeling results for policies that include several languages in one document. Then, we apply the top-level classifier to label the top-level category for each segment. Finally, for each attribute that is relevant for the labeled top-level category, we apply the corresponding attribute classifier. In addition to the predicted labels, we record the numeric prediction confidence (i.e., the output of the final sigmoid function).

READABILITY OF PRIVACY POLICIES
We now present the results of our evaluation of the readability and contents of privacy policies over the last two decades. Our corpus contains unique privacy policies from 2,181 sites. Figure 3 shows in which year a site first introduced their privacy policy, i.e., the first occurrence of a privacy policy for each site. The years with the largest number of new privacy policies are 2018 and 2020/21, which correspond to the introduction of the GDPR and CCPA. Figure 4 shows the monthly mean word and sentence counts for privacy policies since 1997. In this and the following figures, the dark shaded areas indicate the 95% confidence interval for the mean, while the light shaded area (if present) indicates the the area between the 25% and 75% quantiles, i.e., length of 50% of policies. The average policy length has almost doubled in the last ten years, with 2159 words in March 2011 and 4191 words in March 2021, and almost quadrupled since 2000 (1146 words). Policy length increased significantly around May 2018 when the GDPR came into force and around the beginning of 2020, when the CCPA came into force, albeit with small effect sizes (Welch's t-test for word counts in March and June 2018: p < 0.001, d = 0.18, for word counts in December 2019 and June 2020: p < 0.001, d = 0.08).

Word and sentence counts
We analyzed whether the length of a privacy policy depends on the rank of its website, based on the tranco rank from 20th July 2020 for all websites. We find that the rank   Figure 5 shows that the average sentence length in privacy policies increases roughly linearly with 0.2 words per sentence per year, except in the year of the GDPR introduction, where it increased by 0.7 words, from 26.3 words in 10/2017 to 27 words in 9/2018. Figure 7 shows how policy length has evolved for different categories of websites, as indicated by the secondlevel category reported by Alexa. We can see that the trend for each individual category is similar to the overall trend shown in Figure 4. For six categories, the average policy length in 2021 is significantly different (p < .001) from the overall average with at least a small effect size (d > 0.2): websites from the reference, science, and society categories are 900-1600 words shorter, while policies from the adult, shopping, and recreation categories are 900-2500 words longer.

Time to read
To put policy length into the context, we compute the time it would take to read each policy, assuming a reading speed of 250 words per minute [1], [3]. In 2021, the average privacy policy takes 17 minutes to read, the average top-10 policy takes 23 minutes, and the longest policy (Microsoft) takes 152 minutes. Assuming that each user visits 1462 unique websites each year [3], Figure 6 shows an estimate for the annual time spent for reading privacy policies. Compared with [3], our numbers for the year 2008 (190 hours) are slightly lower than what they report (244 hours), which is likely caused by  differences in the policy sample (top 75 websites from the AOL search log in [3], compared to policies from 996 sites for 2008 in our corpus). It is notable that the annual reading time in 2021 is more than 400 hours, i.e., more than one hour per day. Figure 8 shows the readability of privacy policies indicated by the Flesch Reading Ease, Coleman-Liau, and SMOG measures. More difficult texts have lower values for FRE and higher values for CL and SMOG. The CL and SMOG grade levels can be interpreted as the years of education needed to understand a text. All three measures indicate that privacy polices have become increasingly hard to read over the years. In 2021, 41.6% of policies had an FRE score below 30. This score indicates a very difficult text that is best understood by university graduates. The median FRE score for 2021 policies was 31.8. Only 6.7% of policies in 2021 had an FRE score above 45, which is the readability standard required for insurance policies in Florida [33].

Readability formulas
SMOG and CL estimate that the median policy in 2021 requires 16.7 and 13.4 years of education, respectively (the grade levels differ because formulas differ in variables and calibration). Between March 2018 and June 2020, across the introduction of both GDPR and CCPA, the SMOG grade level increased by 0.20, corresponding to two additional months of education needed to understand the new privacy policies (p < .001, d = 0.09).
To analyze whether some website categories have more readable policies than others, Figure 9 shows the FRE score for websites grouped by their Alexa category. The figure shows most categories follow the overall trend of decreasing readability, however, policies from adult, games, and science websites have become noticeably more readable in the last years. In 2021, four categories have significantly different FRE scores compared to the overall average, with at least a small effect size (p < .001 and d > 0.2): adult websites and websites for kids and teens have more readable policies (FRE 3-5 points higher than average), whereas reference and recreation websites have less readable policies (FRE 2-5 points lower than average). Figure 10 shows the average number of obfuscating words in privacy policies as well as the fraction of sentences that contain obfuscating words. We can see that the absolute number of obfuscating words increased steadily before 2018, but then increased rapidly from a median of 227 in March 2018 to 304 in June 2020 (p < .001, d = 0.385). In contrast, the fraction of sentences that contain obfuscating words continued its steady increase, indicating that the increase in the absolute number can be explained by the increased policy length post-GDPR. In 2021, more than two-thirds of sentences in privacy policies contained at least one obfuscating word (72%).

Passive-voice sentences
Passive-voice sentences are harder to understand than active-voice sentences and can obscure who the actor in a sentence is. In a privacy policy, this can indicate that companies do not want to take responsibility for their data practices [7]. Figure 11 shows the fraction of passive-voice sentences in privacy policies over the years. There is no significant increase over the years, and across the introduction of the CCPA the fraction of passive-voice sentences even decreased by 0.5%. natural language text overrides the machine-readable policy. As of 2021, only 0.3% of policies mention P3P.

Common terms
The Do Not Track (DNT) HTTP header was proposed in 2009, but discontinued in 2018. Beginning in 2014, privacy policies have increasingly mentioned DNT, with almost 32% of policies mentioning DNT in 2021. However, as with P3P, almost all policies state that they do not honor DNT (see also Section 5). Figure 13 shows how many privacy policies were updated each month, measured as a change in at least one sentence. Between 2005 and 2017, roughly 20% of sites update their policy every month. In the second half of 2017, the fraction of updated policies dropped slightly, most likely because websites were aware that the GDPR would come into force in 2018, but did not know yet how to update their privacy policies. In May 2018, websites were forced to react because the GDPR came into effect, and more than 40% of policies were updated in mid-2018. A similar effect is observable with the introduction of the CCPA in 2020.

Policy length
To further analyze the effect of the introduction of the GDPR and CCPA on the length and readability of privacy policies, we split our policy corpus into those URLs whose policies mention the GDPR or CCPA, and those URLs that do not. Figure 14 shows that the length of policies that end up mentioning the CCPA increases significantly by 1104 words between December 2019 and June 2020 (p < .001, d = 0.27), whereas policies that do not mention the CCPA become 164 words shorter (not statistically significant, p = 0.0197, d = 0.061). In addition, the rate of increase is higher for policies that mention the CCPA. Similarly, policies mentioning the GDPR increased by 928 words between March and June 2018 (p < .001, d = 0.28), compared to 159 words for policies that do not mention the GDPR (not statistically significant, p = 0.00596, d = 0.07, see Figure 15). In addition, the rate of increase post-GDPR is also higher for policies that mention the GDPR. Possible reasons for this increase in length are that policies needed to add text that addresses the requirements of each regulation (see below), and that policies have used lengthy legalistic language from each regulation's text to ensure compliance. Figure 16 compares the readability of policies that end up mentioning the CCPA with those that do not mention it (Figure 17 for GDPR). The introduction of the CCPA pushed the average Flesch Reading Ease down by 1.7 points (p < .001, d = 0.21), below the threshold of 30 points. This means that understanding the average privacy policy that mentions the CCPA requires a university degree. As a result, half the US population 4 does not have the necessary education to understand the privacy policies that apply to them.

Use of key terms
To evaluate how the content of privacy policies changed with the introductions of the GDPR and CCPA and the court rulings concerning Safe Harbor and Privacy Shield, Figure 18 shows the fraction of policies that mention eight key terms. Five GDPR terms concerning user rights -data protection officer, complaint, erasure, rectification, and data portability [4] -each increase in mentions by 10-20% in mid-2018, with an additional 5-10% increase in early 2020. Mentions of legitimate interest increased even more (+25%), which indicates that website owners are attempting to find new legal bases to justify their data practices. 4     The final two terms, adequacy decision and standard contract clauses, describe two mechanisms that can justify transatlantic data transfers after the invalidation of Privacy Shield. An adequacy decision, made by the European Commission, means that a non-EU country offers adequate data protection levels [35]. Standard contract clauses are standard texts, published by the EU, that non-EU data processors can use to ensure adequate data protection levels for their EU users [36]. However, Figure 18 shows only a small increase   in mentions of these terms. This may be caused by our text-matching method, but it may also indicate that website owners refrain from transatlantic data transfers, for example through the use of EU cloud services, that they rely on GDPR article 49 (explicit informed consent), or that they are in breach of European data protection regulations.

CONTENT OF PRIVACY POLICIES
To analyze the semantic content of privacy policies, we are interested in how many policies each year address each   privacy practice, and in what way, e.g., whether they assert collection or sharing of a specific information type. To this end, we label each privacy policy segment with the top-level category classifier and with each attribute classifier that is relevant to its category labels. We then eliminate segments with duplicate labels, i.e., we remove segments that belong to the same unique policy if they have the same labels, regardless of the segment text or the policy's timestamp. To analyze top-level categories, we retain only the first mention of each category per policy, at its earliest instance. In addition, we exclude categories and attributes for which the classifiers did not perform well. Specifically, we retain only labels that have a precision of at least 75%. This ensures that the predicted labels are most likely correct (low false positives), while accepting the possibility that the classifiers miss some labels (low recall corresponding to high false negatives). As a result, the reported results may underestimate the true prevalence of privacy practices in privacy policies. Specifically, for top-level categories, we exclude the data retention and practice not covered categories. For attribute classifiers, we exclude a total of nine labels across the 21 classifiers (marked with an asterisk in Appendix B).
In the subsequent figures, we present the fraction of policies labeled with specific attributes or combinations of attributes as bar plots, where each bar represents policies from one year. The height of each bar indicates the fraction of policies for which the classifier's confidence was above  0.5 (where combinations of attributes are plotted, both confidences are above 0.5). We compute 95% prediction intervals for all results, shown as grey error bars. Our calculation of prediction intervals relies on the insight that the number of policies with a given label is a random variable with a Poisson Binomial probability distribution [37]. The number of policies corresponds to the mean of this distribution, and our prediction intervals are computed based on the 0.975 and 0.025 quantiles. Importantly, this approach takes into account all estimated probabilities, not just the ones above the classification threshold of 0.5 [38]. Figure 19 shows the fraction of policies that address each data practice over the past 25 years. Overall, privacy policies address more data practices each year, i.e., they have become more comprehensive. Starting in 2018, however, there is a slight decline for some data practices, including statements about data security and policy change. Almost all policies  contain introductory/generic statements which we disregard in the remainder of the analysis. In 2021, first-party collection and use is the most commonly addressed data practice (94% of privacy policies), followed by third-party sharing and collection (93%). However, from a regulatory viewpoint many privacy policies are still lacking: only 67% of policies explain users' access, edit, and deletion rights, and only 71% give contact details for privacy-related queries (both required by the GDPR). The do not track header is mentioned in 20% of policies, which all assert that they do not respect the header. Figure 20 shows which personal information types are mentioned in privacy policies, split by first-or third-party data collection and by whether the policy does or does not assert the data collection. In most cases, especially for first-party collection, the policies assert that data is indeed collected. For third-party collection, assertions of noncollection are more frequent, most notably for sharing of generic personal information with third parties, where 21% of 2021 polices state that data is not collected. However, many more policies (51%) assert third-party sharing of generic personal information.
In the remainder of this section, we present results for specific data practices, filtering the results to only include policy statements that assert data collection.

First-party data collection/use
The most salient attributes for first-party data collection/use are the collection mode, purpose, personal information types, choice and controls offered to users, and identifiability of collected data.

Collection mode vs. personal information type, purpose, and choice/control
The collection mode describes whether information is explicitly provided by the user (e.g., data entered in a form), or collected implicitly, e.g., in the background, possibly without the user's knowledge. Figure 21a shows personal information types by collection mode. Generic personal information and contact data is most often collected explicitly, whereas cookies and tracking data, data about user online activities, and device identifiers (computer information, IP address and device IDs) are mostly collected implicitly. 29% of 2021 policies assert that they implicitly record user online activities. Location data is collected implicitly at almost triple the rate than explicitly (8% vs. 3% in 2021), which is concerning due to the steep rise in location data collection and the sensitivity of location data. Figure 21b shows the the purpose of data collection by collection mode. Explicitly collected data is most often used for basic service features (e.g., logins), whereas implicitly collected data is used most for analytics, advertising, and personalization. Over time, the use of explicit collection for advertising, analytics, or marketing shows a steady decrease, with a corresponding increase in implicit collection. Figure 21c shows the types of choice and control mechanisms offered to users for each collection mode. For explicitly collected data, the rate at which opt-ins are offered has decreased over the last decade. In 2021, opt-ins are offered at almost the same rate as the "choice" to stop using the service or feature. For implicitly collected data, most policies leave user choices unspecified. Opt-ins are offered less frequently than asking users to rely on their browser's privacy controls or to stop using the service. Figure 21d shows that implicitly collected data is more often aggregated or anonymized than explicitly collected data. This is positive because it shows an effort to protect data that may have been collected without the user's knowledge. However, because anonymizing data is notoriously difficult, most websites are likely to use simple aggregation. In addition, many policy segments leave the identifiability of collected data unspecified, with a high rate especially for implicit collection. This indicates that policies are often vague. Figure 22 shows the purpose of data collection, by identifiability of the data. Aggregated or anonymized data is most commonly used for analytics, followed by advertising. Identifiable data is used to provide basic service features, but also for analytics, advertising, marketing, and service operation. However, it is concerning that the number of data collection purposes where identifiability is left unspecified is similar to the other two groups. Over the years, an increasing number of policies asserts data collection for analytics, advertising, service provision, and service operation. The first two purposes reflect web business models driven by advertising revenue, but the last two may indicate an increasing use of legitimate interest as a lawful basis for data processing instead of user consent, as for example allowed by the GDPR [5]. Figure 23 shows the personal information types collected by first parties, depending on the purpose of the data collection (personal information types with very low occurrence rates have been omitted). Analytics and advertising are the most common purposes for several personal information types: computer information, cookies, generic personal information, IP addresses, and user online activities. Demographic data, financial data, and location data are used for almost all purposes at relatively low rates. However, while the collection rates of demographic and financial data have remained stable over the years, location data is collected at an increasing rate. This indicates that pervasive collection of user locations and the associated profiling may become a major concern in the near future.   Figure 24 shows the personal information types collected by first-and third-parties, by identifiability of collected data. In most cases, policies assert collection of more personal information types for first-party collection than for third-party sharing, with the exception of generic personal information, which is shared with third parties more often than it is used by first parties, regardless of identifiability. Even though the percentage of policies sharing identifiable PI with third parties has decreased since 2009 (from 61% to 48%), this is partially compensated by an increase in policies that do not specify identifiability (from 42% to 45%). Instead of hinting at a reduction in data sharing, this finding therefore suggests that policies are becoming more vague. Figure 25 shows which types of third-party entities are mentioned in privacy policies. Over the last decade, there was an increase in named third parties, which is slightly positive. However, named third parties include categorized third parties that are not identified by name, such as advertisers.

Third-party entity
In addition, the majority of third parties is unnamed.  Figure 26 compares the purposes of data collection for firstand third-parties. Overall, slightly fewer purposes are given for third-party sharing, however, some purposes are more prevalent for third-party than first-party collection, including advertising and legal requirements. For both first and third parties, data collection for advertising and analytics has decreased slightly post-GDPR, but in both cases collection rates are still much higher than ten years ago. In 2021, 73% of policies include a statement about policy change. Of these, 34% state that changes will be announced by a notice in the privacy policy, 37% will post a notice on the website, and 22% will send a personal notice (the remaining policies leave the notification type unspecified). As a result, most users are unlikely to become aware of changes in privacy policies. In addition, users are offered almost no meaningful choice when policies change. Of the policies that notify the user of changes, only 12% offer a new opt-in, whereas 34% give no choice and 54% leave it unspecified. Figure 28 shows the personal information types for which users are offered choice/control mechanisms in general statements. General choice/control mechanisms are offered most frequently for cookies and tracking elements, but generally at a lower rate than for specific first-or third-party data collection. In addition, the choices regarding cookies are insufficient to protect users from all tracking because choice or control mechanisms are rarely offered for computer information, device identifiers, and personal identifiers, which allow tracking users via fingerprinting [39]. Figure 29 shows the scope of data for which privacy policies offer access, edit, and deletion rights to users. User access is mostly offered for account data, i.e., data explicitly specified by users, but very rarely for profile data which is collected implicitly. Figure 30 shows the audience types that are singled-out in privacy policies. Children are most frequently mentioned, due to longstanding legislation in many countries that require differential treatment of minors. There was a 20% increase in mention of Europeans (from 37% to 56%) after the introduction of the GDPR, and a similar 20% increase in mention of Californians (from 34% to 54%) after the introduction of the CCPA. This indicates an increasing tailoring of privacy policies to specific audiences, and it may mean other audiences do not benefit from the increased protections afforded to Europeans and Californians with the respective regulations. Figure 31 shows the security measures mentioned in privacy policies. Most policies mention data access limitations and generic security measures without giving specific details. Post-GDPR, mentions of privacy/security programs and secure data transfer have decreased, whereas mentions of generic security measures have increased. This again indicates that policies are becoming more vague.

LIMITATIONS
We have presented a large-scale, longitudinal study of the readability and contents of privacy policies. A major but common limitation of our study is our focus on Englishlanguage policies. To lift this limitation in a future study, we would need valid readability formulas as well as a labeled corpus of privacy policies for each target language. The Flesch Reading Ease formula has already been adapted to other Indo-European and Slavic languages, but this may be a challenge for, e.g., Asian languages.

Retrieval of privacy policies
We focus on a longitudinal evaluation of privacy policies and rely on the Internet Archive's Wayback Machine because it is commonly seen as the most complete and reliable source of archived Internet sources [20], [40]. However, if a site is not archived by the Wayback Machine, we do not have its historical privacy policies available for analysis. Sites can be excluded from the Wayback Machine for different reasons, including a restriction in the robots.txt file. Our crawler is sensitive to variations in how websites link to their privacy policies. Even though we attempt to find privacy policy content under various names, the process can fail if websites are creative in how they name their links and link titles. For example, if the link title is here (as in "read our privacy policy here"), and the URL includes the word "policy" but not "privacy", the crawler fails to find the policy. This limitation could be lifted by adding privacy policy links manually, as was done in [4]. In addition, the crawler fails for some cases of regional differentiation, where the website asks the user to select a language before  showing the privacy policy. If the names and titles of policy links correspond to the chosen language ("English") instead of indicating presence of a privacy policy, the crawler fails to find the policy. Finally, some websites choose to make their privacy policies available as a PDF download only. Our crawler detects these links and downloads the policy, but is not able to analyze the binary file.

Content evaluation
Our use of machine learning to segment and label the contents of privacy policies introduces limitations related    to training data, segmentation, and classifier accuracy. The OPP-115 corpus was published in 2016 and is based on privacy policies from that time. It is not clear whether classifiers trained based on this data are applicable to a longitudinal policy corpus from 1996 to 2021. For example, new regulations may have introduced new terms or new ways of phrasing data practices which are not present in the training data. In addition, the corpus only consists of 115 policies and as a result some data practices, e.g., in the data retention or do not track categories, occur infrequently. This makes it difficult to train accurate classifiers.
The policy segments created by GraphSeg are sometimes longer than segments we would have created manually. This may negatively influence labeling accuracy.

CONCLUSION
In this paper, we have presented a longitudinal corpus of over 50,000 privacy policies from 1996 to 2021 and analyzed the policies in terms of their length, readability, and content. We found evidence for increasing policy bloat and decreasing readability, in particular after the introduction of recent privacy regulations. In addition, we found concerning developments in the data practices described in policies, such as increased collection and sharing of sensitive data and lack of choice.
It is especially concerning that these data practices are obscured in lengthy policies that require university education to understand, and that would take users more than one hour per day to read. Websites have shown that they can adopt standards for machine-readable formats quickly. For example, the ads.txt standard has reached 60% adoption rate within two years [41]. It is therefore not unreasonable to expect that privacy policies could be treated similarly. However, as the lack of adoption of P3P and the lack of respect for the DNT header show, it does not appear to be in the industry's interest to respect user privacy. The quantitative evidence presented in this paper shows that privacy policies are a mechanism that fails users and serves website owners.
As a result, we believe that three different approaches may together form a way forward: first, technical measures on the user-side that automatically classify privacy practices, match them against user preferences, and block unwanted data collection-in essence realizing P3P on the client-side; second, regulatory measures that mandate specific formats and locations for privacy policies and respect for specific privacy standards such as DNT; and third, measurement approaches that verify compliance of policies with actual data flows, e.g., building on work on flow-topolicy consistency [18].

MENTATIONS
In our initial data analysis, we observed inconsistencies between readability values computed by different implementations, for example differences in ranking the readability of policy texts. We therefore evaluated five open source Python implementations of readability formulas, some of which have been used in prior work [11], [23]: textstat (TS) 5 , spacy readability (SR) 6 , py-readability-metrics (PR) 7 , readability (AV) 8 , and readability-score (WM) 9 . Table 3 summarizes how the five libraries compute the input values to readability formulas: the numbers of words, sentences, syllables, characters, complex words, difficult words, and polysyllabic words. The last line, denoted SR*, shows changes we made to the SR library.

A.1 Evaluation against ground truth
We first evaluate these libraries against a corpus of text passages with known ground-truth values. We construct our corpus based on four sources. First, we use short excerpts from privacy policies and manually count their characters, words, syllables, polysyllabic words, and sentences. Second, we use published text samples with ground-truth counts 5. https://pypi.org/project/textstat/ 6. https://pypi.org/project/spacy-readability/ 7. https://pypi.org/project/py-readability-metrics/ 8. https://pypi.org/project/readability/ 9. https://github.com/wimmuskee/readability-score for words, sentences, and difficult words as well as Dale-Chall scores, based on the 1995 word list and formula [42]. Third, we use published text samples with groundtruth readability scores for DC, FRE, FKG, GF, and SMOG [43]. We augmented these samples with a manual count of words and sentences. Fourth, we use text samples from [27] and add manual counts of words, sentences, syllables, polysyllabic words, and characters. All manual counts for words and characters were verified against counts from LibreOffice. In total, our corpus consists of 70 text passages.
We omit the Gunning-Fog formula from this evaluation because it was only implemented in three of the libraries, and because we could not obtain samples with ground truth values from the literature. Figure 32 shows by how many percent each readability implementation deviates from the true counts of words, sentences, syllables, characters, difficult words, and polysyllabic words, on all 70 text samples. It is clear that the differences in counting methods described in Table 3 lead to differences in how much each count deviates from the true count. The deviation in word count in SR is caused by SR failing to remove some empty tokens from the count. After fixing this bug in SR*, the median count equals the true count. The deviation in sentence counts is caused by differences in how partial sentences, such as headings, are counted. The best implementations use the NLTK sentence tokenizer and under-count about 15% of sentences (those between the 10% and 25% percentiles) by less than 10%, while the spaCy tokenizer over-counts 25% of sentences by less than 10%, and 15% of sentences by around 10%. For this reason, we chose the NLTK tokenizer in our improved SR* implementation. For syllable counts, the counts produced by syllapy (SR and SR*) are very close to true counts. The pyphen and vowel counting methods have larger variation in our corpus, and on average produce counts that are further from the true count. The character counts are quite accurate, with all medians within 2% of the true count. For SR*, we have improved the count in SR by filtering whitespace characters.
The deviations in the number of difficult words are the largest, on average, of all the counts. There are two main reasons for this. First, all five libraries use the outdated 1945 version of the Dale-Chall word list, while the ground truth in our corpus is based on the 1995 version. Second, none of the five libraries take into account the detailed rules for classifying words as difficult that accompany the word list, whereas we have implemented most of these additional rules in SR*.
Finally, all implementations slightly under-count the number of polysyllabic words, with the exception of SR, which massively over-counts polysyllabic words because it counts the total number of syllables in polysyllabic words instead of the number of words. Figure 33 shows the effect these deviations in counts have on readability values. We compute readability scores for all measures that we have ground truth values for (FRE, FKG, and SMOG), but omit Dale-Chall due to its steep computation requirement. Figure 33 shows that our improved implementation SR* is very close to the true values for all three measures. We also observe that PR is close to true values. The other libraries-AV, WM, SR, and TS-have similar deviation patterns for FRE and FKG, overestimating the median FRE score by more than 5% and underestimating the median FKG by 5%.

A.2 Evaluation of ranking consistency
Our evaluation has shown that the numeric values for readability measures differ between implementations. This may not be a problem in itself, if the implementations are consistent in the relative ranks of different texts, i.e., if they can reliably indicate which texts are relatively more readable than others. To evaluate this ranking consistency, Figure 34 shows the Spearman rank-correlation coefficients for three readability measures, each comparing the six implementations, based on 1,500 privacy policies from our corpus. The figure shows that correlations vary between the three readability measures, but in most cases there is substantial disagreement between the implementations. The only exceptions are PR and SR*, which produce nearly identical ranks. These are the same two implementations whose numeric readability values were close to the ground truth values. As a result, PR and SR* can be recommended to evaluate readability.
To evaluate to what extent the different readability measures are consistent with each other, Figure 35 shows the Spearman rank-correlation coefficient for readability values generated by our SR* implementation. We can see that most readability measures rank texts in a similar way, except for FKG which (as expected) ranks them inversely, and CL. The low correlation with CL is most likely because most readability measures are computed based on sentence length, whereas CL uses inverse sentence length.

A.3 Evaluation of computation efficiency
Aside from consistency between implementations and between readability measures, efficient computation is important when applying readability measures to large amounts of text (as in our case). The Dale-Chall score in particular requires the identification of proper names and places, for which we have used the spaCy entity type recognition, which comes at a cost in terms of computation time. Table 4 shows the computation times for the DC score. Our implementation is orders of magnitude slower than the others, but, according to Figure 32e, the most accurate. For this reason, we have excluded the DC score from our study.

A.4 Concluding remarks on selection of readability formulas and implementations
Our evaluation of readability formulas shows that implementations often make subtle mistakes in counting sentences, words, and characters, which can alter the intended semantics of the readability measure. In addition, not all concepts used in readability formulas can be implemented efficiently, for example the recognition of proper names and places, and the recognition of complex or difficult words. Finally, readability formulas that rely on a word list (such as Dale-Chall) are inconvenient because their exceptions and rules are computationally expensive to implement. Due to the ever-changing nature of human language, they also require up-to-date word lists to produce accurate estimates of readability.
Based on our evaluation, we have selected three readability measures for our study of privacy policies, one based on syllables (FRE), one based on characters (CL), and one based on word complexity (SMOG). We prefer FRE over FKG to improve comparability with prior work such as [1], [23]. We select CL instead of ARI because CL correlates least with FRE and because its sentence complexity measure is the inverse of the others. We select SMOG over GF and DC because SMOG is the only measure that uses a computationally efficient measure of sentence complexity, i.e., polysyllabic words per sentence instead of complex or difficult words per sentence. We do not select GF because determining which words are complex according to the GF definition is not feasible and based on heuristics that may not hold for privacy policies. We do not select DC because of weaknesses in its word-list based approach and its computational complexity.  Tables 5 to 25 show classification results for attribute-level classifiers. Labels marked with an asterisk have been excluded from the analysis due to their low precision.