Optimisez votre présence sur Google

Des outils simples et gratuits pour améliorer votre référencement naturel. Sans jargon, sans inscription.

Balise Title

Le titre affiché dans les résultats Google. Idéalement entre 50 et 60 caractères (502 px max).

0 Vide
Optimal : 50 – 60 caractères 0 px / 502 px
Conseil Vingt80 : Placez votre mot-clé principal en début de title. Ajoutez votre ville si vous ciblez un marché local. Évitez les intitulés génériques comme "Accueil".

Méta Description

Le résumé affiché sous votre titre dans Google. Idéalement entre 140 et 160 caractères.

0 Vide
Optimal : 140 – 160 caractères
Conseil Vingt80 : La méta description n'influence pas directement le classement, mais elle améliore le taux de clic. Rédigez une accroche claire avec un appel à l'action.

Vos informations

Renseignez vos balises pour visualiser votre résultat Google en temps réel.

Caractères : 0
Caractères : 0
⚠️ Votre title dépasse 60 caractères et sera tronqué par Google.
⚠️ Votre méta description dépasse 160 caractères et risque d'être tronquée.

Aperçu — Résultat Google

V
votresite.fr › ma-page
Votre titre apparaîtra ici…
Votre méta description apparaîtra ici. Elle résume le contenu de votre page en 1 à 2 phrases claires.
💡 Bon à savoir : Google peut réécrire vos balises s'il les juge insuffisantes. Rédigez des descriptions claires, uniques, en accord avec le contenu de la page.

Analyseur de contenu

Collez le texte de votre page pour évaluer sa longueur, son temps de lecture et la densité d'un mot-clé ciblé.

Résultats de l'analyse

Évaluation instantanée de votre contenu.

0 mots Vide
lecture
densité
Recommandé : 500 mots minimum pour une page SEO
Conseil Vingt80 : En dessous de 300 mots, Google peut considérer votre page comme du "thin content". Visez 500 à 1000 mots pour des pages de services locaux. La densité idéale se situe entre 1% et 2%.

Générateur de balise Title

Renseignez vos informations pour obtenir des propositions de titles optimisées, prêtes à copier.

Vos propositions

Cliquez sur une proposition pour la copier dans le presse-papier.

Remplissez le formulaire et cliquez sur "Générer" pour obtenir vos propositions.
Conseil Vingt80 : Choisissez la formulation qui correspond le mieux à votre page. Un bon title est unique sur chaque page de votre site.

Générateur de méta description

Renseignez vos informations pour obtenir des accroches optimisées, prêtes à copier dans votre CMS.

Vos propositions

Cliquez sur une proposition pour la copier. Chaque accroche est vérifiée en longueur.

Remplissez le formulaire et cliquez sur "Générer" pour obtenir vos accroches.
Conseil Vingt80 : Une bonne méta description contient le mot-clé ciblé, un bénéfice concret et un appel à l'action. Elle donne envie de cliquer avant même d'arriver sur votre site.

Vérificateur d'URL

Analysez la qualité SEO de vos adresses web : minuscules, tirets, longueur, caractères spéciaux.

Conseil Vingt80 : Une bonne URL est courte, en minuscules, avec des tirets entre les mots, sans accents ni caractères spéciaux. Elle doit refléter le contenu de la page.

Analyse de l'URL

Résultats des vérifications SEO sur votre adresse web.

Saisissez une URL pour lancer l'analyse.

Générateur de balise Alt

Rédigez des balises Alt optimisées pour vos images — utiles pour l'accessibilité et le référencement Google Images.

Conseil Vingt80 : La balise Alt décrit l'image aux moteurs de recherche et aux malvoyants. Elle doit être descriptive, courte (moins de 125 caractères) et contenir votre mot-clé naturellement.

Propositions de balise Alt

Cliquez sur une proposition pour la copier.

Décrivez votre image pour obtenir des suggestions de balise Alt.

Checklist SEO on-page

Passez en revue les points essentiels du référencement on-page pour chaque page de votre site. Cochez au fur et à mesure.

🏷️ Balises & Méta
📝 Contenu
🏗️ Structure
⚡ Technique

Votre score SEO

Progression en temps réel selon les points cochés.

0 / 16
Commencez la vérification
16 points de contrôle SEO on-page
Conseil Vingt80 : Cochez les points validés sur votre page pour obtenir une évaluation de sa maturité SEO. Chaque point non coché est une opportunité d'amélioration.
/* ===== TABS ===== */ function switchTab(tab) { const tabs = ['title-meta','serp','mots','generateur','gen-meta','url','alt','checklist']; document.querySelectorAll('.v80-outil-tab-btn').forEach((btn, i) => { btn.classList.toggle('active', tabs[i] === tab); }); document.querySelectorAll('.v80-outil-panel').forEach(p => p.classList.remove('active')); document.getElementById('panel-' + tab).classList.add('active'); } /* ===== PIXELS ===== */ function estimerPixels(str) { let t = 0; for (let c of str) { if ('WMmwW'.includes(c)) t += 13; else if ('IiljJ1!|'.includes(c)) t += 5; else if (c === ' ') t += 4; else t += 8.5; } return Math.round(t); } /* ===== COMPTEUR ===== */ function updateCounter(inputId, countId, barId, statusId, pxId, min, max) { const val = document.getElementById(inputId).value; const len = val.length; const countEl = document.getElementById(countId); const barEl = document.getElementById(barId); const statusEl = document.getElementById(statusId); countEl.textContent = len; barEl.style.width = Math.min(100, (len / (max + 20)) * 100) + '%'; barEl.className = 'v80-char-bar-fill'; statusEl.className = 'v80-char-status'; if (len === 0) { statusEl.textContent = 'Vide'; statusEl.classList.add('v80-char-status--vide'); countEl.style.color = ''; } else if (len < min) { statusEl.textContent = 'Trop court'; statusEl.classList.add('v80-char-status--court'); barEl.classList.add('v80-char-bar-fill--court'); countEl.style.color = '#1D4ED8'; } else if (len <= max) { statusEl.textContent = '✓ Parfait'; statusEl.classList.add('v80-char-status--ok'); barEl.classList.add('v80-char-bar-fill--ok'); countEl.style.color = '#16A34A'; } else if (len <= max+10) { statusEl.textContent = '⚠ Trop long'; statusEl.classList.add('v80-char-status--warn'); barEl.classList.add('v80-char-bar-fill--warn'); countEl.style.color = '#D97706'; } else { statusEl.textContent = '✗ Trop long'; statusEl.classList.add('v80-char-status--danger'); barEl.classList.add('v80-char-bar-fill--danger'); countEl.style.color = '#DC2626'; } if (pxId) { const pxEl = document.getElementById(pxId); const px = estimerPixels(val); pxEl.textContent = px + ' px / 502 px'; pxEl.className = 'v80-px-count ' + (px <= 502 ? 'v80-px-count--ok' : 'v80-px-count--danger'); } } /* ===== SERP ===== */ function updateSerp() { const rawUrl = document.getElementById('serp-url').value || 'https://www.votresite.fr/ma-page'; const title = document.getElementById('serp-title').value; const meta = document.getElementById('serp-meta').value; const tl = title.length; const ml = meta.length; const tS = document.getElementById('serp-title-status'); tS.textContent = tl + ' car.'; tS.className = 'v80-char-status ' + (tl === 0 ? 'v80-char-status--vide' : tl <= 60 ? 'v80-char-status--ok' : 'v80-char-status--danger'); const mS = document.getElementById('serp-meta-status'); mS.textContent = ml + ' car.'; mS.className = 'v80-char-status ' + (ml === 0 ? 'v80-char-status--vide' : ml <= 160 ? 'v80-char-status--ok' : 'v80-char-status--danger'); document.getElementById('alert-title').classList.toggle('visible', tl > 60); document.getElementById('alert-meta').classList.toggle('visible', ml > 160); document.getElementById('serp-breadcrumb-display').textContent = rawUrl.replace(/^https?:///, '').replace(//$/, '').replace(///g, ' › ') || 'votresite.fr › ma-page'; const tEl = document.getElementById('serp-title-display'); if (!title) tEl.innerHTML = 'Votre titre apparaîtra ici…'; else if (tl > 60) tEl.innerHTML = title.slice(0, 57) + ''; else tEl.textContent = title; const mEl = document.getElementById('serp-meta-display'); if (!meta) mEl.innerHTML = 'Votre méta description apparaîtra ici…'; else if (ml > 160) mEl.innerHTML = meta.slice(0, 157) + ''; else mEl.textContent = meta; } /* ===== ANALYSE CONTENU ===== */ function updateMots() { const texte = document.getElementById('mots-texte').value.trim(); const kw = document.getElementById('mots-kw').value.trim().toLowerCase(); const mots = texte ? texte.split(/s+/).filter(m => m.length > 0) : []; const nb = mots.length; document.getElementById('mots-count').textContent = nb; document.getElementById('lecture-count').textContent = nb > 0 ? Math.max(1, Math.round(nb / 200)) + ' min' : '—'; const barEl = document.getElementById('mots-bar'); const statusEl = document.getElementById('mots-status'); barEl.style.width = Math.min(100, (nb / 1000) * 100) + '%'; barEl.className = 'v80-char-bar-fill'; statusEl.className = 'v80-char-status'; if (nb === 0) { statusEl.textContent = 'Vide'; statusEl.classList.add('v80-char-status--vide'); } else if (nb < 300) { statusEl.textContent = '⚠ Insuffisant'; statusEl.classList.add('v80-char-status--danger'); barEl.classList.add('v80-char-bar-fill--danger'); } else if (nb < 500) { statusEl.textContent = 'Moyen'; statusEl.classList.add('v80-char-status--warn'); barEl.classList.add('v80-char-bar-fill--warn'); } else if (nb < 1000) { statusEl.textContent = '✓ Bon'; statusEl.classList.add('v80-char-status--ok'); barEl.classList.add('v80-char-bar-fill--ok'); } else { statusEl.textContent = '✓ Excellent'; statusEl.classList.add('v80-char-status--ok'); barEl.classList.add('v80-char-bar-fill--ok'); } const dEl = document.getElementById('densite-count'); const dS = document.getElementById('densite-status'); if (kw && nb > 0) { const occ = (texte.match(new RegExp(kw.replace(/[.*+?^${}()|[]\]/g, '\$&'), 'gi')) || []).length; const d = ((occ / nb) * 100).toFixed(1); dEl.textContent = d + '%'; dS.className = 'v80-char-status'; if (d < 0.5) { dS.textContent = 'Faible'; dS.classList.add('v80-char-status--court'); } else if (d <= 2) { dS.textContent = '✓ Idéale'; dS.classList.add('v80-char-status--ok'); } else if (d <= 3) { dS.textContent = '⚠ Élevée'; dS.classList.add('v80-char-status--warn'); } else { dS.textContent = '✗ Sur-optimisé'; dS.classList.add('v80-char-status--danger'); } } else { dEl.textContent = '—'; dS.textContent = ''; } } /* ===== GÉNÉRATEUR TITLE ===== */ function genererTitles() { const kw = document.getElementById('gen-kw').value.trim(); const ville = document.getElementById('gen-ville').value.trim(); const marque = document.getElementById('gen-marque').value.trim(); if (!kw) { document.getElementById('gen-resultats').innerHTML = '
Veuillez renseigner au moins un mot-clé principal.
'; return; } const kwC = kw.charAt(0).toUpperCase() + kw.slice(1); let p = []; if (ville && marque) p = [`${kwC} à ${ville} — ${marque}`, `${kwC} ${ville} | ${marque}`, `${marque} · ${kwC} à ${ville}`, `${kwC} ${ville} : expert local — ${marque}`, `Votre ${kw} à ${ville} — ${marque}`]; else if (ville) p = [`${kwC} à ${ville} — Expert local`, `${kwC} ${ville} | Devis gratuit`, `Votre ${kw} à ${ville}`, `${kwC} ${ville} : conseils & accompagnement`, `Trouver un ${kw} à ${ville}`]; else if (marque) p = [`${kwC} — ${marque}`, `${marque} | ${kwC} professionnel`, `${kwC} : l'expertise ${marque}`, `Votre ${kw} avec ${marque}`, `${marque} — Spécialiste ${kw}`]; else p = [`${kwC} — Expert professionnel`, `${kwC} | Devis gratuit`, `Votre ${kw} professionnel`, `${kwC} : conseils & accompagnement`, `Spécialiste ${kw}`]; document.getElementById('gen-resultats').innerHTML = p.map(t => renderProposition(t, t.length <= 60 && estimerPixels(t) <= 502, t.length + ' car. · ' + estimerPixels(t) + ' px')).join(''); } /* ===== GÉNÉRATEUR MÉTA ===== */ function genererMetas() { const kw = document.getElementById('gmeta-kw').value.trim(); const ville = document.getElementById('gmeta-ville').value.trim(); const action = document.getElementById('gmeta-action').value.trim() || 'Contactez-nous'; const argument = document.getElementById('gmeta-argument').value.trim(); if (!kw) { document.getElementById('gmeta-resultats').innerHTML = '
Veuillez renseigner au moins un mot-clé principal.
'; return; } const kwC = kw.charAt(0).toUpperCase() + kw.slice(1); const loc = ville ? ` à ${ville}` : ''; const arg = argument ? ` ${argument}.` : '.'; let p = []; if (ville) { p = [ `${kwC}${loc} : accompagnement personnalisé${arg} ${action}.`, `Vous cherchez un ${kw}${loc} ? Bénéficiez d'un accompagnement sur mesure${arg} ${action}.`, `Expert en ${kw}${loc}. Résultats mesurables et suivi régulier${arg} ${action}.`, `${kwC} indépendant${loc}. Plus de visibilité sur Google${arg} ${action}.`, `Confiez votre ${kw}${loc} à un expert local${arg} ${action}.` ]; } else { p = [ `${kwC} : accompagnement personnalisé${arg} ${action}.`, `Vous cherchez un ${kw} ? Bénéficiez d'un suivi sur mesure${arg} ${action}.`, `Expert en ${kw}. Résultats mesurables et transparents${arg} ${action}.`, `${kwC} professionnel. Gagnez en visibilité durablement${arg} ${action}.`, `Confiez votre ${kw} à un spécialiste${arg} ${action}.` ]; } document.getElementById('gmeta-resultats').innerHTML = p.map(m => { const len = m.length; const ok = len >= 140 && len <= 160; const warn = len < 140 ? 'Trop court' : len <= 160 ? '✓ Parfait' : '⚠ Trop long'; const cls = len < 140 ? 'v80-char-status--court' : len <= 160 ? 'v80-char-status--ok' : 'v80-char-status--warn'; return renderPropositionMeta(m, ok, `${len} car. — ${warn}`, cls); }).join(''); } /* ===== HELPERS RENDU ===== */ function renderProposition(texte, ok, label) { return `
${texte}
${label} Copier
`; } function renderPropositionMeta(texte, ok, label, cls) { return `
${texte}
${label} Copier
`; } /* ===== VÉRIFICATEUR URL ===== */ function updateUrl() { const url = document.getElementById('url-input').value.trim(); if (!url) { document.getElementById('url-resultats').innerHTML = '
Saisissez une URL pour lancer l'analyse.
'; return; } const checks = [ { label: 'Commence par https://', ok: url.startsWith('https://'), conseil: 'Préférez toujours HTTPS pour la sécurité et le SEO.' }, { label: 'Pas de majuscules', ok: url === url.toLowerCase(), conseil: 'Les URLs doivent être entièrement en minuscules.' }, { label: 'Pas d'espaces', ok: !url.includes('%20') && !url.includes('+'), conseil: 'Utilisez des tirets (-) pour séparer les mots.' }, { label: 'Pas de caractères spéciaux', ok: !/[àâäéèêëîïôöùûüç@#$%^&*()=+[]{};:'",?\]/.test(url.replace(/^https?:///, '')), conseil: 'Évitez les accents et caractères spéciaux.' }, { label: 'Pas d'underscore (_)', ok: !url.includes('_'), conseil: 'Utilisez des tirets (-) plutôt que des underscores (_).' }, { label: 'URL courte (< 75 caractères)', ok: url.length <= 75, conseil: 'Une URL courte est plus mémorisable et mieux perçue.' }, { label: 'Se termine par /', ok: url.endsWith('/'), conseil: 'Terminez vos URLs par un slash pour éviter les redirections 301.' }, ]; const score = checks.filter(c => c.ok).length; const cls = score >= 6 ? 'v80-char-status--ok' : score >= 4 ? 'v80-char-status--warn' : 'v80-char-status--danger'; let html = `
${score} / ${checks.length} critères validés
`; html += checks.map(c => `
${c.ok ? '✓' : '✗'}
${c.label}
${!c.ok ? `
${c.conseil}
` : ''}
`).join(''); document.getElementById('url-resultats').innerHTML = html; } /* ===== BALISE ALT ===== */ function updateAlt() { const desc = document.getElementById('alt-desc').value.trim(); const kw = document.getElementById('alt-kw').value.trim(); const ctx = document.getElementById('alt-contexte').value.trim(); if (!desc) { document.getElementById('alt-resultats').innerHTML = '
Décrivez votre image pour obtenir des suggestions.
'; return; } let p = []; if (kw && ctx) p = [`${desc} — ${kw}`, `${kw} : ${desc}`, `Image ${ctx} - ${desc} ${kw}`, `${desc} pour ${kw}`]; else if (kw) p = [`${desc} — ${kw}`, `${kw} : ${desc}`, `Illustration ${desc} ${kw}`, `${desc} spécialisé ${kw}`]; else p = [`${desc}`, `Illustration : ${desc}`, `Photo de ${desc}`, `Image représentant ${desc}`]; document.getElementById('alt-resultats').innerHTML = p.map(t => { const ok = t.length <= 125; return renderProposition(t, ok, t.length + ' car.' + (ok ? '' : ' — trop long')); }).join(''); } /* ===== CHECKLIST ===== */ function updateChecklist() { const total = document.querySelectorAll('.v80-check-item input').length; const checked = document.querySelectorAll('.v80-check-item input:checked').length; document.getElementById('score-num').textContent = checked; const barEl = document.getElementById('score-bar'); const statusEl = document.getElementById('score-status'); barEl.style.width = (checked / total * 100) + '%'; barEl.className = 'v80-char-bar-fill'; statusEl.className = 'v80-char-status'; const conseil = document.getElementById('score-conseil'); if (checked === 0) { statusEl.textContent = 'Commencez la vérification'; statusEl.classList.add('v80-char-status--vide'); } else if (checked < total * 0.4) { statusEl.textContent = 'À améliorer'; statusEl.classList.add('v80-char-status--danger'); barEl.classList.add('v80-char-bar-fill--danger'); conseil.innerHTML = 'Conseil Vingt80 : Votre page nécessite des optimisations importantes. Concentrez-vous en priorité sur les balises Title, la méta description et le H1.'; } else if (checked < total * 0.7) { statusEl.textContent = 'En progression'; statusEl.classList.add('v80-char-status--warn'); barEl.classList.add('v80-char-bar-fill--warn'); conseil.innerHTML = 'Conseil Vingt80 : Bonne base ! Il reste des points à corriger pour atteindre un niveau SEO solide. Regardez les éléments techniques non cochés.'; } else if (checked < total) { statusEl.textContent = '✓ Bon niveau'; statusEl.classList.add('v80-char-status--ok'); barEl.classList.add('v80-char-bar-fill--ok'); conseil.innerHTML = 'Conseil Vingt80 : Très bon travail ! Quelques derniers points à peaufiner pour une page parfaitement optimisée.'; } else { statusEl.textContent = '✓ Excellent'; statusEl.classList.add('v80-char-status--ok'); barEl.classList.add('v80-char-bar-fill--ok'); conseil.innerHTML = 'Conseil Vingt80 : Félicitations, votre page coche tous les critères SEO on-page essentiels ! Pensez à surveiller vos positions dans Google Search Console.'; } } function resetChecklist() { document.querySelectorAll('.v80-check-item input').forEach(cb => cb.checked = false); updateChecklist(); } /* ===== COPIER ===== */ function copier(texte, el) { navigator.clipboard.writeText(texte).then(() => { const c = el.querySelector('.v80-gen-copy'); if (c) { c.textContent = '✓ Copié !'; setTimeout(() => { c.textContent = 'Copier'; }, 2000); } }); } updateSerp();

Votre SEO mérite mieux qu'un outil.

Je prends en charge l'ensemble de votre référencement naturel — pour que vous vous concentriez sur votre métier.

Parlons de votre projet →