Information Density Analyzer: Is Your Content Dense Enough for AI?

AI-generated featured image for: Information Density Analyzer: Is Your Content Dense Enough for AI?
Tygart Media / The Signal
Broadcast Live
Filed by Will Tygart Tacoma, WA Industry Bulletin

AI systems select sources based on information density — the ratio of unique, verifiable claims to filler text. Most content fails this test. We found that 16 AI models unanimously agree on what makes content worth citing, and it comes down to density.

This tool analyzes your text in real-time and produces 8 metrics including unique concepts per 100 words, claim density, filler ratio, and actionable insight score. It also generates a paragraph-by-paragraph heatmap showing exactly where your content is dense and where it’s fluff.

Paste your article text below and see how your content measures up against AI-citable benchmarks.

Information Density Analyzer: Is Your Content Dense Enough for AI? * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, ‘Helvetica Neue’, Arial, sans-serif; background: linear-gradient(135deg, #0f172a 0%, #1a2551 100%); color: #e5e7eb; min-height: 100vh; padding: 20px; } .container { max-width: 1200px; margin: 0 auto; } header { text-align: center; margin-bottom: 40px; animation: slideDown 0.6s ease-out; } h1 { font-size: 2.5rem; background: linear-gradient(135deg, #3b82f6, #10b981); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 10px; font-weight: 700; } .subtitle { font-size: 1.1rem; color: #9ca3af; } .input-section { background: rgba(15, 23, 42, 0.8); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 12px; padding: 40px; margin-bottom: 30px; backdrop-filter: blur(10px); animation: fadeIn 0.8s ease-out; } .textarea-group { margin-bottom: 20px; } .textarea-label { display: block; margin-bottom: 12px; font-weight: 600; font-size: 1.05rem; color: #e5e7eb; } textarea { width: 100%; min-height: 250px; padding: 15px; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 8px; color: #e5e7eb; font-family: inherit; font-size: 0.95rem; resize: vertical; transition: all 0.3s ease; } textarea:focus { outline: none; border-color: rgba(59, 130, 246, 0.5); background: rgba(59, 130, 246, 0.05); } .button-group { display: flex; gap: 15px; margin-top: 20px; flex-wrap: wrap; } button { padding: 12px 30px; border: none; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; font-size: 1rem; } .btn-primary { background: linear-gradient(135deg, #3b82f6, #2563eb); color: white; flex: 1; min-width: 200px; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 20px rgba(59, 130, 246, 0.3); } .btn-secondary { background: rgba(59, 130, 246, 0.1); color: #3b82f6; border: 1px solid rgba(59, 130, 246, 0.3); } .btn-secondary:hover { background: rgba(59, 130, 246, 0.2); transform: translateY(-2px); } .results-section { display: none; animation: fadeIn 0.8s ease-out; } .results-section.visible { display: block; } .content-section { background: rgba(15, 23, 42, 0.8); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 12px; padding: 40px; margin-bottom: 30px; backdrop-filter: blur(10px); } .density-score { text-align: center; margin-bottom: 40px; padding: 40px; background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(16, 185, 129, 0.1)); border-radius: 12px; } .score-number { font-size: 4rem; font-weight: 700; background: linear-gradient(135deg, #3b82f6, #10b981); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .score-label { font-size: 1rem; color: #9ca3af; margin-top: 10px; } .gauge { width: 100%; height: 20px; background: rgba(255, 255, 255, 0.05); border-radius: 10px; overflow: hidden; margin: 20px 0; } .gauge-fill { height: 100%; background: linear-gradient(90deg, #ef4444, #f59e0b, #10b981); border-radius: 10px; transition: width 0.6s ease-out; } .metrics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; margin-bottom: 30px; } .metric-card { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 8px; padding: 20px; text-align: center; } .metric-value { font-size: 2rem; font-weight: 700; color: #3b82f6; margin-bottom: 8px; } .metric-label { font-size: 0.85rem; color: #9ca3af; text-transform: uppercase; letter-spacing: 0.5px; } .heatmap { margin: 30px 0; } .heatmap-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 20px; color: #e5e7eb; } .heatmap-legend { display: flex; gap: 20px; margin-bottom: 20px; flex-wrap: wrap; } .legend-item { display: flex; align-items: center; gap: 8px; font-size: 0.9rem; } .legend-color { width: 20px; height: 20px; border-radius: 4px; } .paragraph { background: rgba(255, 255, 255, 0.02); border-left: 4px solid #ef4444; padding: 15px; margin-bottom: 12px; border-radius: 4px; font-size: 0.9rem; line-height: 1.6; color: #d1d5db; } .paragraph.dense { border-left-color: #10b981; } .paragraph.moderate { border-left-color: #f59e0b; } .insights { background: rgba(16, 185, 129, 0.05); border: 1px solid rgba(16, 185, 129, 0.2); border-radius: 8px; padding: 20px; margin-top: 30px; } .insights h3 { color: #10b981; margin-bottom: 15px; font-size: 1.1rem; } .insights p { color: #d1d5db; line-height: 1.6; margin-bottom: 12px; } .comparison { background: rgba(59, 130, 246, 0.05); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 8px; padding: 20px; margin-top: 20px; } .comparison h4 { color: #3b82f6; margin-bottom: 10px; } .comparison p { color: #d1d5db; font-size: 0.95rem; line-height: 1.6; } .cta-link { display: inline-block; color: #3b82f6; text-decoration: none; font-weight: 600; margin-top: 20px; padding: 10px 0; border-bottom: 2px solid rgba(59, 130, 246, 0.3); transition: all 0.3s ease; } .cta-link:hover { border-bottom-color: #3b82f6; padding-right: 5px; } footer { text-align: center; padding: 30px; color: #6b7280; font-size: 0.85rem; margin-top: 50px; } @keyframes slideDown { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @media (max-width: 768px) { h1 { font-size: 1.8rem; } .input-section, .content-section { padding: 25px; } .score-number { font-size: 3rem; } textarea { min-height: 200px; } .metrics-grid { grid-template-columns: 1fr 1fr; } }

Information Density Analyzer

Is Your Content Dense Enough for AI?

0
Information Density Score

Paragraph-by-Paragraph Density Heatmap

Dense (AI-Citable)
Moderate
Fluffy

Your Content in AI Terms

Compared to AI-Citable Benchmark

Read the Information Density Manifesto →
Powered by Tygart Media | tygartmedia.com
const fillerPhrases = [ ‘it’s important to note’, ‘in today’s world’, ‘it goes without saying’, ‘as we all know’, ‘needless to say’, ‘at the end of the day’, ‘in conclusion’, ‘in fact’, ‘to be honest’, ‘basically’, ‘essentially’, ‘practically’, ‘quite frankly’, ‘let me be clear’, ‘obviously’, ‘clearly’, ‘simply put’, ‘as a matter of fact’ ]; const actionVerbs = [ ‘implement’, ‘deploy’, ‘configure’, ‘build’, ‘create’, ‘measure’, ‘test’, ‘optimize’, ‘develop’, ‘establish’, ‘execute’, ‘perform’, ‘analyze’, ‘evaluate’, ‘design’, ‘engineer’, ‘construct’, ‘establish’ ]; function analyzeContent() { const content = document.getElementById(‘contentInput’).value.trim(); if (!content) { alert(‘Please paste your article text first.’); return; } const analysis = performAnalysis(content); displayResults(analysis); } function clearContent() { document.getElementById(‘contentInput’).value = ”; document.getElementById(‘resultsContainer’).classList.remove(‘visible’); } function performAnalysis(content) { const sentences = content.match(/[^.!?]+[.!?]+/g) || []; const paragraphs = content.split(/nn+/).filter(p => p.trim()); const words = content.toLowerCase().match(/bw+b/g) || []; const wordCount = words.length; const sentenceCount = sentences.length; const avgSentenceLength = wordCount / sentenceCount; // Unique concepts (words >4 chars appearing 1-2 times) const wordFreq = {}; words.forEach(word => { if (word.length > 4) { wordFreq[word] = (wordFreq[word] || 0) + 1; } }); const uniqueConcepts = Object.values(wordFreq).filter(count => count { if (numberRegex.test(sent)) claimCount++; }); const claimDensity = (claimCount / sentenceCount) * 100; // Filler ratio let fillerCount = 0; sentences.forEach(sent => { if (fillerPhrases.some(phrase => sent.toLowerCase().includes(phrase))) { fillerCount++; } }); const fillerRatio = (fillerCount / sentenceCount) * 100; // Actionable insight score let actionCount = 0; sentences.forEach(sent => { if (actionVerbs.some(verb => sent.toLowerCase().includes(verb))) { actionCount++; } }); const actionScore = (actionCount / sentenceCount) * 100; // Jargon density (rough estimate) const jargonTerms = words.filter(word => word.length > 7).length; const jargonDensity = (jargonTerms / wordCount) * 100; // Overall density score let densityScore = Math.round( (conceptDensity * 0.25) + (claimDensity * 0.25) + ((100 – fillerRatio) * 0.20) + (actionScore * 0.20) + (Math.min(jargonDensity, 15) * 0.10) ); densityScore = Math.max(0, Math.min(100, densityScore)); // Analyze paragraphs const paragraphAnalysis = paragraphs.map(para => { const paraSentences = para.match(/[^.!?]+[.!?]+/g) || []; const paraWords = para.toLowerCase().match(/bw+b/g) || []; const paraNumbers = para.match(/d+|percent|%/g) || []; const paraFiller = paraSentences.filter(sent => fillerPhrases.some(phrase => sent.toLowerCase().includes(phrase)) ).length; const density = (paraNumbers.length + paraWords.length / 10) / paraSentences.length; const fillerPercent = (paraFiller / paraSentences.length) * 100; let densityClass = ‘dense’; if (fillerPercent > 30 || density 15 || density 150 ? ‘…’ : ”), density: densityClass }; }); return { densityScore, wordCount, sentenceCount, avgSentenceLength: avgSentenceLength.toFixed(1), conceptDensity: conceptDensity.toFixed(1), claimDensity: claimDensity.toFixed(1), fillerRatio: fillerRatio.toFixed(1), actionScore: actionScore.toFixed(1), jargonDensity: jargonDensity.toFixed(1), paragraphs: paragraphAnalysis }; } function displayResults(analysis) { // Score document.getElementById(‘densityScore’).textContent = analysis.densityScore; document.getElementById(‘gaugeFill’).style.width = analysis.densityScore + ‘%’; // Metrics const metricsHTML = `
${analysis.wordCount}
Total Words
${analysis.sentenceCount}
Sentences
${analysis.avgSentenceLength}
Avg Sentence Length
${analysis.conceptDensity}%
Unique Concepts per 100W
${analysis.claimDensity}%
Claim Density
${analysis.fillerRatio}%
Filler Ratio
${analysis.actionScore}%
Action Verbs
${analysis.jargonDensity}%
Jargon Density
`; document.getElementById(‘metricsGrid’).innerHTML = metricsHTML; // Heatmap const heatmapHTML = analysis.paragraphs .map(para => `
${para.text}
`) .join(”); document.getElementById(‘heatmapContainer’).innerHTML = heatmapHTML; // Insights let likelihood; if (analysis.densityScore >= 75) { likelihood = ‘This content is highly likely to be selected as an AI source. You have excellent unique concept density, strong claim coverage, and minimal filler.’; } else if (analysis.densityScore >= 60) { likelihood = ‘This content has good density and will likely be cited by AI systems. Consider reducing filler phrases and increasing actionable insights.’; } else if (analysis.densityScore >= 40) { likelihood = ‘Your content is moderately dense. AI may cite specific sections, but overall improvement would help. Focus on claims, actions, and uniqueness.’; } else { likelihood = ‘This content lacks the density AI systems prefer. Too many filler phrases, weak claim coverage, and low concept variety reduce citation likelihood.’; } document.getElementById(‘aiLikelihood’).textContent = likelihood; let benchmark; if (analysis.fillerRatio > 20) { benchmark = ‘Your filler ratio is above benchmark. AI-citable content typically has <15% filler phrases.'; } else if (analysis.claimDensity 8) { benchmark = ‘Excellent unique concept density. This makes your content more likely to be selected as a source.’; } else { benchmark = ‘Your metrics align well with top-cited content benchmarks across most dimensions.’; } document.getElementById(‘benchmark’).textContent = benchmark; document.getElementById(‘resultsContainer’).classList.add(‘visible’); document.getElementById(‘resultsContainer’).scrollIntoView({ behavior: ‘smooth’ }); } { “@context”: “https://schema.org”, “@type”: “Article”, “headline”: “Information Density Analyzer: Is Your Content Dense Enough for AI?”, “description”: “Paste your article text and get real-time analysis of information density, filler ratio, claim density, and AI-citability score.”, “datePublished”: “2026-04-01”, “dateModified”: “2026-04-03”, “author”: { “@type”: “Person”, “name”: “Will Tygart”, “url”: “https://tygartmedia.com/about” }, “publisher”: { “@type”: “Organization”, “name”: “Tygart Media”, “url”: “https://tygartmedia.com”, “logo”: { “@type”: “ImageObject”, “url”: “https://tygartmedia.com/wp-content/uploads/tygart-media-logo.png” } }, “mainEntityOfPage”: { “@type”: “WebPage”, “@id”: “https://tygartmedia.com/information-density-analyzer/” } }

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *