readability-kit
v1.0.0
Published
Readability analysis using Flesch-Kincaid, Gunning Fog, SMOG, and Coleman-Liau — works on text strings and DOM content
Maintainers
Readme
readability-score
Zero-dependency readability analysis for JavaScript. Supports 5 algorithms, works on plain text strings and DOM elements.
Algorithms
| Algorithm | Best For | Output | |---|---|---| | Flesch Reading Ease | General content | 0–100 (higher = easier) | | Flesch-Kincaid Grade | Educational materials | US Grade level | | Gunning Fog | Business/journalism | Years of education | | SMOG Index | Healthcare content | US Grade level | | Coleman-Liau | Digital/web content | US Grade level |
Installation
npm install readability-scoreUsage
Analyze text
import { ReadabilityAnalyzer } from 'readability-score';
const analyzer = new ReadabilityAnalyzer();
const result = analyzer.analyze("Your text goes here...");
console.log(result.consensus);
// { averageScore: 8.2, label: 'Standard', audience: 'High school', summary: '...' }
console.log(result.scores.fleschEase);
// { algorithm: 'Flesch Reading Ease', score: 65.2, gradeLevel: '8th-9th grade', label: 'Standard', audience: 'Age 13-15', interpretation: '...' }Analyze a DOM element
const result = analyzer.analyzeDOM('#article');
const result = analyzer.analyzeDOM(document.querySelector('main'));Run specific algorithms only
const result = analyzer.analyze(text, ['fleschEase', 'gunningFog']);Quick single-score methods
analyzer.fleschEase(text) // → { score, label, gradeLevel, audience, interpretation }
analyzer.fleschKincaid(text)
analyzer.gunningFog(text)
analyzer.smog(text)
analyzer.colemanLiau(text)Individual algorithm imports (tree-shakeable)
import { fleschReadingEase, parseText } from 'readability-score';
const metrics = parseText("Your text here...");
const result = fleschReadingEase(metrics);Result Structure
{
metrics: {
wordCount: 120,
sentenceCount: 8,
syllableCount: 180,
complexWordCount: 12,
characterCount: 520,
avgWordsPerSentence: 15,
avgSyllablesPerWord: 1.5,
},
scores: {
fleschEase: { algorithm, score, gradeLevel, label, audience, interpretation },
fleschKincaid: { ... },
gunningFog: { ... },
smog: { ... },
colemanLiau: { ... },
},
consensus: {
averageScore: 9.1,
label: 'Standard',
audience: 'High school',
summary: 'Overall: Standard (avg score 9.1). Best suited for High school.',
}
}Labels
| Label | Audience | |---|---| | Very Easy | Elementary school / Age 10 and under | | Easy | Middle school / Age 11-12 | | Fairly Easy | Age 12-13 | | Standard | High school / Age 13-15 | | Fairly Difficult | Age 15-17 | | Difficult | College level | | Very Difficult | Post-graduate |
License
MIT
