AI Meta Title Generator v2.0

Get 10 SEO-optimized title variants with pixel-width analysis, CTR scoring, and a live Google SERP preview.

Your 10 Title Variants

Title Chars Pixels Keyword CTR Score Actions
📱 Google SERP Preview (mobile/desktop)
toolspivot.com › your-slug-here

Click a title from the table above to preview

Your meta description will appear here — generate one with our AI Meta Description Generator.

✨ Next step: write a matching meta description Generate Description

À propos Générateur de titre méta par IA

Un générateur de balise title IA crée des titres SEO percutants à partir d'un mot-clé, d'une description et d'un ton choisi. Le générateur de ToolsPivot produit plusieurs variantes de balises title en quelques secondes, sans inscription, avec choix du ton, de l'audience cible et de l'objectif de la page.

Vous gérez un blog, une boutique en ligne sur PrestaShop ou un site vitrine sous WordPress ? La balise title est le premier élément que Google et les internautes voient dans les résultats de recherche. Mal rédigée, elle peut faire chuter votre taux de clics de 15 à 20 %. Bien pensée, elle attire l'attention et envoie un signal clair aux moteurs. Le problème : rédiger un titre SEO de 50 à 60 caractères qui place le mot-clé principal, intègre un déclencheur de clic et respecte la limite en pixels demande du temps. Comptez 15 à 30 minutes par page si vous le faites à la main. Avec un générateur IA, ce travail passe à moins de 30 secondes.

Fonctionnalités du Générateur de Balise Title IA de ToolsPivot

Le générateur analyse votre mot-clé, votre description de page et vos préférences pour produire des titres SEO adaptés à votre contenu et à votre audience.

  • Champ mot-clé / titre : Saisissez le mot-clé principal ou le sujet de votre page. L'IA construit les variantes autour de ce terme pour que le mot-clé apparaisse en position forte dans chaque proposition.

  • Champ description : Décrivez le contenu de la page en quelques phrases. Ce contexte permet à l'IA de proposer des titres précis plutôt que génériques. Plus votre description est détaillée, plus les résultats sont pertinents.

  • Sélection du ton : Neuf options disponibles : amical, professionnel, spirituel, décontracté, formel, persuasif, informatif, inspirant ou humoristique. Un article de blog sur les voyages n'a pas le même ton qu'une fiche produit B2B.

  • Choix de l'audience cible : Six profils proposés : blogueurs, développeurs, marketeurs, étudiants, entrepreneurs ou grand public. L'IA ajuste le vocabulaire et l'angle selon le profil sélectionné.

  • Plage de caractères (From / To) : Définissez la longueur minimale et maximale souhaitée. Google affiche entre 50 et 60 caractères dans la SERP avant de tronquer. Ce réglage vous aide à rester dans la zone idéale.

  • Champ objectif : Précisez le but de la page : générer du trafic organique, convertir des visiteurs, informer ou attirer des clics. L'IA oriente la formulation du titre en fonction de cet objectif.

  • Génération de plusieurs variantes : Chaque requête produit plusieurs propositions. Vous pouvez comparer les approches : titre sous forme de question, titre orienté bénéfice, titre avec chiffre ou titre direct avec mot-clé en tête.

  • Copie et téléchargement : Copiez un titre en un clic ou téléchargez l'ensemble des résultats. Pratique si vous travaillez en équipe et que vous voulez soumettre plusieurs options à un responsable éditorial ou à un client.

L'outil fonctionne aussi pour les titres de pages en d'autres langues. Si vous rédigez du contenu multilingue, combinez-le avec le générateur de méta-descriptions IA pour couvrir title et description en même temps.

Comment utiliser le Générateur de Balise Title IA de ToolsPivot

  1. Saisissez votre mot-clé principal : Tapez le terme ou l'expression sur lequel vous voulez positionner votre page dans le champ « Title / Keyword ».

  2. Décrivez le contenu de la page : Remplissez le champ « Description » avec un résumé de votre page (2 à 3 phrases suffisent). Mentionnez le sujet, l'angle et la valeur ajoutée.

  3. Choisissez le ton et l'audience : Sélectionnez le ton dans le menu déroulant (professionnel, décontracté, persuasif, etc.) et le profil d'audience visé (marketeurs, entrepreneurs, grand public, etc.).

  4. Réglez la longueur : Indiquez la plage de caractères souhaitée dans les champs « From » et « To ». Pour une balise title standard, visez 50 à 60 caractères.

  5. Lancez la génération : Cliquez sur « Generate ». ToolsPivot traite votre demande et affiche les titres proposés en quelques secondes.

  6. Copiez ou téléchargez le résultat : Sélectionnez le titre qui vous convient, copiez-le et collez-le dans votre CMS, votre plugin SEO (Yoast, Rank Math) ou directement dans la balise </code> de votre HTML.</p></li> </ol> <p>Astuce : si les propositions ne correspondent pas à ce que vous cherchez, reformulez votre description ou changez de ton, puis relancez. Les résultats varient à chaque génération.</p> <h2>Pourquoi utiliser le Générateur de Balise Title IA de ToolsPivot</h2> <ul> <li><p><strong>Gain de temps sur chaque page :</strong> Rédiger une balise title manuellement prend entre 15 et 30 minutes quand on veut respecter la longueur, le placement du mot-clé et l'intention de recherche. Ici, vous obtenez plusieurs options en moins de 30 secondes.</p></li> <li><p><strong>Aucune inscription requise :</strong> Pas de compte à créer, pas d'e-mail à fournir. Vous accédez à l'outil, vous générez vos titres, vous repartez. La plupart des outils concurrents (HubSpot, Jasper, Copy.ai) demandent au minimum un e-mail ou un essai gratuit limité.</p></li> <li><p><strong>Titres calibrés pour la SERP :</strong> En réglant la plage de caractères entre 50 et 60, vos titres s'affichent sans troncature dans Google. Les balises trop longues sont réécrites par Google dans plus de 60 % des cas.</p></li> <li><p><strong>Contrôle sur le ton et l'audience :</strong> Neuf tons et six profils d'audience permettent d'adapter la formulation. Un titre pour une landing page e-commerce ne ressemble pas à un titre pour un article de blog éducatif. Les générateurs basiques ne proposent pas ce niveau de personnalisation. L'IA ajuste aussi le niveau de langue, ce que vous pouvez vérifier ensuite avec un <a href="https://toolspivot.com/fr/readability-checker">test de lisibilité</a>.</p></li> <li><p><strong>Idéal pour les auto-entrepreneurs et les TPE :</strong> Si vous n'avez pas de budget pour un consultant SEO ou un rédacteur web freelance, cet outil vous donne un point de départ solide. Ajustez les propositions selon votre connaissance du sujet et publiez.</p></li> <li><p><strong>Complémentaire avec vos autres outils SEO :</strong> Utilisez-le avec l'<a href="https://toolspivot.com/fr/meta-tags-analyzer">analyseur de balises meta</a> pour vérifier vos titres existants, ou avec le <a href="https://toolspivot.com/fr/keyword-density-checker">vérificateur de densité de mots-clés</a> pour vous assurer que votre contenu soutient bien votre title.</p></li> <li><p><strong>Gratuit et sans limite :</strong> Pas de quota journalier, pas de crédits à acheter. Vous pouvez générer des titres pour 10 pages ou 500 sans restriction.</p></li> </ul> <h2>Qu'est-ce qu'une balise title et quel est son rôle en SEO ?</h2> <p>La balise title est l'élément HTML qui définit le titre d'une page web. C'est le texte bleu cliquable qui apparaît dans les résultats de Google, dans l'onglet du navigateur et souvent dans les partages sur les réseaux sociaux via l'Open Graph.</p> <p>Son poids en référencement est direct. Google utilise la balise title comme signal fort pour comprendre le sujet de la page et la positionner face aux requêtes des internautes. Un titre contenant le mot-clé principal en début de phrase envoie un signal clair. Un titre vague ou générique (« Accueil », « Page 1 ») ne dit rien aux moteurs et réduit vos chances de classement.</p> <p>Mais la balise title joue aussi sur le taux de clics. Sur une page de résultats, les internautes scannent les titres avant de cliquer. Un titre avec un bénéfice clair (« Gratuit », « Rapide », « Sans inscription ») attire davantage qu'un titre plat. Des études montrent que les titres contenant un chiffre obtiennent environ 36 % de clics supplémentaires par rapport aux titres sans chiffre.</p> <p>Ne confondez pas la balise title avec le H1. Le title apparaît dans la SERP et l'onglet du navigateur ; le H1 s'affiche sur la page elle-même. Ils peuvent être identiques ou légèrement différents. Vérifiez les deux avec un <a href="https://toolspivot.com/fr/website-seo-checker">vérificateur SEO de site</a> pour repérer les pages où le title est manquant ou mal rédigé.</p> <h2>Les critères d'une balise title qui performe</h2> <p>Toutes les balises title ne se valent pas. Voici ce qui sépare un titre efficace d'un titre ignoré dans la SERP.</p> <p><strong>Longueur entre 50 et 60 caractères.</strong> Google affiche environ 580 à 600 pixels de largeur pour le title. Au-delà, le titre est tronqué avec des points de suspension. Les titres entre 51 et 55 caractères ont le taux de réécriture par Google le plus bas, autour de 15 %. Utilisez un <a href="https://toolspivot.com/fr/word-counter-tool">compteur de mots</a> pour vérifier la longueur exacte.</p> <p><strong>Mot-clé principal en début de titre.</strong> Les moteurs de recherche accordent plus de poids aux termes placés au début. Si votre mot-clé est « balise title SEO », commencez par ce terme plutôt que de le glisser en fin de phrase.</p> <p><strong>Un déclencheur de clic.</strong> Les mots « Gratuit », « Guide », « Facile » ou un chiffre augmentent la probabilité de clic. Les parenthèses ou crochets ([Guide], [Gratuit]) peuvent accroître le CTR de plusieurs points selon les tests réalisés par des agences SEO.</p> <p><strong>Un titre unique par page.</strong> Deux pages avec la même balise title créent un problème de contenu dupliqué. Chaque page de votre site doit avoir un titre distinct. Si vous gérez un e-commerce avec des centaines de fiches produits, un générateur IA vous fait gagner des heures.</p> <p><strong>Cohérence avec le contenu de la page.</strong> Google réécrit les titres qui ne reflètent pas le contenu réel. Si votre titre promet « 10 astuces SEO » mais que la page n'en contient que 3, le moteur affichera un autre titre. Alignez votre balise title avec le H1 et le contenu de la page pour garder le contrôle de ce qui s'affiche. L'<a href="https://toolspivot.com/fr/keywords-research-tool">outil de recherche de mots-clés</a> vous aide à identifier les termes sur lesquels votre contenu doit se concentrer.</p> <h2>Quand faut-il générer ou réécrire vos balises title ?</h2> <p>Vous venez de publier un article de blog de 2 000 mots et vous réalisez que le titre par défaut de votre CMS reprend simplement le H1 sans aucune optimisation. C'est le cas classique.</p> <p>Mais d'autres situations justifient l'utilisation d'un générateur :</p> <p><strong>Audit SEO complet.</strong> Vous passez votre site dans un analyseur de balises meta et vous découvrez 40 pages avec des titles trop longs, trop courts ou manquants. Réécrire 40 titres manuellement prend une journée. Avec le générateur, c'est l'affaire d'une heure. Profitez-en aussi pour créer les balises meta manquantes avec le <a href="https://toolspivot.com/fr/meta-tag-generator">générateur de balises meta</a>.</p> <p><strong>Migration de site.</strong> Vous changez de nom de domaine ou de CMS. Toutes les balises title doivent être revues pour inclure le nouveau branding. Particulièrement utile pour les sites e-commerce sous PrestaShop, Shopify ou WooCommerce avec des centaines de pages produit.</p> <p><strong>Baisse de trafic organique.</strong> Une page qui perd des positions peut bénéficier d'un nouveau titre. Testez une reformulation plus orientée bénéfice ou plus proche de l'intention de recherche réelle. Suivez le positionnement avec un <a href="https://toolspivot.com/fr/keyword-rank-checker">outil de suivi de position</a> avant et après le changement.</p> <p><strong>Lancement d'un site multilingue.</strong> Si vous développez une version française de votre site, chaque page a besoin d'une balise title en français, pas d'une traduction littérale de l'anglais. Les internautes francophones cherchent « compteur de mots en ligne gratuit », pas « free word counter online ». Générez des titres natifs.</p> <p><strong>Création de contenu en volume.</strong> Un consultant SEO freelance ou une agence qui produit 20 articles par mois pour ses clients peut accélérer la phase de titrage. Combinez le générateur de balise title avec le <a href="https://toolspivot.com/fr/ai-keyword-cluster-ideas">générateur de clusters de mots-clés</a> pour structurer vos contenus dès le départ.</p> <h2>Réponses rapides sur le générateur de balise title</h2> <div id="bvfaq1"><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-0-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-0" aria-expanded="false" aria-controls="bvfaq1-0" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Le générateur de balise title IA de ToolsPivot est-il gratuit ?</span></a></h4></div><div id="bvfaq1-0" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-0-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Oui, l'outil est 100 % gratuit et ne demande aucune inscription. Vous accédez directement à la page, vous remplissez les champs et vous récupérez vos titres. Pas de compte à créer, pas de crédits à acheter, pas de limite de génération quotidienne.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-1-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-1" aria-expanded="false" aria-controls="bvfaq1-1" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Quelle est la longueur idéale d'une balise title pour le SEO ?</span></a></h4></div><div id="bvfaq1-1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-1-h" aria-expanded="false"><div class="panel-body acordion_body"><p>La longueur recommandée se situe entre 50 et 60 caractères, soit environ 580 à 600 pixels de large. Au-delà, Google tronque le titre avec des points de suspension. Les titres entre 51 et 55 caractères subissent le moins de réécritures par Google, avec un taux d'environ 15 %.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-2-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-2" aria-expanded="false" aria-controls="bvfaq1-2" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Quelle différence entre la balise title et le H1 ?</span></a></h4></div><div id="bvfaq1-2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-2-h" aria-expanded="false"><div class="panel-body acordion_body"><p>La balise title s'affiche dans les résultats de recherche et l'onglet du navigateur. Le H1 apparaît sur la page elle-même. Les deux peuvent être identiques ou varier légèrement. La balise title doit être concise et inclure le mot-clé principal ; le H1 peut être plus descriptif pour le lecteur.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-3-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-3" aria-expanded="false" aria-controls="bvfaq1-3" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Pourquoi Google réécrit-il ma balise title ?</span></a></h4></div><div id="bvfaq1-3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-3-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Google modifie les titres trop longs, trop courts, bourrés de mots-clés ou incohérents avec le contenu de la page. Selon les données de Google, le moteur réécrit plus de 60 % des balises title qu'il juge mal rédigées. Respecter la longueur recommandée et refléter fidèlement le contenu réduit ce risque.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-4-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-4" aria-expanded="false" aria-controls="bvfaq1-4" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Ce générateur est-il adapté aux balises title en français ?</span></a></h4></div><div id="bvfaq1-4" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-4-h" aria-expanded="false"><div class="panel-body acordion_body"><p>L'outil prend en charge le français et d'autres langues. Rédigez votre description et votre objectif en français, et l'IA génère des titres en français. Pour un résultat naturel, relisez les propositions et ajustez les formulations si besoin, car l'IA peut parfois produire des tournures qui sonnent comme du traduit.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-5-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-5" aria-expanded="false" aria-controls="bvfaq1-5" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Puis-je utiliser le générateur pour des balises title e-commerce ?</span></a></h4></div><div id="bvfaq1-5" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-5-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Tout à fait. Sélectionnez un ton « persuasif » et l'audience « entrepreneurs » ou « grand public ». Précisez dans la description qu'il s'agit d'une fiche produit ou d'une catégorie. L'IA adapte les titres pour inclure des termes comme « acheter », « prix » ou « meilleur », qui correspondent à l'intention d'achat.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-6-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-6" aria-expanded="false" aria-controls="bvfaq1-6" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Comment savoir si ma balise title actuelle est mal rédigée ?</span></a></h4></div><div id="bvfaq1-6" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-6-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Passez l'URL de votre page dans un analyseur de balises meta. L'outil vous indique la longueur du title, s'il est tronqué et s'il contient votre mot-clé principal. Un title absent, dupliqué ou trop long est un signal d'alerte.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-7-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-7" aria-expanded="false" aria-controls="bvfaq1-7" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Faut-il inclure le nom de marque dans la balise title ?</span></a></h4></div><div id="bvfaq1-7" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-7-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Pour la page d'accueil et les pages stratégiques, oui. Pour les articles de blog et les pages informatives, le mot-clé doit passer en priorité. Si vous ajoutez votre marque, placez-la en fin de titre, séparée par un tiret ou une barre verticale (|), pour ne pas grignoter l'espace réservé au mot-clé.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-8-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-8" aria-expanded="false" aria-controls="bvfaq1-8" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Cet outil remplace-t-il un rédacteur SEO ?</span></a></h4></div><div id="bvfaq1-8" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-8-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Non. Il accélère la phase de création et vous donne un point de départ de qualité. Un rédacteur SEO apporte une compréhension de l'intention de recherche, du contexte concurrentiel et du ton de votre marque que l'IA ne maîtrise pas entièrement. Le générateur est un accélérateur, pas un remplaçant.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-9-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-9" aria-expanded="false" aria-controls="bvfaq1-9" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Combien de mots-clés dois-je mettre dans une balise title ?</span></a></h4></div><div id="bvfaq1-9" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-9-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Un mot-clé principal et éventuellement un mot-clé secondaire. Accumuler trois ou quatre mots-clés dans 60 caractères rend le titre illisible et peut être perçu comme du bourrage de mots-clés par Google. Concentrez-vous sur un terme clair et un <a href="https://toolspivot.com/fr/long-tail-keyword-generator">mot-clé longue traîne</a> si l'espace le permet.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-10-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-10" aria-expanded="false" aria-controls="bvfaq1-10" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Puis-je générer des balises title pour les réseaux sociaux ?</span></a></h4></div><div id="bvfaq1-10" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-10-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Les titres générés sont conçus pour la SERP. Pour les réseaux sociaux (Facebook, LinkedIn, X), les titres Open Graph ont des règles différentes. Utilisez le <a href="https://toolspivot.com/fr/open-graph-generator">générateur Open Graph</a> de ToolsPivot pour créer des titres adaptés au partage social.</p></div></div></div><div class="panel panel-default accordion_box"><div class="panel-heading" role="tab" id="bvfaq1-11-h"><h4 class="panel-title"><a class="acordion_link external collapsed" role="button" data-toggle="collapse" data-parent="#bvfaq1" href="#bvfaq1-11" aria-expanded="false" aria-controls="bvfaq1-11" rel="nofollow"><i class="more-less glyphicon glyphicon-menu-up"></i><span class="acordion_q">Le générateur fonctionne-t-il sur mobile ?</span></a></h4></div><div id="bvfaq1-11" class="panel-collapse collapse" role="tabpanel" aria-labelledby="bvfaq1-11-h" aria-expanded="false"><div class="panel-body acordion_body"><p>Oui. L'interface est accessible depuis un navigateur mobile. Vous pouvez générer des balises title depuis votre téléphone ou votre tablette sans télécharger d'application. Pratique si vous travaillez en déplacement ou si vous devez modifier un title rapidement depuis la Search Console.</p> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "Le générateur de balise title IA de ToolsPivot est-il gratuit ?", "acceptedAnswer": { "@type": "Answer", "text": "Oui, l'outil est 100 % gratuit et ne demande aucune inscription. Vous accédez directement à la page, vous remplissez les champs et vous récupérez vos titres. Pas de compte à créer, pas de crédits à acheter, pas de limite de génération quotidienne." } }, { "@type": "Question", "name": "Quelle est la longueur idéale d'une balise title pour le SEO ?", "acceptedAnswer": { "@type": "Answer", "text": "La longueur recommandée se situe entre 50 et 60 caractères, soit environ 580 à 600 pixels de large. Au-delà, Google tronque le titre avec des points de suspension. Les titres entre 51 et 55 caractères subissent le moins de réécritures par Google, avec un taux d'environ 15 %." } }, { "@type": "Question", "name": "Quelle différence entre la balise title et le H1 ?", "acceptedAnswer": { "@type": "Answer", "text": "La balise title s'affiche dans les résultats de recherche et l'onglet du navigateur. Le H1 apparaît sur la page elle-même. Les deux peuvent être identiques ou varier légèrement. La balise title doit être concise et inclure le mot-clé principal ; le H1 peut être plus descriptif pour le lecteur." } }, { "@type": "Question", "name": "Pourquoi Google réécrit-il ma balise title ?", "acceptedAnswer": { "@type": "Answer", "text": "Google modifie les titres trop longs, trop courts, bourrés de mots-clés ou incohérents avec le contenu de la page. Selon les données de Google, le moteur réécrit plus de 60 % des balises title qu'il juge mal rédigées. Respecter la longueur recommandée et refléter fidèlement le contenu réduit ce risque." } }, { "@type": "Question", "name": "Ce générateur est-il adapté aux balises title en français ?", "acceptedAnswer": { "@type": "Answer", "text": "L'outil prend en charge le français et d'autres langues. Rédigez votre description et votre objectif en français, et l'IA génère des titres en français. Pour un résultat naturel, relisez les propositions et ajustez les formulations si besoin, car l'IA peut parfois produire des tournures qui sonnent comme du traduit." } }, { "@type": "Question", "name": "Puis-je utiliser le générateur pour des balises title e-commerce ?", "acceptedAnswer": { "@type": "Answer", "text": "Tout à fait. Sélectionnez un ton persuasif et l'audience entrepreneurs ou grand public. Précisez dans la description qu'il s'agit d'une fiche produit ou d'une catégorie. L'IA adapte les titres pour inclure des termes comme acheter, prix ou meilleur, qui correspondent à l'intention d'achat." } }, { "@type": "Question", "name": "Comment savoir si ma balise title actuelle est mal rédigée ?", "acceptedAnswer": { "@type": "Answer", "text": "Passez l'URL de votre page dans un analyseur de balises meta. L'outil vous indique la longueur du title, s'il est tronqué et s'il contient votre mot-clé principal. Un title absent, dupliqué ou trop long est un signal d'alerte." } }, { "@type": "Question", "name": "Faut-il inclure le nom de marque dans la balise title ?", "acceptedAnswer": { "@type": "Answer", "text": "Pour la page d'accueil et les pages stratégiques, oui. Pour les articles de blog et les pages informatives, le mot-clé doit passer en priorité. Si vous ajoutez votre marque, placez-la en fin de titre, séparée par un tiret ou une barre verticale, pour ne pas grignoter l'espace réservé au mot-clé." } }, { "@type": "Question", "name": "Cet outil remplace-t-il un rédacteur SEO ?", "acceptedAnswer": { "@type": "Answer", "text": "Non. Il accélère la phase de création et vous donne un point de départ de qualité. Un rédacteur SEO apporte une compréhension de l'intention de recherche, du contexte concurrentiel et du ton de votre marque que l'IA ne maîtrise pas entièrement. Le générateur est un accélérateur, pas un remplaçant." } }, { "@type": "Question", "name": "Combien de mots-clés dois-je mettre dans une balise title ?", "acceptedAnswer": { "@type": "Answer", "text": "Un mot-clé principal et éventuellement un mot-clé secondaire. Accumuler trois ou quatre mots-clés dans 60 caractères rend le titre illisible et peut être perçu comme du bourrage de mots-clés par Google. Concentrez-vous sur un terme clair et un mot-clé longue traîne si l'espace le permet." } }, { "@type": "Question", "name": "Puis-je générer des balises title pour les réseaux sociaux ?", "acceptedAnswer": { "@type": "Answer", "text": "Les titres générés sont conçus pour la SERP. Pour les réseaux sociaux (Facebook, LinkedIn, X), les titres Open Graph ont des règles différentes. Utilisez le générateur Open Graph de ToolsPivot pour créer des titres adaptés au partage social." } }, { "@type": "Question", "name": "Le générateur fonctionne-t-il sur mobile ?", "acceptedAnswer": { "@type": "Answer", "text": "Oui. L'interface est accessible depuis un navigateur mobile. Vous pouvez générer des balises title depuis votre téléphone ou votre tablette sans télécharger d'application." } } ] } </script></p><section class="bv-related-tools" aria-label="Related tools"></div></div></div></div><h2 class="bv-related-tools-title">Related Tools You Might Like</h2><div class="bv-related-tools-grid"><a class="bv-related-tool" href="https://toolspivot.com/fr/geo-audit" title="Outil d'audit GEO"> <span class="bv-related-tool-icon"><img alt="Outil d'audit GEO" src="https://toolspivot.com/theme/smallseo/icons/geo-audit.png?v=1780680528" loading="lazy" /></span> <span class="bv-related-tool-name">Outil d'audit GEO</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/fr/ai-keyword-cluster-ideas" title="Idées de clusters de mots-clés par IA"> <span class="bv-related-tool-icon"><img alt="Idées de clusters de mots-clés par IA" src="https://toolspivot.com/theme/smallseo/icons/ai-keyword-cluster-ideas.png?v=1754767380" loading="lazy" /></span> <span class="bv-related-tool-name">Idées de clusters de mots-clés par IA</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/fr/ai-meta-description-generator" title="Générateur de description méta par IA"> <span class="bv-related-tool-icon"><img alt="Générateur de description méta par IA" src="https://toolspivot.com/theme/smallseo/icons/ai-seo-meta-description-generator.png?v=1754767380" loading="lazy" /></span> <span class="bv-related-tool-name">Générateur de description méta par IA</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/fr/llms-txt-generator" title="Générateur llms.txt"> <span class="bv-related-tool-icon"><img alt="Générateur llms.txt" src="https://toolspivot.com/theme/smallseo/icons/llms-txt-generator.png?v=1779331628" loading="lazy" /></span> <span class="bv-related-tool-name">Générateur llms.txt</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/fr/ai-content-detector" title="Détecteur de Contenu IA"> <span class="bv-related-tool-icon"><img alt="Détecteur de Contenu IA" src="https://toolspivot.com/theme/smallseo/icons/ai-content-detector.png?v=1779300449" loading="lazy" /></span> <span class="bv-related-tool-name">Détecteur de Contenu IA</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a><a class="bv-related-tool" href="https://toolspivot.com/fr/ai-humanizer" title="Humaniseur IA"> <span class="bv-related-tool-icon"><img alt="Humaniseur IA" src="https://toolspivot.com/theme/smallseo/icons/ai-humanizer.png?v=1779300097" loading="lazy" /></span> <span class="bv-related-tool-name">Humaniseur IA</span> <span class="bv-related-tool-arrow"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> </a></div></section></div> </div> <div class="col-md-4" id="rightCol" > <div class="search_dots_section p20 box_shadow_border"> <div class="tool_heading text-center"> <div class="fs18 mn th-title">RECHERCHE</div> <div class="heading_border mb10 mt10"></div> </div> <div id="sidebar_search"> <div class="input-group"> <input id="sidebarsearch" autocomplete="off" placeholder="Rechercher parmi les outils SEO" class="form-control" type="text"> <span class="input-group-btn"> <button class="btn btn-secondary" type="button" aria-label="Search"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button> </span> </div> <div id="sidebar-results" class="search-resultsbar box_shadow_border" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; border-radius: 10px; padding: 15px 0px; display: none;"></div> </div> </div> <div class="sidebar_adds p5 mt15 box_shadow_border"><span class="ad-label">Publicité</span><div class="sideXd"><!-- New Sidebar --> <ins class="adsbygoogle" style="display:block;width:100%;min-height:250px" data-ad-client="ca-pub-3744783675211834" data-ad-slot="5576900894" data-ad-format="auto" data-full-width-responsive="true"></ins> <script>(adsbygoogle=window.adsbygoogle||[]).push({});</script></div></div> <div class="popular_tool_box box_shadow_border pn mb10 dp-poptools"> <ul> <li class="popular-seo-t pn"> <div class="mn p10 pop-title"> Outils DocPivot populaires </div> </li> <li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><text x="3" y="14" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PPT</text><path d="M9 20l10 10" stroke-width="2.4"/><path d="M19 24v6h-6" stroke-width="2.4"/><text x="37" y="37" text-anchor="end" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PDF</text></svg></div><a href="https://toolspivot.com/doc/fr/powerpoint-to-pdf">PowerPoint en PDF</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><text x="3" y="14" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">TXT</text><path d="M9 20l10 10" stroke-width="2.4"/><path d="M19 24v6h-6" stroke-width="2.4"/><text x="37" y="37" text-anchor="end" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PDF</text></svg></div><a href="https://toolspivot.com/doc/fr/text-to-pdf">Texte en PDF</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="6" y="6" width="22" height="22" rx="3" stroke-dasharray="4 3"/><rect x="12" y="12" width="22" height="22" rx="3"/><path d="M20 34v-8M16 30l4 4 4-4"/></svg></div><a href="https://toolspivot.com/doc/fr/flatten-pdf">Aplatir un PDF</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><text x="3" y="14" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PDF</text><path d="M9 20l10 10" stroke-width="2.4"/><path d="M19 24v6h-6" stroke-width="2.4"/><text x="37" y="37" text-anchor="end" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">TXT</text></svg></div><a href="https://toolspivot.com/doc/fr/pdf-to-text">PDF en Texte</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><text x="3" y="14" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PDF</text><path d="M9 20l10 10" stroke-width="2.4"/><path d="M19 24v6h-6" stroke-width="2.4"/><text x="37" y="37" text-anchor="end" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">XLS</text></svg></div><a href="https://toolspivot.com/doc/fr/pdf-to-excel">PDF en Excel</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M22 4H11a3 3 0 0 0-3 3v26a3 3 0 0 0 3 3h18a3 3 0 0 0 3-3V14z"/><path d="M22 4v10h10"/></svg></div><a href="https://toolspivot.com/doc/fr/pdf-to-epub">PDF en EPUB</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><text x="3" y="14" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PDF</text><path d="M9 20l10 10" stroke-width="2.4"/><path d="M19 24v6h-6" stroke-width="2.4"/><text x="37" y="37" text-anchor="end" font-size="11" font-weight="700" fill="currentColor" stroke="none" font-family="system-ui,-apple-system,sans-serif">PPT</text></svg></div><a href="https://toolspivot.com/doc/fr/pdf-to-powerpoint">PDF en PowerPoint</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="3" y="9" width="14" height="14" rx="2.5"/><circle cx="7.5" cy="13.5" r="1.5"/><path d="M3 20l4-3.5 4.5 4"/><path d="M20 26h11M26 21l5 5-5 5"/><path d="M23 9c4-4 10-4 14 0v11H23z"/><circle cx="23" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="37" cy="9" r="2" fill="currentColor" stroke="none"/></svg></div><a href="https://toolspivot.com/doc/fr/png-to-svg">PNG en SVG</a></li><li class="pg-hovr"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="3" y="9" width="14" height="14" rx="2.5"/><circle cx="7.5" cy="13.5" r="1.5"/><path d="M3 20l4-3.5 4.5 4"/><path d="M20 26h11M26 21l5 5-5 5"/><path d="M23 9c4-4 10-4 14 0v11H23z"/><circle cx="23" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="37" cy="9" r="2" fill="currentColor" stroke="none"/></svg></div><a href="https://toolspivot.com/doc/fr/jpg-to-svg">JPG en SVG</a></li><li class="pg-hovr border-bottom"><div class="icon_image"><svg viewBox="0 0 40 40" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="3" y="9" width="14" height="14" rx="2.5"/><circle cx="7.5" cy="13.5" r="1.5"/><path d="M3 20l4-3.5 4.5 4"/><path d="M20 26h11M26 21l5 5-5 5"/><path d="M23 9c4-4 10-4 14 0v11H23z"/><circle cx="23" cy="9" r="2" fill="currentColor" stroke="none"/><circle cx="37" cy="9" r="2" fill="currentColor" stroke="none"/></svg></div><a href="https://toolspivot.com/doc/fr/webp-to-svg">WebP en SVG</a></li> </ul> </div> <div class="sidebar_adds p5 mt15 box_shadow_border"><span class="ad-label">Publicité</span><div class="sideXd"><!-- Multiplex --> <ins class="adsbygoogle" style="display:block;width:100%;min-height:400px" data-ad-client="ca-pub-3744783675211834" data-ad-slot="7692867693" data-ad-format="autorelaxed" data-matched-content-ui-type="image_stacked" data-matched-content-columns-num="1" data-matched-content-rows-num="3"></ins> <script>(adsbygoogle=window.adsbygoogle||[]).push({});</script></div></div> <div class="popular_tool_box box_shadow_border pn mb10"><ul><li class="popular-seo-t pn"><div class="mn p10 pop-title">Outils d'IA populaires</div></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/geo-audit.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/geo-audit">Outil d'audit GEO</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/llms-txt-generator.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/llms-txt-generator">Générateur llms.txt</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/ai-content-detector.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/ai-content-detector">Détecteur de Contenu IA</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/ai-humanizer.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/ai-humanizer">Humaniseur IA</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/ai-keyword-cluster-ideas.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/ai-keyword-cluster-ideas">Idées de clusters de mots-clés par IA</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/ai-seo-meta-title-generator.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/ai-meta-title-generator">Générateur de titre méta par IA</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/ai-seo-meta-description-generator.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/ai-meta-description-generator">Générateur de description méta par IA</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/article_rewriter_pro.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/paraphrasing-tool">Outil de paraphrase</a></li><li class="pg-hovr border-bottom"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/article_rewriter_pro.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/article-rewriter-tool">Réécriture d'article</a></li></ul></div><div class="sidebar_adds p5 mt15 box_shadow_border"><span class="ad-label">Publicité</span><div class="sideXd"><!-- After Popular AI Tools --> <ins class="adsbygoogle" style="display:block;width:100%;min-height:250px" data-ad-client="ca-pub-3744783675211834" data-ad-slot="7276995379" data-ad-format="auto" data-full-width-responsive="true"></ins> <script>(adsbygoogle=window.adsbygoogle||[]).push({});</script></div></div><div class="popular_tool_box box_shadow_border pn mb10"><ul><li class="popular-seo-t pn"><div class="mn p10 pop-title">Outils SEO populaires</div></li><li class="pg-hovr"><div class="icon_image website-seo-score"></div><a href="https://toolspivot.com/fr/website-seo-checker">Vérificateur SEO de site web</a></li><li class="pg-hovr"><div class="icon_image plagrism-checker"></div><a href="https://toolspivot.com/fr/plagiarism-checker">Vérificateur de plagiat</a></li><li class="pg-hovr"><div class="icon_image word-count-checker"></div><a href="https://toolspivot.com/fr/word-counter-tool">Compteur de mots</a></li><li class="pg-hovr"><div class="icon_image keyword-position-checker"></div><a href="https://toolspivot.com/fr/keyword-rank-checker">Vérificateur de classement de mots-clés</a></li><li class="pg-hovr"><div class="icon_image grammer-chacker"></div><a href="https://toolspivot.com/fr/grammar-checker">Vérificateur de grammaire</a></li><li class="pg-hovr"><div class="icon_image readability-checker"></div><a href="https://toolspivot.com/fr/readability-checker">Vérificateur de lisibilité</a></li><li class="pg-hovr"><div class="icon_image reverse-image"></div><a href="https://toolspivot.com/fr/reverse-image-search">Recherche d'image inversée</a></li><li class="pg-hovr"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/keywordsug.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/keywords-research-tool">Outil de recherche de mots-clés</a></li><li class="pg-hovr"><div class="icon_image keyword-dencity-checker"></div><a href="https://toolspivot.com/fr/keyword-density-checker">Vérificateur de densité de mots-clés</a></li><li class="pg-hovr border-bottom"><div class="icon_image" style="background-image:url(https://toolspivot.com/theme/smallseo/icons/html-edit.png);background-size:contain;background-repeat:no-repeat;background-position:center;"></div><a href="https://toolspivot.com/fr/markdown-editor">Éditeur Markdown</a></li></ul></div><div class="sidebar_adds p5 mt15 box_shadow_border"><span class="ad-label">Publicité</span><div class="sideXd"><!-- After Popular SEO Tools --> <ins class="adsbygoogle" style="display:block;width:100%;min-height:250px" data-ad-client="ca-pub-3744783675211834" data-ad-slot="6571357712" data-ad-format="auto" data-full-width-responsive="true"></ins> <script>(adsbygoogle=window.adsbygoogle||[]).push({});</script></div></div> </div> </div> </div> <script> (function(){ var AJAX = 'https://toolspivot.com/fr/ai-meta-title-generator/ajax'; var BASE_URL = 'https://toolspivot.com/'; var DESC_TOOL_URL = 'https://toolspivot.com/fr/ai-meta-description-generator'; var $ = function(id){ return document.getElementById(id); }; // ----- Pixel width estimation (Roboto/Arial-ish) ----- // Google's actual cutoff is ~580px not 60 chars. We measure with a hidden canvas. var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); ctx.font = '20px Arial, sans-serif'; function pixelWidth(t){ return Math.round(ctx.measureText(t).width); } // ----- CTR heuristic ----- function ctrScore(title, keyword) { var s = 0; var t = title.toLowerCase(); var k = (keyword || '').toLowerCase(); // Keyword in first half: +25 if (k && t.includes(k)) { var pos = t.indexOf(k); if (pos < title.length / 2) s += 25; else s += 12; } // Numbers (listicle bonus): +15 if (/\b(\d{1,3})\b/.test(title)) s += 15; // Power words: +10 each (cap 25) var powers = ['best','top','free','ultimate','proven','complete','essential','easy','quick','simple','new','exclusive','guaranteed','guide','how to']; var pHits = 0; powers.forEach(function(p){ if (t.includes(p)) pHits++; }); s += Math.min(25, pHits * 8); // Year (recency bonus): +10 if (/\b20\d{2}\b/.test(title)) s += 10; // Brackets/parens (eye-catchers): +5 if (/[\[\(]/.test(title)) s += 5; // Question mark (engagement): +5 if (/\?/.test(title)) s += 5; // Optimal length (40-60): +15 if (title.length >= 40 && title.length <= 60) s += 15; // Over-length penalty: -15 if (title.length > 65) s -= 15; return Math.max(0, Math.min(100, s)); } function keywordPosition(title, keyword) { if (!keyword) return 'No keyword'; var t = title.toLowerCase(), k = keyword.toLowerCase(); var i = t.indexOf(k); if (i === -1) return '<span class="amt-pill amt-pill-red">Missing</span>'; if (i < title.length * 0.33) return '<span class="amt-pill amt-pill-green">Start</span>'; if (i < title.length * 0.66) return '<span class="amt-pill amt-pill-yellow">Middle</span>'; return '<span class="amt-pill amt-pill-red">End</span>'; } function charPill(len) { if (len < 40) return '<span class="amt-pill amt-pill-yellow">' + len + '</span>'; if (len <= 60) return '<span class="amt-pill amt-pill-green">' + len + '</span>'; if (len <= 65) return '<span class="amt-pill amt-pill-yellow">' + len + '</span>'; return '<span class="amt-pill amt-pill-red">' + len + '</span>'; } function pixelPill(px) { if (px <= 580) return '<span class="amt-pill amt-pill-green">' + px + 'px</span>'; if (px <= 620) return '<span class="amt-pill amt-pill-yellow">' + px + 'px</span>'; return '<span class="amt-pill amt-pill-red">' + px + 'px</span>'; } function esc(s){return String(s||'').replace(/[&<>"']/g,function(c){return {'&':'&','<':'<','>':'>','"':'"',"'":'''}[c];});} function extractTitlesFromResponse(raw) { // Best case: it returned a clean JSON array try { var trimmed = raw.trim().replace(/^```(?:json)?|```$/g, '').trim(); var parsed = JSON.parse(trimmed); if (Array.isArray(parsed)) return parsed.filter(function(x){ return typeof x === 'string' && x.length > 5; }); } catch (e) {} // Fallback: extract first [...] block var m = raw.match(/\[[\s\S]*\]/); if (m) { try { var parsed2 = JSON.parse(m[0]); if (Array.isArray(parsed2)) return parsed2.filter(function(x){ return typeof x === 'string'; }); } catch (e) {} } // Fallback: split on newlines, strip numbering return raw.split(/\n+/).map(function(l){ return l.replace(/^\s*[\d.)\-*"]+\s*/, '').replace(/["'`]+$/g, '').trim(); }).filter(function(l){ return l.length > 10 && l.length < 120; }).slice(0, 10); } function pickBest(rows) { var bestIdx = 0, bestScore = -1; rows.forEach(function(r, i){ if (r.ctr > bestScore){ bestScore = r.ctr; bestIdx = i; } }); return bestIdx; } function updateSerp(title, keyword) { $('amtSerpTitle').textContent = title; var slug = (keyword || 'your-page') .toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, ''); $('amtSerpUrl').textContent = slug; } // ---- Form handlers ---- $('amtClear').addEventListener('click', function(){ $('amtKeyword').value = ''; $('amtBrand').value = ''; $('amtResult').classList.remove('is-shown'); }); $('amtGenerate').addEventListener('click', function(){ var keyword = $('amtKeyword').value.trim(); if (!keyword) { alert('Please enter a primary keyword.'); $('amtKeyword').focus(); return; } var payload = { prompt: 'seo_meta_title', keyword: keyword, title: keyword, brand: $('amtBrand').value.trim(), pageType: $('amtPageType').value, tone: $('amtTone').value, targetLength: document.querySelector('input[name="amtLen"]:checked').value, powerWords: $('amtPowerWords').checked ? '1' : '', includeYear: $('amtIncludeYear').checked ? '1' : '' }; $('amtResult').classList.add('is-shown'); $('amtResultCard').innerHTML = '<div class="amt-loading"><i class="fa fa-spinner"></i>Generating 10 SEO-optimized titles...</div>'; $('amtGenerate').disabled = true; fetch(AJAX, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }).then(function(r){return r.json();}).then(function(res){ $('amtGenerate').disabled = false; if (!res.success) { $('amtResultCard').innerHTML = '<div class="amt-error">Generation failed. Try again.</div>'; return; } var titles = extractTitlesFromResponse(res.data || ''); if (!titles.length) { $('amtResultCard').innerHTML = '<div class="amt-error">The AI didn\'t return valid titles. Please try again with a clearer keyword.</div>'; return; } var rows = titles.map(function(t){ return { title: t, chars: t.length, px: pixelWidth(t), ctr: ctrScore(t, keyword), pos: keywordPosition(t, keyword) }; }); var bestIdx = pickBest(rows); var html = '<h2 style="font-size:18px;margin:0 0 14px;color:#1a202c;">Your ' + rows.length + ' Title Variants <span style="font-weight:400;color:#6b7280;font-size:13px;">— click any title to preview</span></h2>' + '<table class="amt-table"><thead><tr>' + '<th style="width:50%;">Title</th>' + '<th style="text-align:center;">Chars</th>' + '<th style="text-align:center;">Pixels</th>' + '<th style="text-align:center;">Keyword</th>' + '<th style="text-align:center;">CTR Score</th>' + '<th>Actions</th>' + '</tr></thead><tbody>'; rows.forEach(function(r, i){ var isBest = i === bestIdx; html += '<tr ' + (isBest ? 'class="amt-best"' : '') + ' data-title="' + esc(r.title) + '">' + '<td><div class="amt-title-text">' + esc(r.title) + (isBest ? ' <span class="amt-pill amt-pill-green" style="margin-left:6px;">🏆 BEST</span>' : '') + '</div></td>' + '<td style="text-align:center;">' + charPill(r.chars) + '</td>' + '<td style="text-align:center;">' + pixelPill(r.px) + '</td>' + '<td style="text-align:center;">' + r.pos + '</td>' + '<td class="amt-score-cell">' + r.ctr + '<span class="amt-score-bar"><span class="amt-score-bar-fill" style="width:' + r.ctr + '%;"></span></span></td>' + '<td>' + '<button class="amt-action-btn amt-preview" data-i="' + i + '">Preview</button>' + '<button class="amt-action-btn amt-copy" data-i="' + i + '">Copy</button>' + '</td>' + '</tr>'; }); html += '</tbody></table>'; $('amtResultCard').innerHTML = html; // Wire up actions document.querySelectorAll('.amt-preview').forEach(function(b){ b.addEventListener('click', function(){ var idx = parseInt(b.getAttribute('data-i'), 10); updateSerp(rows[idx].title, keyword); document.getElementById('amtSerpTitle').scrollIntoView({behavior:'smooth', block:'nearest'}); }); }); document.querySelectorAll('.amt-copy').forEach(function(b){ b.addEventListener('click', function(){ var idx = parseInt(b.getAttribute('data-i'), 10); navigator.clipboard.writeText(rows[idx].title).then(function(){ var old = b.innerHTML; b.innerHTML = '✓ Copied'; setTimeout(function(){ b.innerHTML = old; }, 1500); }); }); }); // Pre-populate SERP with the best updateSerp(rows[bestIdx].title, keyword); // Cross-tool link: pre-fill description generator $('amtNextStep').href = DESC_TOOL_URL + '?title=' + encodeURIComponent(rows[bestIdx].title) + '&keyword=' + encodeURIComponent(keyword); }).catch(function(e){ $('amtGenerate').disabled = false; $('amtResultCard').innerHTML = '<div class="amt-error">Network error. Please try again.</div>'; }); }); })(); </script> </div></div></div><!-- Bug Button --> <style> /* REPORT A BUG - a 48px circle, not a slab. * * It used to be a 136x47 orange rectangle, which made it the fourth orange CTA * on a tool page (the tool's own "Choose files" and the action button are the * other two) and the most permanently visible one - competing with the button * we actually want pressed. As a small icon it competes by SIZE instead of by * colour: 48px against a 300px action bar reads as subordinate at a glance. * * MOVED TO THE LEFT CORNER. The right corner now carries the chat launcher * and the back-to-top control; a third circle stacked in the same column read * as clutter, and on a 375px screen the stack reached a third of the height. * Left also separates the two supports: ask on the right, report on the left. */ #bug-btn { position: fixed; left: 12px; /* --aic-b is raised by ai-chat.js while the cookie consent bar is on screen, so these controls never sit on top of it. Falls back to 12px when the script has not run. */ bottom: var(--aic-b, 12px); width: 48px; /* 44px is the touch-target floor; 48 has margin */ height: 48px; border-radius: 50%; background: #fa4c10; color: #fff; display: flex; align-items: center; justify-content: center; text-decoration: none; box-shadow: 0 2px 8px rgba(0,0,0,.28); /* Under the back-to-top, so if they ever do meet the arrow still wins. */ z-index: 9999; transition: transform .18s ease, box-shadow .18s ease; } #bug-btn:hover, #bug-btn:focus-visible { color: #fff; text-decoration: none; transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,.34); } #bug-btn:focus-visible { outline: 3px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 6px rgba(250,76,16,.45); } #bug-btn .fa { font-size: 20px; line-height: 1; } /* AN ICON ALONE DOES NOT SAY WHAT IT DOES. The accessible name is on the link for screen readers; this is the same thing for everyone else, revealed on hover or keyboard focus so the button stays a circle at rest. */ #bug-btn .bug-btn-label { position: absolute; left: 58px; /* flies out to the right of a left-corner button */ white-space: nowrap; background: #1c1c1c; color: #fff; font-size: 13px; font-weight: 600; padding: 6px 10px; border-radius: 6px; opacity: 0; transform: translateX(6px); pointer-events: none; transition: opacity .18s ease, transform .18s ease; } #bug-btn .bug-btn-label { transform: translateX(-6px); } #bug-btn:hover .bug-btn-label, #bug-btn:focus-visible .bug-btn-label { opacity: 1; transform: translateX(0); } /* On a phone there is no hover and the label would sit under the thumb, so the circle stands alone - the accessible name still carries the meaning. */ @media (max-width: 767px) { #bug-btn .bug-btn-label { display: none; } } @media (prefers-reduced-motion: reduce) { #bug-btn, #bug-btn .bug-btn-label { transition: none; } #bug-btn:hover, #bug-btn:focus-visible { transform: none; } } /* --------------------------------------------------------------------------- AI chat widget. Layout follows the modern support-widget convention: a flat light panel rather than a coloured header bar, a floating identity card naming who is answering, assistant text with no bubble around it, and a pill composer. The brand mark is ours - the ToolsPivot icon from the favicon setting. Stacking order in the bottom-right column, measured not assumed: launcher bottom var(--aic-b), z 10001 (primary support action, 56px) .top 68px above it, z 10000 (back-to-top, shifted to clear it) #bug-btn moved to the LEFT corner - see its block above. --aic-b is raised by ai-chat.js while the cookie consent bar is on screen, and .aic-hold keeps both controls hidden until window.load. --------------------------------------------------------------------------- */ .aic-hold #aic-launch, .aic-hold #bug-btn { visibility: hidden; opacity: 0; } #aic-launch, #bug-btn { transition: opacity .25s ease; } #aic-launch { position: fixed; right: 12px; bottom: var(--aic-b, 12px); width: 56px; height: 56px; border: 0; border-radius: 50%; background: #fa4c10; color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 14px rgba(250,76,16,.38); z-index: 10001; transition: transform .18s ease, box-shadow .18s ease, opacity .25s ease; } /* A speech bubble, not the ToolsPivot mark: the mark is orange and light grey, so on an orange disc its orange half disappears - and this control's job is to say "chat". The mark identifies the assistant inside the panel instead. */ #aic-launch .fa { font-size: 23px; line-height: 1; } #aic-launch:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(250,76,16,.5); } #aic-launch:focus-visible { outline: 3px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 6px rgba(250,76,16,.45); } body.aic-on .top { bottom: calc(var(--aic-b, 12px) + 68px) !important; } #aic-panel { position: fixed; right: 12px; bottom: calc(var(--aic-b, 12px) + 68px); width: 380px; max-width: calc(100vw - 24px); height: 580px; max-height: calc(100vh - 150px); background: #f6f4f3; /* flat light field, no header bar */ border: 1px solid #e8e2de; border-radius: 16px; box-shadow: 0 18px 48px rgba(28,12,4,.22); display: flex; flex-direction: column; overflow: hidden; z-index: 10002; font-family: 'open sans', sans-serif; transform-origin: bottom right; animation: aic-in .18s ease-out; } @keyframes aic-in { from { opacity: 0; transform: scale(.94) translateY(8px); } } /* --- header ------------------------------------------------------------- */ /* One bar carrying identity and the close control, rather than a floating close row above a separate floating card: two stacked chrome layers ate the top of the panel and read as two unrelated things. Identity belongs in the header - who is answering, and that it is a machine. A support widget that hides that is one people distrust the moment it gets something wrong. */ #aic-head { flex: 0 0 auto; display: flex; align-items: center; gap: 11px; /* 16px left matches #aic-log's padding, so the header mark and every message avatar sit on one vertical edge. It was 14px and they were 2px apart, which is exactly the sort of gap that reads as sloppy without being obvious. */ padding: 12px 12px 12px 16px; background: #fff; border-bottom: 1px solid #e8e2de; } #aic-close { width: 34px; height: 34px; border: 0; border-radius: 50%; flex: 0 0 34px; background: rgba(0,0,0,.05); color: #3f3a37; cursor: pointer; font-size: 15px; line-height: 1; display: flex; align-items: center; justify-content: center; /* 34px visual, 44px hit area - the target rule is about what the finger must reach, not what the eye must see. */ position: relative; } #aic-close::before { content: ''; position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; } #aic-close:hover { background: rgba(0,0,0,.11); } #aic-close:focus-visible { outline: 2px solid #fa4c10; outline-offset: 2px; } #aic-mark { position: relative; width: 38px; height: 38px; flex: 0 0 38px; } #aic-head .aic-ttl { flex: 1 1 auto; min-width: 0; } /* The disc is black because the icon itself is: every uploaded ToolsPivot Icon has an opaque black field and none is transparent, so the image fills the circle and its own background becomes the disc. */ #aic-mark .aic-disc { width: 38px; height: 38px; border-radius: 50%; overflow: hidden; background: #000; } #aic-mark img { width: 100%; height: 100%; display: block; } #aic-mark .aic-dot { position: absolute; top: -1px; right: -1px; width: 11px; height: 11px; border-radius: 50%; background: #22c55e; border: 2px solid #fff; } #aic-head h2 { font-size: 15px; font-weight: 700; margin: 0; color: #1f1b19; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } #aic-head .aic-sub { font-size: 12.5px; color: #7d726c; margin: 1px 0 0; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* --- message list ------------------------------------------------------- */ #aic-log { flex: 1 1 auto; overflow-y: auto; padding: 16px; } .aic-msg { display: flex; gap: 10px; margin: 0 0 16px; font-size: 14.5px; line-height: 1.6; } .aic-msg:last-child { margin-bottom: 0; } .aic-me { justify-content: flex-end; } .aic-col { min-width: 0; max-width: 88%; } /* margin-top centres the avatar on the first LINE BOX of the message, not on the row: measured 1.8px low at margin-top:1px, so -1px lands it. Line box is 23.2px (14.5px x 1.6) against a 28px avatar. */ .aic-av { width: 28px; height: 28px; border-radius: 50%; flex: 0 0 28px; background: #000; margin-top: -1px; overflow: hidden; } .aic-av img { width: 100%; height: 100%; display: block; } /* Assistant text carries no bubble: the avatar already marks the speaker, and an unboxed answer reads as prose rather than as a chat artefact. */ .aic-ai .aic-b { background: transparent; border: 0; padding: 2px 0 0; color: #2b2622; } .aic-me .aic-b { background: #fa4c10; color: #fff; padding: 10px 14px; border-radius: 16px 16px 4px 16px; } .aic-note .aic-b { color: #2b2622; } .aic-err .aic-b { background: #fdf3f3; border: 1px solid #f0c9c9; color: #8a2020; padding: 10px 13px; border-radius: 12px; } /* --- source card -------------------------------------------------------- */ /* This is the conversion: the answer names a tool, this opens it. */ .aic-src { margin: 10px 0 0; padding: 0; list-style: none; } .aic-src li { margin: 6px 0 0; } .aic-src a { display: flex; align-items: center; gap: 8px; padding: 10px 13px; background: #fff; border: 1px solid #e8e2de; border-radius: 12px; color: #b23a0c; font-size: 13.5px; font-weight: 600; text-decoration: none; transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease; } .aic-src a .aic-sarrow { margin-left: auto; opacity: .55; font-size: 12px; } .aic-src a:hover, .aic-src a:focus-visible { border-color: #fa4c10; color: #8f2e0a; text-decoration: none; transform: translateX(2px); box-shadow: 0 2px 8px rgba(250,76,16,.14); } .aic-src a:focus-visible { outline: 2px solid #fa4c10; outline-offset: 1px; } /* --- suggested questions ------------------------------------------------ */ /* An empty chat is a blank page problem: people do not know what it can answer, so they ask nothing. Editable in admin, not hardcoded. */ #aic-sug { margin: 16px 0 0; } #aic-sug .aic-sug-h { font-size: 11.5px; text-transform: uppercase; letter-spacing: .04em; color: #9b8d85; margin: 0 0 8px; font-weight: 700; } .aic-chip { display: block; width: 100%; text-align: left; background: #fff; border: 1px solid #e8e2de; border-radius: 12px; padding: 11px 13px; margin: 0 0 8px; font-size: 13.5px; color: #433b36; cursor: pointer; font-family: inherit; line-height: 1.45; transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease; } .aic-chip:hover { border-color: #fa4c10; color: #1f1b19; transform: translateX(2px); box-shadow: 0 2px 8px rgba(250,76,16,.14); } .aic-chip:focus-visible { outline: 2px solid #fa4c10; outline-offset: 1px; } /* --- escalation to a human --------------------------------------------- */ /* Offered only when the assistant could not answer. Progressive disclosure: a button first, fields only once pressed, so a dead end becomes a route to a person without putting a form in front of everyone. */ .aic-esc { margin: 12px 0 0; padding: 13px; background: #fff; border: 1px solid #e8e2de; border-radius: 14px; } .aic-esc-h { font-size: 13.5px; color: #433b36; margin: 0 0 10px; font-weight: 600; } .aic-esc .aic-btn { display: inline-flex; align-items: center; gap: 7px; background: #fa4c10; color: #fff; border: 0; border-radius: 999px; padding: 10px 18px; font-size: 13.5px; font-weight: 600; cursor: pointer; font-family: inherit; min-height: 42px; } .aic-esc .aic-btn:hover { background: #e34410; } .aic-esc .aic-btn:focus-visible { outline: 3px solid #fff; box-shadow: 0 0 0 5px rgba(250,76,16,.45); } .aic-esc .aic-btn[disabled] { opacity: .5; cursor: not-allowed; } /* Visible labels, not placeholder-only: a placeholder disappears the moment someone types, which is exactly when they need to know what the field was. */ .aic-f { margin: 0 0 10px; } .aic-f label { display: block; font-size: 12px; font-weight: 600; color: #6b5f59; margin: 0 0 4px; } .aic-f label .aic-opt { font-weight: 400; color: #9b8d85; } .aic-f input, .aic-f textarea { width: 100%; border: 1px solid #e2dad5; border-radius: 10px; padding: 10px 12px; font-size: 16px; /* 16px stops iOS zooming on focus */ font-family: inherit; color: #222; background: #faf8f7; line-height: 1.4; } .aic-f textarea { resize: vertical; min-height: 72px; } .aic-f input:focus, .aic-f textarea:focus { border-color: #fa4c10; background: #fff; outline: 2px solid rgba(250,76,16,.22); } .aic-f .aic-ferr { display: block; font-size: 12px; color: #b02a2a; margin: 4px 0 0; } .aic-esc-ok { font-size: 13.5px; color: #1d6b3a; margin: 0; display: flex; gap: 7px; align-items: flex-start; } /* Three dots, not a spinner: the wait is short and this says "composing". */ .aic-dots span { display: inline-block; width: 6px; height: 6px; margin-right: 3px; background: #bcaea6; border-radius: 50%; animation: aic-bounce 1s infinite; } .aic-dots span:nth-child(2) { animation-delay: .15s; } .aic-dots span:nth-child(3) { animation-delay: .3s; } @keyframes aic-bounce { 0%,60%,100% { opacity: .35; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-2px); } } /* --- privacy notice ----------------------------------------------------- */ /* Says plainly that the question leaves the site, because it does: it goes to an AI provider to be answered. Dismissible and remembered, so it informs once instead of nagging. */ #aic-note { flex: 0 0 auto; display: flex; align-items: flex-start; gap: 8px; margin: 0 14px; padding: 10px 12px; background: #fff; border: 1px solid #e8e2de; border-radius: 12px; } #aic-note p { flex: 1 1 auto; margin: 0; font-size: 11.5px; line-height: 1.5; color: #7d726c; } #aic-note a { color: #b23a0c; text-decoration: underline; } #aic-note a:hover, #aic-note a:focus-visible { color: #8f2e0a; } #aic-note .aic-nx { flex: 0 0 24px; width: 24px; height: 24px; border: 0; border-radius: 50%; background: transparent; color: #9b8d85; cursor: pointer; font-size: 12px; line-height: 1; display: flex; align-items: center; justify-content: center; position: relative; } /* 24px visual, 44px reachable */ #aic-note .aic-nx::before { content: ''; position: absolute; top: -10px; left: -10px; right: -10px; bottom: -10px; } #aic-note .aic-nx:hover { background: rgba(0,0,0,.06); color: #3f3a37; } #aic-note .aic-nx:focus-visible { outline: 2px solid #fa4c10; outline-offset: 1px; } /* --- composer ----------------------------------------------------------- */ #aic-foot { flex: 0 0 auto; padding: 10px 14px 14px; display: flex; gap: 8px; align-items: flex-end; } #aic-cw { flex: 1 1 auto; display: flex; align-items: flex-end; gap: 6px; background: #fff; border: 1px solid #e2dad5; border-radius: 24px; padding: 4px 4px 4px 16px; } #aic-cw:focus-within { border-color: #fa4c10; box-shadow: 0 0 0 3px rgba(250,76,16,.16); } #aic-q { flex: 1 1 auto; resize: none; border: 0; background: transparent; padding: 11px 0; font-size: 16px; /* 16px stops iOS zooming on focus */ line-height: 1.4; max-height: 96px; font-family: inherit; color: #222; } #aic-q:focus { outline: none; } #aic-send { flex: 0 0 auto; width: 40px; height: 40px; border: 0; border-radius: 50%; background: #fa4c10; color: #fff; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; transition: background .15s ease; } #aic-send:hover { background: #e34410; } #aic-send:focus-visible { outline: 3px solid #fff; box-shadow: 0 0 0 5px rgba(250,76,16,.45); } #aic-send[disabled] { opacity: .4; cursor: not-allowed; } #aic-cap { padding: 12px 16px; margin: 0 14px 10px; background: #fff; border: 1px solid #e8e2de; border-radius: 14px; } #aic-cap p { font-size: 13px; margin: 0 0 8px; color: #555; } @media (max-width: 767px) { #aic-panel { right: 12px; left: 12px; width: auto; bottom: calc(var(--aic-b, 12px) + 64px); height: auto; top: 12px; /* full height on a phone */ max-height: none; } .aic-col { max-width: 90%; } } @media (prefers-reduced-motion: reduce) { #aic-launch, .aic-chip, .aic-src a, #aic-send, #bug-btn { transition: none; } #aic-launch:hover, .aic-chip:hover, .aic-src a:hover { transform: none; } #aic-panel { animation: none; } .aic-dots span { animation: none; opacity: .6; } } </style> <a id="bug-btn" href="https://toolspivot.com/fr/report-bug" rel="nofollow" title="Signaler un bug" aria-label="Signaler un bug" onclick="this.href = this.href.split('?')[0] + '?url=' + encodeURIComponent(window.location.href)"> <i class="fa fa-bug" aria-hidden="true"></i> <span class="bug-btn-label">Signaler un bug</span> </a> <!-- Bug Button End--> <script>document.documentElement.className += ' aic-hold';</script> <button id="aic-launch" type="button" aria-expanded="false" aria-controls="aic-panel" title="Poser une question" aria-label="Poser une question"> <i class="fa fa-comment" aria-hidden="true"></i> </button> <script> window.AICHAT_CFG = { ask: "https:\/\/toolspivot.com\/ai-chat\/ask", verify: "https:\/\/toolspivot.com\/ai-chat\/captchaverify", contact: "https:\/\/toolspivot.com\/ai-chat\/contact", privacy: "https:\/\/toolspivot.com\/fr\/page\/privacy-policy", lang: "fr", sitekey: "", icon: "https:\/\/toolspivot.com\/uploads\/74432335_ToolsPivot Icon.png", suggest: ["Vérifier si mon site est en panne","À quelle position est mon mot-clé ?","Vérifier l’autorité de mon domaine","Corriger ma grammaire"], t: {"title":"Demander à ToolsPivot","open":"Poser une question","close":"Fermer","intro":"Posez une question sur n’importe quel outil ToolsPivot et je vous orienterai.","ph":"Poser une question","send":"Envoyer","think":"Réflexion","err":"Une erreur est survenue. Veuillez réessayer.","rate":"Vous avez atteint la limite de questions. Réessayez plus tard.","src":"Sources","sub":"Réponses tirées des pages de ToolsPivot","role":"Assistant IA","note":"Votre question est envoyée à un fournisseur d’IA pour rédiger la réponse. Nous ne conservons pas vos messages.","notelnk":"Politique de confidentialité","notedis":"Masquer","sugh":"Essayez de demander","esc":"Besoin d’aide supplémentaire ?","escbtn":"Écrire à notre équipe","cname":"Votre nom","cmail":"Votre adresse e-mail","cmsg":"Comment pouvons-nous vous aider ?","csend":"Envoyer le message","cok":"Merci. Nous avons bien reçu votre message et vous répondrons par e-mail.","cbad":"Saisissez une adresse e-mail valide.","copt":"facultatif","cap":"Confirmez que vous êtes une personne pour continuer.","capfail":"La vérification a échoué. Veuillez réessayer."}}; </script> <script src="https://toolspivot.com/theme/smallseo/js/ai-chat.js?v=20260906p" defer></script> <div class="f_intro_bg text-center"> <form class="navbar-form mn" action="#"> <img src="https://toolspivot.com/theme/smallseo/img/form_subcribe_footer_brand.png?v=1788577768" class="f_icon" alt="" loading="lazy" decoding="async"> <span class="f_text">Abonnez-vous à notre newsletter</span> <div class="input-group"> <input id="newsletterEmail" name="email" placeholder="Saisissez votre adresse e-mail" class="form-control search_input pl30" type="email"> <div class="input-group-btn"> <button id="newsletterSubscribe" type="submit" class="btn btn-default search_button">S'abonner</button> </div> </div> </form> </div> <div class="f_description_bg text-center"> <div class="f_graph"> <div class="container"> <div class="col-lg-1 col-md-1"></div> <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 f_logo_box f_contect pn"> <a class="navbar-brand ptn" href="https://toolspivot.com/fr"><img src="https://toolspivot.com/uploads/ToolsPivot Logo Light.png" alt="ToolsPivot" width="398" height="78" loading="lazy" decoding="async" /></a> <div class="contect_info col-xs-12 pn"> <p>NOUS CONTACTER</p> <span>info@toolspivot.com</span> </div> <div class="address_info col-xs-12 pn"> <p>ADRESSE</p> <span>Ward No.1, Nehuta, P.O - Kusha, P.S - Dobhi, Gaya, Bihar, India, 824220</span> </div> </div> <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 lef_to_right_border f_version"> <p>Nos outils les plus populaires</p> <a href="https://toolspivot.com/fr/word-counter-tool" title="Word Counter"><div class="ver_img has-fa"><i class="fa fa-file-text-o"></i></div></a> <a href="https://toolspivot.com/fr/plagiarism-checker" title="Plagiarism Checker"><div class="ver_img has-fa"><i class="fa fa-search"></i></div></a> <a href="https://toolspivot.com/fr/sitemap-generator-tool" title="Sitemap Generator"><div class="ver_img has-fa"><i class="fa fa-sitemap"></i></div></a> <a href="https://toolspivot.com/fr/robots-txt-generator" title="Robots.txt Generator"><div class="ver_img has-fa"><i class="fa fa-android"></i></div></a> <a href="https://toolspivot.com/fr/reverse-image-search" title="Reverse Image Search"><div class="ver_img has-fa"><i class="fa fa-picture-o"></i></div></a> <a href="https://toolspivot.com/fr/keywords-research-tool" title="Keywords Research"><div class="ver_img has-fa"><i class="fa fa-key"></i></div></a> <a href="https://toolspivot.com/fr/backlink-maker" title="Backlink Maker"><div class="ver_img has-fa"><i class="fa fa-link"></i></div></a> <a href="https://toolspivot.com/fr/meta-tag-generator" title="Meta Tag Generator"><div class="ver_img has-fa"><i class="fa fa-tags"></i></div></a> <a href="https://toolspivot.com/fr/page-speed-checker" title="Page Speed Checker"><div class="ver_img has-fa"><i class="fa fa-tachometer"></i></div></a> <a href="https://toolspivot.com/fr/article-rewriter-tool" title="Article Rewriter"><div class="ver_img has-fa"><i class="fa fa-pencil-square-o"></i></div></a> </div> <div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 f_contect pl30" style="min-height: 230px;"> <div class="mor_pages"> <p>LIENS RAPIDES</p> <ul style="list-style:none;margin:0;padding:0;"> <li><a href="https://toolspivot.com/fr">Accueil</a></li><li><a href="https://toolspivot.com/fr/page/dmca">Droit d'auteur et DMCA</a></li><li><a href="https://toolspivot.com/fr/page/privacy-policy">Politique de confidentialité</a></li><li><a href="https://toolspivot.com/fr/page/terms-of-service">Conditions d'utilisation</a></li><li><a href="https://toolspivot.com/fr/contact">Contactez-nous</a></li><li><a href="https://toolspivot.com/doc/fr">DocPivot</a></li><li><a href="https://toolspivot.com/fr/page/about-us">À propos de nous</a></li> </ul> </div> </div> </div> </div> </div> <div class="clearfix"></div> <div style="position: relative;"> <div class="container-fluid p10 footer"> <div class="container pn"> <div class="col-md-6 col-sm-12 col-xs-12 text-center pull-right_big"> </div> <div class="col-md-6 col-sm-12 col-xs-12"> <p class="text-center margin0">Copyright © 2018-2026 par ToolsPivot.com. Tous droits réservés. </p> </div> </div> </div> </div> <script type="text/javascript"> $("body").append('<div class="top">↑</div>'),$(window).scroll(function(){$(this).scrollTop()>220?$(".top").fadeIn(500):$(".top").fadeOut(500)}),$(".top").click(function(a){return a.preventDefault(),$("html, body").animate({scrollTop:0},500),!1}) </script> <script> jQuery(document).ready(function(){ jQuery("#newsletterSubscribe").click(function(e) { e.preventDefault(); var newsletterEmail = jQuery('#newsletterEmail').val(); if (newsletterEmail == '') { sweetAlert(oopsStr, inputEm, "error"); }else { jQuery.post(baseUrl + 'newsletter', {subscribe: '1', email: newsletterEmail}, function (data) { if (data.success) sweetAlert('Success', data.msg, "success"); else sweetAlert(oopsStr, data.msg, "error"); }); } }); }); </script> <!-- Bootstrap --> <script src="https://toolspivot.com/theme/smallseo/js/bootstrap.min.js?v=1743851074" type="text/javascript"></script> <!-- Sweet Alert --> <script type='text/javascript' src='https://toolspivot.com/theme/smallseo/js/sweetalert.min.js?v=1743851074'></script> <!-- App JS (self-contained UI: mega-menu, TOC, etc. — safe to defer). No manual ?v= needed: themeLink() already appends ?v=filemtime, so editing this file busts the two-month JS cache in .htaccess by itself. --> <script src="https://toolspivot.com/theme/smallseo/js/app.js?v=1786855079" type="text/javascript" defer></script> <!-- Navbar mega menus. On every page now, not just /doc/*, because ToolsPivot's navbar carries All PDF Tools and All Image Tools too. The script returns immediately when there is no `.dp-mega-wrap` on the page, so anywhere the menus are absent it costs one querySelectorAll. Deferred: the panels are plain lists of links until it runs, so nothing is broken in flight. --> <script src="https://toolspivot.com/theme/smallseo/js/docpivot/megamenu.js?v=1786408068" type="text/javascript" defer></script> <!-- Master JS --> <script src="https://toolspivot.com/fr/rainbow/master-js?v=3d84fe0b9a" type="text/javascript"></script> <!-- XD Box --> <div class="modal fade loginme" id="xdBox" role="dialog" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button id="xdClose" type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <div class="modal-title" id="xdTitle"></div> </div> <div class="modal-body" id="xdContent"> </div> </div> </div> </div> <script> $("#collapse0").collapse();</script></body> </html> <!-- Cookie consent banner — GDPR/ePrivacy compliance. Renders only if no consent cookie set yet. --> <div id="bvCookieBar" style="display:none;position:fixed;left:0;right:0;bottom:0;background:#1a202c;color:#fff;padding:14px 20px;z-index:9998;box-shadow:0 -2px 12px rgba(0,0,0,0.15);font-size:14px;line-height:1.5;"> <div style="max-width:1200px;margin:0 auto;display:flex;gap:16px;align-items:center;flex-wrap:wrap;"> <div style="flex:1;min-width:240px;"> 🍪 We use cookies for analytics and ad personalisation. Choose whether to allow non-essential cookies. Essential cookies keep the site working and are always on. See our <a href="https://toolspivot.com/fr/page/privacy-policy" style="color:#fa4c10;text-decoration:underline;">Privacy Policy</a>. </div> <div style="display:flex;gap:8px;flex-wrap:wrap;"> <button type="button" id="bvCookieAccept" style="background:#fa4c10;color:#fff;border:0;padding:9px 18px;border-radius:6px;font-weight:600;cursor:pointer;">Accept all</button> <button type="button" id="bvCookieDecline" style="background:transparent;color:#fff;border:1px solid rgba(255,255,255,0.3);padding:9px 16px;border-radius:6px;font-weight:600;cursor:pointer;">Reject</button> </div> </div> </div> <script> (function(){ var COOKIE = 'bv_cookie_consent'; var bar = document.getElementById('bvCookieBar'); // Read consent cookie function getConsent() { var m = document.cookie.match(/(?:^|; )bv_cookie_consent=([^;]+)/); if (!m) return null; try { return decodeURIComponent(m[1]); } catch (e) { return null; } } function setConsent(val) { var d = new Date(); d.setTime(d.getTime() + 365 * 86400 * 1000); document.cookie = COOKIE + '=' + val + '; expires=' + d.toUTCString() + '; path=/; SameSite=Lax'; } if (!getConsent()) { bar.style.display = ''; } document.getElementById('bvCookieAccept').addEventListener('click', function(){ setConsent('accepted'); bar.style.display = 'none'; // Optionally re-fire analytics with consent if (typeof gtag === 'function') gtag('consent', 'update', { ad_storage: 'granted', ad_user_data: 'granted', ad_personalization: 'granted', analytics_storage: 'granted' }); }); document.getElementById('bvCookieDecline').addEventListener('click', function(){ setConsent('declined'); bar.style.display = 'none'; if (typeof gtag === 'function') gtag('consent', 'update', { ad_storage: 'denied', ad_user_data: 'denied', ad_personalization: 'denied', analytics_storage: 'denied' }); }); })(); </script>