SEO Content Analyzer
Check word count, readability, and keyword density instantly.
Words
0
Characters
0
Read Time
0m
function runSEOAnalysis(text) {
var resultsDiv = document.getElementById('seoResults');
var words = text.trim() ? text.trim().split(/\s+/).length : 0;
var chars = text.length;
var readTime = Math.ceil(words / 225);
document.getElementById('statWords').innerText = words;
document.getElementById('statChars').innerText = chars;
document.getElementById('statTime').innerText = readTime + 'm';
// Keyword Density Logic
var cleanText = text.toLowerCase().replace(/[^\w\s]/g, ");
var wordArr = cleanText.split(/\s+/);
var freqMap = {};
var stopwords = ['the', 'and', 'for', 'with', 'that', 'this', 'from', 'your', 'have', 'was', 'are', 'not', 'but'];
for (var i = 0; i 3 && stopwords.indexOf(w) === -1) {
freqMap[w] = (freqMap[w] || 0) + 1;
}
}
var sortedKeys = Object.keys(freqMap).sort(function(a, b) {
return freqMap[b] – freqMap[a];
});
var densityHtml = ";
var limit = Math.min(5, sortedKeys.length);
for (var j = 0; j < limit; j++) {
var key = sortedKeys[j];
var percentage = ((freqMap[key] / words) * 100).toFixed(1);
densityHtml += '
' + key + '' + freqMap[key] + ' (' + percentage + '%)
';
}
document.getElementById('keywordList').innerHTML = densityHtml || 'No keywords identified.';
resultsDiv.style.display = 'block';
}