Meta Tag Analizi

SEO Uyumluluk Kontrolü

URL Analizi

Analiz

Sayfa analiz ediliyor...

Sayfa Hakkında

Meta Tag Analizi aracı, web sayfanızın arama motorları ve sosyal medyada nasıl görüneceğini belirleyen temel etiketleri inceler.

Title, meta description, robots, Open Graph (Facebook) ve Twitter Card etiketleri otomatik kontrol edilir; eksik veya hatalı olanlar raporlanır. Böylece tıklanma oranı (CTR) ve sıralama potansiyelinizi artırabilirsiniz.

Araç ayrıca H1-H6 başlık yapısı, görsel sayısı, sayfa boyutu ve yükleme süresi gibi metrikleri de gösterir. Sonuçları JSON veya CSV olarak indirebilirsiniz.

Sıkça Sorulan Sorular (SSS)

Meta tag analizi, web sayfanızdaki title, description, keywords ve Open Graph etiketlerinin varlığını, uzunluklarını ve SEO uyumluluğunu kontrol eden bir işlemdir. Google ve diğer arama motorları bu etiketleri kullanarak sayfanızı indeksler ve sonuçlarda gösterir. Eksik veya hatalı meta tagler sıralamayı düşürür.
Bu sayfada URL kutusuna analiz etmek istediğiniz sitenin adresini yazıp "Analiz Et" butonuna tıklayın. Araç sayfayı tarar, meta etiketleri çıkarır ve size skor, öneriler ve dışa aktarma seçenekleri sunar.
Evet. Bu meta tag analiz aracı tamamen ücretsizdir. Sınırsız sayıda URL analiz edebilir, sonuçları JSON veya CSV olarak indirebilirsiniz.
Tek bir sayfa analizi genellikle 3-10 saniye içinde tamamlanır. Süre sayfanın boyutuna ve sunucu yanıt hızına bağlıdır.
Araç size özel öneriler listesi sunar. Title 50-60 karakter, description 150-160 karakter olmalı; H1 tek ve anlamlı olmalı; Open Graph ve Twitter Card etiketleri ekleyin. Önerileri tek tek uygulayarak skoru artırabilirsiniz.
Evet. Her analiz için URL kutusuna farklı bir sayfa adresi girip tekrar analiz edebilirsiniz. Toplu (batch) analiz özelliği gelecek güncellemelerde eklenebilir.
left: 50%; transform: translate(-50%, -50%); font-size: 3rem; font-weight: bold; color: #343a40; } .score-label { font-size: 1rem; opacity: 0.9; color: #495057; } /* Result Cards */ .result-section { margin-bottom: 2rem; } .meta-card { background: #f8f9fa; border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; border-left: 5px solid #667eea; transition: all 0.3s; } .meta-card:hover { transform: translateX(5px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .meta-card.success { border-left-color: #28a745; background: #f0f9f4; } .meta-card.warning { border-left-color: #ffc107; background: #fffbf0; } .meta-card.danger { border-left-color: #dc3545; background: #fff5f5; } .meta-card.info { border-left-color: #17a2b8; background: #f0f9fb; } .meta-label { font-weight: 700; color: #2d3748; font-size: 1.1rem; margin-bottom: 0.5rem; } .meta-value { color: #4a5568; font-size: 0.95rem; word-break: break-word; margin-bottom: 0.5rem; } .meta-info { font-size: 0.85rem; color: #718096; margin-top: 0.5rem; } .status-badge { display: inline-block; padding: 0.4rem 1rem; border-radius: 20px; font-size: 0.85rem; font-weight: 600; margin-top: 0.5rem; } .badge-success { background: #28a745; color: white; } .badge-warning { background: #ffc107; color: #212529; } .badge-danger { background: #dc3545; color: white; } .badge-info { background: #17a2b8; color: white; } /* Recommendations */ .recommendation-card { padding: 1.25rem; border-radius: 10px; margin-bottom: 1rem; border-left: 4px solid; } .recommendation-error { background: #fff5f5; border-left-color: #dc3545; } .recommendation-warning { background: #fffbf0; border-left-color: #ffc107; } .recommendation-info { background: #f0f9fb; border-left-color: #17a2b8; } .priority-badge { font-size: 0.75rem; padding: 0.25rem 0.75rem; border-radius: 12px; font-weight: 600; text-transform: uppercase; } .priority-high { background: #dc3545; color: white; } .priority-medium { background: #ffc107; color: #212529; } .priority-low { background: #6c757d; color: white; } /* Social Preview */ .social-preview { border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; background: white; max-width: 600px; } .social-preview-image { width: 100%; height: 315px; background: #e2e8f0; object-fit: cover; } .social-preview-content { padding: 1.5rem; } .social-preview-url { color: #606770; font-size: 0.875rem; text-transform: uppercase; margin-bottom: 0.5rem; } .social-preview-title { color: #1d2129; font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem; line-height: 1.3; } .social-preview-description { color: #606770; font-size: 0.9375rem; line-height: 1.4; } /* Stats Grid */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; } .stat-card { background: white; padding: 1.5rem; border-radius: 12px; text-align: center; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } .stat-value { font-size: 2.5rem; font-weight: bold; color: #667eea; margin-bottom: 0.5rem; } .stat-label { color: #718096; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.5px; } /* Loading */ .loading { display: none; text-align: center; padding: 4rem 2rem; } .spinner { border: 5px solid #f3f3f3; border-top: 5px solid #667eea; border-radius: 50%; width: 60px; height: 60px; animation: spin 1s linear infinite; margin: 0 auto 1.5rem; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-text { color: #667eea; font-size: 1.1rem; font-weight: 600; } /* Export Buttons */ .export-buttons { margin-top: 2rem; padding-top: 2rem; border-top: 2px solid #e9ecef; } .btn-export { margin-right: 0.5rem; margin-bottom: 0.5rem; } /* Chart Container */ .chart-container { position: relative; height: 300px; margin: 2rem 0; } /* Empty State */ .empty-state { text-align: center; padding: 4rem 2rem; color: #718096; } .empty-state-icon { font-size: 4rem; margin-bottom: 1rem; opacity: 0.5; } @media (max-width: 768px) { .main-card { padding: 1.5rem; } .score-circle { width: 150px; height: 150px; } .score-number { font-size: 2.2rem; } }

Meta Tag Analizi

Sayfanızın meta taglerini analiz edin ve optimize edin.

URL Analizi

Analiz

Sayfa analiz ediliyor, lütfen bekleyin...

Sayfa Hakkında

Meta Tag Analizi aracı, web sayfanızın arama motorları ve sosyal medyada nasıl görüneceğini belirleyen temel etiketleri inceler.

Title, meta description, robots, Open Graph (Facebook) ve Twitter Card etiketleri otomatik kontrol edilir; eksik veya hatalı olanlar raporlanır. Böylece tıklanma oranı (CTR) ve sıralama potansiyelinizi artırabilirsiniz.

Araç ayrıca H1-H6 başlık yapısı, görsel sayısı, sayfa boyutu ve yükleme süresi gibi metrikleri de gösterir. Sonuçları JSON veya CSV olarak indirebilirsiniz.

Sıkça Sorulan Sorular (SSS)

Meta tag analizi, web sayfanızdaki title, description, keywords ve Open Graph etiketlerinin varlığını, uzunluklarını ve SEO uyumluluğunu kontrol eden bir işlemdir. Google ve diğer arama motorları bu etiketleri kullanarak sayfanızı indeksler ve sonuçlarda gösterir. Eksik veya hatalı meta tagler sıralamayı düşürür.
Bu sayfada URL kutusuna analiz etmek istediğiniz sitenin adresini yazıp "Analiz Et" butonuna tıklayın. Araç sayfayı tarar, meta etiketleri çıkarır ve size skor, öneriler ve dışa aktarma seçenekleri sunar.
Evet. Bu meta tag analiz aracı tamamen ücretsizdir. Sınırsız sayıda URL analiz edebilir, sonuçları JSON veya CSV olarak indirebilirsiniz.
Tek bir sayfa analizi genellikle 3-10 saniye içinde tamamlanır. Süre sayfanın boyutuna ve sunucu yanıt hızına bağlıdır.
Araç size özel öneriler listesi sunar. Title 50-60 karakter, description 150-160 karakter olmalı; H1 tek ve anlamlı olmalı; Open Graph ve Twitter Card etiketleri ekleyin. Önerileri tek tek uygulayarak skoru artırabilirsiniz.
Evet. Her analiz için URL kutusuna farklı bir sayfa adresi girip tekrar analiz edebilirsiniz. Toplu (batch) analiz özelliği gelecek güncellemelerde eklenebilir.
Detay ${generateBasicMetaTags(data)} `; // Social Media html += `

Sosyal Medya

Open Graph & Twitter
${generateSocialMedia(data)}
`; // Technical html += `

Teknik Detaylar

Teknik SEO
${generateTechnical(data)}
`; // Recommendations html += `

Öneriler

Aksiyon
${generateRecommendations(data.recommendations)}
`; // Export Buttons html += `

Raporlama

Dışa Aktar
`; results.innerHTML = html; results.style.display = 'block'; // Draw SEO Score Chart drawScoreChart(data.seoScore.percentage); // Store data for export window.analysisData = data; } function getScoreLabel(score) { if (score >= 90) return 'Mükemmel ⭐⭐⭐⭐⭐'; if (score >= 75) return 'Çok İyi ⭐⭐⭐⭐'; if (score >= 60) return 'İyi ⭐⭐⭐'; if (score >= 40) return 'Orta ⭐⭐'; return 'İyileştirme Gerekli ⭐'; } function drawScoreChart(score) { const ctx = document.getElementById('scoreChart'); if (!ctx) return; const remaining = 100 - score; const color = score >= 75 ? '#28a745' : score >= 50 ? '#ffc107' : '#dc3545'; if (seoChart) { seoChart.destroy(); } seoChart = new Chart(ctx, { type: 'doughnut', data: { datasets: [{ data: [score, remaining], backgroundColor: [color, '#e9ecef'], borderWidth: 0 }] }, options: { cutout: '75%', responsive: true, maintainAspectRatio: true, plugins: { legend: { display: false }, tooltip: { enabled: false } } } }); } function generateBasicMetaTags(data) { let html = '
'; html += createMetaCard('Title', data.title, getTitleStatus(data.title, data.titleLength), `Uzunluk: ${data.titleLength} karakter ${data.titleLength >= 30 && data.titleLength <= 60 ? '(✓ İdeal)' : data.titleLength < 30 ? '(⚠ Çok kısa)' : '(⚠ Çok uzun)'}`); html += createMetaCard('Meta Description', data.description, getDescriptionStatus(data.description, data.descriptionLength), `Uzunluk: ${data.descriptionLength} karakter ${data.descriptionLength >= 120 && data.descriptionLength <= 160 ? '(✓ İdeal)' : data.descriptionLength < 120 ? '(⚠ Çok kısa)' : '(⚠ Çok uzun)'}`); html += createMetaCard('Meta Keywords', data.keywords || 'Bulunamadı', data.keywords ? 'info' : 'warning', data.keywords ? 'Keywords bulundu (Modern SEO\'da önemsiz)' : 'Keywords etiketi bulunamadı'); html += createMetaCard('Author', data.author || 'Bulunamadı', data.author ? 'success' : 'info', data.author ? 'Yazar bilgisi mevcut' : 'Yazar bilgisi yok'); html += createMetaCard('Robots', data.robots || 'Bulunamadı (index, follow varsayılan)', data.robots ? 'success' : 'info', data.robots ? 'Robots meta tag mevcut' : 'Varsayılan ayarlar kullanılıyor'); html += createMetaCard('Charset', data.charset || 'Bulunamadı', data.charset ? 'success' : 'danger', data.charset ? `Karakter kodlaması: ${data.charset}` : 'Charset belirtilmemiş'); html += createMetaCard('Language', data.language || 'Bulunamadı', data.language ? 'success' : 'warning', data.language ? `Dil: ${data.language}` : 'HTML lang attribute eksik'); html += createMetaCard('Viewport', data.viewport || 'Bulunamadı', data.viewport ? 'success' : 'danger', data.viewport ? data.viewport : 'Mobil uyumluluk için viewport gerekli'); html += createMetaCard('Canonical URL', data.canonical || 'Bulunamadı', data.canonical ? 'success' : 'warning', data.canonical ? data.canonical : 'Canonical URL eksik'); html += '
'; return html; } function generateSocialMedia(data) { let html = '
'; // Social Preview if (data.ogImage || data.ogTitle || data.ogDescription) { html += `

Sosyal Medya Önizlemesi

`; } // Open Graph html += '

Open Graph Meta Tagler

'; html += createMetaCard('OG:Title', data.ogTitle || 'Bulunamadı', data.ogTitle ? 'success' : 'warning', 'Facebook, LinkedIn paylaşımları için'); html += createMetaCard('OG:Description', data.ogDescription || 'Bulunamadı', data.ogDescription ? 'success' : 'warning', 'Sosyal medya açıklaması'); html += createMetaCard('OG:Image', data.ogImage || 'Bulunamadı', data.ogImage ? 'success' : 'warning', data.ogImage ? `Görseli Görüntüle` : 'Paylaşım görseli eksik'); html += createMetaCard('OG:URL', data.ogUrl || 'Bulunamadı', data.ogUrl ? 'success' : 'info', 'Canonical URL'); html += createMetaCard('OG:Type', data.ogType || 'Bulunamadı', data.ogType ? 'success' : 'info', data.ogType || 'Varsayılan: website'); html += createMetaCard('OG:Site Name', data.ogSiteName || 'Bulunamadı', data.ogSiteName ? 'success' : 'info', 'Site adı'); // Twitter Card html += '

Twitter Card Meta Tagler

'; html += createMetaCard('Twitter:Card', data.twitterCard || 'Bulunamadı', data.twitterCard ? 'success' : 'warning', data.twitterCard || 'summary, summary_large_image, app, player'); html += createMetaCard('Twitter:Title', data.twitterTitle || 'Bulunamadı', data.twitterTitle ? 'success' : 'warning', 'Twitter paylaşım başlığı'); html += createMetaCard('Twitter:Description', data.twitterDescription || 'Bulunamadı', data.twitterDescription ? 'success' : 'warning', 'Twitter paylaşım açıklaması'); html += createMetaCard('Twitter:Image', data.twitterImage || 'Bulunamadı', data.twitterImage ? 'success' : 'warning', data.twitterImage ? `Görseli Görüntüle` : 'Twitter görseli eksik'); html += '
'; return html; } function generateTechnical(data) { let html = '
'; // Page Info html += '

Sayfa Bilgileri

'; html += createMetaCard('URL', data.pageInfo.url, 'info', 'Analiz edilen URL'); html += createMetaCard('HTTP Durum Kodu', data.pageInfo.httpCode, data.pageInfo.httpCode === 200 ? 'success' : 'warning', data.pageInfo.httpCode === 200 ? 'Başarılı' : 'Hata var'); html += createMetaCard('Yükleme Süresi', `${data.pageInfo.loadTime}ms`, data.pageInfo.loadTime < 1000 ? 'success' : data.pageInfo.loadTime < 3000 ? 'warning' : 'danger', data.pageInfo.loadTime < 1000 ? 'Hızlı' : data.pageInfo.loadTime < 3000 ? 'Orta' : 'Yavaş'); html += createMetaCard('Sayfa Boyutu', data.pageInfo.sizeFormatted, 'info', 'İndirilen veri boyutu'); html += createMetaCard('Content-Type', data.pageInfo.contentType || 'Bilinmiyor', 'info', 'İçerik tipi'); // Headings html += '

Başlık Yapısı

'; html += createMetaCard('H1 Sayısı', data.headings.h1.toString(), data.headings.h1 === 1 ? 'success' : data.headings.h1 === 0 ? 'danger' : 'warning', data.headings.h1 === 1 ? 'İdeal (1 adet)' : data.headings.h1 === 0 ? 'H1 eksik!' : `${data.headings.h1} adet H1 var (1 olmalı)`); html += createMetaCard('H2 Sayısı', data.headings.h2.toString(), data.headings.h2 > 0 ? 'success' : 'warning', data.headings.h2 > 0 ? `${data.headings.h2} adet H2 mevcut` : 'H2 etiketi yok'); html += createMetaCard('H3 Sayısı', data.headings.h3.toString(), 'info', `${data.headings.h3} adet H3 mevcut`); // Images html += '

Görsel Analizi

'; const altRatio = data.images.total > 0 ? ((data.images.withAlt / data.images.total) * 100).toFixed(1) : 0; html += createMetaCard('Toplam Görsel', data.images.total.toString(), 'info', 'Sayfadaki toplam görsel sayısı'); html += createMetaCard('Alt Text Olan', data.images.withAlt.toString(), data.images.withAlt === data.images.total ? 'success' : 'warning', `${altRatio}% görselde alt text var`); html += createMetaCard('Alt Text Olmayan', data.images.withoutAlt.toString(), data.images.withoutAlt === 0 ? 'success' : 'danger', data.images.withoutAlt === 0 ? 'Tüm görsellerde alt text var ✓' : `${data.images.withoutAlt} görselde alt text eksik`); // Links html += '

Link Analizi

'; html += createMetaCard('Toplam Link', data.links.total.toString(), 'info', 'Sayfadaki toplam link sayısı'); html += createMetaCard('İç Link', data.links.internal.toString(), 'success', 'Aynı domain içindeki linkler'); html += createMetaCard('Dış Link', data.links.external.toString(), 'info', 'Farklı domainlere giden linkler'); // Structured Data html += '

Structured Data (Schema.org)

'; if (data.structuredData && data.structuredData.length > 0) { html += createMetaCard('Schema Sayısı', data.structuredData.length.toString(), 'success', `${data.structuredData.length} adet structured data bulundu`); data.structuredData.forEach((schema, index) => { const schemaType = schema['@type'] || schema['@context'] || 'Bilinmeyen'; html += createMetaCard(`Schema ${index + 1}`, schemaType, 'success', `
${JSON.stringify(schema, null, 2)}
`); }); } else { html += createMetaCard('Structured Data', 'Bulunamadı', 'warning', 'Schema.org structured data ekleyerek zengin sonuçlar gösterebilirsiniz'); } // Favicons if (data.favicons && data.favicons.length > 0) { html += '

Favicon

'; data.favicons.forEach((favicon, index) => { html += createMetaCard(`Favicon ${index + 1}`, favicon.href || 'URL yok', favicon.href ? 'success' : 'warning', `Type: ${favicon.rel}${favicon.sizes ? ', Sizes: ' + favicon.sizes : ''}`); }); } // Alternate Languages if (data.alternateLanguages && data.alternateLanguages.length > 0) { html += '

Alternatif Diller

'; data.alternateLanguages.forEach((alt, index) => { html += createMetaCard(`Alternatif ${index + 1}`, alt.lang, 'info', alt.url); }); } html += '
'; return html; } function generateRecommendations(recommendations) { if (!recommendations || recommendations.length === 0) { return '
🎉

Tebrikler!

Tüm öneriler tamamlanmış görünüyor.

'; } let html = '
'; recommendations.forEach(rec => { const typeClass = `recommendation-${rec.type}`; const priorityClass = `priority-${rec.priority}`; const icon = rec.type === 'error' ? '❌' : rec.type === 'warning' ? '⚠️' : 'ℹ️'; html += `
${icon} ${rec.title}
${rec.priority}

${rec.message}

`; }); html += '
'; return html; } function createMetaCard(label, value, status, info) { const statusClass = status || 'info'; const badgeClass = status === 'success' ? 'badge-success' : status === 'warning' ? 'badge-warning' : status === 'danger' ? 'badge-danger' : 'badge-info'; const badgeText = status === 'success' ? '✓ İyi' : status === 'warning' ? '⚠ Uyarı' : status === 'danger' ? '✗ Eksik' : 'ℹ Bilgi'; return `
${label}
${badgeText}
${value || 'Bulunamadı'}
${info}
`; } function getTitleStatus(title, length) { if (!title) return 'danger'; if (length >= 30 && length <= 60) return 'success'; return 'warning'; } function getDescriptionStatus(description, length) { if (!description) return 'danger'; if (length >= 120 && length <= 160) return 'success'; return 'warning'; } // Export Functions function exportToJSON() { if (!window.analysisData) return; const dataStr = JSON.stringify(window.analysisData, 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 = `meta-tag-analysis-${Date.now()}.json`; link.click(); } function exportToCSV() { if (!window.analysisData) return; const data = window.analysisData; let csv = 'Meta Tag,Değer,Durum\n'; csv += `Title,"${data.title || ''}",${getTitleStatus(data.title, data.titleLength)}\n`; csv += `Description,"${data.description || ''}",${getDescriptionStatus(data.description, data.descriptionLength)}\n`; csv += `Keywords,"${data.keywords || ''}",${data.keywords ? 'success' : 'warning'}\n`; csv += `OG Title,"${data.ogTitle || ''}",${data.ogTitle ? 'success' : 'warning'}\n`; csv += `OG Description,"${data.ogDescription || ''}",${data.ogDescription ? 'success' : 'warning'}\n`; csv += `OG Image,"${data.ogImage || ''}",${data.ogImage ? 'success' : 'warning'}\n`; csv += `Canonical,"${data.canonical || ''}",${data.canonical ? 'success' : 'warning'}\n`; csv += `SEO Score,${data.seoScore.percentage},${data.seoScore.percentage >= 75 ? 'success' : data.seoScore.percentage >= 50 ? 'warning' : 'danger'}\n`; const dataBlob = new Blob([csv], {type: 'text/csv'}); const url = URL.createObjectURL(dataBlob); const link = document.createElement('a'); link.href = url; link.download = `meta-tag-analysis-${Date.now()}.csv`; link.click(); }