Skip to content
Home » Tools » AI Content Detector

AI Content Detector

AI Content Detector Pro

Advanced analysis tool to detect AI-generated content with professional metrics

Words: 0 Characters: 0 Sentences: 0
AI: ${item.aiScore}% Words: ${item.wordCount}
`).join(''); }historyBtn.addEventListener('click', () => { displayHistory(); historyModal.style.display = 'flex'; });closeModal.addEventListener('click', () => { historyModal.style.display = 'none'; });clearHistoryBtn.addEventListener('click', () => { if (confirm('Are you sure you want to clear all history?')) { localStorage.removeItem('aid-history'); displayHistory(); } });historyModal.addEventListener('click', (e) => { if (e.target === historyModal) { historyModal.style.display = 'none'; } });// Export functions copyBtn.addEventListener('click', () => { if (!currentAnalysisData) return; const text = `AI Content Detector Pro - Analysis Results ${'='.repeat(50)} Verdict: ${currentAnalysisData.verdict} AI Confidence: ${currentAnalysisData.aiScore}% Human Confidence: ${currentAnalysisData.humanScore}%Metrics: - Readability Score: ${currentAnalysisData.readability.score} (${currentAnalysisData.readability.level}) - Sentiment: ${currentAnalysisData.sentiment.label} (${currentAnalysisData.sentiment.score}) - Passive Voice Instances: ${currentAnalysisData.passiveVoice} - Reading Time: ${currentAnalysisData.readingTime} minutesKey Indicators: - Vocabulary Complexity: ${currentAnalysisData.perplexity.toFixed(2)}% - Sentence Uniformity: ${currentAnalysisData.burstiness.toFixed(2)}% - Repetitive Phrases: ${currentAnalysisData.repetition.toFixed(2)}% ${'='.repeat(50)}`; navigator.clipboard.writeText(text).then(() => { showNotification('Results copied to clipboard!'); }); });exportPdfBtn.addEventListener('click', () => { if (!currentAnalysisData) return; const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFontSize(20); doc.text('AI Content Detector Pro', 20, 20); doc.setFontSize(12); doc.text('Analysis Results', 20, 30); let y = 45; doc.setFontSize(16); doc.text(`Verdict: ${currentAnalysisData.verdict}`, 20, y); y += 10; doc.setFontSize(12); doc.text(`AI Confidence: ${currentAnalysisData.aiScore}%`, 20, y); y += 7; doc.text(`Human Confidence: ${currentAnalysisData.humanScore}%`, 20, y); y += 15; doc.setFontSize(14); doc.text('Metrics:', 20, y); y += 10; doc.setFontSize(11); doc.text(`Readability Score: ${currentAnalysisData.readability.score} (${currentAnalysisData.readability.level})`, 25, y); y += 7; doc.text(`Sentiment: ${currentAnalysisData.sentiment.label} (${currentAnalysisData.sentiment.score})`, 25, y); y += 7; doc.text(`Passive Voice Instances: ${currentAnalysisData.passiveVoice}`, 25, y); y += 7; doc.text(`Reading Time: ${currentAnalysisData.readingTime} minutes`, 25, y); y += 15; doc.setFontSize(14); doc.text('Key Indicators:', 20, y); y += 10; doc.setFontSize(11); doc.text(`Vocabulary Complexity: ${currentAnalysisData.perplexity.toFixed(2)}%`, 25, y); y += 7; doc.text(`Sentence Uniformity: ${currentAnalysisData.burstiness.toFixed(2)}%`, 25, y); y += 7; doc.text(`Repetitive Phrases: ${currentAnalysisData.repetition.toFixed(2)}%`, 25, y); doc.save('ai-content-analysis.pdf'); showNotification('PDF exported successfully!'); });exportJsonBtn.addEventListener('click', () => { if (!currentAnalysisData) return; const dataStr = JSON.stringify(currentAnalysisData, null, 2); const dataBlob = new Blob([dataStr], { type: 'application/json' }); const url = URL.createObjectURL(dataBlob); const link = document.createElement('a'); link.href = url; link.download = 'ai-content-analysis.json'; link.click(); showNotification('JSON exported successfully!'); });function showNotification(message) { const notification = document.createElement('div'); notification.className = 'aid-notification'; notification.textContent = message; document.body.appendChild(notification); setTimeout(() => { notification.classList.add('show'); }, 10); setTimeout(() => { notification.classList.remove('show'); setTimeout(() => notification.remove(), 300); }, 3000); }function createMetricsChart(data) { const ctx = document.getElementById('aidMetricsChart').getContext('2d'); if (metricsChart) { metricsChart.destroy(); } metricsChart = new Chart(ctx, { type: 'bar', data: { labels: ['Vocabulary Complexity', 'Sentence Uniformity', 'Repetitive Phrases', 'Overall AI Score'], datasets: [{ label: 'Score (%)', data: [ data.perplexity.toFixed(2), data.burstiness.toFixed(2), data.repetition.toFixed(2), data.aiScore ], backgroundColor: [ 'rgba(255, 99, 132, 0.7)', 'rgba(54, 162, 235, 0.7)', 'rgba(255, 206, 86, 0.7)', 'rgba(153, 102, 255, 0.7)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(153, 102, 255, 1)' ], borderWidth: 2 }] }, options: { responsive: true, maintainAspectRatio: true, scales: { y: { beginAtZero: true, max: 100 } }, plugins: { legend: { display: false } } } }); }// Main analysis analyzeBtn.addEventListener('click', async () => { try { const text = textInput.value; if (text.trim().length < 10) { showNotification('Please enter more text for a meaningful analysis.'); return; }loadingEl.style.display = 'block'; analyzeBtn.disabled = true; await new Promise(resolve => setTimeout(resolve, 1000));const words = text.trim().split(/\s+/);const perplexityScore = calculatePerplexity(words); const burstinessScore = calculateBurstiness(text); const repetitionResult = findRepetitiveStructures(text); const repetitionScore = repetitionResult.score;const finalAIScore = (perplexityScore * 0.4) + (burstinessScore * 0.4) + (repetitionScore * 0.2);const verdict = finalAIScore > 45 ? 'Likely AI-Generated' : 'Likely Human-Written'; const humanPercentage = 100 - finalAIScore; const readability = calculateReadability(text); const sentiment = analyzeSentiment(text); const passiveVoice = detectPassiveVoice(text); const readingTime = calculateReadingTime(words.length);document.getElementById('aidAiPercentageBar').style.width = `${finalAIScore}%`; document.getElementById('aidHumanPercentageBar').style.width = `${humanPercentage}%`; document.getElementById('aidAiPercentageLabel').textContent = `AI: ${finalAIScore.toFixed(2)}%`; document.getElementById('aidHumanPercentageLabel').textContent = `Human: ${humanPercentage.toFixed(2)}%`;confidenceScoreEl.textContent = `${finalAIScore.toFixed(2)}%`; verdictEl.textContent = verdict; const verdictCard = document.getElementById('aidVerdictCard'); const verdictIcon = document.getElementById('aidVerdictIcon'); if (finalAIScore > 45) { verdictCard.classList.add('ai'); verdictCard.classList.remove('human'); verdictIcon.innerHTML = ''; } else { verdictCard.classList.add('human'); verdictCard.classList.remove('ai'); verdictIcon.innerHTML = ''; } document.getElementById('aidReadabilityScore').textContent = readability.score; document.getElementById('aidReadabilityLevel').textContent = readability.level; document.getElementById('aidSentimentScore').textContent = sentiment.score; document.getElementById('aidSentimentLabel').textContent = sentiment.label; document.getElementById('aidPassiveVoice').textContent = passiveVoice; document.getElementById('aidReadingTime').textContent = readingTime;reasonsList.innerHTML = `
  • Vocabulary Complexity Score: ${perplexityScore.toFixed(2)}%
  • Sentence Uniformity Score: ${burstinessScore.toFixed(2)}%
  • Repetitive Phrases Score: ${repetitionScore.toFixed(2)}%
  • `;let highlightedHTML = text.replace(/\n/g, '
    '); if (finalAIScore > 45) { const uniqueHighlights = new Set(repetitionResult.highlights); uniqueHighlights.forEach(phrase => { const regex = new RegExp(phrase.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi'); highlightedHTML = highlightedHTML.replace(regex, `$&`); }); } highlightedTextEl.innerHTML = highlightedHTML;resultsContainer.style.display = 'block'; currentAnalysisData = { text, verdict, aiScore: finalAIScore.toFixed(2), humanScore: humanPercentage.toFixed(2), perplexity: perplexityScore, burstiness: burstinessScore, repetition: repetitionScore, readability, sentiment, passiveVoice, readingTime, wordCount: words.length }; createMetricsChart(currentAnalysisData); saveToHistory(currentAnalysisData); loadingEl.style.display = 'none'; analyzeBtn.disabled = false; resultsContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' });} catch (error) { console.error("Analysis Error:", error); showNotification("An unexpected error occurred during analysis. Please try different text."); loadingEl.style.display = 'none'; analyzeBtn.disabled = false; } }); })();

    AI Content Detector

    In today’s digital landscape, where content flows freely and rapidly, discerning the authentic human voice from AI-generated text can feel like searching for a needle in a haystack. That’s where our AI Content Detector comes in. We understand the value of genuine thought and original expression, which is why we’ve built a user-friendly tool designed to help you confidently identify content that might have been crafted by artificial intelligence.

    Whether you’re a student, educator, writer, or publisher, our aim is to empower you with the clarity needed to ensure the integrity and authenticity of the words you encounter, fostering a more transparent and trustworthy online environment for everyone.