Research Methodology
How Statistics Are Generated on This Site
Every statistic on MyAnagramSolver is computed programmatically from the live 74,872-word database. No estimates. No third-party data. Implementation fingerprint: 916f47949b41. All figures are reproducible.
Core Principle — Implementation-First Statistics
Every statistic published on this site is derived directly from the word database that powers the live tools. The same wordlist.js file loaded by the anagram solver is analysed by a Python script to produce all published figures. There is no separate "research database" and no editorial adjustment of computed results. If the database says 7,022 words end in -ED, the published figure is 7,022. If a recount produces a different number, the published figure is updated.
This approach has one significant advantage over manually-researched statistics: every figure is verifiable. A reader who downloads wordlist.js and runs a Python endsWith() count will arrive at the same number. The implementation fingerprint (916f47949b41) identifies the exact database version so that comparisons across different computation runs are meaningful.
It has one limitation: the statistics describe this database, not English language in general. A word that appears in TWL but not in everyday usage contributes equally to frequency counts as a common word. Word-list frequency and corpus frequency (weighted by actual text occurrence) differ substantially. Where this distinction matters for interpretation, it is documented in the limitations section of each research page.
Database Composition — Three Source Word Lists
Computation Methods — Algorithm by Statistic Type
Prefix counts: Python str.startswith(prefix) on every lowercase word. Minimum word length enforced at prefix_length + 2 to exclude the prefix itself and trivial extensions. Count = number of qualifying matches.
Suffix counts: Python str.endswith(suffix) on every lowercase word. Same minimum-length guard. Count = number of qualifying matches.
Letter frequency: Character-by-character iteration over every word. Each alphabetic character incremented in a counter. Total character count = 606,880. Percentage = (letter_count / 606,880) × 100. Rounded to 2 decimal places.
Anagram families: Each word's letters are sorted alphabetically to create a canonical key. Python Counter groups words by canonical key. Family size = number of words sharing the same key. The largest family is the mode of this distribution.
Scrabble scoring: Letter values from the standard North American Scrabble tile set (A=1, B=3, C=3, D=2, E=1, F=4, G=2, H=4, I=1, J=8, K=5, L=1, M=3, N=1, O=1, P=3, Q=10, R=1, S=1, T=1, U=1, V=4, W=4, X=8, Y=4, Z=10). Sum of all letter values = word's base score. No board multipliers applied.
Word length distribution: Python len() applied to every word. Results grouped by length. Count and percentage computed per length group.
Implementation Fingerprint — Version Identification
The implementation fingerprint is a short hexadecimal hash derived from the word database content. The current fingerprint is 916f47949b41. Every statistics page on this site displays this fingerprint and a generation date. If a statistic was published with fingerprint 916f47949b41 and you compute the same statistic from the same database version, the results will match.
When the database is updated (new words added, corrections made), the fingerprint changes. All statistics pages are regenerated from the new database, and the new fingerprint is published alongside updated generation dates. This ensures no stale statistics persist after a database update.
Known Limitations
Scrabble-weighted vocabulary: The database over-represents medium-to-long Scrabble-valid words compared to everyday English usage. Frequency statistics reflect which letters appear most in Scrabble vocabulary, which differs from which letters appear most in common spoken or written English.
Vocabulary frequency vs corpus frequency: Statistics count each word once regardless of how often it appears in actual text. In a corpus-frequency model, THE would dominate. In this vocabulary-frequency model, THE is one word among 74,872. This distinction matters for letter frequency interpretation: T, H, E frequencies here reflect their presence across diverse vocabulary, not their prevalence in running text.
Accented characters: The database contains a small number of words with accented characters (é, ü, ñ, and others). These represent under 200 occurrences across 606,880 total character positions — under 0.03%. They are excluded from the standard 26-letter frequency tables to avoid confusion, but are present in the raw database.
Proper nouns and abbreviations: Some proper nouns (place names, personal names) and abbreviations (BBQ, IQ, FAQ) appear in the database because they are valid in one or more of the source word lists. They contribute to statistics like Q-without-U word counts and letter frequency. This is documented where relevant.
Quality Control — Preventing Errors
Statistics pages are validated against two checks before publication. First, all counts are cross-checked by running alternative Python implementations of the same computation — for example, suffix counts are verified by both a str.endswith() loop and a regex-based count, and both must produce identical results. Second, a sample of results is manually verified: for the prefix count of RE-, a random sample of 50 words from the 2,486 results is checked to confirm that each actually starts with RE- and has the required minimum length. Discrepancies between methods or failed manual checks cause the full computation to be repeated before publication.
The computation script itself is version-controlled alongside the word database. Any change to the computation methodology (new algorithm, changed threshold, different normalisation) is documented by a change in the script version. Published statistics always reference both the implementation fingerprint (identifying the database version) and the script used for computation, so that future readers can understand exactly what was computed and how.